Ubuntu 不停止服务器的情况下扩容分区
本文介绍一下如何在不停止服务的情况下 通过添加新硬盘来提升根目录分区的容量。注意,本文得以实现的前提是你的根目录分区的类型为Linux LVM
。
添加新硬盘
假设我们新添加的硬盘名称叫做 /dev/vdb
。首先使用 fdisk 来创建新分区,
fdisk /dev/vdb
之后会弹出如下信息,然后我们键入n
来新建分区,你可以输入m
来查看详细命令介绍 :
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): < n
随后键入p
来新建主分区
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): p
然后选择盘符,起始扇区和结束扇区,都默认即可:
Partition number (1,5, default 1):
First sector (2048-1048575999, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-1048575999, default 1048575999):
然后就会弹出创建完成的提示,接下来我们键入t
来修改分区类型为 LVM
:
Created a new partition 1 of type 'Linux' and of size 40 GiB.
Command (m for help): t
// 选择分区
Selected partition: 1
// 选择 LVM 的十六进制码
Hex code (type L to list codes): 8e
修改完后就会弹出已修改为 Linux LVM
的信息,然后键入w
保存并退出即可:
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
然后我们就可以使用fdisk -l
命令查看新建的分区了:
Disk /dev/vda: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd4bae426
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 999423 997376 487M 83 Linux
/dev/vda2 1001470 1048573951 1047572482 499.5G 5 Extended
/dev/vda5 1001472 1048573951 1047572480 499.5G 8e Linux LVM
...
Disk /dev/vdb: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7779cca1
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 1048575999 1048573952 500G 8e Linux LVM // 看这里看这里
接下来我们使用如下命令把新建的分区创建为物理卷:
pvcreate /dev/vdb1
新建成功提示:
Writing physical volume data to disk "/dev/vdb1"
Physical volume "/dev/vdb1" successfully created
至此,新硬盘的准备工作就完成了,接下来我们来把新硬盘加入卷组。
将新硬盘加入卷组
首先我们要确定一下根目录的卷组,输入vgdisplay
来查看已有的卷组:
root@server:~# vgdisplay
--- Volume group ---
VG Name firstBlood-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 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 500.52 GiB
PE Size 4.00 MiB
Total PE 255876
Alloc PE / Size 255621 / 998.52 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID wZekM0-X7xi-edSz-eQ6X-72q6-pApj-MwnsmB
可以看到只有一个名为firstBlood-vg
的卷组,那根目录的挂载卷肯定属于该卷组,可以输入df
验证一下:
root@server:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 32966516 0 32966516 0% /dev
tmpfs 6597336 280672 6316664 5% /run
// 注意下面这行
/dev/mapper/firstBlood--vg-root 964375696 360737788 559860832 40% /
tmpfs 32986676 0 32986676 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 32986676 0 32986676 0% /sys/fs/cgroup
可以看到跟目录是从firstBlood--vg-root
挂载的。接下来我们使用如下命令将刚才创建的物理卷/dev/vdb1
加入firstBlood-vg
卷组即可:
vgextend firstBlood-vg /dev/vdb1
成功提示如下:
Volume group "firstBlood-v" successfully extended
扩展根目录所在的逻辑卷
添加完成之后我们就可以使用如下命令来拓展根目录所在的逻辑卷的空间:
lvextend -L +499G /dev/mapper/firstBlood--vg-root
注意,如果你新硬盘的空间是 500G 的话,直接-L +500G
是会报错的,因为实际空间比 500G 要小一个字节,你可以根据报错内容中给出的容量上限进行添加,也可以向我这样只添加 499G (会浪费 1G 的空间 )。
添加成功提示如下:
Extending logical volume lv_root to 999.52 GiB
Logical volume lv_root successfully resized
然后使用如下命令刷新配置即可,你新添加的空间越大,命令执行时间就越长 (10几秒 ):
resize2fs /dev/mapper/firstBlood--vg-root
输出如下:
Size of logical volume firstBlood-vg/root changed from 434.49 GiB (42239229 extents) to 934.99 GiB (239357 extents).
Logical volume root successfully resized.
添加完成
至此,跟目录的扩容就完成了,你可以使用df -h
来查看扩容后的空间:
root@server:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 32G 0 32G 0% /dev
tmpfs 6.3G 275M 6.1G 5% /run
// 扩容成功
/dev/mapper/firstBlood--vg-root 920G 345G 534G 40% /
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/vda1 472M 58M 391M 13% /boot