我有一台 Redhat 服务器,上面有两个磁盘,一个 100GB,一个 500GB。500GB 的磁盘没有使用,但我后来用它来扩展 /var LV。所有挂载点上的文件系统都是 xfs,实际上你无法在 xfs 文件系统上减少 LV。
到目前为止所做的工作是:
- 在 500GB 磁盘上创建一个分区
- 将 LV lv_var 扩展为 500gb 磁盘的 50%
我还没有使用 xfs_grow 扩展文件系统,所以 /var 上的 fs 仍然为 2gb。那么我的问题是,如何才能安全地删除 500gb 磁盘上的扩展磁盘空间,而不会损害 /var 上的文件系统。
lsblk:
sda 8:0 0 65G 0 disk
└─sda3 8:3 0 64G 0 part
├─vg_rhel-lv_var 253:4 0 250G 0 lvm /var
sdb 8:16 0 500G 0 disk
└─sdb1 8:17 0 500G 0 part
└─vg_rhel-lv_var 253:4 0 250G 0 lvm /var
答案1
通常,您会将 pvmove 与 lvreduce 结合使用,但没有足够的空间将范围从 sdb1 移动到 sda3。我将在此答案中保留 pvmove 信息,但您可以直接使用 lvreduce。
如果您没有lvresize -r
调整文件系统大小,您仍然可以缩小 lv。
然后,您可以使用 lvreduce 来减小 lv 的大小lvreduce -L 500g /dev/vg_rhel/lv_var
。注意不要缩小到小于实际文件系统。之后您可以安全地运行 xfs_check(我认为),但我认为必须将其卸载,对于 var,这可能需要单用户模式。
当然,如果您确实想调整 var 的大小,正如您提到的那样,您无法缩小 xfs。在这种情况下,您必须创建一个全新的卷,复制所有内容(首先以尽量减少停机时间),启动到单用户模式,完成复制(使用 rsync 获取最终更改),更改 fstab 以安装新卷,重新启动,然后您就可以释放旧卷。
Pvmove 信息,这对于在 pv 之间移动 lv 非常有帮助。
https://linux.die.net/man/8/pvmove
在这种情况下,可能pvmove -n lv_var /dev/sdb1 /dev/sda3
请原谅这个答案的格式,因为我使用的是移动设备,无法使用所有功能。任何人都可以随意编辑。
因此,您将 var 逻辑卷的范围从 sdb1(无论哪个分区是 pv 的一部分)移动到 sda3(同样,无论哪个分区是 pv 的一部分)。
然后,sda3 上的所有 var 都将被占用,而 sdb1 将处于闲置状态,没有为任何 lv 分配任何区段。然后,如果这是您的目标,您可以使用 vgreduce 和 pvremove。