磁盘阵列
软件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
使用mdadm创建并定义RAID设备
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
用文件系统对每个RAID设备进行格式化
mke2fs -j /dev/md0
测试RAID设备
使用mdadm检查RAID设备的状况
mdadm–detail|D/dev/md0
增加新的成员
mdadm–G /dev/md0 –n4 -a /dev/sdf1
软RAID测试和修复
模拟磁盘故障
mdadm /dev/md0 -f /dev/sda1
移除磁盘
mdadm /dev/md0 –r /dev/sda1
从软件RAID磁盘修复磁盘故障
- 替换出故障的磁盘然后开机
- 在备用驱动器上重建分区
- mdadm /dev/md0 -a /dev/sda1
mdadm、/proc/mdstat及系统日志信息
软RAID管理
生成配置文件:mdadm –D –s >> /etc/mdadm.conf
停止设备:mdadm –S /dev/md0
激活设备:mdadm –A –s /dev/md0 激活
强制启动:mdadm –R /dev/md0
删除raid信息:mdadm –zero-superblock /dev/sdb1
创建raid5
准备四块磁盘,分别是,sdc1、sdd1、sde1、和sdb1 大小为20G
1.在sdb1上创建分区,大小为20G,
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfc18b8bc
Device Boot Start End Blocks Id System
/dev/sdb1 1 2612 20980858+ 83 Linux
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfc18b8bc
Device Boot Start End Blocks Id System
/dev/sdb1 1 2612 20980858+ fd Linux raid autodetect
Command (m for help): w
partx -a
2.根据sdb1的分区表设置,分别复制分区和标志位
dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446
dd if=/dev/sdb of=/dev/sdd bs=1 count=66 skip=446 seek=446
dd if=/dev/sdb of=/dev/sde bs=1 count=66 skip=446 seek=446
3.创建raid5
[root@centos6 ~]#mdadm -C /dev/md5 -a yes -l5 -c 32 -n 3 -x1 /dev/sd{c1,d1,e1,b1}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
4.创建文件系统
[root@centos6 ~]#mkfs.ext4 /dev/md5
5.挂载
[root@centos6 ~]#mkdir /data/raid5
[root@centos6 ~]#vim /etc/fstab
[root@centos6 ~]#mount -a
6.生成配置文件
[root@centos6 ~]#mdadm -Ds /dev/md5 >/etc/mdadm.conf
[root@centos6 ~]#cat /etc/mdadm.conf
ARRAY /dev/md5 metadata=1.2 spares=1 name=centos6.9:5 UUID=e7cc89fe:0c6ebcf8:5f2d1869:da58575f
注:如果磁盘损坏,需要更换新磁盘,先把磁盘假如raid,然后再统一指定同一文件系统
mdadm–G /dev/md0 –n4 -a /dev/sdf1
resize2fs /dev/md5 此命令只适合ext系列文件系统,不适合xfs系列
xfs 系列则使用xfs_growfs /data/raid5 /data/raid5是挂载点
创建raid10
准备4个硬盘,sdc,sdd,sde,sdf。
1.先创建raid0
[root@centos6 ~]#mdadm -C /dev/md0 -a yes -l0 -c 32 -n 2 /dev/sd{c,d}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@centos6 ~]#mdadm -C /dev/md1 -a yes -l0 -c 32 -n 2 /dev/sd{e,f}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
2.再用两个raid0创建raid1
[root@centos6 ~]#mdadm -C /dev/md10 -a yes -l1 -c 32 -n 2 /dev/{md0,md1}
3.格式化
[root@centos6 ~]#mkfs.ext4 /dev/md10
4.自动挂载
[root@centos6 ~]#mkdir /data/md10
[root@centos6 ~]#vim /etc/fstab
[root@centos6 ~]#mount -a
5.生成配置文件
[root@centos6 ~]#mdadm -Ds /dev/md1 >/etc/mdadm.conf
[root@centos6 ~]#mdadm -Ds /dev/md0 >>/etc/mdadm.conf
[root@centos6 ~]#mdadm -Ds /dev/md10 >>/etc/mdadm.conf
卸载raid10
1.卸载挂载
[root@centos6 ~]#umount /dev/md10
2.停止md10设备
[root@centos6 ~]#mdadm -S /dev/md10
mdadm: stopped /dev/md10
[root@centos6 ~]#mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@centos6 ~]#mdadm -S /dev/md1
mdadm: stopped /dev/md1
Number Major Minor RaidDevice
3.删除配置文件,修改/etc/fstab
[root@centos6 ~]#\rm -rf /etc/mdadm.conf
[root@centos6 ~]#vim /etc/fstab
4.删除raid信息
删除raid信息:mdadm –zero-superblock /dev/sdb1
[root@centos6 ~]#mdadm –zero-superblock /dev/sdc
[root@centos6 ~]#mdadm –zero-superblock /dev/sdd
[root@centos6 ~]#mdadm –zero-superblock /dev/sde
[root@centos6 ~]#mdadm –zero-superblock /dev/sdf
逻辑卷管理
pv管理工具
显示pv信息
pvs:简要pv信息显示
pvdisplay
创建pv
pvcreate /dev/DEVICE
vg管理工具
显示卷组
vgs
vgdisplay
创建卷组
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
管理卷组
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
删除卷组
先做pvmove,再做vgremove
lv管理工具
显示逻辑卷
lvs
Lvdisplay
创建逻辑卷
lvcreate-L #[mMgGtT] -n NAME VolumeGroup
lvcreate-l 60%VG -n mylvtestvg
lvcreate-l 100%FREE -n yourlvtestvg
删除逻辑卷
lvremove/dev/VG_NAME/LV_NAME
重设文件系统大小
fsadm[options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
扩展和缩减逻辑卷
扩展逻辑卷:
lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME
lvresize-r -l +100%FREE /dev/VG_NAME/LV_NAME
缩减逻辑卷:
umount/dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount
跨主机迁移卷组
源计算机上
1 在旧系统中,umount所有卷组上的逻辑卷
vgrename vg0 centos6vg0
lvrename vg0 centos6lv0
2 vgchange–a n vg0
lvdisplay
3 vgexportvg0
pvscan
vgdisplay
拆下旧硬盘
在目标计算机上
4 在新系统中安装旧硬盘,并vgimportvg0.
5 vgchange–ay vg0
6 mount所有卷组上的逻辑卷
删除所有逻辑卷
1.取消所有挂载,包括配置文件里的设置
2.删除逻辑卷
lvremove /dev/vg1/lv1
3.删除vg卷组
vgremove vg1
4.将pv物理设备删除
pvremov /dev/sdx
实验一、创建逻辑卷
准备2个磁盘sdc,sdd,大小20G
1.创建物理卷
[root@centos6 ~]#pvcreate /dev/sd{c,d}
Physical volume “/dev/sdc” successfully created
Physical volume “/dev/sdd” successfully created
2.创建vg卷组
[root@centos6 ~]#vgcreate -s 8M vg1 /dev/sd{c,d}
Volume group “vg1” successfully created
3.创建lv1和lv2
[root@centos6 ~]#lvcreate -n lv1 -L 10G vg1
Logical volume “lv1” created.
[root@centos6 ~]#lvcreate -n lv2 -l 100%FREE vg1
Logical volume “lv2” created.
[root@centos6 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a—– 10.00g
lv2 vg1 -wi-a—– 29.98g
4.创建文件系统
[root@centos6 ~]#mkfs.ext4 /dev/vg1/lv1
[root@centos6 ~]#mkfs.ext4 /dev/vg1/lv2
5.自动挂载
[root@centos6 ~]#mkdir /data/lv1
[root@centos6 ~]#vim /etc/fstab
[root@centos6 ~]#mount -a
在试验一基础上扩容,增加一块新硬盘sde
- [root@centos6 ~]#pvcreate /dev/sde
Physical volume “/dev/sde” successfully created
2.扩展vg卷组
[root@centos6 ~]#vgextend vg1 /dev/sde
Volume group “vg1” successfully extended
[root@centos6 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg1 3 2 0 wz–n- 59.98g 19.99g
3.扩展lv1
[root@centos6 ~]#lvextend -l +100%FREE /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 10.00 GiB (1280 extents) to 19.99 GiB (2559 extents).
Logical volume lv1 successfully resized.
4.新假如vg,重新指定文件系统
resize2fs /dev/vg1/lv1
也可以在步骤3时指定,加上-r选项,即:
lvextend -r -l +100%FREE /dev/vg1/lv1
缩减逻辑卷,在xfs文件系统中不支持缩减功能
1.将逻辑卷里面的数据备份
用tar 或者cp
2.卸载挂载
umount MOUNTPOINT
3.检查文件系统
fsck -f /dev/vg1/lv1
4.缩减文件系统
resize2fs /dev/vg1/lv1 20G
5.缩减lv大小
lvreduce -L 20G /dev/vg1/lv1
6.缩减完成后重新挂载
mount -a
删除vg中pv,删减其中一块硬盘,但是硬盘中还有数据
1.pvdisplay 查看pv情况
2.把需要移除的硬盘里的数据转移到别的硬盘
pvmove /dev/sde
3.把pv从vg卷组删除
vgreduce vg1 /dev/sde
4.把pv变成普通硬盘
pvremove /dev/sde
逻辑卷跨主机迁移
1.把能空出来的硬盘都清理出来,
pvdisplay
pvmove
vgreduce vg0 /dev/sdx
pvremove /dev/sdx
2.把卷组都改名,以防和新设备逻辑卷名产生冲突
vgrename vg0 centos6vg0
lvrename /dev/centos6vg0/lv0 /dev/centos6vg0/centoslv0
3.取消挂载,然后禁用
[root@centos6 ~]#umount /data/lv0
[root@centos6 ~]#vgchange -an centos6vg0
0 logical volume(s) in volume group “centos6vg0” now active
lvdisplay查看此时状态,显示LV Status NOT available
4.让vg卷组处于导出状态,
[root@centos6 ~]#vgexport centos6vg0
Volume group “centos6vg0” successfully exported
5.然后把带有数据的逻辑卷硬盘拆出,添加到新主机
6.在新主机上,把vg卷从导出状态变成导入状态
vgimport centos6vg0
7.启用vg卷
vgchange -ay centos6vg0
逻辑卷管理器快照
快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择
快照只有在它们和原来的逻辑卷不同时才会消耗空间
在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据
建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照
使用LVM快照
为现有逻辑卷创建快照
lvcreate-l 64 -s -n data-snapshot -p r /dev/vg0/data
挂载快照
mkdir-p /mnt/snap
mount -o ro/dev/vg0/data-snapshot /mnt/snap
恢复快照
umount/dev/vg0/data-snapshot
umount/dev/vg0/data
lvconvert–merge /dev/vg0/data-snapshot
删除快照
umount/mnt/databackup
lvremove/dev/vg0/databackup
创建快照
1.复制3个文件到逻辑卷挂载的目录下
[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f1
[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f2
[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f3
2.创建快照
[root@centos7 ~]#lvcreate -n centos6lv0-snapshot -s -L 2G -p r /dev/centos6vg0/centoslv0
Using default stripesize 64.00 KiB.
Logical volume “centos6lv0-snapshot” created.
-p r 只读属性,防止误删除快照中的内容
-n 名字
在/dev/centos6vg0/centoslv0这个逻辑卷下创建一个centos6lv0-snapshot的快照
3.挂载创建的快照逻辑卷
[root@centos7 ~]#mkdir /data/snapshot
[root@centos7 ~]#mount /dev/centos6vg0/centos6lv0-snapshot /data/snapshot
[root@centos7 ~]#cd /data/snapshot
[root@centos7 snapshot]#ll
total 28
-rw-r–r– 1 root root 2901 Apr 27 04:17 f1
-rw-r–r– 1 root root 2901 Apr 27 04:17 f2
-rw-r–r– 1 root root 2901 Apr 27 04:17 f3
drwx—— 2 root root 16384 Apr 26 14:47 lost+found
此时看到的数据并不是真实的数据,真实的数据不在这,还在逻辑卷
4.修改逻辑卷文件中的内容,然后对比
[root@centos7 snapshot]#ll /data/centos6lv0/ /data/snapshot/
/data/centos6lv0/:
total 28
-rw-r–r– 1 root root 176 Apr 27 04:34 f1
-rw-r–r– 1 root root 2901 Apr 27 04:17 f2
-rw-r–r– 1 root root 2901 Apr 27 04:17 f3
drwx—— 2 root root 16384 Apr 26 14:47 lost+found
/data/snapshot/:
total 28
-rw-r–r– 1 root root 2901 Apr 27 04:17 f1
-rw-r–r– 1 root root 2901 Apr 27 04:17 f2
-rw-r–r– 1 root root 2901 Apr 27 04:17 f3
drwx—— 2 root root 16384 Apr 26 14:47 lost+found
这时体现除快照的备份效果
在xfs文件系统上创建快照
已经创建了一个逻辑卷lv0大小为20G并且剩余20Gvg卷组
1.在剩余的vg卷组创建快照
[root@centos7 ~]#lvcreate -n lv0-snapshot -L 5G -p r -s /dev/vg0/lv0
-s 表示这不是一般逻辑卷,是快照逻辑卷
-p r 指定只读属性
2.查看他们的uuid,结果相同,在xfs文件系统中,相同uuid不能挂载不同目录
[root@centos7 ~]#blkid
/dev/mapper/vg0-lv0: UUID=”663f8ea0-fbb1-470e-9d0f-878510ff30a9″ TYPE=”xfs”
/dev/sdc1: UUID=”nvuDcD-TEAe-xbGQ-az3V-emG0-aasY-bCImkO” TYPE=”LVM2_member”
/dev/mapper/vg0-lv0–snapshot: UUID=”663f8ea0-fbb1-470e-9d0f-878510ff30a9″ TYPE=”xfs”
3.创建目录给快照逻辑卷挂载,挂载时指定nouuid
[root@centos7 ~]#mkdir /data/snap
[root@centos7 ~]#mount -o nouuid /dev/vg0/lv0-snapshot /data/snap
mount: /dev/mapper/vg0-lv0–snapshot is write-protected, mounting read-only
mount: cannot mount /dev/mapper/vg0-lv0–snapshot read-only
4.在目录中修改文件,或者删除文件,然后恢复快照
[root@centos7 ~]#umount /data/lv0/
[root@centos7 ~]#umount /data/snap
umount: /data/snap: not mounted
[root@centos7 ~]#lvconvert –merge /dev/vg0/lv0-snapshot
Merging of volume vg0/lv0-snapshot started.
lv0: Merged: 100.00%
5.重新挂载逻辑卷,看有没有恢复到原来状态
mount /dev/vg0/lv0 /data/lv0
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97259