RAID技术
硬RAID
名称 |
读写性能 |
容错/校验位 |
磁盘利用率 |
最小磁盘数 |
raid0 |
读写性能提升 |
无 |
100% |
1 |
raid1 |
读提升,写下降 |
有冗余 1 |
1/2 |
2 |
raid5 |
读写性能提升 |
容错1 校验1 |
n-1/n |
3 |
raid6 |
读写性能提升 |
容错2 校验2 |
n-2/n |
4 |
raid10 |
读写性能提升 |
每组镜像1个 |
1/2 |
4 |
raid01 |
读写性能提升 |
比不上raid10 |
1/2 |
4 |
raid50 |
读写性能提升 |
非常高 |
1/3 |
9 |
spare disk 备用盘
软RAID
mdadm:为软RAID提供管理界面
生成的设备为:/dev/md0、/dev/md1、/dev/md2等
md:multi devices
软件RAID的实现
mdadm:模式化的工具
命令的语法格式:mdadm[mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
创建:-C
装配: -A
监控: -F
管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意块设备
-C: 创建模式
-n #: 使用#个块设备来创建此RAID
-l #:指明要创建的RAID的级别
-a {yes|no}:自动创建目标RAID设备的设备文件
-c CHUNK_SIZE: 指明块大小,单位k
-x #: 指明空闲盘的个数
-D:显示raid的详细信息
mdadm-D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏
-a: 添加磁盘
-r: 移除磁盘
观察md的状态:
cat /proc/mdstat
软RAID实验
软件实现RAID5
实验环境Centos6
1、分区(fd),磁盘大小一致
fdisk /dev/sdb
t fd
后面的分区可以直接复制分区表实现:
dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446
partx -a /dev/sdc
最少4块磁盘
2、mdadm -C /dev/md0 -a yes -l 5 -c 32 -n 3 -x 1 /dev/sd{b,c,d,e}1
mdadm -D /dev/md0
3、mkfs.ext4 /dev/md0 -L raid5
4、vim /etc/fstab
UUID=…. /mnt/raid ext4 defaults 0 0
mkdir /mnt/raid
mount -a
5、创建配置文件,如果无,禁用再启用后会提示无法找到配置文件
mdadm -Ds /dev/md0 > /etc/mdadm.conf
6、mdadm -S /dev/md0 停止(umount)
7、mdadm -A /dev/md0 激活
8、mdadm /dev/md0 -f /dev/sde1 损坏
9、mdadm /dev/md0 -r /dev/sde1 删除
10、mdadm /dev/md0 -a /dev/sde1 加
作业:实现raid10
方法一:
mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd{b,c}
mdadm -C /dev/md1 -a yes -l1 -n2 /dev/sd{d,e}
mdadm -C /dev/md2 -a yes -l1 -n2 /dev/md{0,1}
方法二:
mdadm -C /dev/md0 -a yes -110 -n4 /dev/sd{b,c,d,e}
同步raid分区所有的文件系统,只适合ext文件系统
resize2fs /dev/md0
xfs文件系统用以下命令:
xfa_growfs /mnt/raid
RAID扩展增加新成员
mdadm -G /dev/md0 -n4 -a /dev/sdf1
resize2fs /dev/md0 同步文件系统ext文件系统版
xfs_growfs /mnt/raid 同步xfs文件系统(后面跟的是挂载点)
查看RAID信息 cat /proc/mdstat
删除RAID
1、umount /mnt/raid/
2、如果有人在用先 fuser -km /mnt/raid/
3、修改/etc/fstab
4、确定成员数mdadm -D /dev/md0
5、rm -f /etc/mdadm.conf
6、mdadm -S /dev/md0
7、彻底清除RAID信息 mdadm –zero-superblock /dev/sdb1 或者 dd if=/dev/zero of=/dev/sdb1
8、删除成员分区
逻辑卷管理
LVM
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,允许在多个物理设备间重新组织文件系
统将设备指定为物理卷用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical
Extent,PE)来定义的,在物理卷上创建的逻辑卷是由物理区域(PE)组成可以在逻辑卷上创建文件系
统。
LVM: Logical Volume Manager,Version: 2
dm: device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块
设备名:/dev/dm-#
创建逻辑卷
1、创建物理卷
pvcreate /dev/sd{b,c}1
pvs
pvdisplay
2、创建卷组
vgs
vgdisplay
vgcreate -s 16M vg0 /dev/sd{b,c}1
3、创建逻辑卷(-L 容量为单位 -l PE个数为单位)
lvcreate -n lv0 -l 100 vg0 (lv0为设定逻辑卷名,为软链接,真名为dm-0)
lvs
lvdisplay
创建lv1,并用光所有空间
lvcreate -n lv1 -l 100%FREE vg0
ll /dev/mapper/vg0-lv0
ll /dev/mapper/vg0-lv1
或者
ll /dev/vg0/lv0
ll /dev/vg0/lv0
4、创建文件系统
mkfs.ext4 /dev/vg0/lv0
mkfs.ext4 /dev/vg0/lv0
5、挂载
mkdir /mnt/lv0
mkdir /mnt/lv1
vim /etc/fstab
UUID=…. /mnt/lv0 ext4 defaults 0 0
UUID=…. /mnt/lv1 ext4 defaults 0 0
mount -a
逻辑卷空间扩展
这种扩展属于在线扩展,不会影响现有用户的使用。
1、增加空间(加分区或者增加物理硬盘)
插上硬盘
echo ‘- – -‘ > /sys/class/scsi_host/host2/scan
直接增加硬盘不用分区
2、创建物理卷
pvcreate /dev/sdd
pvs
3、加入卷组
vgextend vg0 /dev/sdd
注意:
最好在增加容量的同时,同步文件系统(-r)
lvextend -r -l +100%FREE /dev/vg0/lv0
4、扩展逻辑卷空间(-l +200 -L +5G这里为增加,-l 200 -L 5G这里表示增加到,增加全部剩余空间 -l
+100%FREE)
lvextend -L +5G /dev/vg0/lv0
5、同步文件系统(xfs文件系统:xfs_growfs)
resize2fs /dev/vg0/lv0
调整逻辑卷大小(缩减逻辑卷空间)
确保现有数据能放得下的情况缩,在缩减之前先备份(tar)
ext文件系统可以缩减,xfs文件系统不能缩减(除非格式化)
1、取消挂载(只能在无用户在线下缩减,fuser -km)
umount /mnt/lv0
2、缩减文件系统
fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 10G (缩到10G)
3、缩减逻辑卷
lvreduce -L 10G /dev/vg0/lv0
4、挂载分区
mount -a
硬盘老化报警,需要更换硬盘,逻辑卷如何处理?
pvdisplay
Allocated PE 540
1、首先要找到能代替的空间(新加硬盘或者分区)
fdisk /dev/sdc
2、创建物理卷
pvcreate /dev/sdc2
3、加入卷组
vgextend vg0 /dev/sdc2
4、移动数据
pvmove /dev/sdd
5、移除卷组
vgreduce vg0 /dev/sdd
pvdisplay
pvremove /dev/sdd
迁移逻辑卷到新的机器
1、先把已使用的逻辑卷空间集中在某一物理硬盘
pvdisplay
pvmove /dev/sda7
2、减少对应的卷组
vgreduce /dev/sda7
3、如果新机器上有同名的逻辑卷那怎么办?
先改名
卷组:
vgrename vg0 centos6vg0
逻辑卷:
lvrename /dev/centos6vg0/lv0 /dev/centos6vg0/centos6lv0
lvrename /dev/centos6vg0/lv0 /dev/centos6vg1/centos6lv1
4、取消挂载
umount /mnt/lv0
5、禁用卷组
vgchange -an centos6vg0
6、导出卷组
vgexport centos6vg0
确认导出状态
vgdisplay
pvdisplay
7、拆除并移动磁盘
8、识别磁盘
echo ‘- – -‘ > /sys/clsss/scsi_host/host2/scan
9、导入硬盘
vgimport centos6vg0
10、启用卷组
vgchange -ay centos6vg0
11、挂载
mkdir /mnt/centos6lv0
mount /dev/centos6vg0/centos6lv0 /mnt/centos6lv0
逻辑卷快照
不能完全代替备份,例如同一硬盘上的快照,创建快照就立即在卷组中分配一块空间,逻辑卷快照和原逻
辑卷在同一卷组中,快照大小可以和原逻辑卷相同也可以不同。当原逻辑卷数据发生修改时,才会把旧数
据写入快照(修改,删除都会,而且不管修改多少次,永远保留最旧的那个)如果原逻辑卷数据没发生改
动,没有改动的区域则由快照区和文件系统共享,快照中只含有原来的逻辑卷中更改的数据或者自生成快
照后的快照中更改的数据,建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放
大快照。
例如如果mysql数据库要进行备份,大小100G,在cp期间很可能数据发生变化,那就可以利用快照,这样
备份时,就不怕数据被改变。
实验:逻辑卷的快照
1、检查空间是否足够 vgdisplay
2、创建快照
lvcreate -n centos6lv0-snapshot -s -L 1G
/dev/centos6vg0/centos6lv0
lvdisplay
3、挂载并查看快照内容
mkdir /mnt/snap
mount /dev/centos6vg0/centos6lv0-snapshot /mnt/snap
4、由于挂载快照有可能会误删快照文件,导致备份失效,所以建议在建立快照时加入-p r 选项
lvcreate -n centos6lv0-snapshot -s -L 1G -p r /dev/centos6vg0/centos6lv0
5、挂载
mount /dev/centos6vg0/centos6lv0-snapshot /mnt/snap
如果创建时未加-p r,也可以在挂载时修改成只读属性
mount -o ro /dev/centos6vg0/centos6lv0-snapshot /mnt/snap
注意:
ext4必须要加-p r 选项
xfs不能加-p r选项
否则恢复合并会不成功!
5、利用快照恢复
umount /mnt/snap/
umount /mnt/centos6lv0/
lvconvert –merge /dev/centos6vg0/centos6lv0
(如果在快照创建时没有加-p r选项会导致不能合并!这时只能用复制)
在Centos7上建立快照
lvcreate -n lv0-snapshot -L 1G -s /dev/vg0/lv0
xfs文件系统不允许相同UUID的设备同时挂载,所以无法挂载快照,所以想挂载必须:
mount -o nouuid /dev/vg0/lv0-snapshot /mnt/lv0-snap
快照恢复数据:
unmount /mnt/lv0
lvconvert –merge /dev/vg0/lv0-snapshot
mount /dev/vg0/lv0 /mnt/lv0
注意: 一旦还原数据,快照自动删除
删除带有快照逻辑卷:
umount /mnt/centos6lv0
lvremove /dev/centos6vg0/centos6lv0
会提示是否先删除快照,直接选y即可
只删除快照,不删除逻辑卷:
一样操作,先取消挂载,然后删除
umount /mnt/lv0-snap
lvremove /dev/vg0/lv0-snapshot
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100764