RAID磁盘冗余阵列
RAID 0
- 白搭型,可以提高读写速度,因为做过RAID后两块或多块硬盘相当于一个整体,只是在读写的时候,会分别往两边的block写,例如两块硬盘做RAID0,一个文件大小为9KB,它将会在硬盘1取出一个incode写上文件属性,然后指向硬盘1的第一个4k block,不够了,则写入硬盘2的第一个4k block,还不够再写入硬盘1的第二个4kblock。
- 这么做读写速度会增加,但是一旦一个盘损坏,则文件因为缺失了其中某些block而无法还原,就相当于一块硬盘时,硬盘损坏的结果
RAID 1
- 难用型,多块硬盘同时写入,类似于做备份,但是是由CPU主导写入的实时备份。即写入硬盘1的同时也在写入硬盘2.
- 数据安全了,一个硬盘损坏了,另一个硬盘也可以用,但是CPU的压力增大,本来写一份,现在要写两份,而且利用率也低,只有百分之五十
RAID 5
- 妥协型,最少三个硬盘,比如一个13k的文件,会在硬盘1写入一个inode,指向硬盘1的一个4k block,地方不够,同时写到硬盘2的一个4k block,还不够,写到硬盘3的第一个block校验位,然后在硬盘1写入一个4k,硬盘3写入一个1k,硬盘2写入基于1,3的奇偶校验位
- 介于RAID 0 和 RAID 1 之间的方式
- 如果一个盘数据出问题,可以通过另外几个盘的奇偶校验位加数据,恢复损坏盘的数据
RAID10
- RAID一零,不是RAID十,是RAID0和RAID1的合体版
- 最少四块硬盘,先两个两个做RAID1,保证数据安全性,在两组做RAID0保证读写速度,虽然感觉和一块硬盘读写没啥区别
部署磁盘阵列
- 最好是磁盘大小一样,读写速度一样,不然他们会取最小的,浪费资源
- 放四块硬盘以用来做RAID10
- mdadm -Cv /dev/md10 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列 - 剩下的和普通硬盘操作一样,分区格式化,挂载,写入挂载文件
RAID磁盘损坏和修复
- 确认损坏后 mdadm /dev/md10 -f /dev/sdb
- 新的硬盘放上后
umount /dev/md10
mdadm /dev/md19 -a /dev/sdb
mdadm -D /dev/md10 等待同步完成
mount /dev/md10 - 移除旧硬盘 mdadm /dev/md10 -r /dev/sdb
LVM逻辑卷管理器
作用
灵活配置分区大小,多个硬盘合理利用
配置过程
功能 | 物理卷 | 卷组 | 逻辑卷 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
创建 | pvcreate | vgcreate | lvcreate |
删除 | pvremove | vgremove | lvremove |
显示 | pvdisplay | vgdisplay | lvdisplay |
增加 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce | |
备份卷恢复 | lvconvert |
e2fsck -f 逻辑卷 检查逻辑卷是否正常
resize2fs 逻辑卷 重置容量(在增加和缩小逻辑卷容量之后使用)
新增
- pvcreate /dev/sda pvcreate /dev/sdb 让sda,sdb能做LVM
- vgcreate ygjz /dev/sda /dev/sdb 创建又给卷组,把sda,sdb加入到该卷组
- lvcreate -n dygjz -l 25 ygjz 创建一个叫dygjz的逻辑卷,分配25*4M的资源,或者-L 100M
- msfs.ext4 /dev/ygjz/dygjz 格式化这个卷组,现在可以把它看作一个分区了,XFS不支持LVM
- mount
删除
- umount
- lvremove /dev/ygjz/dygjz
- vgremove ygjz
- pvremove /dev/sda
扩容
- umount
- lvextend -L 200M /dev/ygjz/dygjz 缩容
- e2fsck -f /dev/ygjz/dygjz 检测文件是否损坏
- resize2fs /dev/ygjz/dygjz 告诉文件系统硬盘大小发生改变
- mount
缩小
- umount
- e2fsck -f /dev/ygjz/dygjz 检测文件好着没
- resize2fs /dev/ygjz/dygjz 120M 询问文件管理系统,缩小到120M有没有问题
- lvreduce -L 120M /dev/ygjz/dygjz 如果没报错,就缩小
- mount
快照盘
- lvcreate -n SNAP -s -l 50 /dev/ygjz/dygjz 制作/dev/ygjz/dygjz的快照
- lvconvert --merge /dev/ygjz/SNAP 还原快照
知识点
- 扩容和缩小的命令执行顺序是不同的,扩容因为不会影响当前数据,直接扩就可以,扩完再告知文件系统,缩小因为可能影响到数据,比如一共200M,已经存了190M还要缩小到180M那么就会有问题,所以要先resize2fs申请下。
- 顺序正向pv—vg—lv,反向lv—vg—pv
- 是对硬盘的操作,不能是分区
- 快照盘是对当前状态的被快照盘进行备份
- 快照盘和普通逻辑卷的lvcreate <参数> 文件中的文件不同,普通盘是卷组,快照盘是被快照的。
- 快照还原后,快照盘会释放
一个大坑very big
千万别删除sda的分区也就是系统盘的分区,瞬间爆炸,至今没找到解决办法