Я привык использовать system-config-lvm
в RedHat Linux (я использовал RHEL 5) для изменения размера LVM во время работы системы. Для ясности, я сделал это во время работы на диске, который использовал для система, которую я использовал, и не было ошибок или проблем. При этом мне сказали, что тома нужно будет размонтировать, а затем снова смонтировать. Это сработало, когда я это сделал.
Я пробовал сделать это в CentOS 6.5 с system-config-lvm
. Сначала я попытался изменить размер /home
раздел, чтобы он был меньше, чтобы я мог увеличить /root
раздел. Я уменьшил размер, нажал «Применить», мне сообщили, что сначала его нужно размонтировать, я нажал «ОК», и мне сказали, что его нельзя размонтировать, потому что устройство занято. Это уже отличается от поведения RHEL, и я понимаю, что LV предназначены для того, чтобы иметь возможность изменять размер во время использования. Ну какая-то степень поиск в Интернете сказал, что на самом деле это не так и что это невозможно (размонтировать том во время использования), и рекомендовал использовать live CD и выполнить операцию с еще не смонтированной файловой системой. Вот что я сделал. Я взял CentOS 6.5 Live CD, запустил system-config-lvm
для изменения размера LV (в основном поменяйте размер /
(корень) и /home
томов), все прошло успешно, затем я перезагрузился.
При перезагрузке загрузка прервалась из-за обнаруженных ошибок файловой системы. Я решил отменить изменение размера логического тома до исходных размеров (что потребовало загрузки обратно на Live CD и повторения процесса LVM), перезагрузился и по-прежнему ошибки. Ошибки были связаны только с /home
объем, потому что /
(корневой) объем был полностью неповрежденным. Чтобы попытаться спасти, я попробовал сделать fsck -y
и это не совсем сработало, и это нормально, потому что вся эта файловая система изначально была клоном виртуальной машины. Я не против потерять данные.
Но мне интересно, почему это произошло? Или еще лучше, как это сделать правильно? В идеале конечно без создания ошибок файловой системы. Может ли это быть результатом того, что размер тома был слишком маленьким, чем его содержимое (я полагаю, что проверил, но это не так, но я не могу быть полностью уверен)? я вижу это сообщение об ошибке сервера который рекомендует использовать resize2fs
. Это правильный способ сделать это, а не system-config-lvm
?
Lvm имеет 3 слоя. Самый нижний уровень называется физическим, все команды начинаются с pv. pvcreate берет диск или раздел (физический том) и разбивает его на множество пронумерованных блоков одного размера (по умолчанию 4 МБ). Блоки называются физическими расширениями, сокращенно PE. Вы можете увидеть это с помощью pvdisplay.
Средний уровень - это группа томов, все команды начинаются с vg. Затем Vgcreate берет PE одного или нескольких физических томов (дисков) и группирует их в группу томов.
Верхний уровень - это уровень логического тома, все команды начинаются с lv. (Надеюсь, вы видите образец).
lvcreate берет несколько блоков в соответствии с желаемым размером логического тома (не обязательно все на одном диске) и представляет их системе Linux как устройство bblock.
Затем поверх этого нового блочного устройства (логического тома) вы создаете свою файловую систему. (ext4, xfs, vfat, ntfs ...) Вы монтируете эту файловую систему и используете ее для хранения ваших файлов.
Теперь самое интересное: если у вас заканчивается место в файловой системе, вы просто увеличиваете логический том, а затем файловую систему поверх него.
Если в вашей группе томов больше нет свободного PE, вы добавляете новый dusk на свою машину, выполняете pvcreate new-disk, добавляете его в свою группу томов с помощью vgextend, и вы можете увеличить свой логический том больше, чем исходный диск.
Важно: ваша файловая система (где вы храните дату, ваши папки и файлы) находится поверх логического тома, поэтому, если вы уменьшите свой lv, не уменьшая сначала файловую систему, это будет похоже на то, что вы отрежете часть вашего диска, где данные и структуры файловой системы все еще указывают на, значит ваша файловая система повреждена.
Lvm управляет блочными устройствами, а не файловой системой на них. Чтобы увеличить файловую систему, вы сначала увеличиваете блочное устройство (LV).
lvextend -l +5G /dev/volumegroup/volumename
Затем вы увеличиваете свою файловую систему, используя resize2fs для ext2 / 3/4.
resize2fs /dev/volumegroup/volumename
Это увеличит файловую систему до нового размера вашего тома.
Это работает онлайн (подключено) или офлайн (отключено).
Для xfs вы должны использовать xfs_growfs, который работает ТОЛЬКО онлайн (смонтирован). Вы не можете сжать файловые системы xfs, и вы можете сжать файловые системы ext2 / 3/4 только в автономном режиме (без подключения).
Жизненно важно сначала сжать файловую систему (resize2fs New size filesystem), а затем сжать логический том.