Lvm расширение тома. Как увеличить LVM раздел OS Linux CentOS. Добавление физических томов

Для расширения диска виртуальной машины, нужно сначала ее остановить, добавить имеющееся место и запустить ВМ. Не будем вдаваться в подробности — для каждой платформы алгоритм един. Далее переходим к используемой VM, в моем случаем установлена операционная система CentOS. Вначале проверяем имеющиеся устройства:

# fdisk -l Диск /dev/sda: 21.5 ГБ, 21474836480 байт... Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 653 4729856 8e Linux LVM /dev/sda3 653 1305 5239532+ 8e Linux LVM

Но место в системе не увеличилось, как и должно быть

# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/mapper/vg_projects-lv_root 7,5G 2,5G 4,7G 35% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 485M 49M 412M 11% /boot

Кстати, сразу отсюда берем имя группы томов vg_projects и имя тома lv_root, и запоменаем эти имена. У вас они будут другие.

Т.к. у нас теперь имеется неразмеченная область, то создадим новый раздел sda4 с типом раздела Linux LVM (код типа 8e) на этой области. Для этого начинаем работу с устройством sda:

# fdisk /dev/sda WARNING: DOS-compatible mode is deprecated. It"s strongly recommended to switch off the mode (command "c") and change display units to sectors (command "u").

Справка: команды оболочки fdisk

a переключение флага загрузки
b редактирование метки диска bsd
c переключение флага dos-совместимости
d удаление раздела
l список известных типов файловых систем
m вывод этого меню
n добавление нового раздела
o создание новой пустой таблицы разделов DOS
p вывод таблицы разделов
q выход без сохранения изменений
s создание новой чистой метки диска Sun
t изменение id системы раздела
u изменение единиц измерения экрана/содержимого
v проверка таблицы разделов
w запись таблицы разделов на диск и выход
x дополнительная функциональность (только для экспертов)

Далее используем следующие команды: n - создаём новый раздел;
p - обозначаем его как primary;
так как у нас было 3 логических раздела, то на вопрос Partition number (1-4) отвечаем 4;
t - укажем тип раздела;
опять тот же вопрос Partition number (1-4), отвечаем 4;
вводим 8e - это код типа раздела, соответствующий Linux LVM;
убедимся, что всё сделано верно, вводим p - показать таблицу разделов:

Команда (m для справки): n Действие команды e расширенный p основной раздел (1-4) p Выбранный раздел 4 Первый цилиндр (1306-2610, по умолчанию 1306): Используется значение по умолчанию 1306 Last цилиндр, +цилиндры or +size{K,M,G} (1306-2610, по умолчанию 2610): Используется значение по умолчанию 2610 Команда (m для справки): t Номер раздела (1-4): 4 Шестнадцатеричный код (введите L для получения списка кодов): 8e Системный тип раздела 4 изменен на 8e (Linux LVM) Команда (m для справки): p ... ... ... Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 653 4729856 8e Linux LVM /dev/sda3 653 1305 5239532+ 8e Linux LVM /dev/sda4 1306 2610 10482412+ 8e Linux LVM

Отлично. Раздел sda4 создан. Вводим w для сохранения изменения на диске.

Теперь ОБЯЗАТЕЛЬНО перезагружаем виртуальную машину!!!

Надеюсь у вас всё удачно перезагрузилось. Теперь необходимо создать физический том sda4:

# pvcreate /dev/sda4 Physical volume "/dev/sda4" successfully created
# vgextend /dev/vg_projects /dev/sda4 Volume group "vg_projects" successfully extended

Теперь расширим логический том. Вспоминаем, что говорил нам df.

# lvextend -l+100%FREE /dev/vg_projects/lv_root Extending logical volume lv_root to 17,52 GiB Logical volume lv_root successfully resized

Еще пару волшебных действий для активации

# vgscan Reading all physical volumes. This may take a while... Found volume group "vg_projects" using metadata type lvm2 # vgchange -ay 2 logical volume(s) in volume group "vg_projects" now active

И последнее, что мы делаем — расширяем файловую систему:

# resize2fs /dev/vg_projects/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/vg_projects/lv_root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 2 Performing an on-line resize of /dev/vg_projects/lv_root to 4593664 (4k) blocks. The filesystem on /dev/vg_projects/lv_root is now 4593664 blocks long.

Для CentOS 7 с файловой системой xfs используйте xfs_growfs вместо resize2fs . Данный процесс может занять некоторе время. После завершения операции проверим чего мы натворили:

# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/mapper/vg_projects-lv_root 18G 2,5G 14G 15% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 485M 49M 412M 11% /boot

Готово! Увеличение на 5см размера диска LVM в ОС Linux CentOS выполнено.

В жизни случаются разные ситуации, в следствии которых приходится увеличивать размер жесткого диска системы. Сразу проясню: имеется CentOS 6.4 (используются LVM тома) на VirtualBox. Хост машина - Windows 7. Увеличить размер диска виртуальной машины можно только при условии, что изначально он был создан динамически расширяемым, а увеличить размер файловой системы гостевой ОС, только если ОС установлена на LVM разделы.

Для увеличения размера диска виртуальной машины идем в консоль винды и клепаем что то типа:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "E:\VBoxMachines\CentOS\CentOS.vdi" --resize 20480

Надеюсь тут всё ясно. Установили размер диска равным 20-ти гигам. Кстати, попробуйте это сделать при включенной виртальной машине, интересно, прокатит или нет))

И так. Размер диска мы увеличили. Но CentOS не увеличит размер файловой системы автоматически, поэтому запасаемся терпением, делаем бэкапы, снапшоты или что там еще… Далее работаем в гостевой системе. Бэкапы сделаны. Будем применять новую неразмеченную область. Поехали!

Смотрим, что у нас имеется на данный момент из устройств/разделов

# fdisk -l Диск /dev/sda: 21.5 ГБ, 21474836480 байт... Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 653 4729856 8e Linux LVM /dev/sda3 653 1305 5239532+ 8e Linux LVM

Но место в системе не увеличилось, как и должно быть

# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/mapper/vg_projects-lv_root 7,5G 2,5G 4,7G 35% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 485M 49M 412M 11% /boot

Кстати, сразу отсюда берем имя группы томов vg_projects и имя тома lv_root, и запоменаем эти имена. У вас они будут другие.

Т.к. у нас теперь имеется неразмеченная область, то создадим новый раздел sda4 с типом раздела Linux LVM (код типа 8e) на этой области. Для этого начинаем работу с устройством sda:

# fdisk /dev/sda WARNING: DOS-compatible mode is deprecated. It"s strongly recommended to switch off the mode (command "c") and change display units to sectors (command "u").

Справка: команды оболочки fdisk

A переключение флага загрузки
b редактирование метки диска bsd
c переключение флага dos-совместимости
d удаление раздела
l список известных типов файловых систем
m вывод этого меню
n добавление нового раздела
o создание новой пустой таблицы разделов DOS
p вывод таблицы разделов
q выход без сохранения изменений
s создание новой чистой метки диска Sun
t изменение id системы раздела
u изменение единиц измерения экрана/содержимого
v проверка таблицы разделов
w запись таблицы разделов на диск и выход
x дополнительная функциональность (только для экспертов)

N - создаём новый раздел;
p - обозначаем его как primary;
так как у нас было 3 логических раздела, то на вопрос Partition number (1-4) отвечаем 4;
t - укажем тип раздела;
опять тот же вопрос Partition number (1-4), отвечаем 4;
вводим 8e - это код типа раздела, соответствующий Linux LVM;
убедимся, что всё сделано верно, вводим p - показать таблицу разделов:

Команда (m для справки): n Действие команды e расширенный p основной раздел (1-4) p Выбранный раздел 4 Первый цилиндр (1306-2610, по умолчанию 1306): Используется значение по умолчанию 1306 Last цилиндр, +цилиндры or +size{K,M,G} (1306-2610, по умолчанию 2610): Используется значение по умолчанию 2610 Команда (m для справки): t Номер раздела (1-4): 4 Шестнадцатеричный код (введите L для получения списка кодов): 8e Системный тип раздела 4 изменен на 8e (Linux LVM) Команда (m для справки): p ... бла бла... Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 653 4729856 8e Linux LVM /dev/sda3 653 1305 5239532+ 8e Linux LVM /dev/sda4 1306 2610 10482412+ 8e Linux LVM

Отлично. Раздел sda4 создан. Вводим w для сохранения изменения на диске.

Теперь ОБЯЗАТЕЛЬНО перезагружаем виртуальную машину!!!

Надеюсь у вас всё удачно перезагрузилось. Теперь необходимо создать физический том sda4:

# pvcreate /dev/sda4 Physical volume "/dev/sda4" successfully created

# vgextend /dev/vg_projects /dev/sda4 Volume group "vg_projects" successfully extended

Теперь расширим логический том. Вспоминаем, что говорил нам df.

# lvextend -l+100%FREE /dev/vg_projects/lv_root Extending logical volume lv_root to 17,52 GiB Logical volume lv_root successfully resized

Еще пару волшебных действий для активации

# vgscan Reading all physical volumes. This may take a while... Found volume group "vg_projects" using metadata type lvm2 # vgchange -ay 2 logical volume(s) in volume group "vg_projects" now active

И последнее, что мы делаем - расширяем файловую систему:

# resize2fs /dev/vg_projects/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/vg_projects/lv_root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 2 Performing an on-line resize of /dev/vg_projects/lv_root to 4593664 (4k) blocks. The filesystem on /dev/vg_projects/lv_root is now 4593664 blocks long.

Для CentOS 7 с файловой системой xfs используйте xfs_growfs вместо resize2fs . Данный процесс может занять некоторе время. После завершения операции проверим чего мы натворили:

# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/mapper/vg_projects-lv_root 18G 2,5G 14G 15% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 485M 49M 412M 11% /boot

Ура! Живем долго и счастливо!

Logical Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID-1.

Если планируются большие работы с LVM, то можно запустить специальную «оболочку» командой sudo lvm . Команда help покажет список команд.

Создание и удаление

Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан физический том (physical volume). К примеру, мы используем для LVM диск sda и раздел sdb2 :

Pvcreate /dev/sda pvcreate /dev/sdb2

На этих физических томах создаём группу томов , которая будет называться, скажем, vg1 :

Vgcreate -s 32M vg1 /dev/sda /dev/sdb2

Посмотрим информацию о нашей группе томов:

Vgdisplay vg1

Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется.

Теперь в группе томов можно создать логические тома lv1 и lv2 размером 20 Гбайт и 30 Гбайт соответствено:

Lvcreate -n lv1 -L 20G vg1 lvcreate -n lv2 -L 30G vg1

Теперь у нас есть блочные устройства /dev/vg1/lv1 и /dev/vg1/lv2 .

Осталось создать на них файловую систему. Тут различий с обычными разделами нет:

Mkfs.ext4 /dev/vg1/lv1 mkfs.reiserfs /dev/vg1/lv2

Удаление LVM (или отдельных его частей, например, логических томов или групп томов) происходит в обратном порядке - сначала нужно отмонтировать разделы, затем удалить логические тома (lvremove), после этого можно удалить группы томов (vgremove) и ненужные физические тома (pvremove).

Добавление физических томов

Чтобы добавить новый винчестер sdc в группу томов, создадим физический том:

Pvcreate /dev/sdc

И добавим его в нашу группу:

Vgextend vg1 /dev/sdc

Теперь можно создать ещё один логический диск (lvcreate) или увеличить размер существующего (lvresize).

Удаление физических томов

Чтобы убрать из работающей группы томов винчестер sda сначала перенесём все данные с него на другие диски:

Pvmove /dev/sda

Затем удалим его из группы томов:

Vgreduce vg1 /dev/sda

И, наконец, удалим физический том:

Pvremove /dev/sda

Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/переформатировать.

Изменение размеров

LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том:

Lvresize -L 40G vg1/lv2

а затем файловую систему на нём:

Resize2fs /dev/vg1/lv2 resize_reiserfs /dev/vg1/lv2

Изменение размеров физического тома - задача весьма сложная и обычно не применяется. Целесообразнее и безопаснее удалить физический том, изменить размер раздела и создать том заново.

Как просто попробовать

Если LVM устанавливается не для дальнейшего использования, а «напосмотреть», то диски и разделы можно заменить файлами. Не понадобятся ни дополнительные диски, ни виртуальные машины. Мы создадим виртуальные накопители и будем с ними работать. Например, можно создать 4 диска по 1 Гбайт, но можно создать другое количество большего или меньшего размера как вам хочется. Создаем сами файлы, имитирующие устройства:

Mkdir /mnt/sdc1/lvm cd /mnt/sdc1/lvm dd if=/dev/zero of=./d01 count=1 bs=1G dd if=/dev/zero of=./d02 count=1 bs=1G dd if=/dev/zero of=./d03 count=1 bs=1G dd if=/dev/zero of=./d04 count=1 bs=1G

Создаем loopback устройства из файлов:

Losetup -f --show ./d01 losetup -f --show ./d02 losetup -f --show ./d03 losetup -f --show ./d04

Pvcreate /dev/loop0 pvcreate /dev/loop1 pvcreate /dev/loop2 pvcreate /dev/loop3 vgcreate -s 32M vg /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 lvcreate -n first -L 2G vg lvcreate -n second -L 400M vg ...

Снапшоты

Одна из важнейших особенностей LVM - это поддержка механизма снапшотов. Снапшоты позволяют сделать мгновенный снимок логического тома и использовать его в дальнейшем для работы с данными.

Примеры использования

LVM активно используется, когда необходим механизм снапшотов. Например, этот механизм крайне важен при бекапе постоянно меняющихся файлов. LVM позволяет заморозить некоторое состояние ФС и скопировать с неё все нужные данные, при этом на оригинальной ФС останавливать запись не нужно.

Также снапшоты можно применить для организации поддержки файловым сервером с Samba механизма архивных копий, об этом в соответствующей статье:

LVM с LiveCD

Если у вас возникла необходимость работать с LVM с LiveCD Ubuntu, то вам придётся выполнить несколько дополнительных действий, поскольку по умолчанию утилит для работы с LVM нет.

Сначала вам нужно установить эти утилиты:

Sudo vgscan sudo vgdisplay YOUR_VGNAME

Sudo vgchange -a y

Эта команда должна сообщить о том, что все ваши логические тома активированы. Теперь можно работать с ними обычным образом.

На моем SSD емкостью 240 ГБ я имел сначала два раздела, один из которых содержал логический том с Linux Mint, а другой – раздел NTFS для совместного использования с Windows. Теперь я удалил раздел NTFS и хочу расширить свою группу логических томов, чтобы использовать освобожденное дисковое пространство.

Как расширить группу томов , логический том, содержащий / home и файловую систему (ext4) в / home? Можно ли сделать это онлайн?

PS: Да, я знаю, что мне нужно делать резервные копии моих данных 🙂

/dev/sdb/ (240GB) linuxvg (160GB) should use 100% of the disk space swap root home (ext4, 128GB) should be extended to use the remaining space

вывод sudo vgdisplay:

Volume group --- VG Name linuxvg System ID Format 2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 160,00 GiB PE Size 4,00 MiB Total PE 40959 Alloc PE / Size 40959 / 160,00 GiB Free PE / Size 0 / 0 VG UUID ... --- Logical volume --- LV Path /dev/linuxvg/swap LV Name swap VG Name linuxvg LV UUID ... LV Write Access read/write LV Creation host, time mint, 2013-08-06 22:48:32 +0200 LV Status available # open 2 LV Size 8,00 GiB Current LE 2048 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Path /dev/linuxvg/root LV Name root VG Name linuxvg LV UUID ... LV Write Access read/write LV Creation host, time mint, 2013-08-06 22:48:43 +0200 LV Status available # open 1 LV Size 24,00 GiB Current LE 6144 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1 --- Logical volume --- LV Path /dev/linuxvg/home LV Name home VG Name linuxvg LV UUID ... LV Write Access read/write LV Creation host, time mint, 2013-08-06 22:48:57 +0200 LV Status available # open 1 LV Size 128,00 GiB Current LE 32767 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:2 --- Physical volumes --- PV Name /dev/sdb1 PV UUID ... PV Status allocatable Total PE / Free PE 40959 / 0

вывод sudo fdisk -l:

Disk /dev/sdb: 240.1 GB, 240057409536 bytes 255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 1 468862127 234431063+ ee GPT Disk /dev/mapper/linuxvg-swap: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/linuxvg-root: 25.8 GB, 25769803776 bytes 255 heads, 63 sectors/track, 3133 cylinders, total 50331648 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/linuxvg-home: 137.4 GB, 137434759168 bytes 255 heads, 63 sectors/track, 16708 cylinders, total 268427264 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000

4 Solutions collect form web for “Как расширить раздел с LVM и физическим томом и логическим томом?”

Вы можете сделать это довольно просто. С любовью удивился, что здесь уже не было ответа.

Вы можете выполнить весь этот процесс во время работы в файловой системе, которую вы хотите изменить (да, это безопасно и полностью поддерживается). Нет необходимости в спасательных компакт-дисках или альтернативных операционных системах.

  1. Измените размер раздела (опять же, вы можете сделать это с помощью системы). GParted прост в использовании и поддерживает изменение размера.
    Вы также можете использовать инструмент нижнего уровня, такой как fdisk . Но вам придется удалить раздел и воссоздать его. Просто убедитесь, что при создании нового раздела в том же месте.
  2. Перезагружать. Поскольку таблица разделов была изменена в текущей системе, она не вступает в силу до перезагрузки.
  3. Запустите pvresize /dev/sdXY чтобы LVM выбрал новое пространство.
  4. Измените размер логического тома с помощью lvextend . Если вы хотите использовать все это, lvextend -r -l +100%FREE /dev/VGNAME/LVNAME . -r изменит размер файловой системы.
    Хотя я всегда рекомендую не использовать всю группу томов. Вы никогда не знаете, что вам понадобится в будущем. Вы можете всегда расширять позже, вы не можете сокращаться.

Вопрос был решен, прочитав этот пост в блоге. Я напишу решение в краткой форме:

  • используйте gdisk (если вы используете GPT), в противном случае вы можете пойти с добрым старым fdisk
  • обратите внимание на настройки раздела, в моем случае gdisk -l /dev/sdb
  • удалите свой раздел с помощью
  • создайте новый раздел с тем же выравниванием, что и предыдущий (в моем примере, начиная с блока 2048)
  • написать новую таблицу разделов
  • запустите $ partprobe -s, чтобы обновить таблицу разделов без перезагрузки
  • измените размер физического объема с помощью pvresize /dev/sdb1 или где бы вы ни были (используйте pvs чтобы определить, не знаете ли вы)
  • теперь измените размер логического тома lvextend -l +100%FREE /dev/file/of/your/lv с помощью lvextend -l +100%FREE /dev/file/of/your/lv , в моем случае sudo lvextend -l +100%FREE /dev/linuxvg/home
  • изменить размер файловой системы sudo resize2fs /dev/linuxvg/home
  • сначала проверьте согласованность sudo e2fsck -f /dev/linuxvg/home
  • наслаждаться 🙂
  • Уже есть отличные ответы.

    Если вы используете xfs, вы используете команду

    Xfs_growfs /mountpoint

    а не resize2fs. Вы можете сделать это, пока эта точка монтирования активна, например, если вы создали корневой раздел, и вам не нужно перезагружаться после.

    Ни один из ответов не отвечает за власть LVM.

    (Это основано на комментарии @frostchutz к вышеприведенному вопросу.)

    Давайте выясним факты:

    • OP имеет два раздела: sdb1 и sdb2 – физический том для LVM.
    • sdb1 является ntfs прямо сейчас, мы должны предоставить это пространство home логическому тому внутри linuxvg томов linuxvg .

    Шаги LVM используют «прагматичный путь»:

    • создать физический том на sdb1: pvcreate /dev/sdb1
    • Добавить sdb1 в linuxvg: vgextend linuxvg /dev/sdb1
    • lvextend -l +100%FREE /dev/linuxvg/home логический том home со всем свободным пространством: lvextend -l +100%FREE /dev/linuxvg/home
    • ext4 fs: resize2f /dev/linuxvg/home

    LVM обеспечивает высокий уровень косвенности. Логический том находится внутри группы томов, которая может использовать несколько дисков.

    home -> linuxvg -> (sdb1, sdb2, sdc1)