У меня есть сервер Centos 6.5, подключенный к массиву хранения. Он имеет том 16 ТБ, смонтированный из массива. Если я изменю размер тома в массиве до 45 ТБ, я не смогу расширить файловую систему, чтобы использовать это пространство. Очевидно, Centos 7.x сертифицирован для файловых систем размером до 50 ТБ. Кто-нибудь успешно изменил размер существующей файловой системы в 7.x до более 16 ТБ?
[root@init105-12 hariharan]# lsblk /dev/mapper/3624a93708a6e42d13a7d45ae0001101f
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
3624a93708a6e42d13a7d45ae0001101f (dm-2) 253:2 0 45T 0 mpath
[root@init105-12 hariharan]#
[root@init105-12 hariharan]# resize2fs /dev/mapper/3624a93708a6e42d13a7d45ae0001101f
resize2fs 1.41.12 (17-May-2010)
resize2fs: New size too large to be expressed in 32 bits
Предел ext4 составляет 16 ТиБ, поэтому вы просто не можете
https://access.redhat.com/solutions/1532
Если это производственная среда, у вас есть над чем поработать ...
Попробуйте собрать тот же сервер в тестовой среде с файловой системой XFS
ИСТОРИЯ ВОПРОСА: Когда возникает этот вопрос, часто возникает путаница по поводу 64-битных операционных систем или людей, которые говорят «64-битная файловая система». Мы говорим о таблице inode в файловой системе ext4. Размер блока по умолчанию в ext4 составляет 4 КБ, и блоки адресуются с помощью 32-разрядной таблицы inode, что означает, что файловая система имеет ограничение в 2 ^ 32 * 4 КБ адресных байтов, что составляет 16 ТиБ. В течение долгого времени поддержка ext4 в ядре Linux поддерживала 64-битную таблицу inode (максимум 1EiB с использованием блоков 4k), однако инструменты e2fs, поставляемые с CentOS 6 и 7, не поддерживают эту функцию. Если для вас важно тестирование «сертифицированное RedHat», то 64-битная таблица inode не поддерживается, но вопрос был задан для CentOS, так что давайте продолжим.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я включил 64-битные таблицы inode для файловых систем ext4 размером более 16 ТиБ в CentOS 6 и 7, а также в более старых версиях Ubuntus, обновив инструменты e2fs, поэтому я могу сказать вам, что это работает, но, конечно, вы должны сделать резервную копию своих данных перед попыткой этот. Этот процесс включает в себя компиляцию инструментов уровня ОС, поэтому он не для слабонервных. Кроме того, я читал, что GRUB не поддерживает 64-битные таблицы inode, поэтому не делайте этого с загрузочным разделом (или корневой файловой системой, если вы сохраняете / boot там, но CentOS 6 или 7 устанавливает себя иначе). Вы были предупреждены.
Загрузите e2fsprogs версии 1.43.9 и соберите ее. Доступны более новые версии, но эта версия отлично работает как на CentOS 6, так и на 7 и поддерживает все необходимые нам функции, тогда как новый код использует функции, не поддерживаемые версией gcc, поставляемой с CentOS 6. Обратите внимание, для этого процесса требуется gcc, поэтому, если вам не нужно, чтобы компилятор устанавливался на производственном сервере, я рекомендую собрать другой компьютер с тем же дистрибутивом Linux, а затем перенести созданные инструменты в вашу производственную среду. Для начала используйте следующие команды:
wget http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.43.9.tar.gz
tar zxvf e2fsprogs-1.43.9.tar.gz
cd e2fsprogs-1.43.9
./configure
make
На этом этапе вы можете запустить «make install» от имени пользователя root (ПРИМЕЧАНИЕ, предыдущие команды НЕ должны запускаться с правами root / sudo), если вы находитесь в системе с разделом, который хотите расширить. Это заменит существующие инструменты e2fs в вашей системе. Если вы не хотите этого делать, вы можете просто запустить только что созданные двоичные файлы, что, как я предполагаю, вы делаете в будущем. Начнем с изучения рассматриваемой файловой системы. я буду использовать /dev/mapper/vg_data-lv_data
в моих примерах команд, но у вас может быть /dev/sdb1
или что-то подобное в качестве вашей цели. Эта команда и все следующие команды, которые работают с файловой системой, требуют для запуска прав root.
./misc/tune2fs -l /dev/mapper/vg_data-lv_data | grep "features"
Эта команда перечислит все включенные функции файловой системы. Если в списке есть "64bit", значит, вы уже сделали, и я не знаю, почему вы это читаете! Прежде чем вы сможете продолжить, вам, вероятно, потребуется выполнить e2fsck и размонтировать файловую систему. Надеюсь, вы знаете, как размонтировать файловую систему (что требует, чтобы все дескрипторы файлов в файловой системе были закрыты). Чтобы выполнить fsck, используйте следующую команду:
./e2fsck/e2fsck -f /dev/mapper/vg_data-lv_data
Это может занять некоторое время, если файловая система уже достаточно велика. Затем мы можем (наконец) обновить таблицу inode до 64-битной:
./resize/resize2fs -b /dev/mapper/vg_data-lv_data
Обратите внимание, что это не изменяет размер файловой системы. Вы должны запустить команду снова без ключа -b, чтобы изменить размер. Выполнение команды изменения размера без указания размера автоматически использует все доступное пространство, что обычно и нужно делать:
./resize/resize2fs /dev/mapper/vg_data-lv_data
Теперь вы можете установить привод и наслаждаться дополнительным пространством! Вы также можете запустить tune2fs
еще раз, чтобы проверить, что теперь в списке функций файловой системы отображается эта сладкая «64-битная».
Последний совет: если вы хотите собрать эти инструменты на одном компьютере, а затем переместить их на рабочий сервер, самый простой способ сделать это - сделать это (не как root):
./configure --prefix=$HOME/local
tar zcvf e2fsprogs.tar.gz $HOME/local
А затем скопируйте e2fsprogs.tar.gz на свой рабочий сервер. Вы найдете бинарные файлы, которые были созданы в папке sbin. Имея их на своем производственном сервере, вы можете запускать их прямо из того места, где вы их извлекли, или вы можете переместить извлеченные папки в локальный каталог в / usr (как root), чтобы заменить инструменты e2fs, поставляемые с вашей ОС.
Надо было прояснить, что речь идет о ext4 на 64-битном linux.
Возможность изменения размера зависит от: