Назад | Перейти на главную страницу

Как я могу проверить, используются ли 64-битные inodes в существующей файловой системе XFS?

У некоторых из моих пользователей были проблемы с программным обеспечением (в Scientific Linux), которое не может отображать содержимое каталогов при доступе к файловой системе XFS, смонтированной с опцией «inode64». Поэтому я скопировал данные в только что созданную файловую систему XFS без этой опции.

К сожалению, в процессе переключения файловых систем я ненароком ненадолго смонтировал новую файловую систему с опцией inode64. Я быстро заметил ошибку и размонтировал ее, и я проверил, что нет файлов с временем модификации позже, чем произошла ошибка.

Но есть ли способ создать индексные дескрипторы, превышающие 32-битный предел, без того, чтобы это было очевидно из времени модификации файла, и есть ли какой-либо способ проверить этот недостаток в рекурсивном перечислении всей файловой системы (6 ТБ) и нахождении максимального значения индексного дескриптора ?

xfs_db может вам здесь помочь, но это требует небольшого расчета.

[root@system]# xfs_info /s2b
meta-data=/dev/lxvm/ddn40_s2b    isize=512    agcount=150, agsize=52429056 blks
         =                       sectsz=512   attr=1, nfs4acl=0
data     =                       bsize=4096   blocks=7814070272, imaxpct=25

у вас есть 150 групп размещения с номерами от 0 до 149, они имеют размер 52429056 (4096b) бланков (200 Гбайт).

ПРИМЕЧАНИЕ: я использую -r (только чтение) на следующие xfs_db. Вы действительно можете испортить свою файловую систему, если используете xfs_db с включенной записью. Вы также можете делать некоторые полезные вещи. Включайте запись с помощью xfs_db только в том случае, если вы собираетесь писать в файловой системе. Запись в смонтированную файловую систему может закончиться гонкой с ОС.

Для каждой секции inode группы размещения (agi) распечатайте количество inode в секции:

[root@system]# for i in `seq 0 149`
lou $ do
lou $ xfs_db -r -c "agi $i" -c "print count" /dev/lxvm/ddn40_s2b 
lou $ done
count = 1349120
count = 1326464
count = 1376768
count = 1256448
count = 1184512
count = 1244352
count = 1373376
count = 1303296
count = 0
... (remaining counts were zero)

Итак, первые семь разделов (или 1400 Гбайт) содержали inodes в пределах лимита inode32. Эта процедура позволяет вам ответить на ваш вопрос. Это тоже довольно быстро.