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

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

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

4 ответа

Решение

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

Решения как -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 ГБ. Это довольно существенная разница.

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

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

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

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

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

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