目标:不添加额外的物理盘,从现有根存储挪一些空间,做个独立空间存放数据。
由于系统启动后不能 umount 卸载正在运行的系统 / 根分区,所以不能直接采用 lvreduce 和 resize2fs 方式做扩缩操作,需要新的办法。
下面以 Hyper-V 虚拟机 openEuler 22.03 系统为例。
方法也同时适用于 Fedora 、 CentOS、 Rocky Linux 、 Debian 和 Ubuntu 。
先查看块存储设备情况:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 18.4G 0 part
├─openeuler-root 253:0 0 16.4G 0 lvm /
└─openeuler-swap 253:1 0 2G 0 lvm [SWAP]
可以看到一个 20G 的物理盘 sda,分成 3 个分区:
- EFI 分区 sda1
- 引导分区 sda2
- 系统分区 sda3
其中系统分区使用 LVM 管理。
查看 LVM 物理卷:
pvs # 或 pvdisplay
PV VG Fmt Attr PSize PFree
/dev/sda3 openeuler lvm2 a-- 18.41g 0
查看 LVM 卷组:
vgs # 或 vgdisplay
VG #PV #LV #SN Attr VSize VFree
openeuler 1 2 0 wz--n- 18.41g 0
查看 LVM 逻辑卷:
lvs # 或 lvdisplay
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root openeuler -wi-ao---- 16.41g
swap openeuler -wi-ao---- 2.00g
看到 LVM 管理了 1 个物理卷 /dev/sda3 ,1 个卷组 openeuler ,以及 2 个逻辑卷。
结合起来看,这两个逻辑卷:
- 一个用作系统根分区,
root - 一个用作系统交换分区,
swap
根分区占用了除交换分区外的所有 LVM 卷组空间,采用 EXT4 文件系统。
继续查看根分区 id:
blkid /dev/mapper/openeuler-root
/dev/mapper/openeuler-root: UUID="c054a1f9-55ed-49c2-8ff4-33da9a53c1a5" BLOCK_SIZE="4096" TYPE="ext4"
查看文件系统使用情况:
df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 697M 0 697M 0% /dev/shm
tmpfs 279M 4.0M 275M 2% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/mapper/openeuler-root 16G 2.5G 13G 17% /
tmpfs 697M 0 697M 0% /tmp
/dev/sda2 974M 132M 775M 15% /boot
/dev/sda1 599M 6.2M 593M 2% /boot/efi
收集到足够信息后,关闭虚拟机,修改虚拟机设置。
添加或在现有的 “SCSI 控制器器” → “DVD 驱动器” 中加载 openEuler 安装盘镜像。

调整固件启动顺序,让 “DVD 驱动器” 作为第一启动项。

启动虚拟机,选择第三项 “Troubleshooting —>” 以及 “Rescue a openEuler system”。


选择 “3) Skip to shell” 获得 Shell 环境

此时是通过虚拟光驱引导了一个救援系统,而虚拟机磁盘上的系统是未引导的,所以可以对磁盘上的系统的根分区做缩减或扩展操作。
检查 LVM 状态:
pvscan
vgscan
lvscan
激活卷组
vgchange -ay /dev/openeuler

检查根分区文件系统
e2fsck -f /dev/openeuler/root
缩小根文件系统到 10G
resize2fs /dev/openeuler/root 10G
检查根文件系统
fsck /dev/openeuler/root

取消激活卷组,然后缩减卷组内的逻辑卷大小
vgchange -an /dev/openeuler
lvreduce -L 10G /dev/openeuler/root

这样就完成了根分区缩减。
关机,重新设置虚拟机启动顺序,选择从 EFI “文件” 启动。
正常重启系统后,查看根分区情况:
df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 697M 0 697M 0% /dev/shm
tmpfs 279M 4.0M 275M 2% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/mapper/openeuler-root 9.7G 2.5G 6.7G 28% /
tmpfs 697M 0 697M 0% /tmp
/dev/sda2 974M 132M 775M 15% /boot
/dev/sda1 599M 6.2M 593M 2% /boot/efi
以 openeuler 卷组的所有剩余空间创建逻辑卷 data
lvcreate -l 100%FREE -n data openeuler
Logical volume "data" created.
查看创建结果
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data openeuler -wi-a----- 6.41g
root openeuler -wi-ao---- 10.00g
swap openeuler -wi-ao---- 2.00g
lsblk -f
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 18.4G 0 part
├─openeuler-root 253:0 0 10G 0 lvm /
├─openeuler-swap 253:1 0 2G 0 lvm [SWAP]
└─openeuler-data 253:2 0 6.4G 0 lvm
为逻辑卷 “data” 创建 EXT4 文件系统。
mkfs.ext4 /dev/openeuler/data
# 如果是 xfs 文件系统
#mkfs.xfs /dev/openeuler/data
mke2fs 1.46.4 (18-Aug-2021)
丢弃设备块: 完成
创建含有 1680384 个块(每块 4k)和 420160 个inode的文件系统
文件系统UUID:0fbfd597-95d5-414a-bf6e-9a6e0e3d5d4a
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
正在分配组表: 完成
正在写入inode表: 完成
创建日志(16384 个块)完成
写入超级块和文件系统账户统计信息: 已完成
临时挂载到文件系统路径 “/data”
mkdir /data
mount /dev/openeuler/data /data
df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 697M 0 697M 0% /dev/shm
tmpfs 279M 4.0M 275M 2% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/mapper/openeuler-root 9.7G 2.7G 6.6G 29% /
tmpfs 697M 0 697M 0% /tmp
/dev/sda2 974M 132M 775M 15% /boot
/dev/sda1 599M 6.2M 593M 2% /boot/efi
/dev/mapper/openeuler-data 6.3G 24K 5.9G 1% /data
配置开机挂载,编辑 /etc/fstab 文件
vi /etc/fstab
在文件末尾添加一行
/dev/mapper/openeuler-data /data ext4 defaults 0 1
重启系统,验证是否自动挂载到文件系统
reboot now
完成。
(收藏加关注,省心有帮助)
&spm=1001.2101.3001.5002&articleId=145004002&d=1&t=3&u=91deb3d845f44d559639062d9b4c17cc)
2376

被折叠的 条评论
为什么被折叠?



