2012年(5)
分类: LINUX
2012-09-13 23:53:06
中创建LVM(逻辑卷)
一、逻辑卷(LVM)介绍
LVM的全名是逻辑卷管理员(Logic Volume Manager),它以卷为单位,不像传统磁盘以分区为单位,以便可以弹性地调整磁盘空间。他可以在线调整卷的大小,也可以可读可写的模式建立快照。
物理卷(Physical Volume,PV):物理卷是构成LVM的最主要的软件包,在Linux系统中,物理卷就是磁盘的分区,要不过要作为LVM物理卷,其分区系统识别码必须标识为LVM
卷组(Volume Group,VG):可以使用一个或多个物理卷组成一个卷组
逻辑卷(Logic Volume,LV):你可以把逻辑卷当成分区一样使用,逻辑卷的空间是由卷组提供的。
下表是LVM的管理工具:
物理卷 |
卷组 |
逻辑卷 | |
扫描 |
Pvscan |
Vgscan |
Lvscan |
查看 |
Pvdisplay |
Vgdisplay |
Lvdisplay |
新建 |
Pvcreate |
Vgcreate |
Lvcreate |
卸载 |
Pvremove |
Vgremove |
Vgremove |
放大 |
无 |
Vgextend |
Lvextend |
缩小 |
无 |
Vgreduce |
Lvreduce |
二、建立LVM[i]
1、建立物理卷
新建分区:
[root@linux~]#parted –s /dev/sdb mklabel msdos
[root@linux~]#parted –s /dev/sdb mkpartfs primary ext2 0 1024
[root@linux~]#parted –s /dev/sdb mkpartfs primary ext2 1024 2048
[root@linux~]# parted –s /dev/sdb mkpartfs primary ext2 2048 3072
[root@linux~]# parted –s /dev/sdb mkpartfs primary ext2 3072 4096
设置系统标识为LVM:
[root@linux~]#parted –s /dev/sdb set 1 lvm
[root@linux~]#parted –s /dev/sdb set 2 lvm
[root@linux~]#parted –s /dev/sdb set 3 lvm
[root@linux~]#parted –s /dev/sdb set 4 lvm
[root@linux~]#fdisk –l /dev/sdb | grep –i lvm
Partprobe同步磁盘状态
建立物理卷:
[root@linux~]#pvcreate /dev/sdb{1,2,3,4}
查看一下我创建的物理卷:
[root@linux~]#pvdisplay
用pvs查看一下:
可以看到我/dev/sdb的四个分区都已经成为物理卷
2、建立卷组
VGNAME是卷组的名称,第一个VGNAME都是唯一的,最好不要与/dev/下的其他设备名冲突。以下是我用/dev/sdb1,/dev/sdb2这两个物理卷建立一个叫mainVG的卷组
[root@linux~]#vgcreate mainVG /dev/sdb1 /dev/sdb2
查看一下我的卷组信息
[root@linux~]#vgdisplay mainVG
[root@linux~]#vgs
3、建立逻辑卷
逻辑卷的设备文件被存储在/dev/VGNAME/LVNAME,以下是我建立一个1G大小的逻辑卷空间
[root@linux~]#ls /dev/mainVG
lvcreate –L 1G –n 1stLV /dev/mainVG
查看逻辑卷是不为激活状态
[root@linux~]#lvs
如果未激活用下面命令激活
[root@linux~]#lvchange –ay /dev/mainVG/1stLV
建立出来的逻辑卷,你就可以当做一个分区,在逻辑卷上建立文件系统,挂载这个文件系统
[root@linux~]#mkfs.ext3 –F /dev/mainVG/
三、调整LVM
1、调整卷组
创建分区/dev/sdb3后创建物理卷
[root@linux~]#pvcreate /dev/sdb3
vgdisplay mainVG | grep “VG Size”
[root@linux~]#pvdisplay /dev/sdb3 | grep “PV Size”
以上可以看到,现在我的mainVG大小是1.9G,而且我的一个分区/dev/sdb3大小是900多M
[root@linux~]#vgextend mainVG /dev/sdb3
[root@linux~]#vgdisplay mainVG | grep “VG Size”
现在我的mainVG大小就变成了2.85G了,增加大小正好是/dev/sdb3
然后我再把/dev/sdb3从mainVG中卸载,mainVG又回到原先的1.9G了
[root@linux~]#vgreduce mainVG /dev/sdb3
[root@linux~]#vgdisplay mainVG | grep Size
2、在线调整逻辑卷
放大:先放大LV再放大文件系统
先扩展LV加1G
[root@linux~]#lvextend –L +1G /dev/mainVG/1stLV
再看看我的逻辑卷大小
[root@linux~]#lvdisplay /dev/mainVG/1stLV | grep ‘LV Size’
下一步e2fsck检测LV分区
[root@linux~]#e2fsck –f /dev/mainVG/1stLV
下面在线拉伸LV分区
[root@linux~]#resize2fs /dev/mainVG/1stLV
然后df查看LV分区已经在线拉伸了1G
四、LVM高级应用
1、产生卷快照
你可以把卷中的数据冻结起来,就像是为数据排了一张照片,可以永久保存建立时的状态
[root@linux~]#mount /dev/mainVG/1stLV /mnt/lvm
[root@linux~]#lvcreate –L 200M –s –n backup1 /dev/mainVG/1stLV
2、读取卷快照
[root@linux~]#mount /dev/mainVG/backup1 /mnt/backup
可以看到这是我逻辑卷快照的内容,现在我用20M的数据覆盖原本逻辑的passwd
[root@linux~]#dd if=/dev/zero of=/mnt/lvm/passwd bs=1M count=20
而且又新建了一个group文件,可快照中的数据并没有改 变
3、卸载逻辑卷快照
[root@linux~]#umount /dev/mainVG/backup1
卸载快照之前必须先卸载挂载
[root@linux~]#lvremove /dev/mainVG/backup1
可以看到,现在已使用空间降了200M
4、移动物理卷
加入一个新的物理卷,这里可以看到/dev/sdb2已经使用了500多M了
[root@linux~]#vgextend mainVG /dev/sdb3
通过pvmove将/dev/sdb2的数据迁移到/dev/sdb3上
[root@linux~]#pvmove /dev/sdb2 /dev/sdb3
[root@linux~]#pvscan
可以看到/dev/sdb2上的资料都移动到/dev/sdb3上了
5、卸载物理卷
[root@linux~]#vgreduce mainVG /dev/sdb2
[root@linux~]#pvremove /dev/sdb2
现在/dev/sdb2自由了,哈哈~
五、迁移至其他系统
进行迁移卷组的第一个步骤就是导出卷组
1、导出卷组
用vgchange将卷组修改为非有效的配置
[root@linux~]#vgchange –a n mainVG
然后用vgexport导出卷组
[root@linux~]#vgexport mainVG
2、导入卷组
用vgimport命令导入卷组,然后修改为有效配置
[root@linux~]#vgimport mainVG
[root@linux~]#vgchange –a y mainVG
挂载上看一下