Ubuntu 16.04 создание ext4: файловая система 500 ТБ

Ubuntu 16.04 создание ext4: файловая система 500 ТБ

Стандарт ext4 предполагает возможность создания файловой системы размером до 1 ЭБ.

Моя цель — создать 500 ТБ файловой системы ext4 на Ubuntu 16.0.4. Проверьте мою команду создания fs:

sudo mkfs.ext4 -m 0 -J device=/dev/md125p1 /dev/md125p2 -b 4096 -E stride=128,stripe-width=6400,lazy_itable_init=0,lazy_journal_init=0

При выполнении этой команды я получаю следующую ошибку:

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

Я попытался установить очень большое значение байт на иноду с помощью опции -i в mkfs.ext4, но все равно безуспешно.

Я знаю, что RHEL рекомендует макс. 50 ТБ файловой системы ext4. Но возможно ли создать 500 ТБ файловой системы с ext4?

решение1

Это должно работать. Используем современную версию mke2fs:

% mkfs.ext4 /tmp/test.img 500T
mke2fs 1.45.4 (23-Sep-2019)
Creating regular file /tmp/test.img
Creating filesystem with 134217728000 4k blocks and 4259840000 inodes
Filesystem UUID: 00257d43-0298-4aaf-8cca-37e34f3d1bb8
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 
    2560000000, 3855122432, 5804752896, 12800000000, 17414258688, 
    26985857024, 52242776064, 64000000000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Количество инодов ограничивается (2**32)-1автоматически, поэтому опасения, высказанные в другом ответе, не являются проблемой.

Кроме того, использование размера блока > 4k не поддерживается на x86 из-за ограничения Linux, которое требует, чтобы размер блока не мог быть больше размера страницы VM. Следовательно, вы можете использовать размер блока до 64k на PowerPC, так как у него размер страницы 64k.

Я также скажу, что если вы используете действительно большие файловые системы, я настоятельно рекомендую вам использовать последнюю версию e2fsprogs, а не устаревшую версию, поставляемую в Ubuntu 16.04. За последние 3 года было исправлено много ошибок, включая некоторые, которые связаны с очень большими файловыми системами.

решение2

Согласно моим исследованиям, ext4 может не поддерживать 500 ТБ для блоков размером 4КБ.

Раздел по умолчанию EXT3/EXT4 имеет соотношение байтов на иноды: один иноды на каждые 16384 байта (16 Кб).
Таким образом, мы имеем:

500 GB = 500 * 1024 * 1024 * 1024 * 1024 = 549 755 813 888 000 bytes
549 755 813 888 000 bytes / 16384 = 33 554 432 000 inodes

Количество инодов представляет собой 32-битное число, поэтому максимально возможное количество инодов в любой файловой системе ext2/3/4 составляет 2^32-1 или 4 294 967 295 инодов.

Поскольку 33 554 432 000 намного больше, чем 4 294 967 295, выделение такого количества инодов невозможно. Вам понадобится в 8 раз больше максимального количества инодов.

Насколько я понимаю, у вас есть следующие варианты:

  • Попробуйте принудительно установить ограничение на иноды:-N 4294967295
  • Используйте блоки размером 8x4 = 32 КБ, что расточительно, если файлы небольшие.
  • Используйте другую файловую систему, а не ext4. Я видел отчеты, в которых говорилось, что XFS может поддерживать такую ​​файловую систему, но не могу сказать по личному опыту.

Связанный контент