RAID阵列
软RAID实现
LVM逻辑卷管理
lvm伸缩
lvm快照
lvm习题示例
什么是RAID
RAID 廉价的磁盘整理
多个磁盘合成一个"阵列" 来提供更好的性能、冗余,或者两者都提供
RAID的特性
提高IO能力,磁盘并行读写 提高耐用性,磁盘冗余来实现 级别:RAID0 RAID1 RAID5 RAID6 RAID10 RAID01 工作方式不同实现功能也不同RAID实现的方式
外接式磁盘阵列:通过扩展卡提高适配能力
内接式RAID: 主板集成RAID控制器,安装OS前在BIOS里配置
软件TAID: 通过OS实现
RAID级别 | mindisk | 可用空间 | 容错 | 冗余 | 功能 |
---|---|---|---|---|---|
RAID0 | 2,2+ | N*min(s1,s2…) | 无 | 无 | 读写提升 |
RAID1 | 2,2N | 1*min(s1,s2…) | 最多一个 | 有 | 读提升,写下降 |
RAID5 | 3,3+ | (N-1)*min(s1,s2…) | 最多一个 | 有 | 读写提升 |
RAID6 | 4,4+ | (N-2)*min(S1,S2…) | 最多两块 | 有 | 读写提升 |
RAID10 | 4,4+ | N*min(S1,S2…)/2 | 最多一块 | 有 | 读写提升 |
常用RAID简述
RAID0:连续地分割数据并并行地读/写于多个磁盘上。因此具有很高的数据传输率,但没有数据冗余,并没
有提供数据可靠性,如果一个磁盘失效,将影响整个数据。因此RAID0不可应用于需要数据高可用性的关键应用。
最少由2块磁盘组成,每块都能存储数据。
RAID1:通过数据镜像实现数据冗余,在两对分离的磁盘上产生互为备份的数据。可以提高读的性能,是磁盘
阵列中费用最高的,但提供了最好的数据可用性。当一个磁盘失效,系统可以自动地交换到镜像磁盘上。最少由2
块磁盘组成,只有一半的磁盘能存储数据。
RAID5:所有磁盘轮流充当校验盘,有容错能力,最多准许1块磁盘损坏。最少由3块磁盘组成,充当校验盘的
不分磁盘不能存储数据,实际容量是n-1/n。
RAID10:先两两组成RAID1,再组合成RAID0。每组镜像最多损坏一个磁盘,有容错能力。最少由4块磁盘组
成,只有一半的磁盘能存储数据。
软RAID通过OS模拟RAID
mdadm:为软RAID提供管理界面
为空余磁盘添加冗余
结合内核中的md(multi devices)
RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等
软件RAID的实现
mdadm:模块化工具 madadm [mode] [options] 支持的RAID级别: RAID0 (striping), RAID1 (mirroring), RAID4, RAID5, RAID6, RAID10 四种模式创建 -C
-n #: 使用#个块设备来创建此RAID
-l #:指明要创建的RAID的级别
-a {yes|no}:自动创建目标RAID设备的设备文件
-c CHUNK_SIZE: 指明块大小,单位k
-x #: 指明空闲盘的个数
-D:显示raid的详细信息
mdadm -D /dev/md#
装配 -A
监控 -F
管理 -f,-r,-A
-f: 标记指定磁盘为损坏
-a: 添加磁盘
-r: 移除磁盘
观察md的状态: cat /proc/mdstat
reiddevice:raid设备名称/dev/md#
component-devices:任意块设备
软RAID配置示例
使用mdadm创建并定义RAID设备
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1
用文件系统对每个RAID设备进行格式化
mkfs.xfs /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
软RAID操作示例:
1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,
开机可自动挂载至/backup目录
mdadm -C /dev/md0 -n 2 -l 1 -a yes -c 1024 -x 1 /dev/sd{b,c,d}
mkfs.ext4 /dev/md0
mount /dev/md0 /backup
2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为
256k,文件系统为ext4,开机可自动挂载至/mydata目录
mdadm -C /dev/md5 -n 3 -l 5 -a yes -c 256 /dev/sdc{1,2,3}
mkfs.ext4 /dev/md5
lvm逻辑卷
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
允许在多个物理设备间重新组织文件系统
• 将设备指定为物理卷
• 用一个或者多个物理卷来创建一个卷组
• 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
• 在物理卷上创建的逻辑卷是由物理区域(PE)组成
• 可以在逻辑卷上创建文件系统
lvm弹性容量
通过交换PE来进行资料的交换,将原有的LV内的PE转移到其他设备中以降低LV容量,或将设备中的PE加到LV中以加大容量
PV管理工具
显示PV信息
pvs:简要的pv信息
pvdisplay详细信息
创建PV
pvcreate /dev/DEVICE
删除PV
premove /dev/DEVICE
VG管理工具
显示卷组
vgs
vgdisplay
创建卷组
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName
pyysicalDevicePath
管理卷组
vgextend VolumeGroupName PhysicalDevicePath
vgreduce VolumeGroupName PhysicalDevicePath
删除卷组
先做pvmove再做vgremove
LV管理工具
显示逻辑卷
lvs
lvdisplay
创建逻辑卷
LVcreate -L #[mMgGtT] -n NAME volumeGroup
LVcreate -l 60%VG -n mylv testvg
lvcreate -l 100% FREE -n yourlv testvg
删除逻辑卷
LVremove /dev/Vg_name/LV_name
重设文件系统大小
fsadm [options] resize device [new_size [BKMGTRP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size] xfs_growfs /mounpoint
扩展逻辑卷
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
lvreduce -L [-]#[mMgGtT] /dev/VG_name/lv_name
mount
跨主机迁移卷组
源计算机上
在旧系统中,umount所有卷组上的逻辑卷
禁用卷组 --> vgchange -a n vg0 --> lvdisplay --> 导出卷组 --> vgexport vg0 --> pvscan
–> vgdiskply --> 拆下旧硬盘
在目标计算机上
在新系统中安装旧硬盘 --> 导入卷组 --> vgimport vg0 --> vgchange -ay vg0 启用 --> mount所有卷组上的逻辑卷
创造逻辑算示例
创建物理卷
pvcreate /dev/sda3
为卷组分配物理卷
vgcreate vg0 /dev/sda3
从卷组创建逻辑卷
LVcreate -L 256M -n data vg0
mkfs.xfs -j /dev/vg0/data
挂载
mount /dev/vg0/data /mnt/data
逻辑卷管理器卷组
快照是特殊的逻辑卷,他是在生成快照时存在的逻辑卷的准确拷贝
对于需要备份或者复制现有数据临时拷贝以及操作来说,快照是最适合的选择
快照只有在它们和原有逻辑卷不同时才会消耗空间
1、在生成快照时会分配给它一定的空间,但只是在原有逻辑卷或者快照有所改变才会使用这些空间
2、当原来的逻辑卷中的所有改变时,会将旧的数据复制到快照中
3、快照中只含有所改变时,会将旧的数据复制到快照中
快照中只含有原有的逻辑卷中改变的数据或自生成快照后快照中更改的数据
4、建立快照的卷大小等于原始逻辑卷,也可以使用lvextend扩展快照
快照的实现,快照就是讲当时系统信息记录下来,就好像照相一样,若将来有任何数据改动了,则原始数据会被移动到快照去,没有改动的区域则有快照去和文件系统共享
由于快照区和原本的Lv共用很多PE区块,因此快照与快照的lv必须在同一个VG中,系统恢复的时候文件数据不能高于快照区的实际容量
创建逻辑卷快照
LVcreate -l 64 -s 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-snpshot
删除快照
umout /mnt/databackup
lvremove /dev/vg0/databackup
lvm逻辑卷管理练习题
1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小
为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
echo -e "n\np\n\n\n+10G\nw\n" |fdisk /dev/sdb
echo -e "n\np\n\n\n+10G\nw\n" |fdisk /dev/sdb
pvcreate /dev/sdb2
pvcreate /dev/sdb1
vgcreate -s 16M testvg /dev/sdb1
vgextend testvg /dev/sdb2
lvcreate -L 5G -n testLV testvg
mkfs.ext4|xfs /dev/testvg/testLV
mount /dev/testvg/testLV /users/
2、 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至
archlinux用户,复制/etc/pam.d目录至自己的家目录
useradd -d /users/archlinux archlinux
cp -pr /etc/pa.m /users/archlinux
3、扩展testlv至7G,要求archlinux用户的文件不能丢失
umount /users/
lvextend -L +2G /dev/testvg/testLV
mount /dev/testvg/testLV /users/
4、收缩testlv至3G,要求archlinux用户的文件不能丢失
umount /users/
e2fsck -f /dev/testvg/adminLV
resize2fs /dev/testvg/adminLV number
lvreduce -L 3G /dev/testvg/adminLV
mount /dev/testvg/testLV /users/
注:ext系列可伸缩逻辑卷,xfs格式只能扩展
5、对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
lvcreate -s -n data-snapshot1 -L 1G /dev/mapper/testvg-adminLV
注: 不能创建时只读,后续无法挂载 错误提示--mount: cannot mount /dev/mapper/testvg-date--xfs read-only
mount -o nouuid,ro /dev/testvg/data-snapshot1 /data/hjq
创建ext格式镜像
lvcreate -L 1G -s -n data-snapshot -p r /dev/mapper/testvg-adminLV
mount /dev/testvg/data-snapshot /data/hjq
rm -rf y*
还原镜像
umount /hjq
umount /data/hjq/
lvconvert --merge /dev/testvg/data-snapshot
mount /dev/testvg/adminLV /hjq
/testvg/data-snapshot1 /data/hjq
创建ext格式镜像
lvcreate -L 1G -s -n data-snapshot -p r /dev/mapper/testvg-adminLV
mount /dev/testvg/data-snapshot /data/hjq
rm -rf y*
还原镜像
umount /hjq
umount /data/hjq/
lvconvert --merge /dev/testvg/data-snapshot
mount /dev/testvg/adminLV /hjq