RAID
磁盘阵列(Redundant Arrays of Independent Disks,RAID),全称独立磁盘冗余阵列。
磁盘阵列是由很多廉价的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
利用同位检查(ParityCheck)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上(冗余),输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
分类:硬RAID:磁盘阵列柜、磁盘阵列卡 软RAID:软件实现
本篇只介绍常见的:RAID0、RAID1、RAID5、RAID6
RAID0
RAID0又称为Stripe或Striping,中文称之为条带化存储,它代表了所有RAID级别中最高的存储性能。是把连续的数据分散到多个磁盘上存取,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
磁盘空间 = 磁盘总量 = 100%
需要的磁盘数 ≥ 2
优点:
1、 充分利用I/O总线性能使其带宽翻倍,读/写速度翻倍。2、 充分利用磁盘空间,利用率为100%。
缺点:
1、 不提供数据冗余。2、 无数据检验,不能保证数据的正确性。
3、 存在单点故障。
RAID1
RAID1又称为Mirror或者Mirroring,中文称之为镜像存储。RAID1是磁盘阵列中单位成本最高的,磁盘利用率最低,但提供了很高的数据安全性和可用性。将一个两块硬盘所构成RAID磁盘阵列,其容量仅等于一块硬盘的容量,因为另一块只是当作数据“镜像”通过镜像实现数据冗余,成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。最大允许互为镜像内的单个磁盘故障,如果出现互为镜像的两块磁盘故障则数据丢失。
磁盘空间 = 磁盘总量/2 = 50%
需要的磁盘数(n) ≥ 2*n
优点:
1、 提供数据冗余,数据双倍存储。2、 提供良好的读性能
缺点:
1、 无数据校验2、 磁盘利用率低,成本高
RAID-01
先做RAID 0再将RAID 0组合成RAID 1,拥有两种RAID的特性。
磁盘空间= n/2 = 50%4 ≥ 需要的磁盘数 ≥ 2*n
优点:
1、 较高的IO性能
2、 有数据冗余
3、 无单点故障
缺点:
1、 成本稍高2、 安全性比RAID 10 差
RAID-10
先做RAID 1再将RAID 1组合成RAID 0,拥有两种RAID的特性,安全性能高。
磁盘空间= n/2 = 50%4 ≤ 需要的磁盘数 ≥ 2*n
优点:
1、RAID10的读性能将优于RAID012、较高的IO性能
3、有数据冗余
4、 无单点故障
5、安全性能高
缺点:
成本稍高
RAID5
奇偶校验(XOR),RAID0和RAID1的折中方案。数据以块分段条带化存储。校验信息交叉地存储在所有的数据盘上。数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据
磁盘空间 = n-1需要的磁盘数 ≥ 3
优点:
1、 读写性能高2、 有校验机制
3、 磁盘空间利用率高
缺点:
磁盘越多安全性能越差RAID6
与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块。双重奇偶校验。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID6需要分配给奇偶校验信息更大的磁盘空间,写性能比RAID5差。
磁盘空间 = n-2需要的磁盘数 ≥ 4
优点:
1、 良好的随机读性能2、 有校验机制
缺点:
1、 写入速度差2、 成本高
RAID-50
先做RAID 5再将RAID 5组合成RAID 0,拥有两种RAID的特性。
需要的磁盘数 ≥ 6
软RAID
RAID设备被命名为 md,mdadm 工具提供了软件实现RAID的功能。
语法:mdadm [模式] RAID [选项] 设备
1、构建RAID,并为RAID设备命名。
[root@CentOS6 ~]#echo "- -mdadm -C /dev/md0 -a yes -l5 -n3 -x1 -c32 /dev/sd{b,c,d,e} #将sdb、c、d做RAID5名为md0,sde为空闲盘 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. [root@CentOS6 ~]#mkfs.ext4 /dev/md0 #在md0上创建ext4文件系统 …… [root@CentOS6 ~]#blkid /dev/sda1: UUID="056668aa-7ecd-4235-8351-c8fb02372e3b" TYPE="ext4" LABEL="bootdisk" /dev/sda2: UUID="481fa90c-b9f1-459b-ba67-f4f4c8d7942b" TYPE="ext4" /dev/sda3: UUID="b98328eb-21c7-4114-b3d5-93cd4aec6bc8" TYPE="ext4" LABEL="app" /dev/sda5: UUID="5a1eda5a-2e54-4d0c-b8ea-ef99b9ac3417" TYPE="swap" /dev/sdb: UUID="612baa8e-e67f-8bb8-fa27-c39a34ec35d9" UUID_SUB="dc3f6167-386d-414b-356b-10a0af4584a9" LABEL="CentOS6.miriam:0" TYPE="linux_raid_member" /dev/sdc: UUID="612baa8e-e67f-8bb8-fa27-c39a34ec35d9" UUID_SUB="eab8698b-d21a-8553-114b-0980c14916f6" LABEL="CentOS6.miriam:0" TYPE="linux_raid_member" /dev/sdd: UUID="612baa8e-e67f-8bb8-fa27-c39a34ec35d9" UUID_SUB="6a20e49b-beca-9c7c-b14e-2611cadd3fb5" LABEL="CentOS6.miriam:0" TYPE="linux_raid_member" /dev/md0: UUID="955ac152-589a-4717-9bbb-9e9510dd1b12" TYPE="ext4" /dev/sde: UUID="612baa8e-e67f-8bb8-fa27-c39a34ec35d9" UUID_SUB="76d59026-fc76-0680-9ef8-01a3390270d2" LABEL="CentOS6.miriam:0" TYPE="linux_raid_member"
2、修改 /etc/fstab,添加RAID设备。
[root@CentOS6 ~]#vim /etc/fstab #在/etc/fstab中添加:UUID=955ac152-589a-4717-9bbb-9e9510dd1b12 /mnt/md0 ext4 defaults 0 0 [root@CentOS6 ~]#mdadm -Ds /dev/md0 > /etc/mdadm.conf [root@CentOS6 ~]#ll /etc/mdadm.conf -rw-r--r--. 1 root root 100 Apr 2 16:36 /etc/mdadm.conf
3、查看指定RAID设备信息
[root@CentOS6 ~]#mdadm -D /dev/md0 #查看md0的详细信息 /dev/md0: Version : 1.2 Creation Time : Mon Apr 2 16:27:51 2018 Raid Level : raid5 Array Size : 4190208 (4.00 GiB 4.29 GB) Used Dev Size : 2095104 (2046.00 MiB 2145.39 MB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Apr 2 16:31:58 2018 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 32K Name : CentOS6.miriam:0 (local to host CentOS6.miriam) UUID : 612baa8e:e67f8bb8:fa27c39a:34ec35d9 Events : 18 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 4 8 48 2 active sync /dev/sdd 3 8 64 - spare /dev/sde
4、当 RAID 中有硬盘损坏,查看 RAID 信息确定损坏情况后移除对应硬盘,并添加新的硬盘。
[root@CentOS6 ~]#mdadm /dev/md0 -f /dev/sdd #模拟sdd硬盘损坏 mdadm: set /dev/sdd faulty in /dev/md0 [root@CentOS6 ~]#mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Apr 2 16:27:51 2018 Raid Level : raid5 Array Size : 4190208 (4.00 GiB 4.29 GB) Used Dev Size : 2095104 (2046.00 MiB 2145.39 MB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Apr 2 16:46:02 2018 State : clean, degraded, recovering #degraded:降级的,表明当前只是用了两块硬盘 Active Devices : 2 Working Devices : 3 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 32K Rebuild Status : 71% complete Name : CentOS6.miriam:0 (local to host CentOS6.miriam) UUID : 612baa8e:e67f8bb8:fa27c39a:34ec35d9 Events : 31 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 3 8 64 2 spare rebuilding /dev/sde #状态表明其他硬盘正在反算原硬盘中的数据 4 8 48 - faulty /dev/sdd #状态表明为已损坏 [root@CentOS6 ~]#mdadm /dev/md0 -r /dev/sdd #移除sdd硬盘 mdadm: hot removed /dev/sdd from /dev/md0 [root@CentOS6 ~]#mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Apr 2 16:27:51 2018 Raid Level : raid5 Array Size : 4190208 (4.00 GiB 4.29 GB) Used Dev Size : 2095104 (2046.00 MiB 2145.39 MB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Mon Apr 2 16:46:57 2018 State : clean #状态为clean,说明备用新硬盘已经工作 Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 32K Name : CentOS6.miriam:0 (local to host CentOS6.miriam) UUID : 612baa8e:e67f8bb8:fa27c39a:34ec35d9 Events : 38 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 3 8 64 2 active sync /dev/sde #反算结束,原硬盘中数据已恢复 [root@CentOS6 ~]#mdadm /dev/md0 -a /dev/sdd #将sdd新增加至md0 mdadm: added /dev/sdd [root@CentOS6 ~]#mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Apr 2 16:27:51 2018 Raid Level : raid5 Array Size : 4190208 (4.00 GiB 4.29 GB) Used Dev Size : 2095104 (2046.00 MiB 2145.39 MB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Apr 2 16:47:32 2018 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 32K Name : CentOS6.miriam:0 (local to host CentOS6.miriam) UUID : 612baa8e:e67f8bb8:fa27c39a:34ec35d9 Events : 39 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb #因为设置为3块硬盘做的RAID5 1 8 32 1 active sync /dev/sdc 3 8 64 2 active sync /dev/sde 4 8 48 - spare /dev/sdd #所以sdd只能做空闲盘
5、停止RAID设备。
[root@CentOS6 ~]#umount /dev/md0 #在停止RAID时,首先要取消挂载 [root@CentOS6 ~]#mdadm -S /dev/md0 #停止md0 mdadm: stopped /dev/md0 [root@CentOS6 ~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 5.8G 0 rom /media/CDROM sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 50G 0 part / ├─sda3 8:3 0 3G 0 part /data ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 2G 0 disk sdc 8:32 0 2G 0 disk sdd 8:48 0 2G 0 disk sde 8:64 0 2G 0 disk [root@CentOS6 ~]#mdadm -A /dev/md0 #启用md0 mdadm: /dev/md0 has been started with 3 drives and 1 spare. [root@CentOS6 ~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 5.8G 0 rom /media/CDROM sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 50G 0 part / ├─sda3 8:3 0 3G 0 part /data ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 2G 0 disk └─md0 9:0 0 4G 0 raid5 sdc 8:32 0 2G 0 disk └─md0 9:0 0 4G 0 raid5 sdd 8:48 0 2G 0 disk └─md0 9:0 0 4G 0 raid5 sde 8:64 0 2G 0 disk └─md0 9:0 0 4G 0 raid5
LVM
LVM在每个物理卷头部都维护了一个metadata,每个metadata中都包含了整个VG(volume group:卷组)的信息,包括每个VG的布局配置,PV(physical volume:物理卷)的编号,LV(logical volume:逻辑卷)的编号,以及每个PE(physical extends:物理扩展单元)到LE(logical extends:物理扩展单元)的映射关系。同一个VG中的每个PV头部的信息都是相同的,这样有利于故障时进行数据恢复。
LVM对上层文件系统提供LV层,隐藏了操作细节。对文件系统而言,对LV的操作与原先对partition的操作没有差别。当对LV进行写入操作的时候,LVM定位相应的LE,通过PV头部的映射表将数据写入到相应的PE上。LVM实现的关LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。键在于PE和LE之间建立映射关系,不同的映射规则决定了不同的LVM存储模型。LVM支持多个PV 的stripe和mirror。
LVM最大的特点就是可以对磁盘进行动态管理,因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据,如果我们增加了硬盘也不会改变现有的上层逻辑卷。
优点:
1. 文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。2. 可以在系统运行的状态下动态的扩展文件系统的大小。
3. 可以增加新的磁盘到LVM的存储池中。
4. 可以以镜像的方式冗余重要的数据到多个物理磁盘。
5. 可以方便的导出整个卷组到另外一台机器。
缺点:
1. 在从卷组中移除一个磁盘的时候必须使用reducevg命令(这个命令要求root权限,并且不允许在快照卷组中使用)。2. 当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
3. 因为加入了额外的操作,存贮性能受到影响。
pv物理卷管理
pvcreate命令用于创建pv。
语法:pvcreate 设备
[root@CentOS6 ~]#pvcreate /dev/sdb Physical volume "/dev/sdb" successfully createdpvs 或 pvdisplay命令用于显示pv 的信息。
[root@CentOS6 ~]#pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 ---- 2.00g 2.00g /dev/sdc lvm2 ---- 2.00g 2.00g /dev/sdd lvm2 ---- 2.00g 2.00gvh
vg卷组管理
vgcreate命令用于创建vg。
语法:vgcreate [-s] vgName pv
[root@CentOS6 ~]#vgcreate -s 10M vg0 /dev/sd{b,c,d} #-s选项后跟PE大小 Volume group "vg0" successfully created
vgs 或 vgdisplay命令用于显示 vg 的信息。
[root@CentOS6 ~]#vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 3 Act PV 3 VG Size 5.98 GiB PE Size 10.00 MiB Total PE 612 Alloc PE / Size 0 / 0 Free PE / Size 612 / 5.98 GiB VG UUID 9tmr41-HuGf-3DaP-HmC1-mivO-FhCb-IUDbGJ
vgextend命令用于向卷组增加物理卷。
语法:vgextend vgName pv
[root@CentOS6 ~]#vgextend vg0 /dev/sde Volume group "vg0" successfully extended [root@CentOS6 ~]#vgs VG #PV #LV #SN Attr VSize VFree vg0 4 0 0 wz--n- 7.97g 7.97g
vgreduce命令用于将卷组中的物理卷移除。
语法:vgreduce vgName pv
[root@CentOS6 ~]#vgreduce vg0 /dev/sde Removed "/dev/sde" from volume group "vg0" [root@CentOS6 ~]#vgs VG #PV #LV #SN Attr VSize VFree vg0 3 0 0 wz--n- 5.98g 5.98g
lv逻辑卷管理命令
lvcreate命令用于创建逻辑卷。
语法:lvcreate 选项 参数 vgName
[root@CentOS6 ~]#lvcreate -L 3G -n lv0 vg0 Rounding up size to full physical extent 3.01 GiB Logical volume "lv0" created. [root@CentOS6 ~]#lvdisplay --- Logical volume --- LV Path /dev/vg0/lv0 LV Name lv0 VG Name vg0 LV UUID 23CmEh-EUbn-eix2-uIEG-QWfp-v4vv-P88Gas LV Write Access read/write LV Creation host, time CentOS6.miriam, 2018-04-03 16:27:04 +0800 LV Status available # open 0 LV Size 3.01 GiB Current LE 308 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
选项:
-l:以目标卷组指定容量的百分比进行划分
VG 整体容量
FREE 剩余容量
-L:以指定容量划分,+/-为增加/减少容量 不写为指定到容量
-n:指定逻辑卷名
lvs 或 lvdispaly命令用于显示 lv 的信息。
[root@CentOS6 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-a----- 3.01g
lvextend命令用于扩容逻辑卷。
语法:lvextend [-r] -L/-l 容量 逻辑卷
[root@CentOS6 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-a----- 3.01g [root@CentOS6 ~]#lvextend -r -l +50%FREE /dev/vg0/lv0 #-r调整容量,在调整时自动会将新加入的卷组FS同化 fsck from util-linux-ng 2.17.2 /dev/mapper/vg0-lv0: clean, 11/197200 files, 29929/788480 blocks Size of logical volume vg0/lv0 changed from 3.01 GiB (308 extents) to 4.49 GiB (460 extents). Logical volume lv0 successfully resized. resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mapper/vg0-lv0 to 1177600 (4k) blocks. The filesystem on /dev/mapper/vg0-lv0 is now 1177600 blocks long. [root@CentOS6 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-a----- 4.49g
resize2fs命令用于调整文件系统的大小。
一般情况下使用resize2fs前,命令会要求使用 fsck 对文件系统进行检查。
语法:resize2fs [选项] 设备 新容量
[root@CentOS6 ~]#resize2fs -p /dev/vg0/lv0 3G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vg0/lv0 to 786432 (4k) blocks. Begin pass 3 (max = 32) Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX The filesystem on /dev/vg0/lv0 is now 786432 blocks long.
选项:
-f 强制开始文件系统重定义大小操作,推翻一些resize2fs平常的强制安全检查。
-F 开始之前排除文件系统设备的缓冲区的缓存。真正只对resize2fs的时间检验有用。
-M 减小文件系统到最小的大小。
-p 为了每一个resize2fs操作打印一个百分比完成条,因此用户可以保持注意程序正在运作的动态。
lvreduce命令用于缩减逻辑卷容量。
先卸载!!!
语法:lvreduce -L [-]容量 逻辑卷
[root@CentOS6 ~]#lvreduce -L 3G /dev/vg0/lv0 Rounding size to boundary between physical extents: 3.01 GiB. WARNING: Reducing active logical volume to 3.01 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg0/lv0? [y/n]: y Size of logical volume vg0/lv0 changed from 4.49 GiB (460 extents) to 3.01 GiB (308 extents). Logical volume lv0 successfully resized. [root@CentOS6 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-a----- 3.01g
LVM常用操作
将逻辑卷中的物理卷移除
[root@CentOS6 ~]#pvmove /dev/sdd #将sdd硬盘中的数据移动到对应的逻辑卷中 /dev/sdd: Moved: 5.8% /dev/sdd: Moved: 100.0% [root@CentOS6 ~]#vgreduce vg0 /dev/sdd Removed "/dev/sdd" from volume group "vg0" [root@CentOS6 ~]#pvremove /dev/sdd #移除sdd硬盘中的pv属性 Labels on physical volume "/dev/sdd" successfully wiped
重命名卷组、逻辑卷
[root@CentOS6 ~]#vgrename vg0 CentOSvg0 #可以写卷名 Volume group "vg0" successfully renamed to "CentOSvg0" [root@CentOS6 ~]#vgs VG #PV #LV #SN Attr VSize VFree CentOSvg0 2 1 0 wz--n- 3.98g 1000.00m [root@CentOS6 ~]#lvrename /dev/CentOSvg0/lv0 /dev/CentOSvg0/6_lv0 #只能写路径 Renamed "lv0" to "6_lv0" in volume group "CentOSvg0" [root@CentOS6 ~]#lvs /dev/CentOSvg0/6_lv0 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert 6_lv0 CentOSvg0 -wi-a----- 3.01g跨主机迁移卷组
1、设置需要迁移的卷组
注意目的主机中是否有同名的卷名,有的话改名后再进行迁移
[root@CentOS6 ~]#vgchange -an CentOSvg0 #冻结需要迁移的卷组 0 logical volume(s) in volume group "CentOSvg0" now active [root@CentOS6 ~]#lvdisplay --- Logical volume --- LV Path /dev/CentOSvg0/6_lv0 LV Name 6_lv0 VG Name CentOSvg0 LV UUID 23CmEh-EUbn-eix2-uIEG-QWfp-v4vv-P88Gas LV Write Access read/write LV Creation host, time CentOS6.miriam, 2018-04-03 16:27:04 +0800 LV Status NOT available #逻辑卷状态为“非活动” LV Size 3.01 GiB Current LE 308 Segments 2 Allocation inherit Read ahead sectors auto [root@CentOS6 ~]#vgexport CentOSvg0 #将卷组导出,此时便可以拆除硬盘 Volume group "CentOSvg0" successfully exported
2、将硬盘迁移到目的主机
[root@CentOS7 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 50G 0 part / ├─sda3 8:3 0 2.4G 0 part [SWAP] ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 20G 0 part /data sdb 8:16 0 2G 0 disk #目的主机已识别硬盘 sdc 8:32 0 2G 0 disk sdd 8:48 0 2G 0 disk sde 8:64 0 2G 0 disk sr0 11:0 1 8.1G 0 rom /run/media/root/CentOS 7 x86_64 [root@CentOS7 ~]# pvdisplay Physical volume "/dev/sdb" of volume group "CentOSvg0" is exported --- Physical volume --- PV Name /dev/sdb VG Name CentOSvg0 (exported) #物理卷仍是导出状态 PV Size 2.00 GiB / not usable 8.00 MiB Allocatable yes (but full) PE Size 10.00 MiB Total PE 204 Free PE 0 Allocated PE 204 PV UUID zspkge-kxHA-OZ2b-4xou-MsUG-qpuq-64eoRf Physical volume "/dev/sdd" of volume group "CentOSvg0" is exported --- Physical volume --- PV Name /dev/sdd VG Name CentOSvg0 (exported) PV Size 2.00 GiB / not usable 8.00 MiB Allocatable yes PE Size 10.00 MiB Total PE 204 Free PE 100 Allocated PE 104 PV UUID NneEqT-t8sI-WJzk-1i96-5R4m-QhW3-XY2Hkb "/dev/sde" is a new physical volume of "2.00 GiB" --- NEW Physical volume --- PV Name /dev/sde VG Name PV Size 2.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID hGJFGk-ro4T-8o0U-Ae9K-3ANb-mB8U-hHwTdo
3、激活卷组,启用逻辑卷
[root@CentOS7 ~]# vgimport CentOSvg0 #导入卷组 Volume group "CentOSvg0" successfully imported [root@CentOS7 ~]# vgchange -ay CentOSvg0 #激活卷组 1 logical volume(s) in volume group "CentOSvg0" now active [root@CentOS7 ~]# lvdisplay --- Logical volume --- LV Path /dev/CentOSvg0/6_lv0 LV Name 6_lv0 VG Name CentOSvg0 LV UUID 23CmEh-EUbn-eix2-uIEG-QWfp-v4vv-P88Gas LV Write Access read/write LV Creation host, time CentOS6.miriam, 2018-04-03 16:27:04 +0800 LV Status available #逻辑卷状态已启用 # open 0 LV Size <3.01 GiB Current LE 308 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0逻辑卷快照
snaphot:关于指定数据集合的一个完全可用的拷贝,该拷贝包括相应数据在某个时间点(拷贝的时间点)的映像。快照可以是其所表示的数据的一个副本也可以是数据的一个复制品。从具体细节上说,快照是指向保存在存储设备中的数据的引用标记或指针。
如果快照逻辑卷变满,它将被丢弃变得不可用,因此分配给快照足够的空间是非常重要的。所需的空间大小取决于快照的使用,所以没有可循的方法来设置此大小。如果快照的大小等于原始卷的大小那么快照永远可用。
当创建快照的时候,仅拷贝原始卷里数据的元数据。并不会有数据的物理拷贝,因此快照的创建几乎是实时的。当原始卷上有写操作时,快照跟踪原始卷块的改变,此时原始卷上将要改变的数据在改变之前被拷贝到快照的空间里。因此这个原理的实现叫做写时复制(CoW)。使用CoW时,快照大小并不需要和原始卷一样大,其大小只需考虑两个方面:从快照创建到释放的这段时间内数据块的改变量有多大,数据更新的频率。一旦快照的空间记录满了原始卷数据块的改变的信息,那么这个快照就无效了。
在写操作写入块之前,CoW将原始数据移动到快照空间里,这样就保证了所有的数据在快照创建时候保持一致性,而对于快照的读操作,如果是读取的数据块是没有修改过的,那么就会将读操作直接重定向到原始卷上,如果是读取已经修改过的数据快,那么就读取拷贝到快照上的数据快。
当删除逻辑卷的时候,在该逻辑卷上创建的所有快照会被全部删除。
创建逻辑卷快照与创建逻辑卷操作一样,只需要添加 -s 选项,但是创建之前要确保卷组中有足够的空间。
[root@CentOS7 ~]# lvcreate -n 6_lv0_snapshot -s -L 1G /dev/CentOSvg0/6_lv0 #使用-s选项创建逻辑卷快照 Using default stripesize 64.00 KiB. Rounding up size to full physical extent <1.01 GiB Logical volume "6_lv0_snapshot" created. [root@CentOS7 ~]# lvdisplay --- Logical volume --- #逻辑卷信息 LV Path /dev/CentOSvg0/6_lv0 LV Name 6_lv0 VG Name CentOSvg0 LV UUID 23CmEh-EUbn-eix2-uIEG-QWfp-v4vv-P88Gas LV Write Access read/write LV Creation host, time CentOS6.miriam, 2018-04-03 16:27:04 +0800 LV snapshot status source of #说明该逻辑卷拥有快照 6_lv0_snapshot [active] LV Status available # open 1 LV Size <3.01 GiB Current LE 308 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 --- Logical volume --- #逻辑卷快照信息 LV Path /dev/CentOSvg0/6_lv0_snapshot LV Name 6_lv0_snapshot VG Name CentOSvg0 LV UUID RtiT2V-YrRk-b1s0-tjIP-2DW1-PtV5-8PpUoq LV Write Access read/write LV Creation host, time CentOS7.miriam, 2018-04-28 21:08:18 +0800 LV snapshot status active destination for 6_lv0 LV Status available # open 0 LV Size <3.01 GiB Current LE 308 COW-table size <1.01 GiB COW-table LE 103 Allocated to snapshot 0.00% Snapshot chunk size 4.00 KiB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0创建快照时,逻辑卷中有 file1..5 五个文件,挂载后查看两个文件夹。
[root@CentOS7 lv0]# ls /mnt/lv0/ /mnt/snap/ /mnt/lv0/: file1 file2 file3 file4 file5 lost+found /mnt/snap/: file1 file2 file3 file4 file5 lost+found
快照成功~~