Как я могу сжать логический том и перераспределить освободившееся пространство в новый раздел на том же диске?
У меня есть диск, Сда. Имеет два раздела:
sda1: /boot
sda2: LVM managed in Volume Group volgrp01
volgrp01 содержит следующие логические тома:
lv_root (30 GB)
lv_swap (8 GB)
lv_scratch (430 GB)
Я хочу уменьшить lv_scratch до 50 ГБ и перераспределить эти освобожденные 380 ГБ в новый раздел, sda3 (который я затем добавлю в другую группу томов).
Я приложил изображение моего желаемого ДО и ПОСЛЕ. Я нахожусь в середине изучения LVM, и хотя я могу понять идею изменения размера логических томов в группе томов, я не уверен, как можно было бы перераспределить это пространство в новый раздел.
Я использую RHEL6.
2 ответа
Шаг 1: Сделайте резервные копии.
Я знаю, что большинство людей пропускают этот шаг, но вы вносите изменения, которые могут привести к серьезной потере данных, если вы облажаетесь, и вы получаете указания от случайного незнакомца в Интернете. Вы несете ответственность за сохранность ваших данных. Я не.
Шаг 2: Сожмите файловую систему в lv_scratch
, Если это файловая система ext2/3/4, размонтируйте ее и используйте resize2fs
; если это что-то еще, вам нужно поискать документацию по изменению размера файловой системы этого типа.
Например:
resize2fs /dev/volgrp01/lv_scratch 50G
Когда это будет сделано (при условии, что вы используете resize2fs
), он сообщит вам новый размер файловой системы в байтах. Запишите этот номер, потому что вы можете использовать его для проверки безопасности на следующем шаге.
Шаг 3: Уменьшите логический том, используя lvreduce
,
- Если вы хотите быть простым, используйте
lvreduce --size 50G volgrp01/lv_scratch
, - Если вы хотите быть особенно осторожными, чтобы не сжимать LV до размера, меньшего, чем файловая система, которую он содержит, проверьте размер физического экстента вашей группы томов, используя
vgdisplay volgrp01
и вычислите, сколько физических экстентов требуется для хранения размера в байтах вашей файловой системы (используя 1 МБ = 1048576 байт). Затем укажите это число, используя--extents
вариант вместо--size 50G
,
Кроме того, вы можете пропустить шаг 1 и вместо этого использовать lvreduce
"s -r
возможность изменить размер файловой системы автоматически. Это может быть проще, но у меня нет личного опыта, чтобы знать, насколько это надежно.
На данный момент я бы порекомендовал запустить fsck -f
на ваше /dev/volgrp01/vg_scratch
просто чтобы убедиться, что он не поврежден. Если вы получаете какие-либо ошибки о "доступе за пределы устройства", это означает, что вы слишком сильно сократили LV и вам необходимо lvextend
это, прежде чем продолжить.
Шаг 4: Уменьшите физический объем, используя pvresize
,
pvresize --setphysicalvolumesize 88G /dev/sda2
Вам не нужна дополнительная проверка безопасности здесь, так как pvresize
откажется уменьшить физический том до размера, который слишком мал для существующих логических томов. Но если размеры других ваших LV не являются точными, кратными 1 ГБ, 88G может быть слишком маленьким, и вам может потребоваться использовать другое значение.
Шаг 5: Сожмите sda2
раздел с помощью fdisk
,
Бежать fdisk /dev/sda
и по его подсказке запустите p
посмотреть на ваши существующие разделы. Запишите начальный номер сектора вашего sda2
раздел. Затем удалите sda2
раздел - это не касается фактических данных, просто удаляет запись о том, где он начинается и заканчивается, - и создает новый sda2
с тем же стартовым сектором (это жизненно важно) и размером 88G. Код типа раздела должен быть 8e
, "Linux LVM".
Если вы хотите быть очень осторожными - и я бы порекомендовал вам сделать это, особенно если вам нужно было указать другой размер pvresize
раньше - проверьте размер PE и Total PE вашего физического тома, используя pvdisplay /dev/sda2
и умножьте их вместе, чтобы найти размер физического тома в байтах (снова используя 1 МБ = 1048576 байтов). Затем вычтите ваш новый sda2
Номер начального сектора раздела от его конечного, добавьте 1, чтобы подсчитать последний сектор, и умножьте на размер сектора вашего диска (который должен быть либо 512, либо 4096 байт). Убедитесь, что два результата совпадают.
Теперь создайте свой новый sda3
раздел, сохранить изменения и выйти fdisk
, Если вы получили сообщение о необходимости перезагрузки, чтобы изменения вступили в силу, перезагрузите компьютер.
Не уверен, будет ли это работать - я только увеличил pv. И ни в коем случае НЕ ПЫТАЙТЕСЬ НА ЦЕННЫЕ ДАННЫЕ, ЕСЛИ У ВАС ЕСТЬ ЧИТАЕМЫЙ РЕЗЕРВ.
Используйте инструмент, специфичный для FS (если есть), чтобы изменить размер FS на lv_scratch
lvresize -L 50G /dev/volgrp01/lv_scratch
pvresize --setphysicalvolumesize 88G /dev/sda2
Измените размер вашего /dev/sda2 (не уверен, возможно ли это с помощью parted / cfdisk и т. Д., Возможно, вам понадобится другой редактор разделов)
Создать новый раздел, сделать новый PV, создать группу томов и т. Д.
При изменении размера дважды проверяйте все числа, так как если вы уменьшаете свой логический или физический том больше, чем FS, у вас могут получиться сломанные FS и потерянные данные, обычно лучше оставить неиспользованное пространство на случай путаницы.