7.1 RAID磁盘冗余阵列
1. RAID 0
硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。通俗来说,RAID 0技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力。
RAID 0技术示意图2. RAID 1
如果生产环境对硬盘设备的读写速度没有要求,而是希望增加数据的安全性时,就需要用到RAID 1技术了。
RAID 1技术示意图3. RAID 5
RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷;图7-3中parity部分存放的就是数据的奇偶校验信息,换句话说,就是RAID 5技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。
RAID5技术示意图4. RAID 10
RAID 10技术需要至少4块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。
RAID 10技术示意图7.1.1 部署磁盘阵列
mdadm命令用于管理Linux系统中的软件RAID硬盘阵列,格式为“mdadm [模式]
参数 | 作用 |
-a | 检测设备名称 |
-n | 指定设备数量 |
-l | 指定RAID级别 |
-C | 创建 |
-v | 显示过程 |
-f | 模拟设备损坏 |
-r | 移除设备 |
-Q | 查看摘要信息 |
-D | 查看详细信息 |
-S | 停止RAID磁盘阵列 |
-a yes参数代表自动创建设备文件 [root@linuxprobe ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde [root@linuxprobe ~]# mkfs.ext4 /dev/md0 把制作好的RAID磁盘阵列格式化为ext4格式。 [root@linuxprobe ~]# mkdir /RAID [root@linuxprobe ~]# mount /dev/md0 /RAID [root@linuxprobe ~]# df -h [root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
7.1.2 损坏磁盘阵列及修复
移除损坏的磁盘
[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdb [root@linuxprobe ~]# mdadm -D /dev/md0
当购买了新的硬盘设备后再使用mdadm命令来予以替换即可,在此期间我们可以在/RAID目录中正常地创建或删除文件。
[root@linuxprobe ~]# umount /RAID
[root@linuxprobe ~]# mdadm /dev/md0 -a /dev/sdb
[root@linuxprobe ~]# mdadm -D /dev/md0
7.1.3 磁盘阵列+备份盘
RAID 10磁盘阵列中最多允许50%的硬盘设备发生故障,但是存在这样一种极端情况,即同一RAID 1磁盘阵列中的硬盘设备若全部损坏,也会导致数据丢失。
[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde [root@linuxprobe ~]# mdadm -D /dev/md0
参数-x 1则代表有一块备份盘。
7.2 LVM逻辑卷管理器
LVM可以允许用户对硬盘资源进行动态调整。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。
逻辑卷管理器的技术结构物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列,这都可以。卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。这就是LVM的核心理念。
7.2.1 部署逻辑卷
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
实例:添加两块新硬盘设备,先对这两块新硬盘进行创建物理卷的操作,可以将该操作简单理解成让硬盘设备支持LVM技术,或者理解成是把硬盘设备加入到LVM技术可用的硬件资源池中,然后对这两块硬盘进行卷组合并,卷组的名称可以由用户来自定义。接下来,根据需求把合并后的卷组切割出一个约为150MB的逻辑卷设备,最后把这个逻辑卷设备格式化成EXT4文件系统后挂载使用。
第1步:让新添加的两块硬盘设备支持LVM技术。
[root@linuxprobe ~]# pvcreate /dev/sdb /dev/sdc
第2步:把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。
[root@linuxprobe ~]# vgcreate storage /dev/sdb /dev/sdc
[root@linuxprobe ~]# vgdisplay
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
第3步:切割出一个约为150MB的逻辑卷设备。
在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的参数为-L。例如,使用-L 150M生成一个大小为150MB的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为4MB。例如,使用-l 37可以生成一个大小为37×4MB=148MB的逻辑卷。
[root@linuxprobe ~]# lvcreate -n vo -l 37 storage
[root@linuxprobe ~]# lvdisplay
第4步:把生成好的逻辑卷进行格式化,然后挂载使用。
Linux系统会把LVM中的逻辑卷设备存放在/dev设备目录中(实际上是做了一个符号链接),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)。
[root@linuxprobe ~]# mkfs.ext4 /dev/storage/vo [root@linuxprobe ~]# mkdir /linuxprobe [root@linuxprobe ~]# mount /dev/storage/vo /linuxprobe
第5步:查看挂载状态,并写入到配置文件,使其永久生效。
[root@linuxprobe ~]# df -h [root@linuxprobe ~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab
7.2.2 扩容逻辑卷
第1步:把上一个实验中的逻辑卷vo扩展至290MB。
[root@linuxprobe ~]# umount /linuxprobe [root@linuxprobe ~]# lvextend -L 290M /dev/storage/vo
第2步:检查硬盘完整性,并重置硬盘容量。
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo [root@linuxprobe ~]# resize2fs /dev/storage/vo
第3步:重新挂载硬盘设备并查看挂载状态。
[root@linuxprobe ~]# mount -a [root@linuxprobe ~]# df -h
7.2.3 缩小逻辑卷
在生产环境中执行相应操作时,一定要提前备份好数据。另外Linux系统规定,在对LVM逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了保证我们的数据安全)。
[root@linuxprobe ~]# umount /linuxprobe
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo
[root@linuxprobe ~]# resize2fs /dev/storage/vo 120M
[root@linuxprobe ~]# lvreduce -L 120M /dev/storage/vo
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
7.2.4 逻辑卷快照
可以对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。LVM的快照卷功能有两个特点:
[root@linuxprobe ~]# lvcreate -L 120M -s -n SNAP /dev/storage/vo使用-s参数生成一个快照卷,使用-L参数指定切割的大小。
[root@linuxprobe ~]# lvdisplay LV Path /dev/storage/SNAP VG Name storage LV snapshot status active destination for vo Allocated to snapshot 0.01%
[root@linuxprobe ~]# umount /linuxprobe [root@linuxprobe ~]# lvconvert --merge /dev/storage/SNAP [root@linuxprobe ~]# mount -a
7.2.5 删除逻辑卷
参照命令选项,
需要先取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。
删除逻辑卷设备,需要输入y来确认操作。
删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。
删除物理卷设备。