LINUX.ORG.RU
решено ФорумAdmin

ext4 inode size?

 , ,


0

1

Привет

Не могу найти нормальную инфу, что будет если я уменьшу размер inode до 1024 байт (кроме того, что их станет больше). Пишут что есть дополнительные фичи в ext4, типа точности до наносекунд и т.д. и они зависят от размера inode

Интересует, на что вообще влияет размер inode кроме занимаемого места и какая информация влазит в 1024 байт например.

★★★★

уменьшу размер inode до 1024 байт

Ты упоролся? Там по умолчанию всегда 256. Менять это значение не нужно.

anonymous
()
Ответ на: комментарий от anonymous

Там это где?

Тормознул, глянул на значение bytes-per inode. Про него и хочу спросить, т.е. оно влияет на то количество inode которое будет создано.

invokercd ★★★★
() автор топика
Последнее исправление: invokercd (всего исправлений: 2)
Ответ на: комментарий от invokercd

Про него и хочу спросить, т.е. оно влияет на то количество inode которое будет создано.

       -i bytes-per-inode
              Specify  the  bytes/inode  ratio.   mke2fs  creates an inode for
              every bytes-per-inode bytes of space on the  disk.   The  larger
              the  bytes-per-inode  ratio,  the  fewer inodes will be created.
              This value generally shouldn't be smaller than the blocksize  of
              the  filesystem,  since  in  that case more inodes would be made
              than can ever be used.  Be warned that it  is  not  possible  to
              expand the number of inodes on a filesystem after it is created,
              so be careful deciding the correct value for this parameter.

Это из мана. А вот размер иноды я бы не трогал без чёткого понимания того что это действительно очень нужно.

true_admin ★★★★★
()
Ответ на: комментарий от anonymous

По умолчанию на inode выделяется 16384 байт. Почему не 4096 например, это же позволить увеличить максимальное количество файлов.

invokercd ★★★★
() автор топика
Ответ на: комментарий от true_admin

Да, я читал, но не могу понять почему по умолчанию 16 Кбайт, не логичнее ли сделать 4096, как дефолтный размер блока. Уменьшение количества байтов повлияет на что то еще?

invokercd ★★★★
() автор топика
Ответ на: комментарий от invokercd

Почему не 4096 например, это же позволить увеличить максимальное количество файлов.

Потому что и по умолчанию много для большинства случаев. Можешь менять значение по своему усмотрению, исходя из потребностей. Вместо -i можно использовать -N, чтобы не напрягаться расчётами.

anonymous
()
Ответ на: комментарий от invokercd

не логичнее ли сделать 4096, как дефолтный размер блока.

Чтобы из каждых 931 Gb (один терабайт) ≈28 Gb терять под таблицу inode?

anonymous
()
Ответ на: комментарий от invokercd

почему по умолчанию 16 Кбайт

У df есть ключик -i который покажет тебе сколько свободных инодов. Ты сейчас хочешь увеличить их кол-во ещё в 4 раза. Зачем?

Уменьшение количества байтов повлияет на что то еще?

Иноды отожрут больше места.

Вообще, мы движимся к динамическому выделению инод и тогда всё будет не нужно.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Вообще, мы движимся к динамическому выделению инод и тогда всё будет не нужно.

Речь об ext4? Пруф?

anonymous
()
Ответ на: комментарий от true_admin

Да я видел, осталось 43%, при том что хлама в /var как всегда.

Вообще, мы движимся к динамическому выделению инод и тогда всё будет не нужно.

reiser вроде как закопали, btrfs клюкодромит, если запилят в ext то будет неплохо.

invokercd ★★★★
() автор топика
Ответ на: комментарий от anonymous

Речь об ext4? Пруф?

Омг, гуглёж показал что на это забили. Думаю, дело в том что Теодор Тсо хочет чтобы ext4 по структуре данных была совместима с ext3.

true_admin ★★★★★
()
Ответ на: комментарий от invokercd

Да я видел, осталось 43%

этого мало? Мне сложно придумать сценарий когда не хватало бы инод. На ум приходит только почтовый сервер с кучей почты в формате «каждое письмо - отдельный файл».

Я так же видел проблемы с исчерпанием инод на хостах где софтины не подчищали за собой временные файлы. Может это твой случай?

true_admin ★★★★★
()
Ответ на: комментарий от invokercd

Нет, таблица статична. Независимо от способа её инициализации, это место будет занято изначально.

Чем спрашивать, давно мог бы поэкспериментировать.

anonymous
()
Ответ на: комментарий от anonymous

Так в том и дело что проэкспериментировал, df показывает что занято намного меньше чем должно быть.

invokercd ★★★★
() автор топика
Ответ на: комментарий от invokercd

Кэш чего? Оно действительно имеет смысл или лежит мёртвым грузом?

Хотя сейчас и так забито почти на максимум.

В смысле свободное место? Ну тогда неочем беспокоиться.

true_admin ★★★★★
()
Ответ на: комментарий от invokercd

При чём тут df, бестолочь? Размер таблицы вычитается из размера ФС, а не из свободного места. Ты бы ещё размер журнала через df вычислял, петросян :)

anonymous
()
Ответ на: комментарий от i-rinat

Например тем, что убирают поддержку в установщике того же дебиана, хотя можно подгрузить через экспертный режим, но это как бы намекает. 4 рейзер до сих пор не всунули в ядро, хотя оно уже должно быть более-менее стабильно.

invokercd ★★★★
() автор топика
Ответ на: комментарий от invokercd

4 рейзер до сих пор не всунули в ядро, хотя оно уже должно быть более-менее стабильно.

Reiser4 - глючное и тормозное УГ

anonymous
()
Ответ на: комментарий от invokercd

4 рейзер до сих пор не всунули в ядро, хотя оно уже должно быть более-менее стабильно.

Оно намного мертвее, чем reiserfs 3.6.

anonymous
()
Ответ на: комментарий от invokercd

убирают поддержку в установщике того же дебиана

Разработка заморожена, это да. Но это не означает, что ей нельзя пользоваться.

Кстати, есть намёки на развитие 3.6 в 3.7, с поддержкой фич несовместимости, à la ext4.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от anonymous

А размер журнала я через ls -h смотрел. Тебе лишь бы поржать. Спасибо за инфу, дорогой Анон.

invokercd ★★★★
() автор топика
Ответ на: комментарий от true_admin

Кэш динамического веба, имеет конечно, но логи все равно больше занимают. В любом случае альтернативы ext4 пока не вижу.

invokercd ★★★★
() автор топика
Последнее исправление: invokercd (всего исправлений: 1)
Ответ на: комментарий от true_admin

Эти логи возникли в результате костыльного решения, в тестинге. Под /var выделил 20, так как файлы были милиразмерные совсем, я тормознул, думал что там как в xfs динамически будет выделятся. Буду теперь заранее считать....

invokercd ★★★★
() автор топика
Ответ на: комментарий от invokercd

Эти логи возникли в результате костыльного решения

А если с этого начать решать проблему? Проблема в том что ни одна ФС (по крайней мере на hdd) быстро работать с кучей файлов не может (я проверял). Это проявляется, например, когда надо сделать find /var, или прогнать rsync или сделать бэкапы.

А что за логи-то? Как они обрабатываются? Может проще их в базу загнать?

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Да логи простейшие, по отбору запросов на статический контент, которые потом прогонялись скриптом. Конечно нормальные люди сразу засунули бы в базу, но это было так для поиграться вначале. Со скоростью конечно труба (относительно), даже в десяточке.

Для маленьких файлов лучше рейзера нету вроде, а вот судьба рейзера не ясна. А вообще сейчас мода пошла ssd везде пихать.

invokercd ★★★★
() автор топика
Ответ на: комментарий от invokercd

Так засунуть их в базу это же пара строк в коде, не? Можно даже не в базу, можно в файл который ротировать через logrotate. Этим вообще двух зайцев убьёте: уменьшение фрагментации, болеее быстра обработка, не надо find-ом делать поиск.

Единственное, я не помню что там на счёт многопоточной записи в файл. Возможно, понадобится блокировка. В общем, см. man write()

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

На счет многопоточной буду смотреть, спасибо.

invokercd ★★★★
() автор топика
Ответ на: комментарий от true_admin

Кстати вот назрел вопрос, если например в той же xfs иноды выделяются динамически, то резервируется ли для них какой-то кусок на диске. Или они будут отжирать место при увеличении кол-ва файлов?

invokercd ★★★★
() автор топика
Ответ на: комментарий от invokercd

Не знаю, но я бы не стал резервировать место т.к. это превращяется в статическую аллокацию.

Я бы выделял место из свободного пространства. Если места больше нет то и файлов не запишешь, даже если есть иноды.

При желании можно поковырять сырцы xfs, но эту задачку я оставлю для пытливого читателя :)

true_admin ★★★★★
()
Ответ на: комментарий от invokercd

Иноды в xfs выделяются блоками по 64 штуки. Теоретически возможна ситуация, когда место есть, но иноды выделить невозможно из-за требований к выравниванию. Где-то в документации было упоминание о реально возникших ошибках такого рода при >85% занятого места, но вероятность такого исхода очень мала.

i-rinat ★★★★★
()
Ответ на: комментарий от true_admin

Спасибо, вот еще в мане на счет размеров:

This specifies the maximum percentage of space in the filesystem that can be allocated to inodes. The default value is 25% for filesystems under 1TB, 5% for filesystems under 50TB and 1% for filesystems over 50TB.

invokercd ★★★★
() автор топика

ты ман читал? вот то, что тебе надо:

      -I inode-size
              Specify  the size of each inode in bytes.  mke2fs creates 256-byte inodes by default.  In kernels after 2.6.10 and
              some earlier vendor kernels it is possible to utilize inodes larger than 128 bytes to  store  extended  attributes
              for  improved  performance.   The  inode-size  value  must be a power of 2 larger or equal to 128.  The larger the
              inode-size the more space the inode table will consume, and this reduces the usable space in  the  filesystem  and
              can  also  negatively  impact  performance.  Extended attributes stored in large inodes are not visible with older
              kernels, and such filesystems will not be mountable with 2.4 kernels at all.  It is not possible  to  change  this
              value after the filesystem is created.
настраивается в /etc/mke2fs.conf посмотри. ну или ключами.

drBatty ★★
()
Ответ на: комментарий от invokercd

Тормознул, глянул на значение bytes-per inode. Про него и хочу спросить, т.е. оно влияет на то количество inode которое будет создано.

если хочешь много мелких файлов - ставь меньше.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.