什么是lvm逻辑卷卷管理(LVM)快照如果使用它

Linux系统(2)
& & & & LVM(Logical Volume Manager,逻辑卷管理),可以弹性调整分区大小。LVM将多个分区(或磁盘)整合在一起,让这些分区看起来就像是一个磁盘一样,将来可以新增或移除其他的分区到这个LVM 管理的“磁盘”当中。因此说LVM可以弹性调整分区的大小。
& & & &&LVM可以将几个分区(或磁盘),通过软件组合成为一块独立的“磁盘”(VG),然后将这块“磁盘”再分割成为可使用的“分区”(LV),最终就能够挂载使用了。它主要涉及到的概念如下:
& & & &&1:物理卷(Physical Volume, PV)
& & & &&实际的分区需要通过命令调整系统识别码(system ID)为“8e”(LVM的识别码),然后再通过pvcreate命令,就可以将该分区转换成LVM最底层的物理卷了。
& & & &&2:卷组(Volume Group,VG)
& & & &&卷组就是所谓的LVM“磁盘”,就是将多个物理卷整合成一个卷组。
& & & &&3:物理块(Physical Extend, PE)
& & & &&物理块是LVM最小的储存单位,类似于磁盘的扇区的概念。默认情况下,物理块大小为4MB。
& & & &&4:逻辑卷(Logical Volume,LV)
& & & &&卷组会被切分成逻辑卷,它类似于原来分区的概念。为了方便使用者利用LVM 来管理其系统,因此LV的名字通常指定为“/dev/vgname/lvname”。
& & & &&PE是整个LVM的最小储存单位,因此LV的大小就与此LV内的PE数有关。LVM可弹性调整LV的容量,就是通过增加或减少PE实现的。将原本LV内的PE移转LV之外,就可以减少LV容量;将PE加到LV中,就可以增加LV容量。
& & & &&VG、LV与PE的关系如下图:
& & & &如上图所示,VG将一定量的PE分配给LV。如果未来这个VG要扩充的话,加上其他的PV即可。而LV如果要扩充的话,是通过将VG内没有使用到的PE加入到LV来实现的。
& & & &&规划好LV之后,通过命令,就可以将LV格式化成可以利用的文件系统了,再通过mount命令挂载之后,就可以使用了。
& & & &&而且这个文件系统的容量在未来还能进行扩充或减少,且里面的数据还不会被影响。整个的操作流程如下:
& & & &&LV的数据写入有两种方式,分别是线性模式(linear)和交错模式(triped):
& & & &&线性模式(linear):若将/dev/hda1,/dev/hdb1这两个分区加入到VG中,并且整个VG只有一个LV时,那么所谓的线性模式就是,当/dev/hda1的容量用完之后,才会使用/dev/hdb1。推荐使用这种模式。
& & & &&交错模式(triped):将一笔数据拆成两部分,分别写入/dev/hda1和/dev/hdb1中。
& & & &&LVM最主要的用处是在实现一个可以弹性调整容量的文件系统上,而不是在创建一个效率为主的磁盘上,因此,LVM 默认的读写模式是线性模式。如果使用triped模式,则当任何一个分区挂掉时,所有的数据都会被破坏!
& & & &&使用LVM需要安装Lvm2,在ubuntu下可以使用apt安装:
# apt-get install lvm2
& & & &&底下的操作,将4个物理分区整合成为一个VG,VG名为vbirdvg。PE大小为16MB,将全部的VG容量都分配给LV,LV的名称配置为vbirdlv。最终将这个LV格式化为ext3的文件系统,且挂载在/mnt/lvm 中。
& & & &&首先分割出4个分区,每个分区的容量均为 1.5GB 左右,且system ID需要为 8e:
# fdisk -l
Disk /dev/hda: 41.1 GB,
255 heads, 63 sectors/track, 5005 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot
Linux swap / Solaris
& & & &&上面的/dev/hda{6,7,8,9}这四个分区,就是要用到的实体分区!ID通过fdisk命令(t:&&change a partition's system id)配置为 8e后,会导致system变成“LinuxLVM”。
& & & &&1:PV阶段
& & & &&要创建PV,只要使用pvcreate即可。与PV有关的命令如下:
pvcreate:将实体分区创建成为PV;
pvscan:搜寻目前系统里面任何具有PV的磁盘;
pvdisplay:显示出目前系统上面的PV状态;
pvremove:将PV属性移除,使分区不再具有PV属性。
& & & &&首先用pvscan查看目前系统上具有PV属性的磁盘:
No matching physical volumes found
& & & &&然后将 /dev/hda6 - /dev/hda9 创建成为PV格式,并在此调用pvscan查看:
# pvcreate /dev/hda{6,7,8,9}
Physical volume &/dev/hda6& successfully created
Physical volume &/dev/hda7& successfully created
Physical volume &/dev/hda8& successfully created
Physical volume &/dev/hda9& successfully created
PV /dev/hda6
lvm2 [1.40 GB]
PV /dev/hda7
lvm2 [1.40 GB]
PV /dev/hda8
lvm2 [1.40 GB]
PV /dev/hda9
lvm2 [1.40 GB]
Total: 4 [5.61 GB] / in use: 0 [0
] / in no VG: 4 [5.61 GB]
& & & &&最后调用pvdisplay查看详细信息:
# pvdisplay
&/dev/hda6& is a new physical volume of &1.40 GB&
--- NEW Physical volume ---
&==实际的 partition 装置名称
&==因为尚未分配出去,所以空白!
&==就是容量说明
Allocatable
&==是否已被分配,结果是 NO
PE Size (KByte)
&==在此 PV 内的 PE 大小
&==共分割出几个 PE
&==没被 LV 用掉的 PE
Allocated PE
&==尚可分配出去的 PE 数量
Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN
& & & &&2:VG阶段
& & & &&创建VG及VG相关的命令如下:
vgcreate:创建VG;
vgscan:搜寻系统上面是否有VG存在;
vgdisplay:显示目前系统上面的VG状态;
vgextend:在VG内添加额外的PV;
vgreduce:在VG内移除PV;
vgchange:配置VG是否启动 (active);
vgremove:删除一个VG;
& & & &&PV的名称其实就是分区的名称,但是VG名称则可以自己取。下面的例子中,将VG名称取名为vbirdvg。
& & & &&首先将/dev/hda6-8创建成为一个名为vbirdvg的VG,且指定PE为16M,并调用pvscan查看:
# vgcreate -s 16M vbirdvg /dev/hda{6,7,8}
Volume group &vbirdvg& successfully created
Reading all physical volumes.
This may take a while...
Found volume group &vbirdvg& using metadata type lvm2
& & & &&在此调用pvscan查看当前的状态:
PV /dev/hda6
VG vbirdvg
lvm2 [1.39 GB / 1.39 GB free]
PV /dev/hda7
VG vbirdvg
lvm2 [1.39 GB / 1.39 GB free]
PV /dev/hda8
VG vbirdvg
lvm2 [1.39 GB / 1.39 GB free]
PV /dev/hda9
lvm2 [1.40 GB]
Total: 4 [5.57 GB] / in use: 3 [4.17 GB] / in no VG: 1 [1.40 GB]
& & & &&可见,有三个PV被用去,剩下一个 /dev/hda9 的PV没被用掉。
& & & &&调用vgdisplay查看当前VG状态:
# vgdisplay
--- Volume group ---
Metadata Areas
Metadata Sequence No
read/write
&==整体的 VG 容量有这么大
&==内部每个 PE 的大小
&==总共的 PE 数量共有这么多!
Alloc PE / Size
267 / 4.17 GB
4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO
& & & &&这样就创建好一个VG了!如果需要扩充这个VG的容量,也就是将/dev/hda9添加到VG中,可以这样:
# vgextend vbirdvg /dev/hda9
Volume group &vbirdvg& successfully extended
# vgdisplay
Alloc PE / Size
356 / 5.56 GB
4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO
& & & &&3:LV阶段
& & & &&创建好VG这个“大磁盘”之后,接下来就是进行“分区”。这个分区就是创建所谓的LV。现在需要将刚创建好的vbirdvg,分割成为vbirdlv,将整个VG的容量都分配到vbirdlv中。LV相关的命令如下:
& & & &&lvcreate:创建LV;
& & & &&lvscan:查询系统上面的LV;
& & & &&lvdisplay:显示系统上面的LV状态;
& & & &&lvextend:在LV里面添加容量;
& & & &&lvreduce:在LV里面减少容量;
& & & &&lvremove:删除一个LV;
& & & &&lvresize:对LV进行容量大小的调整。
& & & &&lvcreate用法如下:
lvcreate [-L N[mgt]] [-n LV名称] VG名称
lvcreate[-l N] [-n LV名称] VG名称
& & & &&选项与参数:
& & & &&-L& :后面接容量,容量的单位可以是 M,G,T 等,要注意的是,这个数量必须要是PE大小的倍数,若不相符,系统会自行计算最相近的容量。
& & & &&-l& :后面可以接PE的个数。
& & & &&-n& :后面接的就是LV的名称。
& & & &&首先,将整个名为vbirdvg的VG都分配给 vbirdlv,注意,PE共有356 个:
# lvcreate -l 356 -n vbirdlv vbirdvg
Logical volume &vbirdlv& created
# ll /dev/vbirdvg/vbirdlv
lrwxrwxrwx 1 root root 27 Mar 11 16:49 /dev/vbirdvg/vbirdlv -& /dev/mapper/vbirdvg-vbirdlv
& & & &&由于本例中每个PE为16M,因此上述的命令也可以使用如下的方式来创建:lvcreate-L 5.56G -n vbirdlv vbirdvg
& & & &&使用lvdisplay查看状态:
# lvdisplay
--- Logical volume ---
/dev/vbirdvg/vbirdlv
&==这个才是 LV 的全名!
8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0
LV Write Access
read/write
&==这个 LV 的容量这么大!
Current LE
Allocation
Read ahead sectors
- currently set to
Block device
& & & &&准备好LV之后,剩下的就是格式化、挂载了。要注意的是,VG的名称为 vbirdvg,但LV的名称必须使用全名,也就是/dev/vbirdvg/vbirdlv。
& & & &&4:文件系统阶段
# mkfs -t ext3 /dev/vbirdvg/vbirdlv &==注意 LV 全名!
# mkdir /mnt/lvm
# mount /dev/vbirdvg/vbirdlv
Filesystem
Used Available Use% Mounted on
0% /dev/shm
/dev/mapper/vbirdvg-vbirdlv
3% /mnt/lvm
& & & &&5:放大LV容量
& & & &&要放大LV的容量, 只需要一下步骤:
a:用fdisk配置新的,system ID为8e的分区;
b:利用pvcreate创建PV
c:利用vgextend 将PV加入名为vbirdvg的VG;
d:利用lvresize,将新加入的PV内的PE加入到vbirdlv中;
e;通过resize2fs扩容文件系统。
& & & &&具体步骤如下,首先找出一个3GB的新分区,也就是/dev/hda10:
# fdisk -l
Device Boot
....(中间省略)....
/dev/hda10
& & & &&然后,创建新的PV:
# pvcreate /dev/hda10
Physical volume &/dev/hda10& successfully created
PV /dev/hda6
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda7
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda8
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda9
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda10
lvm2 [2.80 GB]
Total: 5 [8.37 GB] / in use: 4 [5.56 GB] / in no VG: 1 [2.80 GB]
& & & &&然后,利用vgextend扩容VG:
# vgextend vbirdvg /dev/hda10
Volume group &vbirdvg& successfully extended
# vgdisplay
--- Volume group ---
Metadata Areas
Metadata Sequence No
read/write
Alloc PE / Size
356 / 5.56 GB
179 / 2.80 GB
4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO
& & & &&然后,利用lvresize扩容LV:
# lvresize -l +179 /dev/vbirdvg/vbirdlv
Extending logical volume vbirdlv to 8.36 GB
Logical volume vbirdlv successfully resized
# lvdisplay
--- Logical volume ---
/dev/vbirdvg/vbirdlv
8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0
LV Write Access
read/write
Current LE
Allocation
Read ahead sectors
- currently set to
Block device
# df /mnt/lvm
Filesystem
Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
5% /mnt/lvm
& & & &&最终的结果中,LV放大到了8.36GB,但是文件系统却没有相对添加。这就需要使用 resize2fs命令来处理,该命令的用法如下:resize2fs [-f] [device] [size]
& & & &&选项与参数:
& & & &&-f:强制进行 resize;
& & & &&[device]:分区的名称;
& & & &&[size]:可以加也可以不加。如果加上size的话,那么就必须要给予一个单位,如M,G 等。如果没有size的话,则默认使用整个分区的容量来处理。
& & & &&下面,将完整的将LV容量扩充到整个文件系统:
# resize2fs /dev/vbirdvg/vbirdlv
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vbirdvg/vbirdlv is mounted on /mnt/ on-line resizing
Performing an on-line resize of /dev/vbirdvg/vbirdlv to k) blocks.
The filesystem on /dev/vbirdvg/vbirdlv is now 2191360 blocks long.
# df /mnt/lvm
Filesystem
Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
4% /mnt/lvm
& & & &&可见,LV的容量确实增加了。所以LVM支持在线resize,而且不会丢失数据。
& & & &&6:缩小LV容量
& & & &&假设想将/dev/hda6从LV中抽离出来,也就是缩小LV的容量。步骤如下:
& & & &&首先得到/dev/hda6的容量,尝试计算文件系统需缩小到多少:
# pvdisplay
--- Physical volume ---
1.40 GB / not usable 11.46 MB
Allocatable
yes (but full)
PE Size (KByte)
Allocated PE
Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN
PV /dev/hda6
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda7
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda8
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda9
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda10
VG vbirdvg
lvm2 [2.80 GB / 0
Total: 5 [8.36 GB] / in use: 5 [8.36 GB] / in no VG: 0 [0
& & & &&从pvdisplay可以看出/dev/hda6的大小,它有89个PE,也就是共有1.40G。从pvscan可以发现如果扣除/dev/hda6,则剩余量有:1.39*3 + 2.8,也就是6.97G。
& & & &&接下来,要调用resize2fs缩小文件系统的空间。在使用resize2fs缩小空间是,需要先umount,然后才能resize2fs:
# umount /mnt/lvm
# resize2fs /dev/vbirdvg/vbirdlv 6900M
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/vbirdvg/vbirdlv to k) blocks.
The filesystem on /dev/vbirdvg/vbirdlv is now 1766400 blocks long.
& & & &&然后,重新挂载:
# mount /dev/vbirdvg/vbirdlv /mnt/lvm
[root@www ~]# df /mnt/lvm
Filesystem
Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
4% /mnt/lvm
& & & &&接下来就是将LV的容量降低,要注意的是,我们想要抽离的是/dev/hda6,这个PV有89个 PE。所以要这样进行:
# lvresize -l -89 /dev/vbirdvg/vbirdlv
WARNING: Reducing active and open logical volume to 6.97 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vbirdlv? [y/n]: y
Reducing logical volume vbirdlv to 6.97 GB
Logical volume vbirdlv successfully resized
# lvdisplay
--- Logical volume ---
/dev/vbirdvg/vbirdlv
8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0
LV Write Access
read/write
Current LE
Allocation
Read ahead sectors
- currently set to
Block device
& & & &&接下来就要将/dev/hda6移出vbirdvg这个VG之外。得要先确定/dev/hda6里面的PE完全不被使用后,才能够将/dev/hda6抽离,先通过pvdisplay查看:
# pvdisplay
--- Physical volume ---
1.40 GB / not usable 11.46 MB
Allocatable
yes (but full)
PE Size (KByte)
Allocated PE
Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN
--- Physical volume ---
/dev/hda10
2.80 GB / not usable 6.96 MB
Allocatable
PE Size (KByte)
Allocated PE
7MfcG7-y9or-0Jmb-H7RO-5Pa5-D3qB-G426Vq
& & & &&可见/dev/hda6中的Free PE为0,而没有使用的PE都在/dev/hda10上,因此需要先通过pvmove,将/dev/hda6内的PE移动到/dev/hda10上,然后调用vgreduce,将/dev/hda6从VG中移出:
# pvmove /dev/hda6 /dev/hda10
# vgreduce vbirdvg /dev/hda6
Removed &/dev/hda6& from volume group &vbirdvg&
& & & &&最后,将/dev/hda6这个PV“删除”:
PV /dev/hda7
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda8
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda9
VG vbirdvg
lvm2 [1.39 GB / 0
PV /dev/hda10
VG vbirdvg
lvm2 [2.80 GB / 0
PV /dev/hda6
lvm2 [1.40 GB]
Total: 5 [8.37 GB] / in use: 4 [6.97 GB] / in no VG: 1 [1.40 GB]
# pvremove /dev/hda6
Labels on physical volume &/dev/hda6& successfully wiped
& & & &&这样,就完成了缩小LV容量的工作。
三:LVM 的系统快照
& & & &&LVM除了可以动态改变分区大小之外,还具有系统快照(snapshot)的能力。系统快照就是将某一时刻的系统记录下来,未来若有任何数据变动了,则原始数据会被搬移到快照区,没有被更动的区域则由快照区与文件系统共享。如下图所示:
& & & &&上图中,短虚线为文件系统,长虚线为快照区。左图为最初建立系统快照区的状况,LVM 会预留一个区域(左图的左侧三个PE区块)作为快照数据存放处。
& & & &&开始时快照区与文件系统区共享所有的PE数据,因此快照区的内容与文件系统是一模一样的。等到系统运行一阵子后,假设A区域的数据变动了(右图所示),则变动前系统会将该区域的旧数据移动到快照区,所以在右图的快照区被占用了一块PE成为 A,而其他 B 到 I 的区块则还是与文件系统共享!
& & & &&因此,LVM的系统快照是很好的“备份工具”,因为他只有备份有变动的数据。
& & & &&1:快照区的创建
& & & &&在上面的例子中,因VG把/dev/hda6移出之后,剩余的PE为0,因此,首先再次将/dev/hda6添加到VG中:
# vgdisplay
--- Volume group ---
Alloc PE / Size
446 / 6.97 GB
&==没有多余的 PE 可用!
# pvcreate /dev/hda6
Physical volume &/dev/hda6& successfully created
# vgextend vbirdvg /dev/hda6
Volume group &vbirdvg& successfully extended
# vgdisplay
--- Volume group ---
Alloc PE / Size
446 / 6.97 GB
89 / 1.39 GB
&==多出了 89 个 PE 可用!
&& & & &&然后,利用lvcreate –s针对/dev/vbirdvg/vbirdlv这个LV创建系统快照区,取名为 vbirdss,且给予60个PE:
# lvcreate -l 60 -s -n vbirdss /dev/vbirdvg/vbirdlv
Logical volume &vbirdss& created
# lvdisplay
--- Logical volume ---
/dev/vbirdvg/vbirdss
K2tJ5E-e9mI-89Gw-hKFd-4tRU-tRKF-oeB03a
LV Write Access
read/write
LV snapshot status
active destination for /dev/vbirdvg/vbirdlv
&==被快照的原 LV 磁碟容量
Current LE
COW-table size
&==快照区的实际容量
COW-table LE
&==快照区占用的 PE 数量
Allocated to snapshot
Snapshot chunk size
Allocation
Read ahead sectors
- currently set to
Block device
& & & &&通过将新建的快照进行挂载,可以看见快照/dev/mapper/vbirdvg-vbirdss与/dev/mapper/vbirdvg-vbirdlv是完全相同的:
# mkdir /mnt/snapshot
# mount /dev/vbirdvg/vbirdss /mnt/snapshot
Filesystem
Used Available Use% Mounted on
0% /dev/shm
/dev/mapper/vbirdvg-vbirdlv
4% /mnt/lvm
/dev/mapper/vbirdvg-vbirdss
4% /mnt/snapshot
& & & &&2:利用快照,进行备份和还原
& & & &&接下来,就利用快照做一下系统备份和复原,首先umount快照/dev/mapper/vbirdvg-vbirdss,然后改变一下/dev/mapper/vbirdvg-vbirdlv中的内容:
# umount /mnt/snapshot
# ll /mnt/lvm
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x
17 root root
4096 Mar 11 14:17 log
drwx------
2 root root 16384 Mar 11 16:59 lost+found
# rm -r /mnt/lvm/log
# cp -a /boot /lib /sbin /mnt/lvm
# ll /mnt/lvm
drwxr-xr-x
4 root root
4096 Dec 15 16:28 boot
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x
14 root root
drwx------
2 root root 16384 Mar 11 16:59 lost+found
drwxr-xr-x
2 root root 12288 Sep
# lvdisplay /dev/vbirdvg/vbirdss
--- Logical volume ---
/dev/vbirdvg/vbirdss
Allocated to snapshot
& & & &&可见,将/dev/mapper/vbirdvg-vbirdlv中内容改变之后,快照区的使用率到了12.22%,说明原数据已经被复制到快照区了,也就是那60个PE中了。因此,若改动的原始数据量过大,会使快照区容纳不了。
& & & &&接下来,将快照区进行备份,然后利用该备份,恢复/dev/mapper/vbirdvg-vbirdlv中的内容:
# mount /dev/vbirdvg/vbirdss /mnt/snapshot
Filesystem
Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
6% /mnt/lvm
/dev/mapper/vbirdvg-vbirdss
4% /mnt/snapshot
# mkdir -p /backups
# cd /mnt/snapshot
# tar -jcv -f /backups/lvm.tar.bz2 *
# umount /mnt/snapshot
# lvremove /dev/vbirdvg/vbirdss
Do you really want to remove active logical volume &vbirdss&? [y/n]: y
Logical volume &vbirdss& successfully removed
# umount /mnt/lvm
# mkfs -t ext3 /dev/vbirdvg/vbirdlv
# mount /dev/vbirdvg/vbirdlv /mnt/lvm
# tar -jxv -f /backups/lvm.tar.bz2 -C /mnt/lvm
# ll /mnt/lvm
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x
17 root root
4096 Mar 11 14:17 log
drwx------
2 root root 16384 Mar 11 16:59 lost+found
& & & &&可见,利用快照的备份,已经将/dev/vbirdvg/vbirdlv中的内容,恢复如初了。
& & & &&这里之所以要备份,而不是直接格式化/dev/vbirdvg/vbirdlv,并将 /dev/vbirdvg/vbirdss直接复制给 vbirdlv。是因为vbirdss其实是vbirdlv的快照,如果格式化整个vbirdlv,则原本vbirdlv中的所有数据都会被搬移到vbirdss中,但是显然vbirdss是没有这么大空间的。
& & & &&3:使用原系统还原快照
& & & &&换个角度来想,还可以将原本的vbirdlv当作备份数据,然后将vbirdss当作实际在运行中的数据,任何测试的动作都在vbirdss这个快照区当中测试,那么当测试完毕后,只要将快照区删除,然后重新对vbirdlv作一个快照区即可。
& & & &&首先创建一个新的快照区vbirdss,这次分配89个PE:
# lvcreate -s -l 89 -n vbirdss /dev/vbirdvg/vbirdlv
Logical volume &vbirdss& created
# lvdisplay /dev/vbirdvg/vbirdss
--- Logical volume ---
/dev/vbirdvg/vbirdss
as0ocQ-KjRS-Bu7y-fYoD-1CHC-0V3Y-JYsjj1
LV Write Access
read/write
LV snapshot status
active destination for /dev/vbirdvg/vbirdlv
Current LE
COW-table size
COW-table LE
Allocated to snapshot
Snapshot chunk size
Allocation
Read ahead sectors
- currently set to
Block device
& & & &&然后,将vbirdlv进行隐藏,而针对vbirdss做变动,然后,再利用vbirdlv做还原:
# umount /mnt/lvm
# mount /dev/vbirdvg/vbirdss /mnt/snapshot
# df /mnt/snapshot
Filesystem
Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdss
4% /mnt/snapshot
# rm -r /mnt/snapshot/etc /mnt/snapshot/log
# cp -a /boot /lib /sbin /mnt/snapshot/
# ll /mnt/snapshot
drwxr-xr-x
4 root root
4096 Dec 15 16:28 boot
drwxr-xr-x 14 root root
drwx------
2 root root 16384 Mar 11 16:59 lost+found
drwxr-xr-x
2 root root 12288 Sep
&==与原本数据有差异了
# mount /dev/vbirdvg/vbirdlv /mnt/lvm
# ll /mnt/lvm
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x
17 root root
4096 Mar 11 14:17 log
drwx------
2 root root 16384 Mar 11 16:59 lost+found
# umount /mnt/snapshot
# lvremove /dev/vbirdvg/vbirdss
Do you really want to remove active logical volume &vbirdss&? [y/n]: y
Logical volume &vbirdss& successfully removed
# lvcreate -s -l 89 -n vbirdss /dev/vbirdvg/vbirdlv
# mount /dev/vbirdvg/vbirdss /mnt/snapshot
# ll /mnt/snapshot
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x
17 root root
4096 Mar 11 14:17 log
drwx------
2 root root 16384 Mar 11 16:59 lost+found
四:关闭LVM
& & & &&因为你的实体分区已经被用到LVM去了,若在没有将LVM关闭的情况下,就直接将那些分区删除或转为其他用途的话,系统可能会发生错误。
& & & &&关闭LVM的步骤如下:
a:使用 lvremove移除 LV ;
b:使用 vgchange-a n VGname,让VGname 这个 VG 不具有 Active 的标志;
c:使用 vgremove移除 VG:
d:使用 pvremove移除 PV;
e:最后,使用 fdisk修改 ID。
& & & &&整个过程如下:
# umount /mnt/lvm
# umount /mnt/snapshot
# lvremove /dev/vbirdvg/vbirdss
&==先处理快照
Do you really want to remove active logical volume &vbirdss&? [y/n]: y
Logical volume &vbirdss& successfully removed
# lvremove /dev/vbirdvg/vbirdlv
&==再处理原系统
Do you really want to remove active logical volume &vbirdlv&? [y/n]: y
Logical volume &vbirdlv& successfully removed
# vgchange -a n vbirdvg
0 logical volume(s) in volume group &vbirdvg& now active
# vgremove vbirdvg
Volume group &vbirdvg& successfully removed
# pvremove /dev/hda{6,7,8,9,10}
Labels on physical volume &/dev/hda6& successfully wiped
Labels on physical volume &/dev/hda7& successfully wiped
Labels on physical volume &/dev/hda8& successfully wiped
Labels on physical volume &/dev/hda9& successfully wiped
Labels on physical volume &/dev/hda10& successfully wiped
转自:http://vbird.dic.ksu.edu.tw/linux_basic/0420quota.php
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:77844次
积分:2821
积分:2821
排名:第9494名
原创:189篇
转载:45篇
译文:15篇
评论:16条
(3)(3)(9)(5)(4)(6)(11)(4)(5)(12)(8)(9)(16)(16)(18)(47)(24)(22)(5)(7)(1)(2)(10)(4)

我要回帖

更多关于 linux lvm 快照 的文章

 

随机推荐