Linux 扩展根目录分区大小,修改分区范围

介绍

这里列举了两种方式用于给你的虚拟机 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