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/