На моем сервере интрасети у меня есть раздел / dev / sda5 размером 100,00 ГиБ, который я использую как физический том для lvm2.
Я хочу уменьшить 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 блоков по 1К.Что мне нужно указать для lvreduce
?
Принятый в настоящее время ответ дает хороший обходной путь. Однако, чтобы интегрировать такие вещи в твердые скрипты и т. Д., Я обычно предпочитаю вместо этого использовать точные измерения. Или, может быть, уже есть надежный (!) Скрипт или инструмент, который выполняет всю процедуру изменения размера за один шаг?
Я думаю, что это лучше всего сделать с помощью параметра --resizefs для lvreduce / lvresize:
-r, --resizefs
Resize underlying filesystem together with the logical volume using fsadm(8).
По общему признанию, это вам не помогает сейчас, но это возможно в будущем.
По моему опыту, LVM и resize2fs имеют одинаковые представления о том, что означает «97G», поэтому указать одинаковый размер в обоих местах должно быть хорошо. Тем не менее, я параноик и везде, где это возможно, всегда использую стратегию, предложенную larsks в комментариях к вопросу и изменяю размер на один ГБ меньше, чем я хотел, выполнял lvresize до желаемого размера, а затем повторно запускал resize2fs (без size), чтобы позволить ему расшириться, чтобы заполнить весь LV.