如何在线扩大LVM分区
如果你有一台正在跑业务的机器,随着数据量的增加,你发现原来规划的硬盘空间已经不能满足现有的需求了,此时,存储扩容将是首先最先考虑的,增加新的存储后,如何将现有分区扩大,能否自动扩大呢?如果你使用了LVM(逻辑卷管理),这将不是问题,这一切可以在线完成。
如果不幸没有使用逻辑卷管理,建议对新的存储进行分区、做文件系统,挂在到其他目录,暂停业务,通过tar等工具将数据复制到新存储上,然后修改fstab,重启挂在新的数据盘。
如果通过逻辑卷管理,增加新存储后,只需将新的存储加入到lvm中,根据需求将分区扩展至合适的大小即可,下面简单叙述整个操作过程:
1、增加物理存储,一般都需要reboot系统才能识别新的存储。
2、查看现有逻辑卷的PV状态
[root@mail ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup lvm2 a- 15.51g 0 [root@mail ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 15.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 3970 Free PE 0 Allocated PE 3970 PV UUID PClEa7-pYpP-pwhv-MMYO-POJ8-i5Ax-gQogPS
3、查看新加存储
[root@mail ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x75e7240a. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): p Disk /dev/sdb: 171.8 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 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: 0x75e7240a Device Boot Start End Blocks Id System Command (m for help): quit
可以看到,新增加的存储为sdb,大小:170G。
4、在新存储上创建pv
[root@mail ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created
5、查看现有PV状态
[root@mail ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup lvm2 a- 15.51g 0 /dev/sdb lvm2 a- 160.00g 160.00g
可以看到,sdb已经加入到逻辑卷中,但是尚未分配给任何卷组。
6、把sdb加入到卷组:VolGroup中。
[root@mail ~]# vgextend VolGroup /dev/sdb Volume group "VolGroup" successfully extended
7、查看pv状态
[root@mail ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 15.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 3970 Free PE 0 Allocated PE 3970 PV UUID PClEa7-pYpP-pwhv-MMYO-POJ8-i5Ax-gQogPS --- Physical volume --- PV Name /dev/sdb VG Name VolGroup PV Size 160.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 40959 Free PE 40959 Allocated PE 0 PV UUID dFrx5a-JJPM-r0Rp-F4tK-s7bh-FQB5-niAS4J
可以看到,sdb已经加入到VolGroup卷组了,并且有40959个PE是闲置的。
8、扩展逻辑卷lv,将限制的PE分配给某lv
[root@mail ~]# lvextend -L+160G /dev/mapper/VolGroup-lv_root Extending logical volume lv_root to 170.55 GiB Logical volume lv_root successfully resized
将所有闲置的PE分配给了逻辑卷VolGroup-lv_root。
9、查看lv的状态
[root@mail ~]# lvdisplay --- Logical volume --- LV Name /dev/VolGroup/lv_root VG Name VolGroup LV UUID 8FuOth-AjwE-G1UN-Aew6-x2zJ-jEDa-e0Fv1m LV Write Access read/write LV Status available # open 1 LV Size 170.55 GiB Current LE 43661 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/VolGroup/lv_swap VG Name VolGroup LV UUID Lo3ACz-kQbX-4bV3-oeSE-T7mT-Rdp2-kUziuu LV Write Access read/write LV Status available # open 1 LV Size 4.95 GiB Current LE 1268 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1
可以看到lv_root容量已经变大了。
10、对文件系统进行扩展
[root@mail ~]# resize2fs /dev/VolGroup/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 11 Performing an on-line resize of /dev/VolGroup/lv_root to 44708864 (4k) blocks. The filesystem on /dev/VolGroup/lv_root is now 44708864 blocks long.
11、最后用df查看剩余空间
[root@mail ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 168G 7.2G 153G 5% / tmpfs 1.5G 396K 1.5G 1% /dev/shm /dev/sda1 485M 60M 401M 13% /boot
所有操作都完成了,期间业务中断过一次,就是重启系统已识别新的存储空间。