在 redhat 7.2 上(我没有 root 访问权限),在文件系统中创建的某些目录/文件中运行诸如ls
, , 之类的命令会挂起。我还观察到输出连续错误,例如:cat
xfs
dmesg
[Thu Apr 12 10:22:27 2018] dm-3: rw=33, want=63076776, limit=62914560 [Thu Apr 12 10:22:27 2018] attempt to access beyond end of device [Thu Apr 12 10:22:27 2018] dm-3: rw=33, want=63076784, limit=62914560 [Thu Apr 12 10:22:27 2018] attempt to access beyond end of device
文件系统大小应为 50GB,输出为 50GB df -h
。
$ df -h /opt/data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-optdata 50G 3.5G 47G 7% /opt/data
但当我检查时lsblk
(只有这对我来说没有 root 访问权限才有效),它显示 30GBLV
设备大小。为什么在较小的 30GB LV 上将 FS 大小调整为 50GB?或者这是这里的其他xfs
问题?
sdb 8:16 0 50G 0 disk
└─datavg-optdata 253:3 0 30G 0 lvm /opt/data
有人有任何线索吗?
答案1
正如frostschutz 和 psusi 已经评论的那样,最可能的事件链是文件系统及其包含的 LV 最初大小为 50G。
该xfs_growfs
命令通常会增大文件系统以匹配底层存储设备(无论是 LV、分区还是整个磁盘)的大小。二进制文件中的可用消息xfs_growfs
似乎表明,即使您自己指定文件系统的新大小,它也会对答案进行健全性检查,因此将文件系统增长到超出底层 LV 的限制是不可能的。
更有可能的是,有人忘记了该lvreduce
命令(没有-r
选项,如果已实现)仅减少 LV,而不是其中的文件系统......并且 XFS 文件系统不具有收缩功能,只能扩展。
使用 LVM,扩展现有文件系统和 LV 很容易……所以人们可能会认为减少它们也同样容易。不幸的是,这并不完全正确:减少文件系统通常比扩展它更棘手。
现在,如果datavg-optdata
LV 从 50G 减少到 30G,则意味着文件系统尾部的 20G 块被切断。如果减少的空间立即用于其他用途,那么其中的数据就会丢失。