xfs:尝试超出设备末端进行访问

xfs:尝试超出设备末端进行访问

在 redhat 7.2 上(我没有 root 访问权限),在文件系统中创建的某些目录/文件中运行诸如ls, , 之类的命令会挂起。我还观察到输出连续错误,例如:catxfsdmesg

[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-optdataLV 从 50G 减少到 30G,则意味着文件系统尾部的 20G 块被切断。如果减少的空间立即用于其他用途,那么其中的数据就会丢失。

相关内容