Commit 78e1b2

2024-11-12 19:12:01 Mayekkuzu: Initial Commit
/dev/null .. linux/system/lvm.md
@@ 0,0 1,169 @@
+ # LVM
+
+ **LVM** a.k.a. **L**ogical **V**olume **M**anager - технология, которая позволит тебе из управлять томами на жестких дисках более продвинуто. Достигается это за счет того, что работа с жесткими дисками происходит на уровне абстракций, о которых будет рассказано ниже.
+ С помощью LVM можно изменять размер томов на лету, разметить разделы подобно RAID и использовать снапшоты. Для работы с LVM необходимы [root](/Linux/System/root) права. Ну и конечно же проверьте, что у вас установлен пакет lvm2.
+ **ВАЖНО!** GRUB не сможет загрузиться с LVM раздела! Не используйте LVM для /boot директории
+
+ - Physical Volume (PV)
+ На этом уровне абстракции находятся физические носители данных. LVM начинается именно с него. Им может быть или жесткий диск полностью или раздел. В том числе RAID массив.
+ - Volume Group (VG)
+ Этот уровень обозначает группу томов. Соответственно несколько PV можно собрать в один, например. Группе томов можно и нужно назначить имя.
+ - Logical Volume (LV)
+ Самый последний уровень в этой системе. Обозначает уже сам целевой том который можно использовать.
+
+ ## Создание простого LVM из 2 дисков
+ Представим что есть задача обьединения двух жестких дисков, подключенных к системе. В нашем случае это HDD на 16 и 32 GB. Командой lsblk смотрим что у нас в системе:
+ ```
+ mayekkuzu@debian-wiki:~$ lsblk
+ NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
+ sda 8:0 0 32G 0 disk
+ ├─sda1 8:1 0 31G 0 part /
+ ├─sda2 8:2 0 1K 0 part
+ └─sda5 8:5 0 975M 0 part [SWAP]
+ sdb 8:16 0 16G 0 disk
+ sdc 8:32 0 32G 0 disk
+ ```
+ Жесткие диски пустые, инициализируем PV на каждый из жестких дисков:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo pvcreate /dev/sdb
+ Physical volume "/dev/sdb" successfully created.
+ mayekkuzu@debian-wiki:~$ sudo pvcreate /dev/sdc
+ Physical volume "/dev/sdc" successfully created.
+ ```
+ Проверяем командой pvdisplay наши диски:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo pvdisplay
+ --- Physical volume ---
+ PV Name /dev/sdc
+ VG Name mylvmgroup
+ PV Size 32.00 GiB / not usable 4.00 MiB
+ Allocatable yes
+ PE Size 4.00 MiB
+ Total PE 8191
+ Free PE 8191
+ Allocated PE 0
+ PV UUID CHV3PB-5kYu-p2zS-ZmMJ-xB3X-VHvJ-pV5D1Y
+
+ --- Physical volume ---
+ PV Name /dev/sdb
+ VG Name mylvmgroup
+ PV Size 16.00 GiB / not usable 4.00 MiB
+ Allocatable yes
+ PE Size 4.00 MiB
+ Total PE 4095
+ Free PE 4095
+ Allocated PE 0
+ PV UUID ntBfx3-9eQ8-jfkZ-yD2x-n8fP-3BPk-L72R1x
+ ```
+ Отлично. Можно создавать группу томов. Обязательно даем ему имя, например mylvmgroup:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo vgcreate mylvmgroup /dev/sdc /dev/sdb
+ Volume group "mylvmgroup" successfully created
+ ```
+ Проверяем, создалась ли наша группа томов:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo vgdisplay
+ --- Volume group ---
+ VG Name mylvmgroup
+ System ID
+ Format lvm2
+ Metadata Areas 2
+ Metadata Sequence No 1
+ VG Access read/write
+ VG Status resizable
+ MAX LV 0
+ Cur LV 0
+ Open LV 0
+ Max PV 0
+ Cur PV 2
+ Act PV 2
+ VG Size 47.99 GiB
+ PE Size 4.00 MiB
+ Total PE 12286
+ Alloc PE / Size 0 / 0
+ Free PE / Size 12286 / 47.99 GiB
+ VG UUID zd1dzl-q5JN-EcuZ-6fP8-mQ5Q-qUA8-DrTo3H
+ ```
+ Как видим теперь у нас массив из двух жестких дисков размером 48 GB. Создаем логический раздел. Весь обьем можно не использовать, представим что нам для наших задач хватит, допустим 12 GB:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo lvcreate -n myvolume -L12G mylvmgroup
+ Logical volume "myvolume" created.
+ ```
+ Теперь посмотрим информацию о нашем логическом разделе:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo lvdisplay
+ --- Logical volume ---
+ LV Path /dev/mylvmgroup/myvolume
+ LV Name myvolume
+ VG Name mylvmgroup
+ LV UUID Wf6xnH-WOkP-pPT1-cao3-JfsP-rY8O-hjKpV7
+ LV Write Access read/write
+ LV Creation host, time debian-wiki, 2023-12-09 00:23:28 +0300
+ LV Status available
+ # open 0
+ LV Size 12.00 GiB
+ Current LE 3072
+ Segments 1
+ Allocation inherit
+ Read ahead sectors auto
+ - currently set to 256
+ Block device 254:0
+ ```
+ Как видим, наш логический диск теперь определяется как блочное устроиство. Теперь его можно смонтировать и отформатировать в нужную нам файловую систему. Стоит отметить, что наш логический раздел теперь можно найти как устроиство в /dev/mylvmgroup/myvolume
+ Форматируем том в ext4
+ ```
+ mayekkuzu@debian-wiki:~$ sudo mkfs.ext4 -L 12G_Data /dev/mylvmgroup/myvolume
+ mke2fs 1.47.0 (5-Feb-2023)
+ Discarding device blocks: done
+ Creating filesystem with 3145728 4k blocks and 786432 inodes
+ Filesystem UUID: 99ef979f-b7fb-4385-aee6-70befa437aa2
+ Superblock backups stored on blocks:
+ 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
+
+ Allocating group tables: done
+ Writing inode tables: done
+ Creating journal (16384 blocks): done
+ Writing superblocks and filesystem accounting information: done
+ ```
+ Монтируем в /mnt и проверяем командой lsblk, что раздел действительно примонтирован:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo mount /dev/mylvmgroup/myvolume /mnt
+ mayekkuzu@debian-wiki:~$ df -h
+ Filesystem Size Used Avail Use% Mounted on
+ udev 962M 0 962M 0% /dev
+ tmpfs 197M 504K 197M 1% /run
+ /dev/sda1 31G 1.3G 28G 5% /
+ tmpfs 984M 0 984M 0% /dev/shm
+ tmpfs 5.0M 0 5.0M 0% /run/lock
+ tmpfs 197M 0 197M 0% /run/user/1000
+ /dev/mapper/mylvmgroup-myvolume 12G 24K 11G 1% /mnt
+ ```
+ Можно полноценно работать с томом. Если планируется автоматическое монтирование для каких-то хотелок, можно прописать в /etc/fstab.
+
+ ## Изменение размера LV-тома
+ Например нужно увеличить размер на 12GB. Делается это таким образом. Нужно учесть момент, что в параметре lvresize нужно указать полный размер требуемого места. Тоесть к 12GB нужно добавить 12GB, получится 24GB:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo lvresize -L 24G mylvmgroup/myvolume
+ Size of logical volume mylvmgroup/myvolume changed from 12.00 GiB (3072 extents) to 24.00 GiB (6144 extents).
+ Logical volume mylvmgroup/myvolume successfully resized
+ ```
+ Теперь нужно расширить файловую систему до 24GB внутри тома, этим нам поможет resize2fs:
+ ```
+ mayekkuzu@debian-wiki:~$ sudo resize2fs /dev/mylvmgroup/myvolume
+ resize2fs 1.47.0 (5-Feb-2023)
+ Filesystem at /dev/mylvmgroup/myvolume is mounted on /mnt; on-line resizing required
+ old_desc_blocks = 2, new_desc_blocks = 3
+ The filesystem on /dev/mylvmgroup/myvolume is now 6291456 (4k) blocks long.
+ ```
+ Проверяем, увеличился ли размер нашего тома:
+ ```
+ mayekkuzu@debian-wiki:~$ df -h
+ Filesystem Size Used Avail Use% Mounted on
+ udev 962M 0 962M 0% /dev
+ tmpfs 197M 504K 197M 1% /run
+ /dev/sda1 31G 1.3G 28G 5% /
+ tmpfs 984M 0 984M 0% /dev/shm
+ tmpfs 5.0M 0 5.0M 0% /run/lock
+ tmpfs 197M 0 197M 0% /run/user/1000
+ /dev/mapper/mylvmgroup-myvolume 24G 24K 23G 1% /mnt
+ ```
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9