我们环境中的一台服务器的根分区存储空间已满。请求是通过将 /home 重新分配到其自己的分区来释放空间。我们在 /var 中拥有多余的可用空间,因此我想删除其中的 20G 部分并用它来创建新分区。问题是我不太清楚该怎么做。
以下是 lsblk 的输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 278.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 277.5G 0 part
├─vg0-tmp 253:0 0 10G 0 lvm /tmp
├─vg0-root 253:1 0 10G 0 lvm /
├─vg0-opt 253:2 0 5G 0 lvm /opt
└─vg0-var 253:3 0 252.5G 0 lvm /var
我预计我需要删除 /var,因此计划是将这些数据备份到服务器上的 NFS 挂载点,但服务器上还有其他数据,我们不能丢失。此外,我们有几台服务器需要执行此操作,因此我打算编写解决方案脚本(这也是我真正寻找不需要重建服务器的解决方案的原因,即使它有点复杂)。我预计它只是另一个被调用的 lvmsda3
或vg0-home
其他东西。
这是整个流程中我唯一不清楚的部分,所以在花了几个小时筛选了非常古老的类似问题后,我想问一个新的问题。很高兴提供任何额外的澄清信息。谢谢!
更新显示其他诊断信息
:~$ sudo pvscan
PV /dev/sda3 VG vg0 lvm2 [277.46 GiB / 0 free]
Total: 1 [277.46 GiB] / in use: 1 [277.46 GiB] / in no VG: 0 [0 ]
:~$ sudo vgscan
Found volume group "vg0" using metadata type lvm2
:~$ sudo lvscan
ACTIVE '/dev/vg0/tmp' [10.00 GiB] inherit
ACTIVE '/dev/vg0/root' [10.00 GiB] inherit
ACTIVE '/dev/vg0/opt' [5.00 GiB] inherit
ACTIVE '/dev/vg0/var' [252.46 GiB] inherit
:~$ df -Tlh
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 32G 0 32G 0% /dev
tmpfs tmpfs 6.3G 4.1M 6.3G 1% /run
/dev/mapper/vg0-root ext4 9.8G 6.4G 2.9G 70% /
tmpfs tmpfs 32G 154M 32G 1% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/mapper/vg0-var ext4 248G 62G 173G 27% /var
/dev/mapper/vg0-opt ext4 4.9G 2.9G 1.7G 64% /opt
/dev/mapper/vg0-tmp ext4 9.8G 136K 9.3G 1% /tmp
/dev/sda2 ext4 974M 309M 599M 35% /boot
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/1059
tmpfs tmpfs 6.3G 4.0K 6.3G 1% /run/user/1023
答案1
首先,确保你有一个备份或其他恢复计划。以防万一我或你疏忽了某事。
由于这是特殊情况,我无法创建一个“测试环境”并进行测试。一切都从我的脑海中消失了。
首先使用 将“/var”缩小到(例如) 200GB resize2fs
,请参阅man resize2fs
。
我不确定在设备安装时是否可以做到这一点。
sudo resize2fs /dev/mapper/vg0-var 200G
接下来将逻辑卷大小调整为 205G(为了安全起见,请额外留出 5G),请参阅man lvresize
sudo lvresize -L 205G /dev/mapper/vg0-var
现在卷组“vg0”中应该有大约 50G 的可用空间,请检查:
sudo vgdisplay vg0
由于现在文件系统大小和逻辑卷大小之间仍然存在差异(200G 与 205G),您可以再次调整文件系统大小,以适合逻辑卷:
sudo resize2fs /dev/mapper/vg0-var
摘要:文件系统必须适合卷,并且卷不能小于里面的文件系统。
我认为您了解整体的工作流程,并且可以根据自己的需要调整数字。
lvresize
有一个选项--resizefs
(见man lvresize
)可以一次性完成所有步骤,但我从未尝试过,因此我走了很长的路。也许你可以尝试一下并告诉我们。
提醒:请小心,任何错误都可能导致数据丢失。