На моем интранет-сервере у меня есть раздел 100,00 ГиБ / dev / sda5, который я использую в качестве физического тома для lvm2.
- Это единственный физический том в моей группе томов vg01.
- В настоящее время vg01 содержит один логический том lv01, использующий все 100,00 ГиБ - ну, в действительности, 99,99 ГБ из-за некоторого округления (вот где начинается проблема).
- lv01 содержит файловую систему ext3, используя все пространство.
Я хочу уменьшить lv01 примерно до 97 ГиБ, поэтому я могу создать lv02 с прибл. 3 ГиБ (мне нужно, чтобы сделать снимки lvm).
Что я сделал до сих пор:
e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G
Это сработало хорошо. Но теперь мне придется бежать
lvreduce --size ? /dev/mapper/vg01-lv01
И я не уверен, какое именно значение мне придется указать. Страница lvreduce
man явно предупреждает, что результирующий размер не должен быть меньше, чем файловая система. Я также не хочу делать это больше, чем должно быть. Но сейчас у меня разные цифры:
- Я указал
97G
в resize2fs. df -h
говорит, что это 96 г.df
говорит, что это 100115936 1K-блоков.- lvdisplay (конечно) все еще сообщает о 99.99 ГиБ для логического тома.
Что я должен указать для lvreduce
?
Редактировать:
В настоящее время принятый ответ обеспечивает хороший обходной путь. Однако для того, чтобы интегрировать такие вещи в надежные сценарии и т. Д., Я бы предпочел вместо этого использовать точные измерения. Или, может быть, уже есть надежный (!) Скрипт или инструмент, который выполняет всю процедуру изменения размера за один шаг?
resize2fs
чтобы уменьшить файловую систему до 90 ГБ или около того, а затем поиграться с аргументамиlvreduce
(послеresize2fs
), чтобы увидеть, что работает лучше всего.Ответы:
По моему опыту, LVM и resize2fs имеют одинаковые представления о том, что означает «97G», поэтому указание одинакового размера в обоих местах должно быть приемлемым. Однако я параноик, и везде, где это возможно, всегда использую стратегию, предложенную жаворонком в комментариях к вопросу, и меняю размер на один ГБ меньше, чем я хотел, делаю lvresize до нужного мне размера, а затем снова запускаю resize2fs (без размер), чтобы позволить ему расшириться обратно, чтобы заполнить весь LV.
источник
Я думаю, что лучше всего это сделать с помощью параметра --resizefs для lvreduce / lvresize:
По общему признанию, это не помогает вам сейчас , но может в будущем.
источник