RAID(独立冗余磁盘阵列)
通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上
RAID 0
能够有效的提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力,数据会被分开写入到不同的硬盘设备中
RAID 1
在写入数据时,将数据同时写入到多块硬盘设备上,当其中一块硬盘出错时,会自动替换
RAID 5
把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中,这样任何一个设备损坏后不至于出现致命缺陷
RAID 10
RAID 0和RAID 1的组合体,继承了RAID 0的高读写速度和RAID 1的数据安全性,在不考虑成本的情况下RAID 10的性能都超过了RAID 5
mdadm
管理Linux 系统中的软件RAID硬盘阵列
参数 | 作用 |
---|---|
-a | 检测设备名称 |
-n | 指定设备数量 |
-l | 指定RAID界别 |
-C | 创建 |
-v | 显示过程 |
-f | 模拟设备损坏 |
-r | 移除设备 |
-Q | 查看摘要信息 |
-D | 查看详细信息 |
-S | 停止RAID磁盘阵列 |
-x | 备份盘数量 |
使用4块硬盘来部署RAID 10,并挂载硬盘,最后将挂载信息写入到配置文件中
# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
# mkfs.ext4 /dev/md0
# mkdir /RAID
# mount /dev/md0 /RAID
# df -h
etc...
/dev/md0 40G 49M 38G 1% /RAID
# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
损坏硬盘阵列及修复
这里模拟一下RAID 磁盘阵列损坏后的处理方法
使用madadm命令将坏掉的硬盘移除,然后查看RAID磁盘阵列的状态,这时可以发现状态已经改变,再模拟一个新的硬盘,重启系统,接着把新的硬盘添加到RAID磁盘阵列中
# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
# mdadm -D /dev/md0
etc...
0 8 16 - faulty /dev/sdb
# umount /RAID
# mdadm /dev/md0 -a /dev/sdb
# mdadm -D /dev/md0
etc...
Number Major Minor RaidDevice State
4 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
# mount -a
磁盘阵列+备份盘
RAID 10 最多允许50%的硬盘设备发生故障,但是存在一些极端情况,这时我们需要用到备份盘
这里的例子是RAID 5,一共使用4块硬盘,其中一个是用来备份,用 -x 来表示数量,当硬盘出现问题时,备份盘会自动顶替出问题的硬盘,并回复数据
# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
etc...
# mdadm -D /dev/md0
etc...
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
# mkfs.ext4 /dev/md0
etc...
# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
# mkdir /RAID
# mount -a
LVM(逻辑卷管理器)
在硬盘分区或者部署为RAID磁盘阵列后,用户想要调整硬盘分区的大小时,需要用到LVM技术,该技术可以允许用户对硬盘资源进行动态调整
部署逻辑卷
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
部署:
- 让添加的设备支持LVM技术
- 将两块硬盘设备加入到storage卷组中
- 切割出一个150MB的逻辑卷设备
- 把生成好的逻辑卷格式化,挂载使用
- 写入配置文件
# pvcreate /dev/sdb /dev/sdc
etc...
# vgcreate storage /dev/sdb /dev/sdc
etc...
# vgdisplay
etc...
Alloc PE / Size 0 / 0 Free PE / Size 10238 / 39.99 GiB
etc...
# lvcreate -n vo -l 37 storage
etc...
# lvdisplay
etc...
LV Size 148.00MiB
etc...
# mkfs.ext4 /dev/storage/vo
etc...
# mkdir /lvm
# mount /dev/storage/vo /lvm
# df -h
etc...
/dev/mapper/storage-vo 145M 7.6M 138M 6% /lvm
# echo "/dev/storage/vo /lvm ext4 defaults 0 0" >> /etc/fstab
扩容逻辑卷
扩容:
- 把逻辑卷vo扩展至290MB
- 检查硬盘完整性,并重置硬盘容量
- 重新挂载硬盘设备并查看挂载状态
# umount /lvm
# lvextend -L 290M /dev/storage/vo
etc...
# e2fsck -f /dev/storage/vo
etc...
# resize2fs /dev/storage/vo
# mount -a
# df -h
etc...
/dev/mapper/storage-vo 279M 2.1M 259M 1% /lvm
缩小逻辑卷
缩小:
- 检查文件系统的完整性
- 把逻辑卷的容量减小到120MB
- 重新挂载文件系统并查看系统状态
# umount /lvm
# e2fsck -f /dev/storage/vo
etc...
# resize2fs /dev/storage/vo 120M
etc...
# lvreduce -L 120M /dev/storage/vo
etc...
# mount -a
# df -h
etc...
/dev/mapper/storage-vo 113M 1.6M 103M 2% /lvm
逻辑卷快照
快照:
- 使用-s参数生成一个快照卷,使用-L参数指定切割的大小
- 在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,然后再看快照卷的状态可以发现存储空间占用的量上升了
- 校验SNAP快照卷的效果,需要对逻辑卷进行快照还原操作
- 快照卷会被自动删除掉
# vgdisplay
etc...
Alloc PE / Size 30 / 120.00 MiB Free PE / Size 10208 / 39.88 GiB
etc..
# lvcreate -L 120M -s -n SNAP /dev/storage/vo
etc...
# lvdisplay
etc...
# dd if=/dev/zero of=/lvm/files count=1 bs=100M
etc..
# lvdisplay
etc...
Allocated to snapshot 83.71%
etc...
# umount /lvm
# lvconvert --merge /dev/storage/SNAP
etc...
# mount -a
# ls /lvm/