Можно ли в режиме онлайн уменьшить объем EXT4 с помощью LVM?
Сегодня я попробовал это на моей машине с 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.
Это действительно не поддерживается или я что-то упустил?
3 ответа
Как говорится в сообщении, вы можете вырастить файловую систему только в режиме онлайн. Если вы хотите уменьшить его, вам нужно сначала отключить его.
По словам сопровождающего файловой системы ext4 Теда Цо:
Извините, сжатие в режиме онлайн не поддерживается.
Если дело касается удаленного сервера без консоли, вы можете сжать файловую систему с помощью 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, перезагрузите компьютер, проверьте размер, удалите эти сценарии и снова выполните update-intiramfs.
Для dracut (Fedora,CentOS) используйте ту же логику (/usr/lib/dracut/modules.d).
Это очень полезно для шифрования или перемещения rootfs, без свободного места для нового раздела.
Да, вы можете сжать / переместить / увеличить корневой раздел без перезагрузки (ни livecd, ни usbkey): обратитесь к этому ответу. Это очень хорошо написано и легко следовать, хотя довольно долго и немного рискованно.
resize2fs
не может сжаться онлайн ext4
перегородки. Это ограничение при применении к корневому разделу может заставить вас думать, что вы не можете избежать перезагрузки хоста, чтобы уменьшить root
раздел, который может быть то, что вы хотите избежать. Связанный процесс позволит вам размонтировать корневой раздел без перезагрузок. Таким образом, с этой точки зрения, это не строго говоря, изменение размера онлайн в отношении смонтированного состояния раздела, однако это остается изменение размера онлайн в отношении сетевого статуса в сети или достижимости хоста.
Конечно, если вы хотите только увеличить раздел ext4, вам следует придерживаться обычной рабочей resize2fs
решения.
Общее решение, которое я связал, будет работать, например, с любым типом выделенного решения или решения VPS.
TLDR; это решение подразумевает pivot_root
в tmpfs
так что вы можете umount
безопасно ваш корневой раздел жить и возиться с ним. После этого вы будете pivot_root
вернуться на ваш новый корневой раздел.
Это позволяет практически любые манипуляции с корневой файловой системой (переместить ее, изменить файловую систему, изменить ее физическое устройство...).
Я лично использовал это, и это очень хорошо работает и в системе Debian, но руководство было изначально написано для Redhat в 2007 году, ответ, который я связал, был обновлен для CentOS7. Весьма вероятно, что он будет работать на вашем OpenSUSE, хотя, вероятно, с некоторой адаптацией.