Воссоздание информации о квоте проекта XFS
Мы воссоздали файловый сервер, который имел файловую систему XFS с использованием квот проекта, находящихся в сети SAN. К сожалению, мы забыли сделать резервную копию / etc / projects и / etc / projid на сервере перед переустановкой. Сама файловая система XFS и хранящаяся в ней информация о квотах - все это хорошо, AFAICS. Есть ли какой-нибудь способ выяснить идентификаторы проектов каталогов на диске, чтобы мы могли воссоздать /etc/{projects,projid}?
Для пояснения, скажем, файловая система XFS смонтирована в /export/xfs и содержит каталоги /export/xfs/foo и /export/xfs/bar. Поэтому нам нужно иметь следующие записи в / etc / projects
NN:/export/xfs/foo
MM:/export/xfs/bar
и следующие записи в / etc / projid
foo:NN
bar:MM
Итак, как нам получить значения NN и MM, которые хранятся на диске?
2 ответа
Ну, так как никто не знал ответа, я должен был что-то придумать сам. Кажется, работает следующее:
Сделайте предположение (NN) для идентификатора проекта для одного из каталогов проекта. Тогда беги
xfs_quota -x -c "project -c -p /export/xfs/projdir -d 0 NN"
Если ваше предположение было верным, вы должны увидеть результат как
Checking project NN (path /export/xfs/projdir)...
Если ваше предположение было неверным, вы должны увидеть как
/export/xfs/projdir - project identifier is not set (inode=MM, tree=NN)
где NN - ваше предположение, а правильный идентификатор проекта - MM. Исходя из этого, вы можете заполнить /etc/projects и /etc/projid для этого каталога проекта. Затем повторите для всех каталогов проектов в файловой системе (сценарий для автоматизации этого оставлен в качестве упражнения для читателя).
В современных e2fsprogs (1.43 и более поздних версиях, 2016 г.)lsattr -p <file|dir>
Команда напрямую распечатает идентификатор проекта. Он использует то же самоеioctl(FS_IOC_FSGETXATTR)
внутренне как XFS, чтобы запросить у ядра идентификатор проекта вместо угадывания.
Тогда это просто вопрос бегаlsattr -p
для каждого каталога верхнего уровня найти идентификаторы и (надеемся, в хорошо организованной системе) соответствующее имя.
Вероятно, существует команда XFS для получения projid, но я не знаю XFS.