How to remove a disk from an lvm partition?
Can anyone help ? I have 2 disks spanning my main partitions. 1 is 460Gb and the other is a 1TB. I would like to remove the 1TB — I would like to use it in another machine. The volume group isn’t using a lot of space anyway, I only have docker with a few containers using that disk and my docker container volumes are on a different physical disk anyway. If I just remove the disk ([physically]), it is going to cause problems right? Here is some info
pvdisplay --- Physical volume --- PV Name /dev/sda3 VG Name ubuntu-vg PV Size
LVM confuses me a little 🙂 Is there not just a simple case of saying, "remove yourself from the VG and assing anything you are using the remaining group member" ? Its worth noting that the 1TB was added afterwards, so assume its easier to remove ? Any help really appreciated EDIT Also some more info
df -h Filesystem Size Used Avail Use% Mounted on udev 16G 0 16G 0% /dev tmpfs 3.2G 1.4M 3.2G 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 1.4T 5.1G 1.3T 1% /
lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao---- 1.36t
pvdisplay -m --- Physical volume --- PV Name /dev/sda3 VG Name ubuntu-vg PV Size
lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT loop0 squashfs /snap/core/9066 loop2 squashfs /snap/core/9289 sda ├─sda1 vfat E6CC-2695 /boot/efi ├─sda2 ext4 0909ad53-d6a7-48c7-b998-ac36c8f629b7 /boot └─sda3 LVM2_membe DA7Q8E-zJEz-2FzO-N64t-HtU3-2Z8P-UQydU4 └─ubuntu--vg-ubuntu--lv ext4 b64f2bf4-cd6c-4c21-9009-76faa2627a6b / sdb └─sdb1 LVM2_membe Sp6b1v-nOj2-XXdb-GZYf-1Vej-cfdr-qLB3GU └─ubuntu--vg-ubuntu--lv ext4 b64f2bf4-cd6c-4c21-9009-76faa2627a6b / sdc xfs 1a9d0e4e-5cec-49f3-9634-37021f65da38 /gluster/bricks/2
Your pvdisplay seems to indicate that both PVs are quite full, as far as LVM is concerned. If they contain any LVs that are not being used for anything, you should remove them with lvremove to gain some room to manoeuver. Or if you have large but mostly empty filesystems, see if it's possible to shrink them and their LVs (depends on filesystem type).
Its strange - well for me anyway, as I know there isn't much space in use. Its just a simple ubuntu and also a small docker install - i am certain it will fit onto 460gb (first drive)
2 Answers 2
Since the filesystem you'll need the disk removed from is your root filesystem, and the filesystem type is ext4 , you'll have to boot the system from some live Linux boot media first. Ubuntu Live would probably work just fine for this.
Once booted from the external media, run sudo vgchange -ay ubuntu-vg to activate the volume group so that you'll be able to access the LVs, but don't mount the filesystem: ext2/3/4 filesystems need to be unmounted for shrinking. Then shrink the filesystem to 10G (or whatever size you wish - it can easily be extended again later, even on-line):
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 10G
Pay attention to the messages output by resize2fs - if it says the filesystem cannot be shrunk that far, specify a bigger size and try again.
This is the only step that needs to be done while booted on the external media; for everything after this point, you can boot the system normally.
At this point, the filesystem should have been shrunk to 10G (or whatever size you specified). The next step is to shrink the LV. It is vitally important that the new size of the LV should be exactly the same or greater than the new size of the filesystem! You don't want to cut off the tail end of the filesystem when shrinking the LV. It's safest to specify a slightly bigger size here:
sudo lvreduce -L 15G /dev/mapper/ubuntu--vg-ubuntu--lv
Now, use pvdisplay or pvs to see if LVM now considers /dev/sdb1 totally free or not. In pvdisplay , the Total PE and Free PE values for sdb1 should be equal - in pvs output, the PFree value should equal PSize respectively. If this is not the case, then it will be time to use pvmove :
After this, the sdb1 PV should definitely be totally free according to LVM and it can be reduced out of the VG.
sudo vgreduce vg-ubuntu /dev/sdb1
If you wish, you can then remove the LVM signature from the ex-PV:
But if you are going to overwrite it anyway, you can omit this step.
After these steps, the shrunken filesystem will still be sized at 10G (or whatever you specified) even though the LV might be somewhat bigger than that. To fix that:
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
When extending a filesystem, you don't have to specify a size: the tool will automatically extend the filesystem to match the exact size of the innermost device containing it. In this case, the filesystem will be sized according to the size of the LV.
Later, if you wish to extend the LV+filesystem, you can do it with just two commands:
sudo lvextend -L /dev/mapper/ubuntu--vg-ubuntu--lv sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
You can do this even while the filesystem is in use and mounted. Because shrinking a filesystem is harder than extending it, it might be useful to hold some amount of unallocated space in reserve at the LVM level - you will be able to use it at a moment's notice to create new LVs and/or to extend existing LVs in the same VG as needed.
Logical Volume Manager (LVM)
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
Посмотрим информацию о нашей группе томов:
Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется.
Теперь в группе томов можно создать логические тома 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 в группу томов, создадим физический том:
И добавим его в нашу группу:
Теперь можно создать ещё один логический диск ( lvcreate ) или увеличить размер существующего ( lvresize ).
Удаление физических томов
Чтобы убрать из работающей группы томов винчестер sda сначала перенесём все данные с него на другие диски:
Затем удалим его из группы томов:
И, наконец, удалим физический том:
Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/переформатировать.
Изменение размеров
LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том:
а затем файловую систему на нём:
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
Дальше поступаем так же, как если бы ми создавали LVM на реальных дисках. Обратите внимание на названия loop-устройств — они могут отличаться от приведённых здесь.
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
доступность ваших групп томов. Ну а дальше запустите все группы командой
Эта команда должна сообщить о том, что все ваши логические тома активированы. Теперь можно работать с ними обычным образом.