Есть ли такая вещь, как «быстрый» формат для ext4?

28

В Windows очень быстро форматировать с NTFS. У меня машина Linux с низким энергопотреблением, с небольшим количеством оперативной памяти. Форматирование тома объемом 2 ТБ в ext4 занимает много времени.

Что я могу сделать, чтобы ускорить формат? Я не могу себе представить, что так долго? (что так долго)

застрял
источник
1
Какие команды вы используете для его форматирования?
Tacotuesday
В качестве обходного пути. попробуйте сделать его меньшим по объему lvm ​​и увеличить его по мере необходимости? В любом случае, это уменьшит первоначальные накладные расходы.
Sirex
1
или используйте XFS, если время создания файловой системы вас действительно беспокоит - mkfs.xfs намного быстрее, чем mkfs.ext4 (потому что он не делает - или должен делать - так много). но mkfs - это то, что вы обычно должны делать только один раз для файловой системы - возможно, есть и лучшие способы для оптимизации.
Cas
или используйте ZFS. Создание файловых систем с ZFS практически мгновенно, независимо от их размера.
Jlliagre
Используйте ZFS только в том случае, если у вас есть оборудование корпоративного класса, особенно если у вас есть ECC RAM и у вас есть ИБП. Это не рекомендуется использовать ZFS без соблюдения этих требований. Возможно, вы не сможете восстановить после ошибки четности памяти и / или сбоя питания. Весь ваш объем будет потерян в этом случае. Вы были предупреждены.
Ричард Гомес

Ответы:

16

Строгий ответ

Такие решения, как -E lazy_itable_initне меняют результат, только ускоряют процесс. Это то, что было задано явно, но во многих случаях людям нужно больше.

Дополнительный бонус

В большинстве случаев вам действительно нужны некоторые параметры, которые соответствуют вашим шаблонам использования и не только ускоряют создание файловой системы, но также позволяют быстрее использовать и использовать больше пространства.

Я только что сделал тест. Даже без использования -E lazy_itable_initприведенные ниже параметры ускоряют время создания файловой системы 2 ТБ с 16 минут 2 секунды до 1 минуты 21 секунды (ядро 3.5.0, 64 бита на Intel i7 2.2 ГГц, диск 2 ТБ на соединении USB2 - SATA, вероятно, будет быстрее) ,

Для файловой системы, которая будет содержать большие файлы, я использую эту комбинацию:

mkfs.ext3 /dev/sdXX -O sparse_super,large_file -m 0 -T largefile4

где -T largefile4выбирает параметры, в /etc/mke2fs.confкоторых обычно содержится что-то вроде:

    inode_ratio = 4194304
    blocksize = -1

Сделайте man mke2fsдетали для каждого из этих вариантов.

Вот соответствующие выдержки:

               sparse_super
                      Create a filesystem with fewer superblock backup copies (saves space on large filesystems).

               large_file
                      Filesystem can contain files that are greater than 2GB.  (Modern kernels set this feature  automatically
                      when a file > 2GB is created.)

   -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.

-m 0говорит только, что не нужно резервировать 5% для root, что нормально для файловой системы данных (не boot / root). 5% диска объемом 2 ТБ означает 100 ГБ. Это довольно существенная разница.

Стефан Гурихон
источник
1
Обратите внимание, что заполнение файловой системы более чем на 95% приведет к чрезмерной фрагментации и существенному снижению производительности. Во всяком случае, если кто-то заботится о производительности своего раздела данных, он должен быть увеличен до 10%
Матия Налис
Если на вашем диске будут храниться не только большие, но и небольшие файлы , прочитайте это: сокращение коэффициента инодирования сэкономит вам не более 1,5% памяти за счет универсальности. inode_ratio = xозначает, что если средний размер файла на томе меньше x байтов, то вы стремитесь к исчерпанию inode перед тем, как исчерпать место для хранения . В этом сценарии вы можете тратить буквально тысячи больше, чем вы ожидали сэкономить.
Стефан Гурихон
Другими словами, если средний размер файла меньше 4 МБ, не используйте «-T largefile4». Для огромных дисков я теперь использую то, -T hugeчто делает inode_ratio = 65536. Если вы сомневаетесь, просто не устанавливайте -iили, -Tи пусть мудрые люди, которые сделали ext2 / 3/4 , сделают выбор за вас. Вы зарезервируете известную небольшую часть пространства для ведения домашнего хозяйства и (если вы не храните миллионы очень маленьких файлов), вы гарантированно не будете тратить произвольный процент фактического пространства для хранения. Как пишут люди, модные программы хороши, но хорошая файловая система должна быть скучной и просто работать.
Стефан Гурихон
в моем случае mkfs.ext4это быстрее (time:), real 0m16.001sчем mkfs.ext3(time:) real 2m10.336s.
коанор
19

Добавьте флаг -E lazy_itable_init

Вот что написано на странице руководства:

Если эта опция включена и функция uninit_bg включена, таблица inode не будет полностью инициализирована mke2fs. Это заметно ускоряет инициализацию файловой системы, но требует, чтобы ядро ​​завершило инициализацию файловой системы в фоновом режиме, когда файловая система впервые монтируется. Если значение параметра не указано, по умолчанию используется значение 1, чтобы включить отложенную инициализацию таблицы inode.

Алекс Уилер
источник
3
Технически это на самом деле не ускоряет форматирование, но позволяет монтировать и использовать файловую систему, пока формат заканчивается в фоновом режиме.
Вайзард
большое спасибо! это действительно хорошо, документы / человек не были понятны мне, пока не узнали, что искать! спасибо большое!
застрял
Я видел ссылки о минимальной версии ядра, какой минимум необходим для этого?
Xarses
8

По умолчанию это быстрый формат; настройка структур для тома ext * занимает гораздо больше времени, чем для тома NTFS, поскольку их больше. Вы можете уменьшить количество суперблоков, но даже это заходит так далеко.

Игнасио Васкес-Абрамс
источник
спасибо за информацию, мое устройство начало форматировать диск 2 ТБ USB2 около 20 часов назад, оно все еще идет - устройство с низким энергопотреблением, подумайте Raspberry Pi с 64 МБ оперативной памяти. Чтобы начать форматирование, мне пришлось настроить подкачку на тот же форматируемый USB-диск. Могу ли я что-нибудь сделать, чтобы ускорить это? было бы здорово, если бы я мог сделать спектакль менее часа или двух?
застрял
2
lazy_itable_init помог мне, это не по умолчанию и делает форматирование намного быстрее
застрял
4

Если вы будете хранить в основном файлы большего размера, вы можете увеличить количество байтов на один индекс, уменьшив, таким образом, количество созданных индексов. Это может существенно ускорить время создания.

rnxrx
источник