Blame
78e1b2 | Mayekkuzu | 2024-11-12 19:12:01 | 1 | # LVM |
2 | ||||
3 | **LVM** a.k.a. **L**ogical **V**olume **M**anager - технология, которая позволит тебе из управлять томами на жестких дисках более продвинуто. Достигается это за счет того, что работа с жесткими дисками происходит на уровне абстракций, о которых будет рассказано ниже. | |||
4 | С помощью LVM можно изменять размер томов на лету, разметить разделы подобно RAID и использовать снапшоты. Для работы с LVM необходимы [root](/Linux/System/root) права. Ну и конечно же проверьте, что у вас установлен пакет lvm2. | |||
5 | **ВАЖНО!** GRUB не сможет загрузиться с LVM раздела! Не используйте LVM для /boot директории | |||
6 | ||||
7 | - Physical Volume (PV) | |||
8 | На этом уровне абстракции находятся физические носители данных. LVM начинается именно с него. Им может быть или жесткий диск полностью или раздел. В том числе RAID массив. | |||
9 | - Volume Group (VG) | |||
10 | Этот уровень обозначает группу томов. Соответственно несколько PV можно собрать в один, например. Группе томов можно и нужно назначить имя. | |||
11 | - Logical Volume (LV) | |||
12 | Самый последний уровень в этой системе. Обозначает уже сам целевой том который можно использовать. | |||
13 | ||||
14 | ## Создание простого LVM из 2 дисков | |||
15 | Представим что есть задача обьединения двух жестких дисков, подключенных к системе. В нашем случае это HDD на 16 и 32 GB. Командой lsblk смотрим что у нас в системе: | |||
16 | ``` | |||
17 | mayekkuzu@debian-wiki:~$ lsblk | |||
18 | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS | |||
19 | sda 8:0 0 32G 0 disk | |||
20 | ├─sda1 8:1 0 31G 0 part / | |||
21 | ├─sda2 8:2 0 1K 0 part | |||
22 | └─sda5 8:5 0 975M 0 part [SWAP] | |||
23 | sdb 8:16 0 16G 0 disk | |||
24 | sdc 8:32 0 32G 0 disk | |||
25 | ``` | |||
26 | Жесткие диски пустые, инициализируем PV на каждый из жестких дисков: | |||
27 | ``` | |||
28 | mayekkuzu@debian-wiki:~$ sudo pvcreate /dev/sdb | |||
29 | Physical volume "/dev/sdb" successfully created. | |||
30 | mayekkuzu@debian-wiki:~$ sudo pvcreate /dev/sdc | |||
31 | Physical volume "/dev/sdc" successfully created. | |||
32 | ``` | |||
33 | Проверяем командой pvdisplay наши диски: | |||
34 | ``` | |||
35 | mayekkuzu@debian-wiki:~$ sudo pvdisplay | |||
36 | --- Physical volume --- | |||
37 | PV Name /dev/sdc | |||
38 | VG Name mylvmgroup | |||
39 | PV Size 32.00 GiB / not usable 4.00 MiB | |||
40 | Allocatable yes | |||
41 | PE Size 4.00 MiB | |||
42 | Total PE 8191 | |||
43 | Free PE 8191 | |||
44 | Allocated PE 0 | |||
45 | PV UUID CHV3PB-5kYu-p2zS-ZmMJ-xB3X-VHvJ-pV5D1Y | |||
46 | ||||
47 | --- Physical volume --- | |||
48 | PV Name /dev/sdb | |||
49 | VG Name mylvmgroup | |||
50 | PV Size 16.00 GiB / not usable 4.00 MiB | |||
51 | Allocatable yes | |||
52 | PE Size 4.00 MiB | |||
53 | Total PE 4095 | |||
54 | Free PE 4095 | |||
55 | Allocated PE 0 | |||
56 | PV UUID ntBfx3-9eQ8-jfkZ-yD2x-n8fP-3BPk-L72R1x | |||
57 | ``` | |||
58 | Отлично. Можно создавать группу томов. Обязательно даем ему имя, например mylvmgroup: | |||
59 | ``` | |||
60 | mayekkuzu@debian-wiki:~$ sudo vgcreate mylvmgroup /dev/sdc /dev/sdb | |||
61 | Volume group "mylvmgroup" successfully created | |||
62 | ``` | |||
63 | Проверяем, создалась ли наша группа томов: | |||
64 | ``` | |||
65 | mayekkuzu@debian-wiki:~$ sudo vgdisplay | |||
66 | --- Volume group --- | |||
67 | VG Name mylvmgroup | |||
68 | System ID | |||
69 | Format lvm2 | |||
70 | Metadata Areas 2 | |||
71 | Metadata Sequence No 1 | |||
72 | VG Access read/write | |||
73 | VG Status resizable | |||
74 | MAX LV 0 | |||
75 | Cur LV 0 | |||
76 | Open LV 0 | |||
77 | Max PV 0 | |||
78 | Cur PV 2 | |||
79 | Act PV 2 | |||
80 | VG Size 47.99 GiB | |||
81 | PE Size 4.00 MiB | |||
82 | Total PE 12286 | |||
83 | Alloc PE / Size 0 / 0 | |||
84 | Free PE / Size 12286 / 47.99 GiB | |||
85 | VG UUID zd1dzl-q5JN-EcuZ-6fP8-mQ5Q-qUA8-DrTo3H | |||
86 | ``` | |||
87 | Как видим теперь у нас массив из двух жестких дисков размером 48 GB. Создаем логический раздел. Весь обьем можно не использовать, представим что нам для наших задач хватит, допустим 12 GB: | |||
88 | ``` | |||
89 | mayekkuzu@debian-wiki:~$ sudo lvcreate -n myvolume -L12G mylvmgroup | |||
90 | Logical volume "myvolume" created. | |||
91 | ``` | |||
92 | Теперь посмотрим информацию о нашем логическом разделе: | |||
93 | ``` | |||
94 | mayekkuzu@debian-wiki:~$ sudo lvdisplay | |||
95 | --- Logical volume --- | |||
96 | LV Path /dev/mylvmgroup/myvolume | |||
97 | LV Name myvolume | |||
98 | VG Name mylvmgroup | |||
99 | LV UUID Wf6xnH-WOkP-pPT1-cao3-JfsP-rY8O-hjKpV7 | |||
100 | LV Write Access read/write | |||
101 | LV Creation host, time debian-wiki, 2023-12-09 00:23:28 +0300 | |||
102 | LV Status available | |||
103 | # open 0 | |||
104 | LV Size 12.00 GiB | |||
105 | Current LE 3072 | |||
106 | Segments 1 | |||
107 | Allocation inherit | |||
108 | Read ahead sectors auto | |||
109 | - currently set to 256 | |||
110 | Block device 254:0 | |||
111 | ``` | |||
112 | Как видим, наш логический диск теперь определяется как блочное устроиство. Теперь его можно смонтировать и отформатировать в нужную нам файловую систему. Стоит отметить, что наш логический раздел теперь можно найти как устроиство в /dev/mylvmgroup/myvolume | |||
113 | Форматируем том в ext4 | |||
114 | ``` | |||
115 | mayekkuzu@debian-wiki:~$ sudo mkfs.ext4 -L 12G_Data /dev/mylvmgroup/myvolume | |||
116 | mke2fs 1.47.0 (5-Feb-2023) | |||
117 | Discarding device blocks: done | |||
118 | Creating filesystem with 3145728 4k blocks and 786432 inodes | |||
119 | Filesystem UUID: 99ef979f-b7fb-4385-aee6-70befa437aa2 | |||
120 | Superblock backups stored on blocks: | |||
121 | 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208 | |||
122 | ||||
123 | Allocating group tables: done | |||
124 | Writing inode tables: done | |||
125 | Creating journal (16384 blocks): done | |||
126 | Writing superblocks and filesystem accounting information: done | |||
127 | ``` | |||
128 | Монтируем в /mnt и проверяем командой lsblk, что раздел действительно примонтирован: | |||
129 | ``` | |||
130 | mayekkuzu@debian-wiki:~$ sudo mount /dev/mylvmgroup/myvolume /mnt | |||
131 | mayekkuzu@debian-wiki:~$ df -h | |||
132 | Filesystem Size Used Avail Use% Mounted on | |||
133 | udev 962M 0 962M 0% /dev | |||
134 | tmpfs 197M 504K 197M 1% /run | |||
135 | /dev/sda1 31G 1.3G 28G 5% / | |||
136 | tmpfs 984M 0 984M 0% /dev/shm | |||
137 | tmpfs 5.0M 0 5.0M 0% /run/lock | |||
138 | tmpfs 197M 0 197M 0% /run/user/1000 | |||
139 | /dev/mapper/mylvmgroup-myvolume 12G 24K 11G 1% /mnt | |||
140 | ``` | |||
141 | Можно полноценно работать с томом. Если планируется автоматическое монтирование для каких-то хотелок, можно прописать в /etc/fstab. | |||
142 | ||||
143 | ## Изменение размера LV-тома | |||
144 | Например нужно увеличить размер на 12GB. Делается это таким образом. Нужно учесть момент, что в параметре lvresize нужно указать полный размер требуемого места. Тоесть к 12GB нужно добавить 12GB, получится 24GB: | |||
145 | ``` | |||
146 | mayekkuzu@debian-wiki:~$ sudo lvresize -L 24G mylvmgroup/myvolume | |||
147 | Size of logical volume mylvmgroup/myvolume changed from 12.00 GiB (3072 extents) to 24.00 GiB (6144 extents). | |||
148 | Logical volume mylvmgroup/myvolume successfully resized | |||
149 | ``` | |||
150 | Теперь нужно расширить файловую систему до 24GB внутри тома, этим нам поможет resize2fs: | |||
151 | ``` | |||
152 | mayekkuzu@debian-wiki:~$ sudo resize2fs /dev/mylvmgroup/myvolume | |||
153 | resize2fs 1.47.0 (5-Feb-2023) | |||
154 | Filesystem at /dev/mylvmgroup/myvolume is mounted on /mnt; on-line resizing required | |||
155 | old_desc_blocks = 2, new_desc_blocks = 3 | |||
156 | The filesystem on /dev/mylvmgroup/myvolume is now 6291456 (4k) blocks long. | |||
157 | ``` | |||
158 | Проверяем, увеличился ли размер нашего тома: | |||
159 | ``` | |||
160 | mayekkuzu@debian-wiki:~$ df -h | |||
161 | Filesystem Size Used Avail Use% Mounted on | |||
162 | udev 962M 0 962M 0% /dev | |||
163 | tmpfs 197M 504K 197M 1% /run | |||
164 | /dev/sda1 31G 1.3G 28G 5% / | |||
165 | tmpfs 984M 0 984M 0% /dev/shm | |||
166 | tmpfs 5.0M 0 5.0M 0% /run/lock | |||
167 | tmpfs 197M 0 197M 0% /run/user/1000 | |||
168 | /dev/mapper/mylvmgroup-myvolume 24G 24K 23G 1% /mnt | |||
169 | ``` |