Linux进阶篇--磁盘阵列(RAID)和逻辑卷管理

磁盘阵列RAID

  • RAID:RedundantArrays of Inexpensive(Independent)Disks
    早期被称为RedundantArrays of Inexpensive Disks(廉价的磁盘阵列),后来随着技术的不断完善,又被称为RedundantArrays of Independent Disks(独立的磁盘冗余阵列)
  • 其作用是:多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供

RAID
* 提高IO能力
  磁盘并行读写
* 提高耐用性
  磁盘冗余来实现
* 级别:多块磁盘组织在一起的工作方式有所不同
* RAID实现的方式:
  外接式磁盘阵列:通过扩展卡提供适配能力
  内接式RAID:主板集成RAID控制器
  安装OS前在BIOS里配置
  软件RAID:通过OS实现

注意:做raid要求raid成员大小要求一致;即取相同的空间做raid,如两个硬盘1个80M,1个100M,那么两个硬盘均取80M来做radi0
RAID级别
  RAID-0:条带卷,strip
  RAID-1: 镜像卷,mirror
  RAID-2
  ..
  RAID-5
  RAID-6
  RAID-10
  RAID-01
* RAID0
  读、写性能提升;
  可用空间:N*min(S1,S2,…)
  无容错能力
  最少磁盘数:2, 2+
在读写数据时,多块硬盘同时进行读写操作,大大提升了读写的性能
* RAID1
  读性能提升、写性能略有下降;
  可用空间:1*min(S1,S2,…)
  有冗余能力
  最少磁盘数:2, 2N
在写入数据时,要同时对两块硬盘写入相同的数据,这样一来,写入一份数据要花费更多的资源,降低了系统写性能
* RAID4
  多块数据盘异或运算值存于专用校验盘
该模式会拿出一块磁盘专用于存储异或校验值,一旦校验盘损坏,系统安全性将会降低
* RAID5
  读、写性能提升
  可用空间:(N-1)*min(S1,S2,…)
  有容错能力:允许最多1块磁盘损坏
  最少磁盘数:3, 3+
每一个硬盘都有一个异或校验值,一旦其中某块硬盘发生故障,通过异或校验值可以计算出该硬盘的数据,以达到冗余的目的。同时,服务器将会处于“忙碌(降级)”状态,系统读写性能大大降低,需要及时把发生故障的硬盘替换。异或校验值会占用硬盘空间,因此硬盘利用率会被稍微降低,利用率为(n-1)/n
* RAID-6:
  读、写性能提升
  可用空间:(N-2)*min(S1,S2,…)
  有容错能力:允许最多2块磁盘损坏
  最少磁盘数:4, 4+
该模式与raid5类似,不同之处在于raid6每个成员内存有两个异或校验值,因此允许损坏2块硬盘,硬盘利用率为(n-2)/n
* RAID10
  读、写性能提升
  可用空间:N*min(S1,S2,…)/2
  有容错能力:每组镜像最多只能坏一块
  最少磁盘数:4, 4+
raid10即对硬盘先两两做raid1,再对两组raid1做raid0
* RAID01
  多块磁盘先实现RAID0,再组合成RAID1
注意:raid10和raid01硬盘利用率均为50%,但raid10容错性比raid01更好
* RAID-50
  多块磁盘先实现RAID5,再组合成RAID0
* JBOD:Just a Bunch Of Disks
  功能:将多块磁盘的空间合并一个大的连续空间使用
  可用空间:sum(S1,S2,…)
该模式对每个磁盘成员大小没有要求,写入数据时,将第一块磁盘写满后,再写入第二块磁盘,以此类推;因此既无容错性,读写性能也大大降低,一般情况下不推荐这种模式
* RAID7
  可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式
*常用RAID级别:
  RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

逻辑卷管理(LVM)

传统分区扩展性差,逻辑卷能够很好的解决该问题
* 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
* 允许在多个物理设备间重新组织文件系统
  将设备指定为物理卷(PV)
  用一个或者多个物理卷来创建一个卷组(VG)
  物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
  在物理卷上创建的逻辑卷(LVM)是由物理区域(PE)组成
  可以在逻辑卷上创建文件系统(FS_TYPE)

LVM介绍
* LVM: Logical Volume Manager,ersion: 2
* dm: device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块
* 设备名:/dev/dm-#
* 软链接:
  /dev/mapper/VG_NAME-LV_NAME
    /dev/mapper/vol0-root
  /dev/VG_NAME/LV_NAME
    /dev/vol0/root

[root@centos7 ~]#ll /dev/vg0/lv0 /dev/mapper/vg0-lv0 
lrwxrwxrwx. 1 root root 7 Aug 19 16:31 /dev/mapper/vg0-lv0 -> ../dm-0
lrwxrwxrwx. 1 root root 7 Aug 19 16:31 /dev/vg0/lv0 -> ../dm-0

LVM更改文件系统的容量
* LVM可以弹性的更改LVM的容量
  通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量

PV管理工具
* 显示pv信息
  pvs:简要pv信息显示
  pvdisplay
* 创建pv
  pvcreate /dev/DEVICE

VG管理工具
* 显示卷组
  vgs
  vgdisplay
* 创建卷组
  vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupNamePhysicalDevicePath[PhysicalDevicePath…]
* 管理卷组
  vgextend VolumeGroupName PhysicalDevicePath[PhysicalDevicePath…]
  vgreduce VolumeGroupName PhysicalDevicePath[PhysicalDevicePath…]
* 删除卷组
  先做pvmove,再做vgremove

知识扩展:

把已经使用的PE移动到同一个卷组的其他成员的物理卷(pv)上;
注意:要确保同一个卷组中有足够可用的空间
pvmove  /dev/sde    移动的是空间(PE)不是数据
vgreduce newvg0  /dev/sde   把/dev/sde从卷组newvg0中删除
pvremove  /dev/sde   删除物理卷

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]

实验1:创建逻辑卷

1、准备磁盘或逻辑卷
如果从硬盘中分出一部分空间作为逻辑卷,需要通过对硬盘分区来分离出需要的硬盘空间,分区以后更改ID类型为8e
2、创建物理卷
pvcreate /dev/sdd1(分区名)  /dev/sde(设备名)
3、创建卷组
vgcreate -s 16M vg0 /dev/sdd1  /dev/sde
-s   是扇区的指数倍,即2^n,至少128k
4、创建逻辑卷
lvcreate -L 1.5G -n lv0  vg0
-L  以容量为单位指定逻辑卷大小
-l  以pe为单位指定逻辑卷大小
PE在逻辑卷中的名称为LE
5、创建文件系统
mkfs.ext4 /dev/vg0/lv0
6、挂载
mount  /dev/vg0/lv0  /mnt/lv0

实验2:删除所有的PV、VG、LVM

1、删除fstab表中挂载项
2、取消挂载
umount  /mnt/lv0
umount  /mnt/lv0
3、删除逻辑卷
lvremove  /dev/newvg0/lv{0,1}
4、删除卷组
vgremove  /dev/newvg0
5、删除物理卷
pvremove /dev/sdc  /dev/sdd1

扩展和缩减逻辑卷
* 扩展逻辑卷:
  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:扩展逻辑卷

扩展逻辑卷,首先要扩展卷组
1、查看卷组空间 vgdisplay
2、如果空间足够,直接扩展 
lvextend -l 100%FREE /dev/vg0/lv0
然后扩展文件系统:
ext系列文件系统:resize2fs /dev/vg0/lv0
xfs文件系统:xfs_grow  /mnt/lv0
或者一步完成:lvextend -r -l 100%FREE /dev/vg0/lv0
3、如果空间不足,则需要新增物理卷
(1)pvcreate  /dev/sdc   增加物理卷
(2)vgextend vg0 /dev/sdc  扩展卷组
(3)lvextend -L +1G /dev/vg0/lv0 逻辑卷在原来的基础上增加大小+1G
lvextend -L 3G  /dev/vg0/lv0  逻辑卷直接指定大小3G
(4)扩展文件系统
ext系列文件系统  resize2fs /dev/vg0/lv0(设备名)
xfs文件系统  xfs_grow  /mnt/lv1(挂载点)
扩展逻辑卷,由于新增分区没有文件系统,因此硬盘容量虽然加入逻辑卷,但是却不能写入数据,因此需要扩展文件系统
或者:
扩展空间和扩展文件系统一步完成,不用管是哪种文件系统
lvextend -r -L +1G /dev/vg0/lv0

实验2:缩减逻辑卷

逻辑卷缩减(ext系列) 
xfs文件系统不支持缩减,ext4支持缩减
逻辑卷缩减,数据要提前做备份

1、缩减不支持在线缩减,要先取消挂载要缩减的逻辑卷
umount /mnt/lv0
2、检查系统完整性(必须执行该步骤,否则后续会报错)
fsck -f /dev/vg0/lv0
3、缩减文件系统
resize2fs /dev/vg0/lv0  2G   缩减后的大小必须大于逻辑卷大小
4、缩减逻辑卷
lvreduce  -L 2G /dev/vg0/lv0  逻辑卷缩减大小必须和文件系统缩减大小一致
5、重新挂载
mount -a
6、查看缩减后的结果
df -h

跨主机迁移卷组
* 源计算机上
  1 在旧系统中,umount所有卷组上的逻辑卷
  2 vgchange –a n vg0
    lvdisplay
  3 vgexport vg0
    pvscan
    vgdisplay
    拆下旧硬盘
* 在目标计算机上
  4 在新系统中安装旧硬盘,并vgimport vg0.
  5 vgchange –ay vg0
  6 mount所有卷组上的逻辑卷

实验:跨主机迁移卷组

1、为防止名字与目标主机上的逻辑卷、卷组冲突,需要在迁移之前对逻辑卷、卷组更改名称
vgrename  vg0 newvg0
lvrename  /dev/newvg0/lv0 newlv0(卷组名称更改后,逻辑卷可以不用更改名称)
lvdisplay  查看更改后的逻辑卷信息
2、取消挂载
umount  /mnt/lv0
查看该逻辑卷所在分区下是否有其他逻辑卷,如果有,也要取消挂载
umount  /mnt/lv1
3、卷组设置为非活动状态
vgchange  -an  newvg0
vgdisplay、lvdisplay   查看卷组、逻辑卷状态
4、卷组设置为导出状态
vgexport  newvg0
5、把逻辑卷所在硬盘拆下来,并且安装到目标设备上
pvscan  在目标设备上查看物理卷
6、vgimport  newcg0   导入卷组
7、vgchange -ay  newvg0  激活卷组
8、mkdir /mnt/newlv0

注意:centos6默认文件系统为ext系列,因此从centos7迁移到centos6版本,会有问题,如果从centos6往centos7上迁移,则没问题

逻辑卷管理器快照

  • 快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
  • 对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择
  • 快照只有在它们和原来的逻辑卷不同时才会消耗空间
      在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
      当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
      快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据
      建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照
  • 快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
  • 由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量

使用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-1:创建快照(ext系列文件系统)

1、查看卷组是否有多余空间,如果有,创建逻辑卷的快照
lvcreate -n lv0-snapshot -s -L 1G  /dev/vg0/lv0
或lvcreate -n lv0-snapshot -s -p r -L 1G  /dev/vg0/lv0  加上-p r选项,把文件设备只读,保证数据完整性
lvdisplay
2、挂载快照逻辑卷
mkdir /mnt/lv0-snapshot
mount /dev/lv0-snapshot  /mnt/lv0-snapshot
ext系列文件系统虽然快照逻辑卷和原有逻辑卷uuid一致,但不用使用-o nouuid选项,这是文件系统特性造成的结果
3、ls  /mnt/lv0-snapshot   查看快照文件

实验1-2:创建快照(xfs文件系统)

1、创建快照逻辑卷
lvcreate -n lv1-snapshot -s -L 1G /dev/vg0/lv1
2、挂载快照逻辑卷
mkdir /mnt/lv1-snapshot
mount -o nouuid /dev/vg0/lv1-snapshot  /mnt/lv1-snapshot

注意:挂载时由于xfs文件系统下快照逻辑卷和原有逻辑卷uuid一致,因此不能挂载;可以使用mount -o nouuid选项进行挂载。

实验2:根据快照还原数据

1、取消挂载
umount  /mnt/lv0   取消逻辑卷挂载
umount  /mnt/lv0-snapshot   取消快照逻辑卷挂载
2、把快照数据还原到原来的逻辑卷
lvconvert --merge /dev/vg0/lv0-snapshot
3、重新挂载逻辑卷
mount /dev/vg0/lv0  /mnt/lv0

实验3:删除快照

1、取消快照逻辑卷挂载
umount  /mnt/lv0-snapshot
2、删除快照
lvremove  /dev/vg0/lv0-snapshot

猜你喜欢

转载自blog.csdn.net/u013168176/article/details/81840506