1 |
<?xml version='1.0' encoding="UTF-8"?> |
2 |
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/lvm2.xml,v 1.19 2006/02/17 02:53:19 rane Exp $ --> |
3 |
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
4 |
|
5 |
<guide link="/doc/en/lvm2.xml"> |
6 |
<title>Gentoo LVM2 installation</title> |
7 |
|
8 |
<author title="Author"> |
9 |
<mail link="avi@CFFtechnologies.com">Avi Schwartz</mail> |
10 |
</author> |
11 |
<author title="Contributor"> |
12 |
<mail link="rajiv@gentoo.org">Rajiv Manglani</mail> |
13 |
</author> |
14 |
<author title="Editor"> |
15 |
<mail link="neysx@gentoo.org">Xavier Neys</mail> |
16 |
</author> |
17 |
|
18 |
<abstract> |
19 |
This guide describes how to setup your Gentoo machine using the Logical Volume |
20 |
Manager version 2 (LVM2). |
21 |
</abstract> |
22 |
|
23 |
<!-- The content of this document is licensed under the CC-BY-SA license --> |
24 |
<!-- See http://creativecommons.org/licenses/by-sa/2.5 --> |
25 |
<license/> |
26 |
|
27 |
<version>2.3</version> |
28 |
<date>2006-04-20</date> |
29 |
|
30 |
<chapter> |
31 |
<title>Introduction</title> |
32 |
<section> |
33 |
<body> |
34 |
|
35 |
<p> |
36 |
This guide is based on an example with two IDE hard disks. It means that you |
37 |
will more than likely need to change the drive, partition names and partition |
38 |
sizes to match your own setup and needs. |
39 |
</p> |
40 |
|
41 |
<warn> |
42 |
This document is not intended to be an LVM2 tutorial. It serves as a |
43 |
supplement to the Gentoo installation procedure as described in the <uri |
44 |
link="/doc/en/handbook/handbook-x86.xml?part=1">Handbook, Part 1</uri>. Make |
45 |
sure you <e>read</e> the Gentoo Installation Manual <e>before</e> you start |
46 |
your installation process. |
47 |
</warn> |
48 |
|
49 |
<note> |
50 |
For a complete LVM HOWTO point your browser to |
51 |
<uri>http://tldp.org/HOWTO/LVM-HOWTO</uri> |
52 |
</note> |
53 |
|
54 |
</body> |
55 |
</section> |
56 |
<section> |
57 |
<title>Initial requirements</title> |
58 |
<body> |
59 |
|
60 |
<p> |
61 |
If you do a fresh install of Gentoo, you will need to use a bootable CD with |
62 |
LVM2 support such as a Gentoo Installation CD. You can find the Installation CDs for an x86 |
63 |
architecture on our <uri |
64 |
link="/main/en/mirrors.xml">mirrors</uri> under |
65 |
<path>/releases/x86/2005.1-r1/installcd</path>. Other architectures might |
66 |
be supported as well. |
67 |
</p> |
68 |
|
69 |
<p> |
70 |
If you install LVM2 on a currently running system with some spare hard disk |
71 |
space, you will need to enable the LVM2 module (<path>dm-mod</path>). This |
72 |
module is available in <path>gentoo-sources</path> and in |
73 |
<path>vanilla-sources</path>. |
74 |
Compiling your kernel and getting LVM2 to work is covered later in this guide. |
75 |
</p> |
76 |
|
77 |
<p> |
78 |
Not all 2.4 kernels provided by Gentoo support LVM2! |
79 |
</p> |
80 |
|
81 |
<warn> |
82 |
The LVM2 available on the 2005.0 installation CDs is erroneously linked |
83 |
dynamically against a library (libgpm) which resides in /usr. This means you |
84 |
cannot have your /usr in an LVM environment as well. Either install the latest |
85 |
version or version 2.0.33 (not -r1) which are built statically. |
86 |
</warn> |
87 |
|
88 |
</body> |
89 |
</section> |
90 |
<section> |
91 |
<title>Partitions</title> |
92 |
<body> |
93 |
|
94 |
<p> |
95 |
Our example system has two IDE hard disks and will be partitioned as follows: |
96 |
</p> |
97 |
|
98 |
<ul> |
99 |
<li>/dev/hda1 -- /boot</li> |
100 |
<li>/dev/hda2 -- (swap)</li> |
101 |
<li>/dev/hda3 -- /</li> |
102 |
<li>/dev/hda4 -- Will be used by LVM2</li> |
103 |
<li>/dev/hdb1 -- Will be used by LVM2</li> |
104 |
</ul> |
105 |
|
106 |
<impo> |
107 |
Pay attention to the partition names as it is easy to confuse the a's and b's, |
108 |
and the partition numbers. One false move could wipe out the wrong partition. |
109 |
You have been warned! |
110 |
</impo> |
111 |
|
112 |
<p> |
113 |
OK, time to start... |
114 |
</p> |
115 |
|
116 |
</body> |
117 |
</section> |
118 |
</chapter> |
119 |
|
120 |
<chapter> |
121 |
<title>Installation</title> |
122 |
<section> |
123 |
<body> |
124 |
|
125 |
<p> |
126 |
Follow the handbook, but with the following amendments to chapter <e>4. |
127 |
Preparing the Disks</e>: |
128 |
</p> |
129 |
|
130 |
<p> |
131 |
Use <c>fdisk</c> as described in the handbook, but use the partition scheme |
132 |
mentioned above as an example. It is only <e>an example</e>, adapt it to your |
133 |
own needs. |
134 |
</p> |
135 |
|
136 |
<p> |
137 |
Create a small physical <path>/boot</path> partition (hda1). In this example, |
138 |
<path>/boot</path> will be not managed by LVM2. This partition will contain |
139 |
your bootloader and your kernel(s). A 64MB partition should be well enough for |
140 |
quite a few kernel generations. |
141 |
</p> |
142 |
|
143 |
<p> |
144 |
Create a swap partition (hda2). |
145 |
</p> |
146 |
|
147 |
<p> |
148 |
Create a / (root) partition (hda3). If you are interested in trying to put your |
149 |
root partition under LVM management (which we do not recommend), see the |
150 |
resources section at the end of this guide for a link to a mini-howto on how to |
151 |
do this. The size of the root partition need not be large if you will keep |
152 |
<path>/opt /usr /home /var</path> and <path>/tmp</path> in an LVM2 Volume Group |
153 |
(vg). In this case, 1GB should be sufficient. |
154 |
</p> |
155 |
|
156 |
<note> |
157 |
It is <b>not</b> recommended to put the following directories in an |
158 |
LVM2 partition: <path>/etc</path>, <path>/lib</path>, <path>/mnt</path>, |
159 |
<path>/proc</path>, <path>/sbin</path>, <path>/dev</path>, and <path>/root</path>. |
160 |
This way, you would still be able to log into your system (crippled, but |
161 |
still somewhat usable, as root) if something goes terribly wrong. |
162 |
</note> |
163 |
|
164 |
<p> |
165 |
Assuming the <path>/boot</path>, swap and root partitions do not use the whole |
166 |
physical disk, create a fourth partition on this disk and set it to type 8e |
167 |
(Linux LVM). If you have more physical drives you would like to use with LVM, |
168 |
create one partition on each and give them the same type (8e). |
169 |
</p> |
170 |
|
171 |
<note> |
172 |
Considering the huge size of current disks, you might consider splitting your |
173 |
hard disks into smaller partitions instead of creating a big partition that |
174 |
will be added to an LVM2 volume group in one block. LVM2 makes it easy to |
175 |
extend your volumes after all. This leaves you some unallocated partitions you |
176 |
might need to use outside of an LVM2 group. In short, don't use your disk space |
177 |
until you know you need it. As an example, one contributor had split his |
178 |
160 Gb hard disk into 8 partitions of 20 Gb each. |
179 |
</note> |
180 |
|
181 |
<p> |
182 |
Create the filesystems on <path>/dev/hda1</path> and <path>/dev/hda3</path>, |
183 |
and create and activate the swap on <path>/dev/hda2</path> as described in the |
184 |
handbook. |
185 |
</p> |
186 |
|
187 |
<p> |
188 |
Load the LVM2 <path>dm-mod</path> module. |
189 |
</p> |
190 |
|
191 |
<pre caption="Loading the LVM2 module"> |
192 |
# <i>modprobe dm-mod</i> |
193 |
</pre> |
194 |
|
195 |
<p> |
196 |
Before scanning and activating LVM, you might want to edit |
197 |
<path>/etc/lvm/lvm.conf</path> to exclude some devices. By default, LVM2 will |
198 |
scan all devices, even your CDROM which can generate error messages. In the |
199 |
following example, the line that allows scanning of all devices is replaced by |
200 |
one that rejects every device but our two IDE disks. |
201 |
</p> |
202 |
|
203 |
<pre caption="Activating LVM"> |
204 |
<comment>(Avoid scanning all devices but our disks)</comment> |
205 |
# <i>nano -w /etc/lvm/lvm.conf</i> |
206 |
<comment>(Look for the following line)</comment> |
207 |
filter = [ "a/.*/" ] |
208 |
<comment>(Replace it with the following one to scan |
209 |
/dev/hda and /dev/hdb and reject anything else)</comment> |
210 |
filter = [ "a|/dev/hd[ab]|", "r/.*/" ] |
211 |
<comment>(Save the file and quit nano)</comment> |
212 |
# <i>vgscan</i> |
213 |
Reading all physical volumes. This may take a while... |
214 |
No volume groups found |
215 |
<comment>(Make any previously set up volume groups available)</comment> |
216 |
# <i>vgchange -a y</i> |
217 |
</pre> |
218 |
|
219 |
<p> |
220 |
Prepare the partitions. |
221 |
</p> |
222 |
|
223 |
<pre caption="Preparing the partitions"> |
224 |
# <i>pvcreate /dev/hda4 /dev/hdb1</i> |
225 |
No physical volume label read from /dev/hda4 |
226 |
Physical volume "/dev/hda4" successfully created |
227 |
No physical volume label read from /dev/hdb1 |
228 |
Physical volume "/dev/hdb1" successfully created |
229 |
</pre> |
230 |
|
231 |
<p> |
232 |
Setup a volume group. A volume group is the result of combining several |
233 |
physical units into a single logical device. |
234 |
</p> |
235 |
|
236 |
<p> |
237 |
In our example, <path>/dev/hda1</path>, <path>/dev/hda2</path> and |
238 |
<path>/dev/hda3</path> are the <path>/boot</path>, swap and root partitions so |
239 |
we need to combine <path>/dev/hda4</path> and <path>/dev/hdb1</path>. It can be |
240 |
done with a single command, but, as an example, we will create our volume group |
241 |
and extend it. |
242 |
</p> |
243 |
|
244 |
<pre caption="Creating and extending a volume group"> |
245 |
<comment>(Create a volume group named vg)</comment> |
246 |
# <i>vgcreate vg /dev/hda4</i> |
247 |
/etc/lvm/backup: fsync failed: Invalid argument <comment>(Ignore this warning)</comment> |
248 |
Volume group "vg" successfully created |
249 |
<comment>(Extending an existing volume group)</comment> |
250 |
# <i>vgextend vg /dev/hdb1</i> |
251 |
/etc/lvm/backup: fsync failed: Invalid argument <comment>(Ignore this warning, again and later as well)</comment> |
252 |
Volume group "vg" successfully extended |
253 |
</pre> |
254 |
|
255 |
<p> |
256 |
Create the logical volumes. Logical volumes are the equivalent of partitions |
257 |
you would create using fdisk in a non LVM2 environment. In our example, we |
258 |
create the following partitions: |
259 |
</p> |
260 |
|
261 |
<table> |
262 |
<tr> |
263 |
<th>Directory</th> |
264 |
<th>Size</th> |
265 |
</tr> |
266 |
<tr> |
267 |
<ti>/usr</ti> |
268 |
<ti>10 GB</ti> |
269 |
</tr> |
270 |
<tr> |
271 |
<ti>/home</ti> |
272 |
<ti>5 GB</ti> |
273 |
</tr> |
274 |
<tr> |
275 |
<ti>/opt</ti> |
276 |
<ti>5 GB</ti> |
277 |
</tr> |
278 |
<tr> |
279 |
<ti>/var</ti> |
280 |
<ti>10 GB</ti> |
281 |
</tr> |
282 |
<tr> |
283 |
<ti>/tmp</ti> |
284 |
<ti>2 GB</ti> |
285 |
</tr> |
286 |
</table> |
287 |
|
288 |
<p> |
289 |
Since we are going to use LVM2, we should not worry too much about partition |
290 |
sizes because they can always be expanded as needed. |
291 |
</p> |
292 |
|
293 |
<note> |
294 |
As Terje Kvernes commented, it is easier to increase the size of a partition |
295 |
then to shrink it. You might therefore want to start with smaller partitions |
296 |
and increase their size as needed. |
297 |
</note> |
298 |
|
299 |
<pre caption="Creating and extending logical volumes"> |
300 |
# <i>lvcreate -L10G -nusr vg</i> |
301 |
Logical volume "usr" created <comment>(Further similar messages not displayed)</comment> |
302 |
# <i>lvcreate -L5G -nhome vg</i> |
303 |
# <i>lvcreate -L5G -nopt vg</i> |
304 |
# <i>lvcreate -L10G -nvar vg</i> |
305 |
# <i>lvcreate -L2G -ntmp vg</i> |
306 |
<comment>(As an example, let's extend a logical volume with 5 extra Gbytes)</comment> |
307 |
# <i>lvextend -L+5G /dev/vg/home</i> |
308 |
</pre> |
309 |
|
310 |
<p> |
311 |
Create filesystems on the logical volumes the same way you would on a regular |
312 |
partition. We use ext3 on the logical volumes but any filesystem of your |
313 |
choice will work: |
314 |
</p> |
315 |
|
316 |
<pre caption="Creating the filesystems"> |
317 |
# <i>mke2fs -j /dev/vg/usr</i> |
318 |
# <i>mke2fs -j /dev/vg/home</i> |
319 |
# <i>mke2fs -j /dev/vg/opt</i> |
320 |
# <i>mke2fs -j /dev/vg/var</i> |
321 |
# <i>mke2fs -j /dev/vg/tmp</i> |
322 |
</pre> |
323 |
|
324 |
<p> |
325 |
Mount your partitions as described in the handbook and mount your LVM2 logical |
326 |
volumes as if they were partitions. Replace the usual <path>/dev/hdxx</path> |
327 |
with <path>/dev/vg/logical_volumename</path>. |
328 |
</p> |
329 |
|
330 |
<pre caption="Mounting your logical volumes"> |
331 |
<comment>(Make sure you have mounted your root partition as described in the handbook first)</comment> |
332 |
# <i>mkdir /mnt/gentoo/usr</i> |
333 |
# <i>mount /dev/vg/usr /mnt/gentoo/usr</i> |
334 |
# <i>mkdir /mnt/gentoo/home</i> |
335 |
# <i>mount /dev/vg/home /mnt/gentoo/home</i> |
336 |
# <i>mkdir /mnt/gentoo/opt</i> |
337 |
# <i>mount /dev/vg/opt /mnt/gentoo/opt</i> |
338 |
# <i>mkdir /mnt/gentoo/var</i> |
339 |
# <i>mount /dev/vg/var /mnt/gentoo/var</i> |
340 |
# <i>mkdir /mnt/gentoo/tmp</i> |
341 |
# <i>mount /dev/vg/tmp /mnt/gentoo/tmp</i> |
342 |
</pre> |
343 |
|
344 |
<note> |
345 |
The rest of the installation handbook is mostly unchanged so we shall not |
346 |
walk you through it again except to point out differences. |
347 |
</note> |
348 |
|
349 |
<p> |
350 |
When configuring your kernel, make sure to configure your kernel to |
351 |
support LVM2 (not all 2.4 kernels do). Select the LVM2 module as follows: |
352 |
</p> |
353 |
|
354 |
<pre caption="Selecting the LVM2 module in a 2.4.x kernel"> |
355 |
Multi-device support (RAID and LVM) ---> |
356 |
[*] Multiple devices driver support (RAID and LVM) |
357 |
< > RAID support |
358 |
<comment>(Note that LVM is not selected on purpose, this was for LVM1)</comment> |
359 |
< > Logical volume manager (LVM) support |
360 |
<M> Device-mapper support |
361 |
< > Mirror (RAID-1) support |
362 |
</pre> |
363 |
|
364 |
<pre caption="Selecting the LVM2 module in a 2.6.x kernel"> |
365 |
Device Drivers ---> |
366 |
Multi-device support (RAID and LVM) ---> |
367 |
[*] Multiple devices driver support (RAID and LVM) |
368 |
< > RAID support |
369 |
<M> Device mapper support |
370 |
</pre> |
371 |
|
372 |
<p> |
373 |
The compiled module is called <path>dm-mod.ko</path> |
374 |
</p> |
375 |
|
376 |
<p> |
377 |
After you have built your kernel and installed its modules, add the following |
378 |
line to your <path>/etc/modules.autoload.d/kernel-{KV}</path> where {KV} |
379 |
represents your kernel version (2.4 or 2.6) so that the LVM2 module gets loaded |
380 |
when your machine is booted: |
381 |
</p> |
382 |
|
383 |
<pre caption="Adding the LVM2 module into /etc/modules.autoload.d/kernel-2.6"> |
384 |
# <i>nano -w /etc/modules.autoload.d/kernel-2.6</i> |
385 |
<comment>(Add the following line)</comment> |
386 |
dm-mod |
387 |
</pre> |
388 |
|
389 |
<p> |
390 |
Now, install the lvm2 package. |
391 |
</p> |
392 |
|
393 |
<impo> |
394 |
Make sure your <path>/usr/src/linux</path> link points to the kernel sources you |
395 |
are using because the lvm2 ebuild depends on the device-mapper ebuild which |
396 |
will check the presence of a required source file under |
397 |
<path>/usr/src/linux/include/linux</path>. |
398 |
</impo> |
399 |
|
400 |
<pre caption="Emerging the LVM2 package"> |
401 |
# <i>emerge lvm2</i> |
402 |
</pre> |
403 |
|
404 |
<p> |
405 |
Edit <path>/etc/lvm/lvm.conf</path> as described <uri |
406 |
link="#doc_chap2_pre2">earlier</uri>. The file you previously edited is part of |
407 |
your installation environment and will disappear after the next reboot. This |
408 |
time, you edit the real one inside your new Gentoo install. |
409 |
</p> |
410 |
|
411 |
<p> |
412 |
When editing your <path>/etc/fstab</path> file, follow the handbook and add |
413 |
your LVM2 logical volumes as needed. Again, here are a few lines needed for |
414 |
our example: |
415 |
</p> |
416 |
|
417 |
<pre caption="Extract of /etc/fstab"> |
418 |
/dev/hda1 /boot ext3 noauto,noatime 1 2 |
419 |
/dev/hda2 none swap sw 0 0 |
420 |
/dev/hda3 / ext3 noatime 0 1 |
421 |
# Logical volumes |
422 |
/dev/vg/usr /usr ext3 noatime 0 2 |
423 |
/dev/vg/home /home ext3 noatime 0 2 |
424 |
/dev/vg/opt /opt ext3 noatime 0 2 |
425 |
/dev/vg/var /var ext3 noatime 0 2 |
426 |
/dev/vg/tmp /tmp ext3 noatime 0 2 |
427 |
</pre> |
428 |
|
429 |
<p> |
430 |
When you reach the end of the installation part of the handbook, don't forget |
431 |
to umount all your LVM2 logical volumes as well and for a good measure run the |
432 |
following command before you reboot: |
433 |
</p> |
434 |
|
435 |
<pre caption="Shutting down LVM2"> |
436 |
# <i>vgchange -a n</i> |
437 |
</pre> |
438 |
|
439 |
<p> |
440 |
Restart your machine and all partitions should be visible and mounted. |
441 |
</p> |
442 |
|
443 |
</body> |
444 |
</section> |
445 |
</chapter> |
446 |
|
447 |
<chapter> |
448 |
<title>Continuing After a Reboot</title> |
449 |
<section> |
450 |
<body> |
451 |
|
452 |
<p> |
453 |
If you have interrupted the Gentoo installation at one point and want to |
454 |
continue, you need to create the volume device nodes first: |
455 |
</p> |
456 |
|
457 |
<pre caption="Reactivating the volumes"> |
458 |
# <i>vgscan --mknodes</i> |
459 |
</pre> |
460 |
|
461 |
<p> |
462 |
Installation CDs with less recent tools might need to reactivate the volumes |
463 |
instead: |
464 |
</p> |
465 |
|
466 |
<pre caption="Reactivating the volumes"> |
467 |
<comment>(Deactivate all volumes first)</comment> |
468 |
# <i>vgchange -a n</i> |
469 |
<comment>(Export all the volumes)</comment> |
470 |
# <i>vgexport -a vg</i> |
471 |
<comment>(Import all volumes)</comment> |
472 |
# <i>vgimport -a vg</i> |
473 |
<comment>(Reactivate all volumes)</comment> |
474 |
# <i>vgchange -a y</i> |
475 |
</pre> |
476 |
|
477 |
</body> |
478 |
</section> |
479 |
</chapter> |
480 |
|
481 |
<chapter> |
482 |
<title>Resources</title> |
483 |
<section> |
484 |
<body> |
485 |
|
486 |
<ul> |
487 |
<li> |
488 |
The official <uri link="http://sources.redhat.com/lvm2">LVM2 home page</uri> |
489 |
</li> |
490 |
<li> |
491 |
The <uri link="http://tldp.org/HOWTO/LVM-HOWTO">LVM Howto</uri> |
492 |
</li> |
493 |
<li> |
494 |
Daniel Robbins's articles on LVM for IBM's DeveloperWorks: <uri |
495 |
link="/doc/en/articles/lvm-p1.xml">Part 1</uri> and <uri |
496 |
link="/doc/en/articles/lvm-p2.xml">Part 2</uri> |
497 |
</li> |
498 |
<li> |
499 |
How to boot your root FS off of LVM1: |
500 |
<uri>http://www.the-infinite.org/archive/docs/lvm/howto-boot-off-root-lv.txt</uri> |
501 |
</li> |
502 |
</ul> |
503 |
|
504 |
</body> |
505 |
</section> |
506 |
</chapter> |
507 |
|
508 |
<chapter> |
509 |
<title>Acknowledgements</title> |
510 |
<section> |
511 |
<body> |
512 |
|
513 |
<p> |
514 |
Thanks <mail link="bangert@gentoo.org">Thilo Bangert</mail> and <mail |
515 |
link="terjekv@math.uio.no">Terje Kvernes</mail> for their help and comments on |
516 |
this document. |
517 |
</p> |
518 |
|
519 |
</body> |
520 |
</section> |
521 |
</chapter> |
522 |
</guide> |