Воссоздание информации о квоте проекта 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.

Другие вопросы по тегам