Unix 系统下最大的麻烦就是分区太小,在一定的时间内分区满了就非常麻烦。LVM就
是一个非常好的解决方案,我们可根据情况扩大/或缩小某个分区。我这里介绍一个
在不具备有很多硬盘下供大家玩的方法,好处是对现有系统完全不动,只是建立虚
拟的硬盘系统,对LVM有更好的理解。我本人也是用这个办法在Linux下玩熟Linux
LVM的.

商业UNIX其实很早就有LVM系统,只是叫法不同,tru64,aix,solaris,HP-UX都有。
Linux做为新型的操作系统,现在技术上也成熟多了。

这篇文章是在一本法语的杂志“linux magazine" number 54 octobre 2003,原作
者 是Lionel Tricon 邮箱是lionel.tricon@free.fr ,文章原名是"LVM ou comment changer d'idee sur le stockage de donnees sous linux",文章太长,我就给强烈压缩了。如果有那位兄弟想转载,尽管拿,但是请不要删东西(错误不算),另外请给我个URL,也算对得起我码中文字, 谢了。

我是在debian下干的,其它linux应该没问题,因为原文著者是用redhat.

我用xfig按原文做了3个图,大家仔细看看,会对LVM原理理解有帮助,有问题也可
以贴出来,或给我发短信,进行探讨。我就不对LVM解释了。

安装需求(requirements):检查系统是否安了LVM的module
1. lsmod | grep -i lvm
2. modprobe lvm-mod
3.apt-get install lvm* lvm-common evms-lvmutils
or
rpm -q lvm , rpm -ivh lvm-xxxx.rpm with redhat

准备虚拟硬盘 prepare a fake disk
感谢linux LVM 支持loopback (loop device),才让我们有机会建立LVM下的虚拟硬
盘,就跟真硬盘一样用
1. dd if=/dev/zero of=lvm0.iso count=5000
2. dd if=/dev/zero of=lvm1.iso count=5000
3. dd if=/dev/zero of=lvm2.iso count=5000
4. dd if=/dev/zero of=lvm3.iso count=5000

5.losetup /dev/loop0 lvm0.iso
6.losetup /dev/loop1 lvm1.iso
7.losetup /dev/loop2 lvm2.iso
8.losetup /dev/loop3 lvm3.iso

好了,我们这里建立了可用的虚拟硬盘了,要删除这样的硬盘:
losetup -d /dev/loopX

下面我们建立几个物理卷(?) Physical Volume (对不起,我不知中文是怎么翻译
的)
1. vgscan
2. pvcreate /dev/loop0
3. pvcreate /dev/loop1
4. pvcreate /dev/loop2
5. pvscan <--- 非常有用
6. lvmdiskscan <-- 查看所有硬盘(包含虚拟)的情况
7。pvdisplay /dev/loop0 <--看看

下面我们建立一个volume group(对不起,我不知中文是怎么翻译的),就是这个概念
让我们可以随时加大分区。-s 是叫PE (Physical Extend) 的大小是8K,缺省值是
4Mo,PE是个基础块,它的大小直接影响物理卷的大小,因为linux核最大限制是65536个
PE,PE最小值是8K,最大值是16G。理论最大值是16Gx65536PE=1 petabytes.大家可
以看第四张图,可以帮助理解。

下面命令的意思是建立一个叫vg01 的volume group,并把硬盘loop0,loop1加到入
其中:
vgcreate -s 8k vg01 /dev/loop0 /dev/loop1

如果vg01不够用了,我们还可以用下面方法加入其它硬盘:
vgextend vg01 /dev/loop2

在volume group vg01 下建立逻辑卷(Logicial volume creation),名字叫 lv01,
大小为4M:
1. lvcreate -L4M -n lv01 vg01

再看一眼vg01:
2. vgdisplay vg01

看看新建的逻辑卷lv01:
3. lvdisplay /dev/vg01/lv01

也可以换个名字:
4。lvrename /dev/vg01/lv01 /dev/vg01/lv_test

给逻辑卷进行格式化,我用ext3,你也可以用vfat,reiserfs,ext2,不过实际应用应
该注意到如果你想在windows下共享这个vfat的话,windows不会认为是一个分区,
也不认识它的格式,这是因为我们这里利用了linux LVM 支持loopback的特性,所
以看不出来,实际上如果你真有几张硬盘的话,想用LVM,也必须先把分区定为linux
lvm type,然后再格式化成vfat 。因为windows不认识LVM,所以也不会认识你的vfat了。我已经做过实验了!大家可以不再化时间了。
1。mkfs -t ext3 -j /dev/vg01/lv_test
2。mount /dev/vg01/lv_test /mnt

Voila, 可以用了!

下面简单给出删除/扩充/减小volume groupe的命令,还有所有有关LVM清单,请大
家小心,下面的命令适应与ext2/ext3, 其它如reiserfs,jfs,xfs,命令不一样。有
感兴趣的朋友可以给我发信,我再详细给出命令。
delete volume groupe
1。vgchange -a n /dev/vg01
2。vgremove /dev/vg01

extend
1。lvextend -L+1G /dev/vg01/lv01
2。umount /mountingpoint
3。resize2fs /dev/vg01/lv01
4。mount /dev/vg01/lv01 /mountingpoint

reduce:
1。umount /mountingpoint
2。resize2fs /dev/vg01/lv01
lvreduce -L-1G /dev/vg01/lv01
mount /dev/vg01/lv01 /mountingpoint

listing:
lvmdiskscan,pvscan,vgscan,lvscan,vgcreate,lvcreate,vgextend,vgreduce,lvextend,lvreduce,pvdiplay,vgdisplay,lvdisplay,lvremove,lvrename,vgremove,vgchange

http://linuxsir.org/bbs/showthread.php?s=&threadid=78941