LVM是逻辑盘卷管理(Logical Volume Manager)的简称。如果不知道可以百度下,http://baike.baidu.com/view/361916.htm,百度百科,讲的就很好了,它真是一个非常棒的东西。引用百度百科的一段“Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的
问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现 某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如PatitionMagic等),但这都只是暂时解决办法,没有根 本解决问题。随着Linux的
逻辑盘卷管理功能的出现,
这些问题都迎刃而解,使得用户在无需停机的情况下方便地调整各个分区大 小。”这就是它功能。
目标:(1)用三块磁盘sdc,sdd,sde都是2G。先把sdc,sdd,组成卷组no1vg大小为4G,划分出逻辑卷date大小为200M,把该逻辑卷挂载到lvmtest目录,再对逻辑卷date进行扩展到容量为300M,对卷组no1vg进行扩展,也就是把磁盘sde加入no1vg使其容量为6G。(2)对逻辑卷date,把它的名字改为date2,然后减少逻辑卷date2容量到250M,最后把逻辑卷date2移除掉;对卷组no1vg改名为vgtest,然后减少卷组vgtest容量到4G;最后移去物理卷sde等相关操作的命令.
1,分别把三块磁盘创建成Linux lvm
在默认情况ubuntu server 10.4 没有安装LVM2软件包,所以要先安装
先查看安装没有
#sudo dpkg -l lvm2
若没安装则安装
#sudo apt-get install lvm2
再查看安装了没有
#sudo dpkg -l lvm2
#sudo fdisk /dev/sdc
三块磁盘的分区结果相同,操作过程也相同。
2,初始化sdc,sdd,sde
初始化前先查看下
#sudo pvscan
#sudo pvdisplay
开始初始化
再查看下,和之前有什么不同
#sudo pvdisplay
3,创建卷组no1vg,大小为4G.
先查看下
#sudo vgdisplay
创建卷组no1vg
#sudo vgcreate no1vg /dev/sd[c,d]1
#sudo vgdisplay no1vg
默认的情况,PE为4M,也就是最大的LV可为256G.
4,创建逻辑卷date,大小为200M.
先查看
#sudo lvdisplay
创建逻辑卷date
#sudo lvcreate –n date –L 200M no1vg
或
#sudo lvcreate –n date –l 50 no1vg
*:-L 后面是大小,若你给的不是4的倍数,它会给你自动分配成4的倍数的大小的空间。-l 后面是PE的个数,50*4=200M,所以两个命令的结果是相同的。
#sudo lvdisplay /dev/no1vg/date
5,格式化逻辑卷date,用ext4文件系统
#sudo mkfs.ext4 /dev/no1vg/date
6,挂载逻辑卷date到文件夹lvmtest
#sudo mount /dev/no1vg/date lvmtest
#sudo cd lvmtest
#sudo mkdir test.txt
7,对逻辑卷date进行扩展到容量为300M.
先查看扩展前的信息
#sudo lvdisplay /dev/no1vg/date
先umount掉挂载的逻辑卷date
#sudo umount lvmtest
#sudo lvextend –L +100M /dev/no1vg/date
强行检查date逻辑卷
#sudo e2fsck –f /dev/no1vg/date
重新定义分区大小
#sudo resize2fs /dev/no1vg/date
先查看扩展后的信息
#sudo lvdisplay /dev/no1vg/date
#sudo mount /dev/no1vg/date lvmtest
#sudo df –h
查看卷组信息
8,扩展卷组no1vg,把sde磁盘加入其中,容量到达6G
#sudo vgextend no1vg /dev/sde1
查看扩展后的卷组信息
#sudo vgdisplay /dev/no1vg
扩展后的数据仍在
(2)第二个实验目标
1,辑卷date改名为date2,并减少其容量到250M,并把它移除
#sudo lvrename /dev/no1vg/date /dev/no1vg/date2
查看逻辑卷信息
#sudo lvs
或
#sudo lvscan
或
#sudo lvdisplay
在初次做这个实验时出现如下问题:
缩减其容量后发现,挂载不上,重新格式化后,才可以挂载,后来经过查询要按如下步骤操作:先使用resize2fs 对其操作后,接着用e2fsck -f ,再用lvreduce;与增加容量时的操作相反,增加时是先用lvextend后,再用e2fsck -f ,接着是resize2fs.
#sudo resize2fs /dev/no1vg/date2 250M
#sudo e2fsck -f /dev/no1vg/date2
#sudo lvreduce -L 50M /dev/no1vg/date2
停止逻辑卷date2
#sudo lvchange -a n /dev/no1vg/date2
查看其状态
#sudo lvdisplay
激活逻辑卷date2
#sudo lvchange -a y /dev/no1vg/date2
查看其状态
#sudo lvdisplay
通过快照备份逻辑卷
#sudo lvcreate -s -L 250M -n snapno1 /dev/no1vg/date2
查看
#sudo lvs
快照不需格式化就可以直接使用
挂载快照到目录snap
#sudo mount /dev/no1vg/snapno1 snap
移除逻辑卷date2前,若有快照,就要先移除快照,否则移除是不成功的
移除快照snapno1
#sudo lvremove /dev/no1vg/snapno1
移除逻辑卷的命令与移除快照相同
#sudo lvremove /dev/no1vg/date2
查看逻辑卷信息
#sudo lvdisplay
#sudo lvs
#sudo lvscan
2,对卷组的改名,缩减容量,分离卷组,移除卷组,合并卷组操作
对卷组no1vg改名为vgtest
#sudo vgrename no1vg vgtest
查看
#sudo vgs
或
#sudo vgscan
或
#sudo vgdisplay
把物理卷sde从卷组vgtest中移除也就是缩减了其容量从6G到4G
#sudo vgreduce /dev/vgtest /dev/sde1
#sudo vgdisplay
停止卷组vgtest
#sudo vgchange -a n /dev/vgtest
停止卷组后,把物理卷sdd1从卷组vgtest分离出来,并把加入vgtest2中
#sudo vgsplit /dev/vgtest /dev/vgtest2 /dev/sdd1
原有的逻辑卷的数据仍在
#sudo vgdiaplay /dev/vgtest
激活卷组vgtest
#sudo vgchange -a y /dev/vgtest
移除卷组vgtest
#sudo vgremove /dev/vgtest
合并卷组:把卷组vgtest1,vgtest2合并到卷组vgtest
可以先看下vgmerge的用法
#man vgmerge
#sudo vgmerge /dev/vgtest /dev/vgtest1
#sudo vgmerge -v /dev/vgtest /dev/vgtest2
---------------以下两个没实验过----------------------------------
另外还有卷组的导出vgexport
#sudo vgexport /dev/vgtest
卷组的导入
#sudo vgimport vgtest /dev/sd[c,d]1
----------------------------------------------------------------------------
3,物理卷sde的移除
先将sde是数据移到sdc上,这个要花一点时间
#sudo pvmove /dev/sde1 /dev/sdc1
移完后数据仍在
数据移完后,将其移除
#sudo pvremove /dev/sde1
感悟:通过以上的操作实验,感觉LVM真的是强,能放大也能缩小,能拆分能合并,并且数据不丢,在实际的应用中,当然不建议改动已建好的逻辑卷,卷组,物理卷的大小,理论上数据不会丢,可又有谁能保证在线操作时,就没问题呢。最后,再说一次,LVM真的是好强!