昨天测试脚本的时候发现Ubuntu写不进去文件,甚至创建文件夹都不行,仔细一看报错,好家伙,磁盘已满
原来是当时建虚拟机的时候分配的空间太小了,只有16GB
那就扩容吧,顺便记录一下
ESXI部分
进入webUI>找到Ubuntu虚拟机>关机并编辑配置>直接改硬盘大小
改完直接保存并开机,此时的虚拟机仅是获得了更大的硬盘空间,但还没有扩展到物理卷(Physical Volume)及逻辑卷(Logical Volume)
Ubuntu部分
请注意,接下来的操作涉及到磁盘和文件系统的更改,所以在执行之前务必备份重要数据,并小心操作。
检查磁盘状态
使用SSH连接至Ubuntu,使用sudo -i
切换为root用户
输入命令lsblk
查看磁盘信息,也可以用pvs
和lvs
以及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
命令及其作用:
-
p
: 查看分区表。这个命令会显示磁盘上的分区布局,包括分区的起始扇区、结束扇区、类型等。 -
n
: 创建一个新分区。这个命令允许你创建一个新的分区,并设置分区的类型、起始位置和大小。 -
d
: 删除分区。这个命令用于删除指定的分区。 -
t
: 更改分区的类型。使用这个命令,你可以更改分区的文件系统类型或 ID。 -
c
: 更改某个分区的标签。这个命令可以为分区设置一个可读的标签,通常用于文件系统标识。 -
a
: 切换启动分区标志。这个命令用于设置或清除分区的启动标志,指示系统从该分区引导。 -
l
: 列出分区类型代码。这个命令将显示可用的分区类型代码列表。 -
w
: 保存分区表更改并退出。使用此命令将保存所做的分区更改,然后退出fdisk
。 -
q
: 退出而不保存更改。使用此命令退出fdisk
,而不保存任何已做的更改。 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.
简单解释一下:
- 使用fdisk工具管理
/dev/sda
指向的sda这个SATA硬盘 - 先使用
d
命令删除分区 - 随后工具询问删除哪个分区,而目标sda3是第3个分区,所以默认即可
- 使用
n
命令新建分区 - 工具询问分区号,依旧是默认3即可
- 工具询问分区起始扇区和结束扇区,通常是上一个分区结束扇区到最后一个可用的扇区,默认即可
- 工具提示新创建的分区3包含一个 LVM2_member 签名。这表示新分区是 LVM 物理卷的一部分,询问是否删除,输入
n
不删除 - 使用
t
命令来更改分区的类型,类型为8e
,这是Linux LVM(Logical Volume Manager)分区的类型。 - 最后使用
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 国际许可协议进行许可。
您可以自由转载或修改,但禁止一切形式的商业使用,同时,务必请注明原文地址及作者信息。