标签:
lvmpartitionfdisk磁盘扩容扩展磁盘 |
本文的所有操作届在Ubuntu 12.04 LTS上验证成功,其他发行版请自行查阅相关命令。
给某台服务器或者虚拟机VM进行LVM扩容的前提是,这台机器在安装创建的时候开启了LVM功能。
对于服务器来说,需要扩容时,你可能已经准备好了一个新的磁盘,系统检测到为/sdb,而对于云服务器或者虚拟机来说,可能是vm控制器已经将你的虚拟物理磁盘扩容了,只不过你的系统还没有利用到这些空间而已。比如用vmware
fusion,点击扩容功能之后进入系统输入fdisk,发现磁盘分区没有变化,但是多出了一块未使用的物理空间。
首先介绍LVM的几个概念:
02@02-vm:~$ sudo dfFilesystem1K-blocks Used Available Use% Mounted on /dev/mapper/02--vm--vg-root38057472 3501084 32802424 10% / udev1011124 4 1011120 1% /dev tmpfs204196 500 203696 1% /run none5120 0 5120 0% /run/lock none1020968 0 1020968 0% /run/shm cgroup1020968 0 1020968 0% /sys/fs/cgroup /dev/sda1240972 34482 194049 16% /boot /dev/loop04872572 32928 4839644 1% /srv/node/vdb
输入df可发现,/挂载点使用的设备是/dev/mapper/xxx,并不是传统的/dev/sdax。
输入lvdisplay,显示当前正在使用的logical
volume(注意这里目前有两个,一个是文件系统所在的volume,另一个是swap分区使用的volume,当然,我们需要扩容的是第一个):
02@02-vm:~$ sudo lvdisplay--- Logical volume --- LV Name /dev/02-vm-vg/root VG Name 02-vm-vg LV UUID vC3dCP-ynJq-qwbf-ZwwX-T1ca-tOo6-5FYVNg LV Write Access read/write LV Status available # open 1 LV Size 19.00 GiB Current LE 9472 Segments 3 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Name /dev/02-vm-vg/swap_1 VG Name 02-vm-vg LV UUID PT5spg-Ll4p-WAij-g2QB-PSmu-qaIr-gxc6Nf LV Write Access read/write LV Status available # open 2 LV Size 2.00 GiB Current LE 511 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1
输入vgdisplay,显示当前的volume group,注意VG
SIZE,这里应该是你当前的可用空间大小,待扩容完毕,这里显示的应该是最终的大小。
02@02-vm:~$ sudo vgdisplay--- Volume group --- VG Name 02-vm-vg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 19.75 GiB PE Size 4.00 MiB Total PE 10177 Alloc PE / Size 9983 / 39.00 GiB Free PE / Size 194 / 776.00 MiB VG UUID GFrHkW-EZFQ-vuCo-b4Pp-F1Lm-FV8B-NcbMmD
现在开始进行LVM扩容:02@02-vm:~$ sudo pvdisplay--- Physical volume --- PV Name /dev/sda5 VG Name 02-vm-vg PV Size 19.76 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 5058 Free PE 0 Allocated PE 5058 PV UUID RsGi6C-g0lm-SzJ1-9rw4-dMEi-Q633-9wo1Gd
1. 首先查看fdisk
$ sudo fdisk -l
/dev/sda1 *
2048
499711
248832
83 Linux
/dev/sda2
501760
41940991
20719616
5 Extended
/dev/sda5
501760
41940991
20719616 8e
Linux LVM
因为这台机器默认开启了LVM,所以目前有一个extended分区和一个LVM分区,并且他们是完全重叠的。
这是因为,LVM分区作为一个虚拟的分区,完全占用了这个extended分区,原理图见下:
因此,现在需要做的就是将extended partition (sda2)扩展到最大,然后创建一个新的LVM logical
partition (sda6),用它来填满sda2。
使用parted命令来扩展sd2:进入parted交互模式后,可以使用help xxx来提示帮助。
help resizeresize NUMBER START ENDresize partition NUMBER and its file system
接着,回到fdisk,使用它创建一个新的logical分区
n(new) ->
l(logical);再选择t,更改这个分区的类型id,设置成8e,即LVM,默认创建的类型不是LVM;w,保存退出;重启。
这时候,再查看fdisk,发现已经多了一个sda6了,现在要做的就是将sda6作为一个pv,加入到vg里来,从而能够给lv扩容。(忘了关键词的话请查上文)
sudo pvcreate /dev/sda6
pvdisplay
# vgextend - add physical volumes to a volume group
# 将新的pv加入到原有的vg
sudo vgextend your_vg_name /dev/sda6
vgdisplay,发现free size多了一块。
# lvresize - resize a logical volume
# 扩大当前正在使用的lv,从vg中取剩余空间
最后一步,磁盘扩容完毕了,需要扩容文件系统。目前较新的内核都支持在线扩容了,不需要像以前那样mount
umount来回折腾了。
resize2fs [ -fFpPM ] [ -d debug-flags ] [ -S RAID-stride ]
device [ size ]
只需要输入device就行了,size参数不填的话,默认使用整个分区的size。
注意这里的device是虚拟设备lv的名称,并不是sdax这样的物理设备了,我的环境下是/dev/02-vm-vg/root
扩容完文件系统后重启,再查看df命令,发现占用量百分比降低了,新的空间生效了。

< 前一篇python logging模块的使用
后一篇 >python url 安全字符处理