一、磁盘分区操作逻辑
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xee9f9ba4.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (263-2610, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): +2G
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (525-2610, default 525):
Using default value 525
Last cylinder, +cylinders or +size{K,M,G} (525-2610, default 2610): +2G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdb3" successfully created
[root@localhost ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2 /dev/sdb3
Volume group "vg01" successfully created
[root@localhost ~]# lvcreate -n lv01 -L 2G vg01
Logical volume "lv01" created
[root@localhost ~]# mkfs.ext4 /dev/vg01/lv01
[root@localhost ~]# mkdir /test
[root@localhost ~]# mount /dev/vg01/lv01 /test
[root@localhost ~]# ls /test/
lost+found
[root@localhost test]# dd if=/dev/zero of=testdb bs=100M count=1
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,0.836092 秒,125 MB/秒
[root@localhost test]# ll
总用量 102416
drwx------. 2 root root 16384 3月 30 17:16 lost+found
-rw-r--r--. 1 root root 104857600 3月 30 17:19 testdb
[root@localhost test]# lvcreate -s -n lv01bak -L 200M /dev/vg01/lv01
Logical volume "lv01bak" created
[root@localhost test]# tar -zcf /root/backlv.tar.gz /dev/vg01/lv01bak
tar: 从成员名中删除开头的“/”
[root@localhost test]# ls /root/
backlv.tar.gz
把这个包拖拽出来 待会测试一下去其他环境还好不好用
去其他环境下不可用,因为逻辑卷快照也算是一个逻辑卷,恢复快照的时候必须有逻辑卷快照才行,根据逻辑卷快照恢复逻辑卷,如果到了其他的环境,逻辑卷快照没有了,自然也就不能恢复了
二、RAID
RAID 0
定义:
RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
工作原理:
系统向三个磁盘组成的逻辑硬盘(RAID0 磁盘组)发出的I/O数据请求被转化为3项操作,其中的每一项操作都对应于一块物理硬盘。通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。从理论上讲,三块硬盘的并行操作使同一时间内磁盘读写速度提升了3倍。 但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。
优缺点:
-
读写性能是所有RAID级别中最高的。
-
RAID 0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。RAID0运行时只要其中任一块硬盘出现问题就会导致整个数据的故障。一般不建议企业用户单独使用。
总结:
-
磁盘空间使用率:100%,故成本最低。
-
读性能:N*单块磁盘的读性能
-
写性能:N*单块磁盘的写性能
-
冗余:无,任何一块磁盘损坏都将导致数据不可用。
RAID 1
定义:
RAID 1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
工作原理:
RAID1是将一个两块硬盘所构成RAID磁盘阵列,其容量仅等于一块硬盘的容量,因为另一块只是当作数据“镜像”。RAID1磁盘阵列显然是最可靠的一种阵列,因为它总是保持一份完整的数据备份。它的性能自然没有RAID0磁盘阵列那样好,但其数据读取确实较单一硬盘来的快,因为数据会从两块硬盘中较快的一块中读出。RAID1磁盘阵列的写入速度通常较慢,因为数据得分别写入两块硬盘中并做比较。RAID1磁盘阵列一般支持“热交换”,就是说阵列中硬盘的移除或替换可以在系统运行时进行,无须中断退出系统。RAID1磁盘阵列是十分安全的,不过也是较贵一种RAID磁盘阵列解决方案,因为两块硬盘仅能提供一块硬盘的容量。RAID1磁盘阵列主要用在数据安全性很高,而且要求能够快速恢复被破坏的数据的场合。
在这里,需要注意的是,读只能在一块磁盘上进行,并不会进行并行读取,性能取决于硬盘中较快的一块。写的话通常比单块磁盘要慢,虽然是并行写,即对两块磁盘的写入是同时进行的,但因为要比较两块硬盘中的数据,所以性能比单块磁盘慢。
优缺点:
- RAID1通过硬盘数据镜像实现数据的冗余,保护数据安全,在两块盘上产生互为备份的数据,当原始数据繁忙时,可直接从镜像备份中读取数据,因此RAID1可以提供读取性能。
- RAID1是硬盘中单位成本最高的,但提供了很高的数据安全性和可用性,当一个硬盘失效时,系统可以自动切换到镜像硬盘上读/写,并且不需要重组失效的数据。
总结:
-
磁盘空间使用率:50%,故成本最高。
-
读性能:只能在一个磁盘上读取,取决于磁盘中较快的那块盘
-
写性能:两块磁盘都要写入,虽然是并行写入,但因为要比对,故性能单块磁盘慢。
-
冗余:只要系统中任何一对镜像盘中有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行。
RAID 5
图中Aβ Bβ Cβ 为奇偶校验信息
定义:
RAID 5是RAID 0和RAID 1的折中方案。RAID 5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。
工作原理:
-
RAID5把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证了数据安全。当损坏的磁盘被替换后,RAID还会自动利用剩下奇偶校验信息去重建此磁盘上的数据,来保持RAID5的高可靠性。
-
做raid 5阵列所有磁盘容量必须一样大,当容量不同时,会以最小的容量为准。 最好硬盘转速一样,否则会影响性能,而且可用空间=磁盘数n-1,Raid 5 没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上, 只占用一个磁盘的容量。
总结:
-
磁盘空间利用率:(N-1)/N,即只浪费一块磁盘用于奇偶校验。
-
读性能:(n-1)*单块磁盘的读性能,接近RAID0的读性能。
-
写性能:比单块磁盘的写性能要差(这点不是很明白,不是可以并行写入么?)
-
冗余:只允许一块磁盘损坏。
RAID 10
定义:
RAID10也被称为镜象阵列条带。象RAID0一样,数据跨磁盘抽取;象RAID1一样,每个磁盘都有一个镜象磁盘, 所以RAID 10的另一种会说法是 RAID 0+1。RAID10提供100%的数据冗余,支持更大的卷尺寸,但价格也相对较高。对大多数只要求具有冗余度而不必考虑价格的应用来说,RAID10提供最好的性能。使用RAID10,可以获得更好的可靠性,因为即使两个物理驱动器发生故障(每个阵列中一个),数据仍然可以得到保护。RAID10需要4 + 2*N 个磁盘驱动器(N >=0), 而且只能使用其中一半(或更小, 如果磁盘大小不一)的磁盘用量, 例如 4 个 250G 的硬盘使用RAID10 阵列, 实际容量是 500G。
实现原理:
- Raid10其实结构非常简单,首先创建2个独立的Raid1,然后将这两个独立的Raid1组成一个Raid0,当往这个逻辑Raid中写数据时,数据被有序的写入两个Raid1中。磁盘1和磁盘2组成一个Raid1,磁盘3和磁盘4又组成另外一个Raid1;这两个Raid1组成了一个新的Raid0。如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成Raid10,且具有raid0和raid1两者的特性。
- 虽然Raid10方案造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一Raid1中,就能保证数据安全性。假如磁盘中的某一块盘坏了,整个逻辑磁盘仍能正常工作的。
- 当我们需要恢复RAID10中损坏的磁盘时,只需要更换新的硬盘,按照RAID10的工作原理来进行数据恢复,恢复数据过程中系统仍能正常工作。原先的数据会同步恢复到更换的硬盘中。
总结:
-
磁盘空间利用率:50%。
-
读性能:N/2*单块硬盘的读性能
-
写性能:N/2*单块硬盘的写性能
-
冗余:只要一对镜像盘中有一块磁盘可以使用就没问题。
RAID操作
创建raid使用mdadm命令,关于此命令,参数如下:
1)进入各个模式的选项
①创建模式:-C
②管理模式:-add 或者 –del
③监控模式:-F
④增长模式:-G
⑤装配模式:-A
2)创建模式下的专用选项
①指定RAID级别:-l
②指定设备个数:-n #
③是否自动创建设备文件:-a {yes|no}
④指定创建RAID设备的数据块(CHUNK)大小(默认64K): -c #unit
⑤指定空闲盘个数:-x #
fdisk /dev/sdb 创建数个分区,供下列实验用
Device Boot Start End Blocks Id System
/dev/sdb1 1 132 1060258+ 83 Linux
/dev/sdb2 133 264 1060290 83 Linux
/dev/sdb3 265 396 1060290 83 Linux
/dev/sdb4 397 2610 17783955 5 Extended
/dev/sdb5 397 528 1060258+ 83 Linux
/dev/sdb6 529 660 1060258+ 83 Linux
/dev/sdb7 661 792 1060258+ 83 Linux
/dev/sdb8 793 924 1060258+ 83 Linux
/dev/sdb9 925 1056 1060258+ 83 Linux
/dev/sdb10 1057 1188 1060258+ 83 Linux
/dev/sdb11 1189 1320 1060258+ 83 Linux
查看分区是否已建立
# cat /proc/partitions
1. 创建raid 0
[root@localhost ~]# mdadm -C /dev/md0 -l 0 -a yes -n 2 /dev/sdb1 /dev/sdb2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
查看当前系统上所有处于启动状态的RIAD设备的状态,看raid设备是否创建成功。
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb2[1] sdb1[0]
2119680 blocks super 1.2 512k chunks
unused devices: <none>
格式化并挂载使用
66 mkdir /mn
67 mount /dev/md0 /mn
2. 创建raid 1
# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb3 /dev/sdb5 -x 1 /dev/sdb6
# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdb6[2](S) sdb5[1] sdb3[0]
1059200 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdb2[1] sdb1[0]
2119680 blocks super 1.2 512k chunks
unused devices: <none>
之后可以格式化、然后挂载使用
查看详细信息:
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Sat Mar 30 21:46:56 2019
Raid Level : raid1
Array Size : 1059200 (1034.55 MiB 1084.62 MB)
Used Dev Size : 1059200 (1034.55 MiB 1084.62 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Mar 30 21:47:02 2019
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 5f40231d:f9d89d9e:d3b08a1a:ff1c159a
Events : 17
Number Major Minor RaidDevice State
0 8 19 0 active sync /dev/sdb3
1 8 21 1 active sync /dev/sdb5
2 8 22 - spare /dev/sdb6
模拟磁盘损坏:
[root@localhost ~]# mdadm /dev/md1 -f /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md1
查看磁盘信息: 可以发现,sdb5损坏之后,sd6顶上去了
[root@localhost ~]# mdadm /dev/md1 -f /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md1
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Sat Mar 30 21:46:56 2019
Raid Level : raid1
Array Size : 1059200 (1034.55 MiB 1084.62 MB)
Used Dev Size : 1059200 (1034.55 MiB 1084.62 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Mar 30 21:54:08 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 5f40231d:f9d89d9e:d3b08a1a:ff1c159a
Events : 36
Number Major Minor RaidDevice State
0 8 19 0 active sync /dev/sdb3
2 8 22 1 active sync /dev/sdb6
1 8 21 - faulty /dev/sdb5
移除已损坏的磁盘:
[root@localhost ~]# mdadm /dev/md1 -r /dev/sdb5
mdadm: hot removed /dev/sdb5 from /dev/md1
查看磁盘信息: mdadm -D /dev/md1
Number Major Minor RaidDevice State
0 8 19 0 active sync /dev/sdb3
2 8 22 1 active sync /dev/sdb6
提供空闲磁盘做备用:
[root@localhost ~]# mdadm /dev/md1 -a /dev/sdb5
mdadm: added /dev/sdb5
查看磁盘信息: mdadm -D /dev/md1
Number Major Minor RaidDevice State
0 8 19 0 active sync /dev/sdb3
2 8 22 1 active sync /dev/sdb6
3 8 21 - spare /dev/sdb5
停止raid阵列
[root@localhost ~]# mdadm -S /dev/md1
mdadm: stopped /dev/md1
把阵列重新装配启动:
[root@localhost ~]# mdadm -C /dev/md2 -l 1 -n 2 /dev/sdb7 /dev/sdb8 -x 1 /dev/sdb9
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
[root@localhost ~]# mdadm -D --scan >> /etc/mdadm.conf
[root@localhost ~]# mdadm -S /dev/md2
mdadm: stopped /dev/md2
[root@localhost ~]# mdadm -A /dev/md2
mdadm: /dev/md2 has been started with 2 drives and 1 spare.
尽量在每次创建RAID的时候更新一下/etc/mdadm.conf配置文件
3. 创建raid 5
创建raid5:
# mdadm -C /dev/md3 -l 5 -n 3 /dev/sdb7 /dev/sdb8 /dev/sdb9
# mdadm /dev/md3 -a /dev/sdb10
mdadm: added /dev/sdb10
格式化、挂载使用
三、LVM
1. 关于LVM
LVM——Logical Volume Manager
LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。
2. 相关概念
- PE(Physical Extend) 物理拓展
- PV(Physical Volume) 物理卷
- VG(Volume Group) 卷组
- LV(Logical Volume) 逻辑卷
3. 特点
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性
4. 工作原理
(1)物理磁盘被格式化为PV,空间被划分为一个个的PE
(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
(4)LV现在就直接可以格式化后挂载使用了
(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据
5. 操作命令
1. 查看:
pes、pedisplay 查看pe的大小(pes==pescan)
pvs、pvdisplay 查看物理卷
vgs、vgdisplay、 查看卷组
lvs、lvdisplay、 查看逻辑卷
fdisk -L 查看磁盘分区
2. 创建:
pvcreate 设备路径 创建物理卷
vgcreate 名字 pv路径 创建卷组
lvcreate -n 名字 -L 大小 vg名 创建逻辑卷
格式化:mkfs.ext4 lv完整路径 格式化逻辑卷(mkfs.文件系统格式或-t 文件系统格式)
挂载:mount lv完整路径 挂载点 挂载使用(可以使用/etc/fstab或autofs)
3. 逻辑卷删除:
卸载:umount
删lv:lvremove lv完整路径
删vg:vgremove vg名
删PV:pvremove 设备完整路径
4、逻辑卷扩展:
扩展pv:相当于创建pv
扩展vg: vgextend vg名 新增pv路径
扩展lv: lvextend -L +扩展量 lv完整路径
刷新文件系统:resize2fs lv完整路径
注意:灵活运用,看实际情况,注意顺序 (支持在线操作)
5、逻辑卷的缩小:
1) 首先进行卸载 umount 检查文件系统:e2fsck -f lv完整路径
2) 减少文件系统:resize2fs lv完整路径 减少到的大小
3) 减少lv卷大小:lvreduce -L -减少量的大小 lv的完整路径
4) 挂载使用
减小需谨慎,文件系统的减小后大小一定要和lv卷最终大小相等
6. 操作逻辑
创建PV:
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
创建VG:
[root@localhost ~]# vgcreate mail_store /dev/sdb1 /dev/sdc1
Volume group "mail_store" successfully created
创建LV:
[root@localhost ~]# lvcreate -L 60G -n mail mail_store
Logical volume "mail" created
制作文件系统:
[root@localhost ~]# mkfs -t ext4 /dev/mail_store/mail
挂载使用:
[root@localhost ~]# mount /dev/mail_store/mail /mount
四、LVM snapshot
1. 原理
LVM中snapshot通过“写时复制”(copy on write) 来实现,即当一个snapshot创建的时候,仅拷贝原始卷里数据的元数据(meta-data);创建的时候,并不会有数据的物理拷贝,因此snapshot的创建几乎是实时的,当原始卷上有写操作执行时,snapshot跟踪原始卷块的改变,这个时候原始卷上将要改变的数据在改变之前被拷贝到snapshot预留的空间里,也就是对原始卷进行修改时,会将原始数据复制到快照预留区域。
逻辑卷快照只记录拍照逻辑卷的这个时刻发生变化的数据,以及从快照创建到释放这段时间里写入的数据,这是快照记录的两种数据。其他的不变的数据,快照只记录数据的存储信息,没有发生数据的物理拷贝。
注意:采取CoW实现方式时,snapshot的大小并不需要和原始卷一样大,其大小仅仅只需要考虑两个方面:从shapshot创建到释放这段时间内,估计块的改变量有多大;数据更新的频率。一旦 snapshot的空间记录满了原始卷块变换的信息,那么这个snapshot立刻被释放,从而无法使用,从而导致这个snapshot无效,所以非常重要的一点,一定要在snapshot的生命周期里,做完你需要做得事情。
元数据:任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元
数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
关于逻辑卷的大小:
一般建议是快照预留区的空间是原始卷的10%
问题: 脱离了原始的环境,逻辑卷快照还有没有意义?
答: 没有意义。去其他环境下不可用,因为逻辑卷快照也算是一个逻辑卷,恢复快照的时候必须有逻辑卷快照才行,根据逻辑卷快照恢复逻辑卷,如果到了其他的环境,逻辑卷快照没有了,自然也就不能恢复了
2. 操作
1.生成快照
-s:创建快照;-n:快照卷名;-L:大小
lvcreate -s -n snap-lv0 -L 500M /dev/vg0/lv0
2.还原逻辑卷
1) 原来的逻辑卷挂载使用,比如原来挂载在/mount目录
2) 在挂载目录创建文件,比如创建一个200M文件
dd if=/dev/zero of=/media/lv-zhi/temp.txt bs=100M count=1
3) 创建逻辑卷快照
lvcreate -s -L 120M -n zhi-back /dev/zhi/lv-zhi
4) 卸载原来的逻辑卷
umount /dev/zhi/lv-zhi
5) 还原逻辑卷 还原后原来的逻辑卷会恢复
lvconvert --merge /dev/zhi/zhi-back
6)挂载原来的逻辑卷,发现还是原来的文件,没有200M的文件
上边涉及到用dd命令创建测试文件,说明如下:
dd if=/dev/zero of=sun.txt bs=1M count=1
if代表输入文件。
of代表输出文件。
bs代表字节为单位的块大小。
count代表被复制的块。
其中/dev/zero是一个字符设备,会不断返回0值字节
逻辑卷恢复,具体操作如下:
80 fdisk /dev/sdb
81 pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
82 vgcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
83 vgcreate vg01 /dev/sdb1 /dev/sdb2 /dev/sdb3
84 lvcreate -n lv01 -L 2G vg01
85 mkfs.ext4 /dev/vg01/lv01
86 mkdir /test
87 mount /dev/vg01/lv01 /test/
88 ls /test/
89 dd if=/dev/zero of=/test/testdb bs=100M count=2
[root@localhost ~]# lvcreate -s -n lvbak -L 200M /dev/vg01/lv01
Logical volume "lvbak" created
[root@localhost ~]# rm -rf /test/testdb
[root@localhost ~]# umount /test/
[root@localhost ~]# lvconvert --merge /dev/vg01/lvbak
Merging of volume lvbak started.
lv01: Merged: 100.0%
Merge of snapshot into logical volume lv01 has finished.
Logical volume "lvbak" successfully removed
[root@localhost ~]# mount /dev/vg01/lv01 /test/
[root@localhost ~]# ls /test/
lost+found testdb
做逻辑卷快照的时候,原来的逻辑卷里包含testdb文件,后来由于错误操作导致文件误删除,用逻辑卷快照进行恢复