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