1. Linux系统磁盘管理体系
(1) Linux的磁盘管理主要分为5个步骤:
① 在Linux服务器上添加相应的硬盘(如/dev/sda、sdb、sdc…);
② 对全新的服务器(没有操作系统)做RAID(raid0、raid1、raid5等模式)或逻辑卷LVM;
③ 对磁盘进行分区;
④ 创建完分区后对该分区作格式化操作;
⑤ 最后作挂载操作,将分区挂载到Linux文件系统中即可存放数据。
(2) 磁盘读写数据的原理
① 磁盘是按照柱面为单位读写数据的,即先读取同一个盘面的某一个磁道,读完之后,如果数据没有读完,磁头也不会切换其他的磁道,而是选择切换磁头,读取下一个盘面的相同半径的磁道,直到所有盘面的相同半径的磁道读取完成之后,如果数据还没有读写完成,才会切换其他不同半径的磁道,这个切换磁道的过程称为寻道。
② 不同磁头间的切换是电子切换,而不同磁道间的切换需要磁头做径向运动,这个径向运动需要步进电机调节,这个动作是机械的切换。
③ 磁头寻道是机械运动,切换磁头是电子切换。
2. RAID简介
(1) 什么是RAID
- 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。
- 磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
- 磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
- RAID技术分类:基于硬件的RAID技术和基于软件的RAID技术。
(2) RAID级别对比
RAID级别 | 模式优点 | 模式缺点 | 适用的场景 |
RAID0 | 读写速度是几种模式中最快 | 不存在冗余 | MySQL,Redis等主从复制的场景 |
RAID1 | 100%冗余 | 读写速度一般,成本较高 | 较为重要的数据,需单独存储,且不能宕机的业务场景,如:系统盘,监控等 |
RAID5 | 具备一定的性能和冗余,允许坏一块盘,读数据性能较好,具有奇偶校验 | 写入数据的性能不高 | 通常的业务场景都可适用 |
RAID10 | 读写速度非常快,100%冗余 | 成本高 | 性能和冗余都有要求的业务场景,如:数据库主库或主存储的节点 |
(3) RAID与逻辑卷LVM的区别
- 什么是LVM: LVM的全称为(Logic Volume Management)逻辑卷管理,其最大的用途是可以灵活的管理磁盘的容量,让磁盘分区可以随意的放大或者缩小,便于更好的应用磁盘的剩余空间。LVM是在硬盘的分区之上,创建一个逻辑层,以方便系统管理整个硬盘分区系统。LVM最先是由IBM开发,在AIX系统上实现,OS/2操作系统与HP-UX也支持这个功能。在1998年,HeinzMauelshagen根据在HP-UX上的LVM管理器,写出了第一个linux版本。换句话说,磁盘分区类似于我们的衣柜,而LVM更像是衣柜中一个个的抽屉存放不同的衣服,利用LVM可更好的管理磁盘分区的空间。
- RAID与LVM的区别:
- LVM:灵活的管理磁盘的容量,有一定的冗余和性能功能,但是很弱;
- RAID:更侧重于性能和数据安全,如果过于强调性能与备份,那么还是应该使用RAID功能,而不是LVM。
(4) RAID各级别举例说明
RAID0 | RAID1 | RAID5 | |
容量 | 如4块磁盘加一起(40G),具备最高的存储性能,原理是把连续的数据分散到4个磁盘上存取(并行方式) | 损失50%容量,如:2块10G磁盘做RAID1后,容量为20G,原理是写入一个硬盘的数据百分之百地自动复制到另一块硬盘上,实现存储双份的数据 | 损失一块硬盘的数据容量 |
性能 | 理论上磁盘读写速度比单盘提升4倍,磁盘越多倍数越小 | 理论上写性能和单盘相差不大 | 可损坏一块盘,RAID5数据安全保障程度比RAID1低,但磁盘利用率比RAID1高 |
冗余 | 无冗余,损坏1块盘,整个RAID就都不能使用 | RAID1提供最高的数据安全保障,冗余度50% | 通常的业务场景都可适用 |
特点 | 速度快、无冗余、容量无损失 | 50%冗余,容量损失一半 | 容量损失一块盘,写数据通过奇偶检验,RAID0和RAID1的折中方案 |
3. 磁盘分区重点小结
① 给磁盘分区的实质就是针对上述0磁头0磁道1扇区的前446字节之后的64bytes的分区表进行设置,即主要是划分起始以及结束磁头号、扇区号即柱面号。
② 磁盘分区工具主要有fdisk(适合给小于2TB的磁盘分区),parted(擅长给大于2TB的磁盘分区),首选fdisk,只有磁盘大于2TB时才去选parted。
补充举例题:一台服务器若是有6块600G的磁盘,做raid5后总大小为3TB,此时无法安装系统,请问为什么?)
- 方法1:做raid5后,无需装系统回到raid界面,继续分1个小的虚拟磁盘200G用以装操作系统,完成后再把剩余的2.8T通过parted做分区操作。
- 方法2:可拿1块盘做raid0,剩下5块盘做raid5,将raid0作为系统盘。
- 方法3:装系统时可选择gpt的分区格式(其他分区格式:dos,mbr等),即可安装操作系统。
③ MBR与GPT分区格式
- MBR即“主引导记录”,由IBM公司早年提出。它是存在于磁盘驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统系统信息,并用一小段代码来启动系统。如果安装Windows,其启动信息就放在这一段代码中;如果MBR的信息损坏或误删就无法正常启动Windows,这时需找一个引导修复软件工具来修复它。Linux系统中MBR通常会是GRUB加载器。当一台电脑启动时,它会先启动主板自带的BIOS系统,bios加载MBR,MBR再启动Windows,这就是mbr的启动过程。
- GPT全程为GUID Partition Table,即“全局唯一标识磁盘分区表”。一种更为先进新颖的磁盘组织方式,使用UEFI启动的磁盘组织方式。最开始是为了更好的兼容性,后来因为其更大的支持内存(mbr分区最多支持2T的磁盘),更多的兼容而被广泛使用,特别是苹果的MAC系统全部使用gpt分区。gtp不在有分区的概念,所有CDEF盘都在一段信息中存储。可以简单的理解为更先进但是使用不够广泛的技术。
- 格式区别: 因为兼容问题,gpt其实在引导的最开始部分也有一段mbr引导,也叫做“保护引导”,为了防止设备不支持uefi 区别内存支持:mbr最多支持2T,而gpt理论上是无限制的。因为兼容问题,gpt其实在引导的最开始部分也有一段mbr引导,也叫做“保护引导”,为了防止设备不支持uefi 区别内存支持:mbr最多支持2T,而gpt理论上是无限制的。
4. 磁盘分区命令总结
#查看挂载情况
lsblk
#设置磁盘分区
fdisk /dev/... (p 输出 d 删除 n 创建 q 不保存退出 w 保存退出)
#同步磁盘分区情况
partprobe
#格式化磁盘分区(/dev/sda5)
mkfs.xfs -f -n ftype=1 /dev/sda4
mkfs.xfs -f -n ftype=1 /dev/sda5
#挂载文件目录到分区
mount /dev/sda4 /var/log
mount /dev/sda5 /var/lib/docker
#卸载磁盘分区
umount -v /var/log
umount -v /var/lib/docker
#若无法卸载,强制停止分区
fuser -km /var/lib/docker
#同步/etc/fstab文件
blkid | grep sda4 | sed s/\"//g | awk '{print $2 " /var/log xfs defaults 0 0 # /var/log"}' >> /etc/fstab
blkid | grep sda5 | sed s/\"//g | awk '{print $2 " /var/lib/docker xfs defaults 0 0 # /var/lib/docker"}' >> /etc/fstab
#继续查看查看挂载情况
lsblk
#查看分区是否已挂载到文件系统中
df -h