ubuntu默认是采用lvm逻辑卷管理,根分区缩容不支持在线操作,文件系统需ext4(ext3应该也可以),现进入ubuntu救援模式进行操作
注意: 操作前需备份好数据,操作有风险
系统环境:
root@ubuntu2004:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
磁盘分区:
通过查看根分区文件系统大小29G,占用6.9G
root@ubuntu2004:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 391M 1.4M 389M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 29G 6.9G 21G 26% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda2 2.0G 209M 1.6G 12% /boot
/dev/loop0 64M 64M 0 100% /snap/core20/1828
/dev/loop1 92M 92M 0 100% /snap/lxd/24061
/dev/loop2 50M 50M 0 100% /snap/snapd/18357
tmpfs 391M 0 391M 0% /run/user/0
/dev/loop3 54M 54M 0 100% /snap/snapd/19457
/dev/loop4 64M 64M 0 100% /snap/core20/1974
缩容顺序: 缩小文件系统–> 缩容lv–>更新文件系统
缩小的空间需大于等于数据已占用的空间,根分区尽量大于已占用的空间,剩余部分空间给系统使用,否则会导致空间不足无法启动或数据丢失风险
将根分区/dev/mapper/ubuntu–vg-ubuntu–lv 缩小至10G
root@ubuntu2004:~# resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 10G
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported
root@ubuntu2004:~#
root@ubuntu2004:~# umount /dev/mapper/ubuntu--vg-ubuntu--lv
umount: /: target is busy.
提示挂载的文件系统不支持在线操作,启动的系统根分区也不能卸载
插入 Ubuntu 20.04 安装光盘并重新启动计算机。
当前虚拟机演示
选择已有的ISO镜像文件
重启操作系统进入光盘引导
在启动过程中,按下键盘上的特定按键(通常是 F12、F10、Esc 或 Del 键)以进入启动选项菜单。具体的按键可能因计算机品牌或型号而异,请在启动时查看屏幕上的提示信息。
从启动选项菜单中选择光盘驱动器作为启动设备,并按下 Enter 键。
虚拟机调整光盘作为第一启动项
F10保存退出
接下来,你会看到 Ubuntu 安装菜单。选择 “Install Ubuntu”(或者类似的选项)并按下 Enter 键。
等待系统加载相关文件,直到出现 “Welcome to the Ubuntu installer!” 的界面
在该界面上,不要继续安装过程。而是按下 Ctrl + Alt + F2 组合键,切换到另一个虚拟终端
在新的虚拟终端中,输入以下命令进入救援模式:
sudo systemctl rescue
按下 Enter 键执行该命令。
系统将进入救援模式,
输入操作系统root密码
查看lv状态
lvscan
lvs
若lvscan状态为inactive,需要激活vg
vgchange -ay ubuntu-vg
查看当前分区类型,文件系统为ext4
blkid /dev/ubuntu-vg/ubuntu-lv
缩小文件系统
resize2fs /dev/ubuntu-vg/ubuntu-lv 10G
提示需要先运行e2fsck 进行检测,执行后再次运行resize2fs
e2fsck -y /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/ubuntu-vg/ubuntu-lv
缩小lv逻辑卷
提示丢失数据警告信息,继续
lvreduce -L 10G /dev/ubuntu-vg/ubuntu-lv
更新文件系统
按lv分配的大小匹配更新文件系统大小
resize2fs /dev/ubuntu-vg/ubuntu-lv 10G
正常重启操作系统
文件系统根分区已修改为10G大小( 9.7G )
后续:
根分区扩容,可以在线操作
查看vg剩余磁盘容量
#root@ubuntu2004:~# vgs
VG #PV #LV #SN Attr VSize VFree
ubuntu-vg 1 1 0 wz--n- <58.00g <48.00g
把所有剩余空间分配给根分区 (按指定大小: lvextend -L 50G /dev/ubuntu-vg/ubuntu-lv )
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
更新文件系统
resize2fs /dev/ubuntu-vg/ubuntu-lv
查看文件系统
df -h
FAQ:
为什么一会儿是/dev/mapper/ubuntu–vg-ubuntu–lv,一会儿又是/dev/ubuntu-vg/ubuntu-lv 有什么区别
答:/dev/mapper/ubuntu–vg-ubuntu–lv 与/dev/ubuntu-vg/ubuntu-lv 是指向的同一个文件系统