Linux/ZeroInode

Материал из Etersoft wiki
Версия от 18:24, 19 октября 2013; ВиталийЛипатов (обсуждение | вклад) (Новая страница: «== Длинные inode на 32-битной системе == Адаптация системы для поддержки длинных inode (64 бит) на …»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигацииПерейти к поиску

Длинные inode на 32-битной системе

Адаптация системы для поддержки длинных inode (64 бит) на 32-битных системах.

Решаемые задачи

Это важно для обеспечения совместной работы 32-битных систем в 64-битной инфраструктуре, иначе в ближайшее время это станет почти невозможным, что плохо повлияет на работу унаследованных программ.

Постановка задачи

Сейчас такие файловые системы, как glusterfs и xfs, а также все сетевые файловые системы используют большие inode (номер может зависеть от положения файла на диске или от количества операций по созданию файлов), с которыми не будут работать многие программы, использующие вызов stat. Для работы в некоторых из систем разработаны хаки, сжимающие inode до 32 бит.

Ядро Linux никак не адаптирует длинный inode при вызове обычного stat на 32-битной системе, возвращая ошибку.

В рамках этой задачи мы уже исправляли код fuse, в том числе, для RedHat: https://bugzilla.redhat.com/show_bug.cgi?id=872629.

Предложенное решение

Функция stat является часто используемой, поскольку её применяют для определения наличия файла, а так же для узнавания его размера. В большинстве случаев никто не проверяет содержащееся в нём значение inode.

Предлагается простое решение: обнулять inode. Те, кому важно значение inode, пересоберут программу с OFFSET64.

Ссылки