Чи існує таке поняття, як "швидкий" формат для ext4?


28

У Windows дуже швидко форматувати NTFS. У мене малопотужна машина Linux, з невеликою оперативною пам’яттю. Форматування обсягу 2 ТБ у ext4 займає багато часу.

Чи можна щось зробити, щоб прискорити формат? Я не уявляю, що займає так довго? (що займає так довго)


1
Які команди ви використовуєте для їх форматування?
такоту вівторок

Як вирішення. спробуйте зробити його як менший об'єм lvm та виростити його за потреби? Це як би знизило початкові накладні витрати.
Sirex

1
або використовувати XFS, якщо час створення файлової системи вас дійсно турбує - mkfs.xfs набагато швидше, ніж mkfs.ext4 (тому що це не робить - або не потрібно робити стільки). але mkfs - це те, що зазвичай потрібно робити лише один раз у файловій системі - є, мабуть, кращі речі для оптимізації.
cas

або використовувати ZFS. Створення файлових систем за допомогою ZFS близьке до миттєвого, незалежно від їх розміру.
jlliagre

Використовуйте ZFS лише в тому випадку, коли у вас є апаратне обладнання корпоративного класу, зокрема якщо у вас є оперативна пам’ять ECC і у вас є ДБЖ. Це не рекомендується використовувати 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, що нормально для файлової системи даних (не завантажування / root). 5% диска 2 Тб означає 100 Гбіт. Це досить суттєва різниця.


1
Зауважте, що дозволити файловій системі отримати понад 95% заповнення призведе до надзвичайної фрагментації, істотно уповільнивши продуктивність. Якщо що, якщо хтось дбає про роботу свого розділу даних, його слід збільшити до 10%
Matija Nalis

Якщо ваш диск вмістить не тільки великі файли, але й невеликі файли , прочитайте це: зменшення співвідношення inode дозволить заощадити не менше ніж 1,5% пам’яті ціною універсальності. inode_ratio = xозначає, що якщо середній розмір файлу в обсязі менше x байт, то ви спрямовуєтесь до вичерпання вкладів, перш ніж не вистачить місця для зберігання . У такому сценарії ви можете витратити буквально на тисячі більше, ніж очікували, що заощадите.
Стефан Гурішон

Іншими словами, якщо середній розмір файлу менше 4 МБ, не використовуйте "-T великий файл4". Для величезних накопичувачів я в кінцевому підсумку використовую, -T hugeщо робить inode_ratio = 65536. Якщо сумніваєтеся, просто не встановлений -iабо -Tі нехай мудрі люди , які зробили ext2 / 3/4 вибрати для вас. Ви залишите відому невелику частину місця для ведення домашнього господарства і (якщо ви не зберігаєте мільйони дуже маленьких файлів), ви гарантовано не витрачаєте довільний відсоток фактичного місця для зберігання. Як пишуть люди, привабливе програмне забезпечення - це приємно, але хороша файлова система повинна бути нудною і просто працювати.
Стефан Гурішон

у моєму випадку mkfs.ext4швидше (time real 0m16.001s:), ніж mkfs.ext3(time real 2m10.336s:).
coanor

19

Додайте прапор -E lazy_itable_init

Ось що пише сторінка man:

Якщо ввімкнено та включена функція uninit_bg, таблиця inode не буде повністю ініціалізована mke2fs. Це помітно прискорює ініціалізацію файлової системи, але вона вимагає ядра закінчити ініціалізацію файлової системи у фоновому режимі, коли файлова система вперше змонтована. Якщо значення параметра опущено, воно за замовчуванням дорівнює 1, щоб увімкнути ініціалізацію таблиці ледачих inode.


3
Технічно це фактично не робить формат швидшим, але він дозволяє монтувати та використовувати файлову систему, поки формат закінчується у фоновому режимі.
Уайдард

дуже дякую! це wo4ked дійсно добре, документи / людина не були мені зрозумілі, поки не знали, що шукати! THX стільки!
застряг

Я бачив посилання на мінімальну версію ядра, який мінімум необхідний для використання цього?
Xarses

8

За замовчуванням - швидкий формат; налаштування структур для обсягу ext * займає набагато більше часу, ніж для обсягу NTFS, оскільки їх більше. Ви можете зменшити кількість суперблоків, але навіть це заходить далеко.


спасибі за інформацію, мій пристрій почав форматувати 2TB диск USB2 близько 20 годин тому, він все ще працює - пристрій малопотужний, думаю, Raspberry Pi з 64 Мб оперативної пам’яті. для того, щоб запустити формат, мені довелося налаштувати пейджинг на той самий USB-диск, на якому відформатовано, чи є щось, що я можу зробити, щоб прискорити це? я був би здоровий, якби я міг зробити так, щоб вистава була менше години чи двох?
застряг

2
lazy_itable_init зробив для мене хитрість, це не за замовчуванням і робить формат набагато швидшим
застряг

4

Якщо ви будете зберігати в основному більші файли, ви можете збільшити кількість байтів на inode, зменшивши, таким чином, кількість створених inode. Це може істотно пришвидшити час створення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.