附加:lvm
这是一个新系统,依然debian 6.0.6,走起

我在装系统的时候手动进行了分区(之前都是自动分区并配置lvm,感觉不怎么合适),三个主分区:/boot,/,/swap

预留了30G的空间,其实是我以一个20G的debian系统原版为backingfile(qemu)创建的一个50G的磁盘,所以会有30G空余

通过fdisk创建一个扩展分区,在创建一个逻辑分区,然后通过t命令将其id设置为8e(标准lvm分区)

必须要说明一下的是本文只是介绍一下lvm的基本操作,也是自己的备忘。并不涉及与raid的配合,因为本人木有环境,大神莫怪,权当学习。并且本文并不涉及fdisk等命令,若您想对此进行了解,小弟还有一篇文章
感兴趣的可以去瞧瞧看看,呵呵

p命令查看如下:



Command (m for help): p

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005982d

Device Boot Start End Blocks Id System
/dev/sda1 * 1 31 242688 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 31 2341 18554880 83 Linux
/dev/sda3 2341 2611 2171904 82 Linux swap / Solaris
/dev/sda4 2611 6527 31457631+ 5 Extended
/dev/sda5 2611 6527 31457600 8e Linux LVM



总感觉把extend分区留给后面新创建磁盘时用来折腾很正确,不然总感觉有点奇葩

好,w保存退出
提示can't什么东西,大概意思就是你这样修改后,磁盘中的管理分区的一个地方(暂时先这样理解,其实是super block/boot之类的)不能更新,需要重起或者运行partprobe命令,这个命令在另一个强大的磁盘管理工具parted中。
好,安装个parted先,安装完毕后运行partprobe,没有任何提示,嘛,我认为他正常工作了。

反正fdisk -l可以看到已经有了刚才的分区。

下面开始lvm操作

我们要处理的是那30G的磁盘空间,首先,我们将它初始化以下,先是物理卷,然后是逻辑卷,然后就可以对其操作了

初始化物理卷:



$ sudo pvcreate /dev/sda5 
Physical volume "/dev/sda5" successfully created



貌似工作很正常

创建卷组:(嘛,卷组是为了创建逻辑卷准备的,感觉跟扩展分区的地位比较像)



$ sudo vgcreate jcklvm /dev/sda5 
Volume group "jcklvm" successfully created



起了个名字,叫jcklvm,貌似工作的也很正常,很顺利么...

然后可以通过vgdisplay查看一下,可以看到比较详细的信息,关于卷组的

然后就可以在卷组上创建逻辑卷了:



$ sudo lvcreate -L 20G -n jckhome jcklvm
Logical volume "jckhome" created



我创建了一个大小为20G,名字叫jckhome,并且在jcklvm这个卷组上的逻辑卷,成功与否你懂得

接着我们应该在逻辑卷上创建文件系统:
mkfs啦

然后将它挂载到某个目录/mnt/jckhome上,df查看一下



$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 3.3G 14G 20% /
tmpfs 2.0G 0 2.0G 0% /lib/init/rw
udev 2.0G 128K 2.0G 1% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
/dev/sda1 230M 22M 197M 10% /boot
/dev/mapper/jcklvm-jckhome
20G 172M 19G 1% /mnt/jckhome



似乎已经成功了撒,至少现在已经可以使用这块空间了

然后你可以做得就是将你想要的东西复制到这里,我是准备将我的家目录放到这个地方的,不然20G空间实在不够用,复制过来,别忘了-r



$ sudo cp /home/jck/* /mnt/jckhome/ -r -a



再将原来的家目录删掉,换个名字吧先,免得悲剧了



$ sudo mv jck/ jck.old



重新挂载一下



$ sudo umount /mnt/jckhome/
$ sudo mkdir /home/jck
$ sudo mount -t ext4 /dev/jcklvm/jckhome /home/jck



这时就应该能够正常使用了,如果你的权限没问题的话,但是还没完,因为重启以后这些就都没有了...

还需要配置一下。
这步就像前一篇文章一样操作就可以了,修改/etc/fstab文件



/dev/jcklvm/jckhome /home/jck ext4 defaults 1 1



修改好后,重启,查看结果

我的结果是系统可以正常使用,使用df 查看结果与之前的结果一样。
这样基本就结束了,但可能有人会有疑问,因为这些工作fdisk完全能做的,比如搞个分区挂载到/home,为啥要用lvm

lvm的强大并不在这,而在于你可以动态分配磁盘空间的大小,刚才我只分配了20G的空间吧,但实际上空余的空间有30G哦,好,现在我的家目录空间不够了,怎么办?

两条命令解决全家老小的吃穿问题:



$ sudo lvextend -L+10G /dev/jcklvm/jckhome 
[sudo] password for jck: 
Extending logical volume jckhome to 30.00 GiB
Logical volume jckhome successfully resized



$ df -h

Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 3.3G 14G 20% /
tmpfs 2.0G 0 2.0G 0% /lib/init/rw
udev 2.0G 128K 2.0G 1% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
/dev/sda1 230M 22M 197M 10% /boot
/dev/mapper/jcklvm-jckhome
20G 175M 19G 1% /home/jck



$ sudo resize2fs /dev/jcklvm/jckhome 

resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/jcklvm/jckhome is mounted on /home; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/jcklvm/jckhome to 7864320 (4k) blocks.
The filesystem on /dev/jcklvm/jckhome is now 7864320 blocks long.



$ df -h

Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 3.3G 14G 20% /
tmpfs 2.0G 0 2.0G 0% /lib/init/rw
udev 2.0G 128K 2.0G 1% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
/dev/sda1 230M 22M 197M 10% /boot
/dev/mapper/jcklvm-jckhome
30G 175M 28G 1% /home



是不是很轻松撒,如果是传统分区手段可能就要悲剧一段时间了,呵呵