Стандарт 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 может поддерживать такую файловую систему, но не могу сказать по личному опыту.