Сегодня я попробовал это на своей машине с OpenSUSE 12.3 (ядро 3.7):
# resize2fs /dev/mapper/system-srv 2G
resize2fs 1.42.6 (21-Sep-2012)
Filesystem at /dev/mapper/system-srv is mounted on /srv; on-line resizing required
resize2fs: On-line shrinking not supported
/dev/mapper/system-srv
это том EXT4.
Это действительно не поддерживается или мне что-то не хватает?
Как сказано в сообщении, вы можете только расти файловая система ext4 в режиме онлайн. Если вы хотите уменьшить его, вам нужно сначала размонтировать его.
По словам сопровождающего файловой системы ext4, Тед Ц'О:
К сожалению, онлайн-сжатие не поддерживается.
Да, вы можете сжимать / перемещать / увеличивать корневой раздел без перезагрузки (ни livecd, ни usbkey): проконсультируйтесь с этим ответом. Он очень хорошо написан, и ему легко следовать, хотя он довольно длинный и немного рискованный.
resize2fs
не может сжиматься онлайн ext4
перегородки. Это ограничение при применении к корневому разделу может заставить вас подумать, что вы не можете избежать перезагрузки хоста, чтобы разрешить сжатие root
раздел, чего вы, возможно, захотите избежать. Связанный процесс позволит вам размонтировать корневой раздел без перезагрузки. Так что в этом свете это, строго говоря, не онлайн изменение размера в отношении смонтированного состояния раздела, однако остается изменение размера в режиме онлайн в отношении сетевого статуса или доступности хоста.
Конечно, если вы хотите увеличить только свой раздел ext4, вам следует придерживаться обычного рабочего resize2fs
решения.
Общее решение, которое я связал, будет работать, например, с любым типом выделенного решения или VPS.
TL; DR; это решение подразумевает pivot_root
к tmpfs
так что вы можете umount
безопасно ваш корневой раздел живи и возиться с ним. После этого вы pivot_root
обратно в свой новый корневой раздел.
Это позволяет практически любые манипуляции с корневой файловой системой (переместить ее, изменить файловую систему, изменить ее физическое устройство ...).
Я лично использовал это, и он также очень хорошо работает в системе debian, но руководство было изначально написано в 2007 году для redhat, ответ, который я дал, был обновлен для CentOS7. Очень вероятно, что он будет работать на вашем OpenSUSE, хотя, вероятно, с некоторой адаптацией.
Если дело касается удаленного сервера без консоли, вы можете сжать файловую систему с помощью initramfs при перезагрузке. Вам нужно добавить resize2fs в initramfs и запустить его перед монтированием root.
Пример Debian / Ubuntu:
/ etc / initramfs-tools / hooks / resizefs (исполняемый файл):
#!/bin/sh
set -e
PREREQS=""
prereqs() { echo "$PREREQS"; }
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/e2fsck
copy_exec /sbin/resize2fs
exit 0
/ etc / initramfs-tools / scripts / local-premount / resizefs (исполняемый файл)
#!/bin/sh
set -e
PREREQS=""
prereqs() { echo "$PREREQS"; }
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G
/sbin/e2fsck -yf /dev/sda1
Теперь запустите update-initramfs, перезагрузитесь, проверьте размер, удалите эти скрипты и снова обновите intiramfs.
Для dracut (Fedora, CentOS) используйте ту же логику (/usr/lib/dracut/modules.d).
Это очень полезно для шифрования или перемещения файлов rootfs, когда для нового раздела нет свободного места.