xfs: попытка доступа за пределы устройства

на 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

размер файловой системы должен составлять 50 ГБ, а на выходе df -h – 50 ГБ.

 $ df -h /opt/data Filesystem Size Used Avail Use% Mounted on /dev/mapper/datavg-optdata 50G 3.5G 47G 7% /opt/data 

но когда я проверяю lsblk (только это работает без корневого доступа для меня), он показывает размер устройства 30 ГБ LV . Как так получилось, что размер FS был уменьшен до 50 ГБ при меньшем 30 ГБ LV? Или это какая-то другая проблема xfs здесь?

 sdb 8:16 0 50G 0 disk └─datavg-optdata 253:3 0 30G 0 lvm /opt/data 

У кого-нибудь есть подсказка?

Как уже отмечали frostschutz и psusi, наиболее вероятная цепочка событий заключается в том, что как файловая система, так и LV, в котором она содержалась, изначально имели размер 50G.

Команда xfs_growfs обычно увеличивает файловую систему в соответствии с размером основного устройства хранения (будь то LV, раздел или целый диск). Сообщения, доступные в двоичном xfs_growfs видимому, указывают на то, что даже если вы сами xfs_growfs новый размер файловой системы, он будет проверять правильность ответа, поэтому расширение файловой системы за пределы основного LV должно быть невозможным.

Гораздо более вероятно, что кто-то забыл, что команда lvreduce (без опции -r , если она реализована) только уменьшает LV, а не файловую систему внутри нее … и что файловая система XFS не имеет возможности сжатия, только расширяется.

С LVM расширить существующую файловую систему и LV легко … поэтому можно подумать, что уменьшить их так же просто. К сожалению, это не совсем так: сокращение файловой системы зачастую немного сложнее, чем ее расширение.

Теперь, если datavg-optdata LV был уменьшен с 50G до 30G, это означает, что кусок 20G в хвостовой части файловой системы был отрезан. Если уменьшенное пространство было немедленно использовано для другого использования, данные, которые были там, теперь потеряны.