一、理解快照的含义
所谓快照就是照下来的那一刻保留起来作为文件的访问通道,将没修改之前保存在快照存储空间中一份,访问的是外面的数据,如果数据修改出现错误时,可以通过快照的访问路径把存储在快照存储空间中的数据放到被修改的数据中,快照存储空间中只存储没修改前的数据,占据空间比较小。
快照的主要作用是保留数据在你做快照那一刻的状态,创建的快照文件本身和你装的操作系统所对应的那块虚拟磁盘本身的大小不一样,快照比原数据小很多,跟文件软链接一样,自己本身不大,但自己所指的文件是很大的。
默认情况下,访问数据时只有一条路径,给磁盘上对应的文件系统做一快照以后,意味着在它之上安装一条访问路径,但这个路径不仅仅是路径而已,它也可以用于用户访问对应的磁盘上的通路。
二、物理卷、逻辑卷、卷组、快照卷之间的联系
物理卷(Physical Volume,PV):就是指硬盘分区,也可以是整个硬盘或已创建的软RAID,是LVM的基本存储设备。
卷组(Volume Group,VG):是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。
逻辑卷(Logical Volume,LV):类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。
可以做这样一个设想来理解以上三者的关系:如果把PV比作地球的一个板块,VG则是一个地球,因为地球是由多个板块组成的,那么在地球上划分一个区域并标记为亚洲,则亚洲就相当于一个LV。
相互联系:在创建卷组时一定要为逻辑卷进行快照预留出空间,而后快照访问逻辑卷的另一个入口,只要把物理卷加到卷组之后,这个物理卷所提供的物理空间事先就被划分好一个个块,而这个块在没格式化之前叫做PE(Physical Extend)【物理盘区】,是逻辑存储的一个小匣子,卷组的大小是由多个PE组成,而逻辑卷的大小是把卷组中的PE放到逻辑卷中,此时,PE不再叫做PE,而是叫做LE(Logical Extend)【逻辑盘区】,其实,逻辑卷中的LE也叫做PE,只是站在角度不同而已。
如果某个物理卷损坏后,存储在逻辑卷中的LE也就会损坏,想让数据不损坏,可以把物理卷中PE做成镜像,这样VG创建逻辑卷时,首先是创建物理卷,无论物理卷是磁盘还是块设备。
一LVM的基本概念
LVM(logical volume manager) 逻辑卷管理器
其中主要分为这几个概念
1物理卷-简称PV
物理卷在逻辑卷管理器中属于最底层的,任何的逻辑卷和卷组都必需依靠物理卷来建立,物理卷可以是一个完整的硬盘,也可以是硬盘中的莫一个分区
2卷组-简称VG
卷组是建立在物理卷之上,一个卷组中可以包含一个物理卷组或者多个物理卷
3逻辑卷-简称LV
逻辑卷是建立在卷组之上的,卷组中的空间可以建立多个逻辑卷,并且逻辑卷可以随意从卷组的空闲空间中增减,逻辑卷可以属于一个卷组,也可以属于不同的多个卷组
4 物理区域-简称PE
物理区域是物理卷中最小的可分配储存单元
5 逻辑区域-简称-LE
逻辑区域是逻辑卷中可用于分配的最小储存单元
6 卷组描述区域-简称VGDA
用于描述物理卷,卷组,逻辑卷分配的所由信息
一个建立逻辑卷的流程如下
PV-VG-LV
物理卷包含卷组,卷组包含逻辑卷
二redhat9中使用逻辑卷管理器
1使用vgscan生成默认的配置文件,配置文件在/etc下的lvmconf 和lvmtab 2个文件
2 为逻辑卷管理器分配物理卷
我这里使用一个分区来作/dev/hda9
#fdisk hda
>;t
>;9
>;8e (为LVM分区)
>;w
重起
#pvcreate /dev/hda9
使用
#pvdisplay /dev/hda9查看是否建立
这样就建立好了物理卷
3在物理卷中建立卷组
#vgcreate vg0 /dev/hda9 其中vg0为要建立的卷组名程.这里的PE值我们使用默认的4M如需要增大可以使用-L 选想,记住一旦设定以后不可更改PE的值
#vgdisplay 查看是否建立成功
4 在卷组中建立逻辑卷
#lvcreate -L 100M -n vg1 vg0
其中-L 选项表示你想的逻辑卷大小,以后可以用命令增减 -n指定逻辑卷的名程和卷组的名程,也可以使用绝对路径来达到上述目的
#lvdisplay /dev/vg0/vg1
查看是否建立成功
5 为逻辑卷建立文件系统
#mkfs.ext3 /dev/vg0/vg0
然后挂载尝试是否建立成功
#mount /dev/vg0/vg1 /home
这样一个逻辑卷就基本成型了
三 逻辑卷的管理
1增加新的物理卷到卷组
当卷组中没有足够的空间分配给逻辑卷时,可以用给卷组增加物理卷的方法来增加卷组的空间
# vgextend vg0 /dev/hda8
这里注意hda8必需为LVM分区
2 扩充和减小逻辑卷的容量
#e2fsadm -L +100M /dev/vg0/vg1
-L 表示增减空间 +表示加 -表示建
#e2fsadm -L -100M /dev/vg0/vg1
这里要注意文件系统必需是ext2或ext3,而且需要卸载文件系统来执行,减小的时候需要知道剪掉空间的大小,不然会造成丢失
在reiserfs文件系统中未作测试
3 删除逻辑卷-卷组-物理卷 (必需按照先后顺序来执行删除)
#lvremove /dev/vg0/vg1 删除逻辑卷
#vgremove /dev/vg0 删除卷组
这里有一个问题,如果建立的卷组是活动的,他就不能删除
这里需要使用一个命令来是他变成固定的,以便删除
#vgchage -a n /dev/vg0
-a 参数指定卷组是否是活动的,n表示固定,y表示活动
#vgremove /dev/vg0
成功
物理卷的删除,移除/etc下的lvmconf 和lvmtab的两个文件,然后将分区转换为linux的就可以了
四 检查物理卷,卷组,逻辑卷
分别使用3个命令
1pvscan 检查物理卷
2vgscan 检查卷组
3lvscan 检查逻辑卷
这里只是介绍了逻辑卷管理器的基本建立和删除
应为今天时间有限,明天积蓄补充,希望此文对你有所帮助
五 为逻辑卷作备份
1当你要备份你的卷组信息是,你就需要为卷组作备份,使用vgcfgbackup来备份
#vgcfgbackup vg0
备份的信息就是我们前面提到的VGDA备份到/etc/lwmconf/VG.conf
2当你的卷组信息意外丢失时,你可以使用这个文件来恢复你的卷组信息,前提是你要备份了的
#vgcfgrestor -n vg0 /dev/hda8
或者
#vgcfgrestor -f /etc/lvmconf/XXX.conf
重卷组vg0中恢复物理卷的VGDA信息 -n参数指定卷组的名程 -f 制定备份文件路径
3 恢复了物理卷及卷组的信息后我们还要恢复原来的建立的卷组和逻辑卷的设备文件
#vgmknods
这样如果物理卷,卷组,逻辑卷的信息丢失或者设备文件被破坏是就可以用来及时恢复
六 卷组的合并于拆分
当你想合并2个卷组时可以使用一下命令
这里有2个前提条件 1 卷组的PE(物理区域)大小相等 2 2个卷组必需是非活动的,这个可以用前面提到的vgchange命令来更改,做到以上2个条件就可以了
#vgmerge vg1 vg2
其中vg1为原始卷组,vg2是你想合并到到vg1的卷组
七 逻辑卷管理器管理命令(针对整个逻辑卷管理器,不针对物理卷,卷组,逻辑卷,是全局命令)注:全局命令都是以lvm开头的
1复位逻辑卷管理器(全局命令)
#lvmchange -R
这个命令用来复位逻辑卷管理器,也就是reset,该命令会使所由的卷组和逻辑卷处于非活动状态,也就是不能使用卷组和逻辑卷,所以使用时一定小心
2 查看逻辑卷管理器日志
# lvmsadc
命令可以直接输出到标准输出,也就是屏幕上,也可输出到文件中
# lvmsadc 1.txt
使用lvmsar 命令可一查看lvmsdac生成的日志文件
#lnmsar 1.txt
日志文件显示逻辑卷管理器中设备的读写统计信息
显示如下
total read :12 total write :222
3 利用LVM作逻辑卷的镜像卷或成快照卷
快照卷不需要和父卷大小一致,我们假设不需要保存太多的快照文件,可以设置成10M
#lvcreate -s -L 10M -n kuaizhao /dev/vg0/vg1
这样就从逻辑卷vg1中分出快照卷/dev/vg0/kuaizhao
这里又有一个问题,redhat9默认快照卷是以只读方式挂载的,只读方式的快照卷是不能和父卷同步数据的
这里需要使用lvchange命令使快照卷为读写方式挂载
#lvchange -p rw /dev/vg0/kuaizhao
然后
#mount /dev/vg0/vg1 /home
#mount /dev/vg0/kuaizhao /opt
目录随便,我这里只是测试
#cd /home
#touch test
#cd /opt
#ls
恭喜你可以看到文件数据已经同步了
注:如快照卷不能容纳超过自身设置的容量时,将被LVM管理器自动删除
解决的方法:
1及时清理不必要的快照文件
2 设置逻辑快照卷和父逻辑卷大小一致.
物理卷->卷组->逻辑卷1,准备工作,分区,改分区[root@lab~]# fdisk -lDisk /dev/hda: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 395 3068415 83 Linux
/dev/hda3 396 460 522112+ 82 Linux swap / Solaris
/dev/hda4 461 783 2594497+ 5 Extended
[root@lab~]# fdisk /dev/hdaCommand (m for help): n
First cylinder (461-783, default 461):
Using default value 461
Last cylinder or +size or +sizeM or +sizeK (461-783, default 783): +50MCommand (m for help): n
First cylinder (468-783, default 468):
Using default value 468
Last cylinder or +size or +sizeM or +sizeK (468-783, default 783): +50MCommand (m for help): n
First cylinder (475-783, default 475):
Using default value 475
Last cylinder or +size or +sizeM or +sizeK (475-783, default 783): +50MCommand (m for help): p Disk /dev/hda: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 395 3068415 83 Linux
/dev/hda3 396 460 522112+ 82 Linux swap / Solaris
/dev/hda4 461 783 2594497+ 5 Extended
/dev/hda5 461 467 56196 83 Linux
/dev/hda6 468 474 56196 83 Linux
/dev/hda7 475 481 56196 83 LinuxCommand (m for help): t
Partition number (1-7): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)Command (m for help): t
Partition number (1-7): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)Command (m for help): t
Partition number (1-7): 7
Hex code (type L to list codes): 8e
Changed system type of partition 7 to 8e (Linux LVM)Command (m for help): pDisk /dev/hda: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 395 3068415 83 Linux
/dev/hda3 396 460 522112+ 82 Linux swap / Solaris
/dev/hda4 461 783 2594497+ 5 Extended
/dev/hda5 461 467 56196 8e Linux LVM
/dev/hda6 468 474 56196 8e Linux LVM
/dev/hda7 475 481 56196 8e Linux LVMCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@lab~]# partprobe
Warning: Unable to open /dev/fd0 read-write (Read-only file system). /dev/fd0 has been opened read-only.
[root@lab~]#
2,创建物理卷的操作
[root@lab~]# pvcreate /dev/hda[5-7]
Physical volume "/dev/hda5" successfully created
Physical volume "/dev/hda6" successfully created
Physical volume "/dev/hda7" successfully created
[root@lab~]# pvdisplay
--- NEW Physical volume ---
PV Name /dev/hda5
VG Name
PV Size 54.88 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 0iXPtr-ZkQp-9PRI-J31I-HL2t-SaBx-Vr2I8H
--- NEW Physical volume ---
PV Name /dev/hda6
VG Name
PV Size 54.88 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 4cjydb-ndfI-R0jh-HF2e-l2vS-hx8r-lGR9di
--- NEW Physical volume ---
PV Name /dev/hda7
VG Name
PV Size 54.88 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 1vhH3I-OwS3-I0IJ-P5Va-alKF-XxCR-EGy22R
[root@lab~]# pvs
PV VG Fmt Attr PSize PFree
/dev/hda5 lvm2 -- 54.88M 54.88M
/dev/hda6 lvm2 -- 54.88M 54.88M
/dev/hda7 lvm2 -- 54.88M 54.88M
3.将/dev/hda7 移除
[root@lab~]# pvremove /dev/hda7
Labels on physical volume "/dev/hda7" successfully wiped
[root@lab~]# pvs
PV VG Fmt Attr PSize PFree
/dev/hda5 lvm2 -- 54.88M 54.88M
/dev/hda6 lvm2 -- 54.88M 54.88M
[root@lab~]# pvcreate /dev/hda7
Physical volume "/dev/hda7" successfully created
4.改变一个物理卷可用容量的大小,暂时没有发现意义
[root@lab~]# pvresize --setphysicalvolumesize 20M /dev/hda7
Physical volume "/dev/hda7" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
[root@lab~]# pvs
PV VG Fmt Attr PSize PFree
/dev/hda5 lvm2 -- 54.88M 54.88M
/dev/hda6 lvm2 -- 54.88M 54.88M
/dev/hda7 lvm2 -- 20.00M 20.00M
[root@lab~]# pvresize /dev/hda7
Physical volume "/dev/hda7" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
[root@lab~]# pvs
PV VG Fmt Attr PSize PFree
/dev/hda5 lvm2 -- 54.88M 54.88M
/dev/hda6 lvm2 -- 54.88M 54.88M
/dev/hda7 lvm2 -- 54.88M 54.88M
5.创建卷组
[root@lab~]# vgcreate vg0 /dev/hda5 /dev/hda6
Volume group "vg0" successfully created
[root@lab~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 0 0 wz--n- 104.00M 104.00M
[root@lab~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 104.00 MB
PE Size 4.00 MB
Total PE 26
Alloc PE / Size 0 / 0
Free PE / Size 26 / 104.00 MB
VG UUID ulEBV2-l4Af-kOTx-UPSq-vHXa-3dWR-hVFuce
6.扩展卷组
[root@lab~]# vgextend vg0 /dev/hda7
Volume group "vg0" successfully extended
[root@lab~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
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 156.00 MB
PE Size 4.00 MB
Total PE 39
Alloc PE / Size 0 / 0
Free PE / Size 39 / 156.00 MB
VG UUID ulEBV2-l4Af-kOTx-UPSq-vHXa-3dWR-hVFuce
7.去除新加的物理卷/dev/hda7
[root@lab~]# vgreduce vg0 /dev/hda7
Removed "/dev/hda7" from volume group "vg0"
[root@lab~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 104.00 MB
PE Size 4.00 MB
Total PE 26
Alloc PE / Size 0 / 0
Free PE / Size 26 / 104.00 MB
VG UUID ulEBV2-l4Af-kOTx-UPSq-vHXa-3dWR-hVFuce
8.卷组改名
[root@lab~]# vgrename vg0 volumegroup0
Volume group "vg0" successfully renamed to "volumegroup0"
9.删除卷组
[root@lab~]# vgremove vg0
Volume group "vg0" successfully removed
10.创建逻辑卷
[root@lab~]# lvcreate -n data -L 60M /dev/vg0
Logical volume "data" created
[root@lab~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy%
data vg0 -wi-a- 60.00M
[root@lab~]# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/data
VG Name vg0
LV UUID itASvn-XidW-1MY3-l3tu-mdqX-3VfV-gUZjF7
LV Write Access read/write
LV Status available
# open 0
LV Size 60.00 MB
Current LE 15
Segments 2
Allocation inherit
Read ahead sectors 0
Block device 253:0
11.格式化,挂载
[root@lab~]# mkfs.ext3 /dev/vg0/data
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
15360 inodes, 61440 blocks
3072 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=62914560
8 block groups
8192 blocks per group, 8192 fragments per group
1920 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@lab~]# mount /dev/vg0/data /mnt/
[root@lab~]# ls /mnt/
lost+found
12.增加逻辑卷的尺寸
[root@lab~]# lvextend -L 80M /dev/vg0/data
Extending logical volume data to 80.00 MB
Logical volume data successfully resized you can use the additional space-for a standard ext3 filesystem, that requires the
command. If you don't specify a size, it takes all available space. 光扩展了没有用,还需要转化文件系统[root@lab~]# resize2fs /dev/vg0/data
13.减少逻辑卷的尺寸
[root@lab~]# lvreduce -L 20M /dev/vg0/data
WARNING: Reducing active logical volume to 20.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data? [y/n]: y
Reducing logical volume data to 20.00 MB
Logical volume data successfully resized
[root@lab~]# lvrename /dev/vg0/data /dev/vg0/test
Renamed "data" to "test" in volume group "vg0"
[root@lab~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy%
test vg0 -wi-a- 20.00M
14.去除逻辑卷
[root@lab~]# lvremove /dev/vg0/test
Do you really want to remove active logical volume "test"? [y/n]: y
Logical volume "test" successfully removed
[root@lab~]# lvdisplay
[root@lab~]# lvs
[root@lab~]#