Изменение размера логического тома lvm2 и файловой системы: точные размеры?

10

На моем интранет-сервере у меня есть раздел 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

И я не уверен, какое именно значение мне придется указать. Страница lvreduceman явно предупреждает, что результирующий размер не должен быть меньше, чем файловая система. Я также не хочу делать это больше, чем должно быть. Но сейчас у меня разные цифры:

  • Я указал 97Gв resize2fs.
  • df -h говорит, что это 96 г.
  • df говорит, что это 100115936 1K-блоков.
  • lvdisplay (конечно) все еще сообщает о 99.99 ГиБ для логического тома.

Что я должен указать для lvreduce?

Редактировать:

В настоящее время принятый ответ обеспечивает хороший обходной путь. Однако для того, чтобы интегрировать такие вещи в надежные сценарии и т. Д., Я бы предпочел вместо этого использовать точные измерения. Или, может быть, уже есть надежный (!) Скрипт или инструмент, который выполняет всю процедуру изменения размера за один шаг?

Крис Лерчер
источник
3
Вы можете использовать, resize2fsчтобы уменьшить файловую систему до 90 ГБ или около того, а затем поиграться с аргументами lvreduce(после resize2fs), чтобы увидеть, что работает лучше всего.
Жаворонки
@larsks: отличная идея (потому что resize2fs может автоматически подстраиваться под размер разделов, тогда как lvreduce не может автоматически подстраиваться под размер fs). Если никто не знает точного ответа на мой вопрос, я думаю, что это будет решением.
Крис Лерчер
Почему бы просто не передать тот же размер в lvreduce? Если вы не сделаете опечатку, lvm должен признать, что он того же размера, и не изменять его размер снова. И если вы сделаете опечатку, вы, по крайней мере, избежите разрушения вашей файловой системы. lvreduce -r -L 97G / dev / mapper / vg01-lv01
Билл

Ответы:

5

По моему опыту, LVM и resize2fs имеют одинаковые представления о том, что означает «97G», поэтому указание одинакового размера в обоих местах должно быть приемлемым. Однако я параноик, и везде, где это возможно, всегда использую стратегию, предложенную жаворонком в комментариях к вопросу, и меняю размер на один ГБ меньше, чем я хотел, делаю lvresize до нужного мне размера, а затем снова запускаю resize2fs (без размер), чтобы позволить ему расшириться обратно, чтобы заполнить весь LV.

ombble
источник
Я думаю, здесь важно быть «параноиком» - потому что не только существует вероятность того, что текущие файлы будут повреждены: если файловая система больше LV, я предполагаю, что она может в любой момент разрушить следующие тома в будущем.
Крис Лерчер
Нет, LVM запрещает любые попытки записи за пределы LV, поэтому никакие другие LV не могут быть повреждены. Однако, если файловая система урезана, это приводит к довольно катастрофическим результатам.
womble
Это интересно - я не знал, что он проверяет каждую запись! Хорошо знать.
Крис Лерчер
14

Я думаю, что лучше всего это сделать с помощью параметра --resizefs для lvreduce / lvresize:

   -r, --resizefs
          Resize underlying filesystem together with the logical volume using fsadm(8).

По общему признанию, это не помогает вам сейчас , но может в будущем.

МЖК
источник
Вот что я искал! Кажется, это новый вариант: он в версии 2.02.74 (2) -RHEL, но отсутствует в моей версии 2.02.66 инструментов LVM.
Крис Лерчер
1
Когда я уже изменил размер файловой системы с помощью других инструментов, эта опция подавила обычное предупреждение и напечатала сообщение «Файловая система уже имеет длину 3932160 блоков. Ничего не поделаешь!» Просто так, как хотелось бы.
D Coetzee
Даже в 2020 году ни в одном из нескольких руководств по расширению / уменьшению объемов lvm, предложенных Google на первой странице результатов поиска, не упоминается эта опция. Большое спасибо!
Иван Шацкий