介绍
这里列举了两种方式用于给你的虚拟机 Linux 系统扩展根分区系统,根系统分区一般都是采用 LVM (逻辑卷管理)的方式对磁盘进行管理,你可以依此轻松将多个物理卷加入到虚拟卷组中,划给挂载点目录使用。
此基础上对虚拟机原有硬盘进行了扩容,如从 20G 扩展到 40G 的情况下对根目录大小进行调整,两种方式都可以进行分区扩容,本质差别不大。
新建分区的方式:
可以在原有硬盘基础上新建分区,也可以新增硬盘创建新分区,最终加入到虚拟卷中。
修改分区范围的方式:
在扩容原有硬盘的基础上,删除 linux 分区,并新建分区,保持起始 offset 是一致的就可以达到原分区无感知扩大。
新建分区的方式
这里使用 debian 的系统举例,其根目录挂载分区为:/dev/mapper/debian--vg-root
查看硬盘占用情况
lsblk
通过新增的硬盘或者已有的硬盘新建分区
fdisk /dev/sdb
...
得到 /dev/sdb1 分区
通过刚刚创建的分区 /dev/sdb1 分区,初始化为物理卷
pvcreate /dev/sdb1
选项:
-f:强制创建物理卷,不需要用户确认;
-u:指定设备的 UUID;
-y:所有的问题都回答“yes”;
-Z:是否利用前 4 个扇区。
查看卷组
vgs
得到默认卷组名:debian-vg
将刚刚的物理卷加入组中
vgextend debian-vg /dev/sdb1
把空闲卷组的容量分配给指定分区
lvextend -l +100%FREE /dev/mapper/debian--vg-root
lvextend 是可以动态调整分区的,-l 是按百分比分配,+表示增加;-L 是安装指定容量分配,+表示增加,-表示减少,不带符号表示将分区调整至指定大小;
另有可选的用法:
lvextend –L +20G /dev/mapper/debian--vg-root #root 分区增加 20G
lvextend –L -2G /dev/mapper/debian--vg-root #root 分区减少 2G
lvextend –L 20G /dev/mapper/debian--vg-root #root 分区设置为 20G
重置大小,使得改变立马生效
resize2fs /dev/mapper/debian--vg-root
如果需要将加入的卷移除
vgreduce debian-vg /dev/sdb1
若出现卷已经被使用
Physical volume "/dev/sdb1" still in use
则必须先将数据转移到卷之外的卷组其他位置,你可以挂载新的分区卷到卷组中,或者原有卷组中还有空间。
pvremove /dev/sdb1
修改分区范围方式
这里使用 centos 举例,根分区挂载的是 /dev/mapper/cl-root
直接删除原本分区,新建分区,起始位置保持一致即可。(不要进行格式化分区数据就不会丢失)
fdisk /dev/sda
删除(d)并重建分区(n) /dev/sda3
(这步之后若不行,记得重启才生效)
调整 pv 大小
[root@localhost ~]# pvresize /dev/sda3
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- <19.00g 0
/dev/sda3 cl lvm2 a-- <40.00g 20.00g
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 19G 0 part
│ ├─cl-root 253:0 0 37G 0 lvm /
│ └─cl-swap 253:1 0 2G 0 lvm [SWAP]
└─sda3 8:3 0 40G 0 part
└─cl-root 253:0 0 37G 0 lvm /
sdb 8:16 0 40G 0 disk
└─sdb1 8:17 0 40G 0 part /mnt/hd1
sr0 11:0 1 680M 0 rom
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/cl-root
Size of logical volume cl/root changed from 36.99 GiB (9470 extents) to 56.99 GiB (14590 extents).
Logical volume cl/root successfully resized.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 19G 0 part
│ ├─cl-root 253:0 0 57G 0 lvm /
│ └─cl-swap 253:1 0 2G 0 lvm [SWAP]
└─sda3 8:3 0 40G 0 part
└─cl-root 253:0 0 57G 0 lvm /
sdb 8:16 0 40G 0 disk
└─sdb1 8:17 0 40G 0 part /mnt/hd1
sr0 11:0 1 680M 0 rom
重载硬盘大小
[root@localhost ~]# resize2fs /dev/mapper/cl-root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/cl-root 时
找不到有效的文件系统超级块.
[root@localhost ~]# xfs_growfs /dev/mapper/cl-root
meta-data=/dev/mapper/cl-root isize=512 agcount=9, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=9567232, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 9567232 to 14940160
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.4M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/mapper/cl-root 57G 35G 23G 62% /
/dev/sda1 1014M 223M 792M 22% /boot
/dev/sdb1 40G 11G 28G 28% /mnt/hd1
tmpfs 283M 0 283M 0% /run/user/0
参考相关
https://developpaper.com/linux-lvm-logical-volume-management/
https://blog.csdn.net/ichen820/article/details/122105218
Comments