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 |
+ | ``` |