昨天测试脚本的时候发现Ubuntu写不进去文件,甚至创建文件夹都不行,仔细一看报错,好家伙,磁盘已满
原来是当时建虚拟机的时候分配的空间太小了,只有16GB
那就扩容吧,顺便记录一下

ESXI部分

进入webUI>找到Ubuntu虚拟机>关机并编辑配置>直接改硬盘大小
演示

改完直接保存并开机,此时的虚拟机仅是获得了更大的硬盘空间,但还没有扩展到物理卷(Physical Volume)及逻辑卷(Logical Volume)

Ubuntu部分

请注意,接下来的操作涉及到磁盘和文件系统的更改,所以在执行之前务必备份重要数据,并小心操作。

检查磁盘状态

使用SSH连接至Ubuntu,使用sudo -i切换为root用户

输入命令lsblk查看磁盘信息,也可以用pvslvs以及vgs分别查看物理卷、逻辑卷以及卷组(Volume Groups)的详细信息,得到类似如下输出

root@ubuntu:~# lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0  63.4M  1 loop /snap/core20/1974
loop1                       7:1    0  63.5M  1 loop /snap/core20/2015
loop2                       7:2    0  73.9M  1 loop /snap/core22/864
loop3                       7:3    0 128.9M  1 loop /snap/docker/2904
loop4                       7:4    0 111.9M  1 loop /snap/lxd/24322
loop5                       7:5    0  53.3M  1 loop /snap/snapd/19457
loop6                       7:6    0  40.9M  1 loop /snap/snapd/20290
sda                         8:0    0    50G  0 disk 
├─sda1                      8:1    0   763M  0 part /boot/efi
├─sda2                      8:2    0   1.8G  0 part /boot
└─sda3                      8:3    0  13.5G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0    10G  0 lvm  /
root@ubuntu:~# pvs
  PV         VG        Fmt  Attr PSize  PFree
  /dev/sda3  ubuntu-vg lvm2 a--  13.50g 3.50g
root@ubuntu:~# lvs
  LV        VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ubuntu-lv ubuntu-vg -wi-ao---- 10.00g        

可以看到我加的硬盘空间已经生效,而原本安装系统时自动分配的空间竟然还有3.5G是空余的

修改分区大小

这里使用fdisk ,它是一个用于磁盘分区管理的命令行工具,用于创建、编辑、查看和删除磁盘分区。下面是一些常用的 fdisk 命令及其作用:

  1. p 查看分区表。这个命令会显示磁盘上的分区布局,包括分区的起始扇区、结束扇区、类型等。

  2. n 创建一个新分区。这个命令允许你创建一个新的分区,并设置分区的类型、起始位置和大小。

  3. d 删除分区。这个命令用于删除指定的分区。

  4. t 更改分区的类型。使用这个命令,你可以更改分区的文件系统类型或 ID。

  5. c 更改某个分区的标签。这个命令可以为分区设置一个可读的标签,通常用于文件系统标识。

  6. a 切换启动分区标志。这个命令用于设置或清除分区的启动标志,指示系统从该分区引导。

  7. l 列出分区类型代码。这个命令将显示可用的分区类型代码列表。

  8. w 保存分区表更改并退出。使用此命令将保存所做的分区更改,然后退出 fdisk

  9. q 退出而不保存更改。使用此命令退出 fdisk,而不保存任何已做的更改。

  10. m 查看 fdisk 命令的帮助信息。这个命令将列出可用命令的简要描述。

过程如下:

root@ubuntu:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

GPT PMBR size mismatch (33554431 != 104857599) will be corrected by write.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.

Command (m for help): d
Partition number (1-3, default 3): 

Partition 3 has been deleted.

Command (m for help): n
Partition number (3-128, default 3): 
First sector (5234688-104857566, default 5234688): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (5234688-104857566, default 104857566): 

Created a new partition 3 of type 'Linux filesystem' and of size 47.5 GiB.
Partition #3 contains a LVM2_member signature.

Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help): t
Partition number (1-3, default 3): 
Partition type or alias (type L to list all): 8e

Type of partition 3 is unchanged: Linux filesystem.

Command (m for help): w
The partition table has been altered.
Syncing disks.

简单解释一下:

  1. 使用fdisk工具管理/dev/sda指向的sda这个SATA硬盘
  2. 先使用d命令删除分区
  3. 随后工具询问删除哪个分区,而目标sda3是第3个分区,所以默认即可
  4. 使用n命令新建分区
  5. 工具询问分区号,依旧是默认3即可
  6. 工具询问分区起始扇区和结束扇区,通常是上一个分区结束扇区到最后一个可用的扇区,默认即可
  7. 工具提示新创建的分区3包含一个 LVM2_member 签名。这表示新分区是 LVM 物理卷的一部分,询问是否删除,输入n不删除
  8. 使用t命令来更改分区的类型,类型为8e,这是Linux LVM(Logical Volume Manager)分区的类型。
  9. 最后使用w命令保存并退出,若是操作失误,则使用q命令退出不保存

扩展物理卷和逻辑卷

接下来先把物理卷扩展到最大:

root@ubuntu:~# pvresize /dev/sda3
  /etc/lvm/backup/ubuntu-vg.tmp: write error failed: No space left on device
  Backup of volume group ubuntu-vg metadata failed.
  Physical volume "/dev/sda3" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

报错了,塞的太满了,先去删除一部分不重要的数据再次运行:

root@ubuntu:~# pvresize /dev/sda3
  Physical volume "/dev/sda3" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

这下正常了,那么再来扩展逻辑卷:

root@ubuntu:~# lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 13.50 GiB (3456 extents) to 47.50 GiB (12160 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.

最后,调整文件系统的大小以适应新的逻辑卷大小,Ubuntu默认是使用的ext4分区,而resize2fs是用于调整ext2、ext3和ext4文件系统大小的工具:

root@ubuntu:~# resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 6
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 12451840 (4k) blocks long.

检查是否扩容成功

root@ubuntu:~# lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0  63.4M  1 loop /snap/core20/1974
loop1                       7:1    0  63.5M  1 loop /snap/core20/2015
loop2                       7:2    0  73.9M  1 loop /snap/core22/864
loop3                       7:3    0 128.9M  1 loop /snap/docker/2904
loop4                       7:4    0 111.9M  1 loop /snap/lxd/24322
loop5                       7:5    0  53.3M  1 loop /snap/snapd/19457
loop6                       7:6    0  40.9M  1 loop /snap/snapd/20290
sda                         8:0    0    50G  0 disk 
├─sda1                      8:1    0   763M  0 part /boot/efi
├─sda2                      8:2    0   1.8G  0 part /boot
└─sda3                      8:3    0  47.5G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0  47.5G  0 lvm  /

END

搞定,现在又可以愉快的玩耍了


版权属于:本文为原创文章,版权归 AUK CL 所有。
文章地址: https://aukcl.win/archives/651/
所有原创文章由知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
您可以自由转载或修改,但禁止一切形式的商业使用,同时,务必请注明原文地址及作者信息。

Last modification:December 19, 2023
如果觉得我的文章对你有用,请随意赞赏