第7章 使用RAID与LVM磁盘阵列技术

章节简述:

您好,此章节为新增加的知识内容,正在努力的排版完善,预习2016年9月中旬完成,感谢您的支持,QQ群:340829。

7.1  磁盘冗余阵列
1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢失还加入了冗余备份机制。
RAID的早先设计理念为"redundant array of Inexpensive disks"即不贵的硬盘组,而现在的定义是"Redundant Array of Independent Disks"即独立的硬盘组,作用是防止硬盘物理损坏以及增加存储设备的吞吐量RAID常见的组合有01510
RAID0:需要至少两块(含)硬盘,可以有效的提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力。
第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
将多块硬盘通过硬件或软件的方式串联在一起,成为一个大的卷集,将数据依次写入到各个硬盘中,这样性能会极大提升,但若任意一块硬盘故障则整个系统的数据都会受到破坏。
RAID1:需要至少两块(含)硬盘,可以有效的提高数据资料的安全性和可修复性,但成本却提高了。
第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
实现原来是在数据写入硬盘时也会在另外一块闲置的硬盘上生成镜像文件,在不影响性能的情况下最大限度保证数据资料的可靠性,只要在一对镜像盘中还有一块硬盘可以使用,那么数据也不会丢失,具有很好的硬盘冗余能力,虽然对数据来讲绝对的安全,但成本却明显增加,磁盘利用率仅为50%。
RAID5:需要至少三块(含)硬盘,兼顾存储性能、数据安全和储存成本。
 
第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
如上图所示"parity"块中保存的是其他硬盘数据的奇偶校验信息(并非其他硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RAID5不以单独的硬盘来存放数据的奇偶校验信息,而是保存在各个磁盘上。
这样当任何一个硬盘损坏都可以根据其他硬盘上的奇偶校验信息来尝试重建损坏的数据,性能也很高,兼顾了存储性能、数据安全和存储成本,可以看作是RAID0与RAID1的折中方案。
 
RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高。
第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
 
继承了RAID0的快速与RAID1的安全,RAID1在这里提供了冗余备份的阵列,而RAID0则负责数据的读写阵列。
因这种结构的成本高,一般用于存放要求速度与差错控制的数据。
 
mdadm命令用于管理系统软件RAID硬盘阵列,格式为:"mdadm [模式] <RAID设备名称> [选项] [成员设备名称]"。
mdadm管理RAID阵列的动作有:
编辑
名称 作用
Assemble 将设备加入到以前定义的阵列
Build 创建一个没有超级块的阵列
Create 创建一个新的阵列,每个设备具有超级块。
Manage 管理阵列(如添加和删除)。
Misc 允许单独对阵列中的某个设备进行操作(如停止阵列)。
Follow or Monitor 监控状态。
Grow 改变阵列的容量或设备数目。
mdadm管理RAID阵列的参数有:
编辑
参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定raid级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止阵列
模拟训练:RAID10配置流程:
第1步:在虚拟机中再添加4块硬盘:
第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
第2步:使用mdadm命令创建RAID10,名称为"/dev/md0"。

-C代表创建操作,-v显示创建过程,-a yes检查RAID名称,-n是用到的硬盘个数,-l是定义RAID的级别而后面写上要加入阵列的硬盘名称。

[root@linuxprobe ~]#mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954624K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

第3步:格式化并挂载使用

将RAID磁盘阵列格式化为ext4格式:

[root@linuxprobe ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

创建挂载目录:

[root@linuxprobe ~]# mkdir /RAID

进行文件系统的挂载:

[root@linuxprobe ~]# mount /dev/md0 /RAID

查看磁盘挂载信息:

[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.0G 15G 17% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 84K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/md0 40G 49M 38G 1% /RAID

将此磁盘阵列挂载信息设置为重启后也依然生效:

[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

第4步:查看/dev/md0设备信息

参数-D查看RAID阵列的详细信息:

[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue May 5 07:43:26 2015
Raid Level : raid10
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue May 5 07:46:59 2015
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : cc9a87d4:1e89e175:5383e1e8:a78ec62c
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde

第5步:模拟有1块硬盘损坏的情况
使用mdadm的-f参数将/dev/sdb移出阵列:

[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0

再看下阵列的状态(此时的/dev/sdb状态被是移除,失败状态):

[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 8 08:11:00 2015
Raid Level : raid10
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri May 8 08:27:18 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : linuxprobe.com:0 (local to host linuxprobe.com)
UUID : f2993bbd:99c1eb63:bd61d4d4:3f06c3b0
Events : 21
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
0 8 16 - faulty /dev/sdb

第6步:损坏后依然正常使用

因为RAID10级别能够允许一组RAID1硬盘中存在一个故障盘而不影响使用,所以依然可以正常的创建或删除文件~

现在就把新的硬盘添加进去吧,当然也可以让硬盘sdb恢复使用:重启后执行“ mdadm /dev/md0 -a /dev/sdb”。

第7步:设置冗余备份磁盘

现在发现了一个问题没?运维人员需要在硬盘硬件出现故障后手工添加新的磁盘进去,这样会不会比较不方便?
假如初始化RAID5阵列时直接给予4块硬盘,其中1块硬盘设备用于在阵列某块磁盘故障时自动的替换上去,这样很棒吧!
先将磁盘系统卸载:

[root@linuxprobe ~]# umount /dev/md0

停止该阵列设备,彻底的停用:

[root@linuxprobe ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0

现在该阵列已经找不到了:

[root@linuxprobe ~]# mdadm -D /dev/md0
mdadm: cannot open /dev/md0: No such file or directory

创建RAID5并设置1块备份故障盘:

[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: /dev/sdb appears to be part of a raid array:
level=raid10 devices=4 ctime=Fri May 8 08:11:00 2015
mdadm: /dev/sdc appears to be part of a raid array:
level=raid10 devices=4 ctime=Fri May 8 08:11:00 2015
mdadm: /dev/sdd appears to be part of a raid array:
level=raid10 devices=4 ctime=Fri May 8 08:11:00 2015
mdadm: /dev/sde appears to be part of a raid array:
level=raid10 devices=4 ctime=Fri May 8 08:11:00 2015
mdadm: size set to 20954624K

此处需要输入y,确认创建这个阵列:

Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看下阵列的详细信息(Spare Devices数量为1):

[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 8 09:20:35 2015
Raid Level : raid5
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri May 8 09:22:22 2015
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : linuxprobe.com:0 (local to host linuxprobe.com)
UUID : 44b1a152:3f1809d3:1d234916:4ac70481
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

将磁盘阵列格式化为ext4系统:

[root@linuxprobe ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

因为前面设置过fstab文件,所以现在可以直接给挂载:

[root@linuxprobe ~]# mount -a

将/dev/sdb设备设置为故障并移出阵列:

[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0

再来看下阵列的详细信息(此时硬盘sde直接顶替上去了):

[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 8 09:20:35 2015
Raid Level : raid5
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri May 8 09:23:51 2015
State : active, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 0% complete
Name : linuxprobe.com:0 (local to host linuxprobe.com)
UUID : 44b1a152:3f1809d3:1d234916:4ac70481
Events : 21
Number Major Minor RaidDevice State
3 8 64 0 spare rebuilding /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb

出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(),B群:340829(推荐),点此查看全国群

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

7.2 逻辑卷管理器
当用户根据实际情况需要对分区增加、减小等调整时,经常会受到硬盘“灵活性”的限制,很不方便。
逻辑卷管理器则是在磁盘分区与文件系统之间添加的逻辑层,提供一个抽象的卷组,使得管理者可以忽略底层磁盘布局,从而实现对分区的灵活动态调整,这毫不夸张,所以红帽RHEL7系统已经默认启用了LVM(Logical Volume Manager)机制。第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
物理卷(PV,Physical Volume): 整个硬盘设备或使用fdisk命令建立的硬盘分区。
卷组(VG,Volume Group)       :由一个或多个物理卷(PV)组成的整体
逻辑卷(LV,Logical Volume)  :从卷组(VG)出切割出的空间来用于创建文件系统,大小由PE的个数决定。
              基本单元(PE,Physical Extent)默认为4MB的基本块。
编辑
功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展   vgextend lvextend
模拟训练A:创建一个容量为150M的逻辑卷vo,格式化为XFS并挂载到/mnt/xfs。
第1步:在虚拟机中添加1块用来做逻辑卷实验的硬盘
第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
请您按照下面的幻灯片逐步操作,可点击图片两侧箭头或下方小圆点“○”切换步骤。
  • 第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
    第2步:选择磁盘。
  • 第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
    第3步:选择磁盘类型。
  • 第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
    第4步:选择创建新的磁盘。
  • 第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
    第5步:设置磁盘的大小。
  • 第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
    第6步:默认的磁盘名称即可。
  • 第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。
    第7步:成功添加的硬盘出现在列表中。
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6

第2步:创建一个大小为300M的分区(sdb1),标签为lvm:

对硬盘sdb进行分区:

[root@linuxprobe ~]# fdisk /dev/sdb
Device does not contain a recognized partition table

创建新的分区:

Command (m for help): n

类型为主分区:

Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p

分区号为1:

Partition number (1-4, default 1): 1

直接写“+300M”即可生成大小为300M的分区:

First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +300M
Partition 1 of type Linux and of size 300 MiB is set

查看下分区信息:

Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 2048 616447 307200 83 Linux

修改分区类型:

Command (m for help): t
Selected partition 1

修改分区类型为lvm(代码是8e):

Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

再看下分区信息:

Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 2048 309247 153600 8e Linux LVM

确认无误,写入分区表信息:

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

让内核同步分区信息(此步骤仅在没有找到分区设备的情况下才需要执行,非必要动作。):

[root@linuxprobe ~]# partprobe

第3步:启用LVM并创建vo逻辑卷并格式化为ext4格式
将新建的分区设置为物理卷:

[root@linuxprobe ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created

将物理卷加入卷组:

[root@linuxprobe ~]# vgcreate rhcsa /dev/sdb1
Volume group "rhcsa" successfully created

查看卷组信息:

[root@linuxprobe ~]# vgdisplay
--- Volume group ---
VG Size 296.00 MiB
PE Size 4.00 MiB
Total PE 74
Alloc PE / Size 0 / 0
Free PE / Size 74 / 296.00 MiB
VG UUID 8hLPQU-Tc6f-PMsa-4tq5-iT0p-vSbI-sOafqG

生成大小为37个PE的逻辑卷(37*4MiB为148M):

[root@linuxprobe ~]# lvcreate -n vo -l 37 rhcsa
Logical volume "vo" created

格式化为ext4:

[root@linuxprobe ~]# mkfs.ext4 /dev/rhcsa/vo
Writing superblocks and filesystem accounting information: done

创建一个名为/rhcsa的目录用于挂载该逻辑卷。

[root@linuxprobe ~]# mkdir /rhcsa

挂载硬盘设备:

[root@linuxprobe ~]# mount /dev/rhcsa/vo /rhcsa

查看挂载信息(rhcsa-vo为140M是合理取值):

[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.0G 15G 17% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
/dev/sr0 3.5G 3.5G 0 100% /run/media/root/RHEL-7.0 Server.x86_64
/dev/mapper/rhcsa-vo 140M 1.6M 128M 2% /rhcsa
模拟训练B:将上个实验中的逻辑卷vo容量扩展到290M。

若要对LVM进行调整,一定要先卸载:

[root@linuxprobe ~]# umount /rhcsa

将逻辑卷扩展到290M:

[root@linuxprobe ~]# lvextend -L 290M /dev/rhcsa/vo
Rounding size to boundary between physical extents: 292.00 MiB
Extending logical volume vo to 292.00 MiB
Logical volume vo successfully resized

检查磁盘完整性,重置硬盘容量:

[root@linuxprobe ~]# e2fsck -f /dev/rhcsa/vo
/dev/rhcsa/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks
[root@linuxprobe ~]# resize2fs /dev/rhcsa/vo
Resizing the filesystem on /dev/rhcsa/vo to 299008 (1k) blocks.
The filesystem on /dev/rhcsa/vo is now 299008 blocks long.

重新挂载硬盘设备:

[root@linuxprobe ~]# mount /dev/rhcsa/vo /rhcsa

看到挂载信息(当前逻辑卷大小已为279M):

[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.0G 15G 17% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
/dev/sr0 3.5G 3.5G 0 100% /run/media/root/RHEL-7.0 Server.x86_64
/dev/mapper/rhcsa-vo 279M 2.1M 259M 1% /rhcsa

模拟训练C:将上个实验中的逻辑卷vo容量减小到120M。

卸载文件系统:

[root@linuxprobe ~]# umount /rhcsa

检查文件系统的完整性:

[root@linuxprobe ~]# e2fsck -f /dev/rhcsa/vo
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/rhcsa/vo: 11/74000 files (0.0% non-contiguous), 15507/299008 blocks

将逻辑卷的减小到120M:

[root@linuxprobe ~]# resize2fs /dev/rhcsa/vo 120M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/rhcsa/vo to 122880 (1k) blocks.
The filesystem on /dev/rhcsa/vo is now 122880 blocks long.

使用lvreduce命令将文件系统调整为120M:

[root@linuxprobe ~]# lvreduce -L 120M /dev/rhcsa/vo
WARNING: Reducing active logical volume to 120.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vo? [y/n]: y
Reducing logical volume vo to 120.00 MiB
Logical volume vo successfully resized

重新挂载文件系统:

[root@linuxprobe ~]# mount /dev/rhcsa/vo /rhcsa

查看挂载信息,(逻辑卷已经变成113M):

[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.7G 14G 21% /
devtmpfs 734M 0 734M 0% /dev
tmpfs 742M 140K 742M 1% /dev/shm
tmpfs 742M 8.8M 734M 2% /run
tmpfs 742M 0 742M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/mapper/rhcsa-vo 113M 1.6M 103M 2% /rhcsa

模拟训练D:使用逻辑卷快照功能

LVM的逻辑卷快照功能可以将逻辑卷的数据保存为备份、以及快速的数据恢复。
查看到逻辑卷详细信息(容量共计296M,已用120M,剩余176M):

[root@linuxprobe ~]# vgdisplay
--- Volume group ---
VG Name rhcsa
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 296.00 MiB
PE Size 4.00 MiB
Total PE 74
Alloc PE / Size 30 / 120.00 MiB
Free PE / Size 44 / 176.00 MiB
VG UUID QxBS5f-beVv-FJnu-GKyu-UWWF-JS8x-ytiAN9

创建原始文件,写入一行文字:

[root@linuxprobe ~]# echo "Welcome to Linuxprobe.com" > /rhcsa/readme.txt
[root@linuxprobe ~]# ls /rhcsa
lost+found readme.txt

对rhcsa卷组的vo逻辑卷做一个名称为SNAP而大小为150M的逻辑卷快照:

[root@linuxprobe ~]# lvcreate -L 150M -s -n SNAP /dev/rhcsa/vo
Rounding up size to full physical extent 152.00 MiB
Reducing COW size 152.00 MiB down to maximum usable size 124.00 MiB.
Logical volume "SNAP" created

查看逻辑卷和快照的信息:

[root@linuxprobe ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
SNAP rhcsa swi-a-s--- 124.00m vo 0.01
vo rhcsa owi-aos--- 120.00m
root rhel -wi-ao---- 17.51g
swap rhel -wi-ao---- 2.00g

在逻辑卷中创建一个100M的文件:

[root@linuxprobe ~]# dd if=/dev/zero of=/rhcsa/files count=1 bs=100M
1+0 records in
1+0 records out
104857600 bytes (105 MB) copied, 1.31474 s, 79.8 MB/s

再来看下逻辑卷快照的使用量:

[root@linuxprobe ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
SNAP rhcsa swi-a-s--- 124.00m vo 89.76
vo rhcsa owi-aos--- 120.00m
root rhel -wi-ao---- 17.51g
swap rhel -wi-ao---- 2.00g

将文件系统卸载:

[root@linuxprobe ~]# umount /rhcsa

恢复SNAP逻辑卷快照内容:

[root@linuxprobe ~]# lvconvert --merge /dev/rhcsa/SNAP
Merging of volume SNAP started.
vo: Merged: 18.2%
vo: Merged: 100.0%
Merge of snapshot into logical volume vo has finished.
Logical volume "SNAP" successfully removed

快照恢复一次后会被自动删除:

[root@linuxprobe ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
vo rhcsa -wi-a----- 120.00m
root rhel -wi-ao---- 17.51g
swap rhel -wi-ao---- 2.00

重新挂载文件系统:

[root@linuxprobe ~]# mount /dev/rhcsa/vo /rhcsa

原始的文件还在,但刚刚创建的100M大文件被清除了:

[root@linuxprobe ~]# ls /rhcsa
lost+found readme.txt

 

原文地址:https://www.cnblogs.com/linux130/p/5743245.html