Linux/ZeroInode: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
(Новая страница: «== Длинные inode на 32-битной системе == Адаптация системы для поддержки длинных inode (64 бит) на …»)
 
Строка 6: Строка 6:


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


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


Предлагается простое решение: [http://bugs.etersoft.ru/show_bug.cgi?id=9552 обнулять inode.] Те, кому важно значение inode, пересоберут программу с OFFSET64.
Предлагается простое решение: [http://bugs.etersoft.ru/show_bug.cgi?id=9552 обнулять inode.]
 
Для тех программ, которым действительно важно значение inode, не избежать пересборки с -D_FILE_OFFSET_BITS=64 (AC_SYS_LARGEFILE в configure.am)


=== Ссылки ===
=== Ссылки ===

Версия 18:27, 19 октября 2013

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

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

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

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

В настоящий момент с такими файлами не работает даже rpm (на ALT Linux).

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

Сейчас такие файловые системы, как 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, не избежать пересборки с -D_FILE_OFFSET_BITS=64 (AC_SYS_LARGEFILE в configure.am)

Ссылки