Gentoo LVM2安装指南
1.
简介
本指南使用两个IDE硬盘做范例。这意味着你需要根据自己的实际情况,对磁盘、分区名以及分区大小等信息做些更改。
警告:
本文并不想成为一篇LVM2学习指南。它只是一个小笔记,作为Gentoo安装手册(第一部分)的补充。请务必在你动手安装之前阅读Gentoo安装手册。
|
系统需求
如果你是全新安装gentoo系统,你需要有一张带LVM2支持的启动光盘,如Gentoo安装光盘。你可以在我们镜像站点的/releases/x86/current/installcd目录下找到x86架构的Gentoo安装光盘。一般情况下,其他架构的安装光盘也可以在此找到。
如果你想在一个正在运行的、有着空余硬盘空间的系统上安装LVM2,你需要启用LVM2模块(dm-mod)。这个模块已被包含在gentoo-sources之中。你在稍后的文字中会读到编译内核以使LVM2正常工作的相关内容。
并非所有Gentoo提供的2.4内核都支持LVM2!
分区
在我们的范例系统中有两个IDE硬盘,它们的分区是这样的:
- /dev/hda1 -- /boot
- /dev/hda2 -- (交换分区)
- /dev/hda3 -- / (根分区)
- /dev/hda4 -- 将被用作LVM2
- /dev/hdb1 -- 将被用作LVM2
重要:
请特别注意分区的名字,毕竟a和b常常被看错,那些数字也很容易混淆。一个小小的失误将导致一整个分区被错误地覆盖掉。手下留神!
|
OK, 开始吧……
2.
安装
先照着安装手册做,直到第4章 ── 准备磁盘
使用安装手册上提及的fdisk,不过将分区划分成上面范例中的那样。它只是个范例,请调整它以符合自己的需求。
创建建一个小小的/boot分区(hda1)。在这个例子中,/boot不会被LVM2管理。这个分区里存放着内核和引导程序。相信一个64M的分区足够存放不少内核的了。
创建一个交换分区 (hda2)。
创建根(root)分区(hda3)。如果你有兴趣尝试把根分区到LVM下管理(虽然我们不建议这样做),你可以参考本文末尾列出的资源。那里有一个mini-howto会告诉该如何下手。如果将/opt
/usr /home
/var和/tmp都放在LVM2卷组(vg)中的话,根分区也不用分得太大。在我们的例子中,1GB就足够了。
注意:
我们不建议你将下列目录放在LVM2分区上:/etc, /lib,
/mnt, /proc, /sbin,
/dev以及/root。这样一来,如果有什么可怕的错误(系统严重受损,但root还勉强可用)发生了,你还可以登入系统。
|
假如/boot,交换分区和根分区还没能用完整个硬盘,可以创建第四个分区,并把它的类型设为8e(Linux
LVM)。如果你还有其他供LVM使用的硬盘,请在每个硬盘上都创建一个分区,并把分区类型设为8e。
注意:
考虑到现在的硬盘都非常大,你也许想将你的硬盘分成几个小分区,而不是一个大的,然后全部添加到LVM2卷组。LVM2让分区扩充容量变得很简单,所以你可以留下一些未配置的分区,天知道你以后会不会在LVM2以外的地方用到它们。简而言之,在还没有确定拿分区做什么用之前,别先把它们用光了。举例来说吧,我们的一位投稿者就将他的160 Gb硬盘分成了8个20 Gb的分区来用。
|
按照安装手册的步骤,建立分区/dev/hda1和/dev/hda3的文件系统,并建立且激活交换分区/dev/hda2。
加载LVM2模块dm-mod。
代码 2.1: 加载LVM2模块 |
# modprobe dm-mod
|
在扫描并激活LVM之前,你也许需要先编辑/etc/lvm/lvm.conf文件将一些设备排除在外。因为在默认情况下,LVM2会扫描所有的设备,包括会产生错误信息的光驱。在下面的例子中,我们替换掉了允许扫描所有设备的那行,改为除两个IDE硬盘外,不扫描其他任何设备。
代码 2.2: 激活LVM |
# nano -w /etc/lvm/lvm.conf
filter = [ "a/.*/" ]
filter = [ "a|/dev/hd[ab]|", "r/.*/" ]
# vgscan
Reading all physical volumes. This may take a while...
No volume groups found
# vgchange -a y
|
准备磁盘分区。
代码 2.3: 准备磁盘分区 |
# pvcreate /dev/hda4 /dev/hdb1
No physical volume label read from /dev/hda4
Physical volume "/dev/hda4" successfully created
No physical volume label read from /dev/hdb1
Physical volume "/dev/hdb1" successfully created
|
创建一个卷组。卷组是一些物理单元的逻辑集合。
范例中/dev/hda1,/dev/hda2和/dev/hda3分别是/boot,交换分区和根分区。所以我们需要合并的是/dev/hda4和/dev/hdb1。尽管这用一个命令就可以完成,作为示范,我们还是先创建一个卷组,然后再扩充它。
代码 2.4: 创建和扩充卷组 |
# vgcreate vg /dev/hda4
/etc/lvm/backup: fsync failed: Invalid argument
Volume group "vg" successfully created
# vgextend vg /dev/hdb1
/etc/lvm/backup: fsync failed: Invalid argument
Volume group "vg" successfully extended
|
创建逻辑卷。逻辑卷类似于在非LVM2环境中用fdisk创建的磁盘分区。在这个例子中,我们创建了如下分区:
| 目录 |
大小 |
| /usr |
10 GB |
| /home |
5 GB |
| /opt |
5 GB |
| /var |
10 GB |
| /tmp |
2 GB |
由于我们正要使用的是LVM2,所以不必太在意分区的大小,因为扩充容量将会很容易。
注意:
正如Terje Kvernes所评价的,增大分区要比缩小它容易得多。我想你可能会想要从小分区开始,然后在需要的时候才扩充它们。
|
代码 2.5: 创建和扩充逻辑卷 |
# lvcreate -L10G -nusr vg
Logical volume "usr" created
# lvcreate -L5G -nhome vg
# lvcreate -L5G -nopt vg
# lvcreate -L10G -nvar vg
# lvcreate -L2G -ntmp vg
# lvextend -L+5G /dev/vg/home
|
在逻辑卷中创建文件系统的步骤和在普通分区中相同。我们以使用ext3为例,当然你选用其他文件系统也行:
代码 2.6: 创建文件系统 |
# mke2fs -j /dev/vg/usr
# mke2fs -j /dev/vg/home
# mke2fs -j /dev/vg/opt
# mke2fs -j /dev/vg/var
# mke2fs -j /dev/vg/tmp
|
按照安装手册中挂载分区的方法挂载你创建的LVM2逻辑卷,但请将/dev/hdxx替换为/dev/vg/逻辑卷名。
代码 2.7: 挂载逻辑卷 |
# mkdir /mnt/gentoo/usr
# mount /dev/vg/usr /mnt/gentoo/usr
# mkdir /mnt/gentoo/home
# mount /dev/vg/home /mnt/gentoo/home
# mkdir /mnt/gentoo/opt
# mount /dev/vg/opt /mnt/gentoo/opt
# mkdir /mnt/gentoo/var
# mount /dev/vg/var /mnt/gentoo/var
# mkdir /mnt/gentoo/tmp
# mount /dev/vg/tmp /mnt/gentoo/tmp
|
注意:
接下来的步骤跟安装手册中提到的差不多,在这里我们只列出一些有差异的地方。
|
请在配置内核时确认已启用了LVM2支持(并非所有的2.4内核都支持)。选择下列LVM2模块:
代码 2.8: 选择2.4.x内核中的LVM2模块 |
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
< > RAID support
< > Logical volume manager (LVM) support
<M> Device-mapper support
< > Mirror (RAID-1) support
|
代码 2.9: 选择2.6.x内核中的LVM2模块 |
Device Drivers --->
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
< > RAID support
<M> Device mapper support
|
编译完成的模块名为dm-mod.ko
在编译完内核并安装好模块之后,将下面这行加入你的/etc/modules.autoload.d/kernel-{KV}中,其中{KV}表示你的内核版本(2.4或2.6),以便在开机时自动加载LVM2:
代码 2.10: 在/etc/modules.autoload.d/kernel-2.6中添加LVM2模块 |
# nano -w /etc/modules.autoload.d/kernel-2.6
dm-mod
|
现在,安装lvm2包。
重要:
请确定你已将/usr/src/linux链接到了你现在使用的内核源代码,因为lvm2
ebuild所依赖的device-mapper
ebuild会用到/usr/src/linux/include/linux下的源文件。
|
代码 2.11: emerging lvm2 软件包 |
# emerge lvm2
|
按照前面的方法编辑文件/etc/lvm/lvm.conf。你先前修改过的那个配置文件是宿主系统中的文件,重启之后就不存在了。你得在新安装的Gentoo系统中再重新编辑一次。
在编辑/etc/fstab文件时,照着安装手册上说的,加入你的LVM2逻辑卷。重申一下,以下内容是我们范例中所必需的:
代码 2.12: /etc/fstab文件的部分内容 |
/dev/hda1 /boot ext3 noauto,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
# Logical volumes
/dev/vg/usr /usr ext3 noatime 0 2
/dev/vg/home /home ext3 noatime 0 2
/dev/vg/opt /opt ext3 noatime 0 2
/dev/vg/var /var ext3 noatime 0 2
/dev/vg/tmp /tmp ext3 noatime 0 2
|
当你来到安装手册中最后的安装步骤时,最好不要忘了卸载你所有的LVM2逻辑卷,并在重启前执行以下命令:
代码 2.13: 关闭LVM2 |
# vgchange -a n
|
重新开机,所有的分区都将被正确地显示与挂载。
3.
重启后如何继续
如果你在某处中断了Gentoo的安装又想继续的话,你需要先创建分区节点:
代码 3.1: 重新激活分区 |
# vgscan --mknodes
|
在缺少最新工具的安装光盘中,很可能需要用如下方法来重新启用分区:
代码 3.2: 重新激活分区 |
# vgchange -a n
# vgexport -a
# vgimport -a
# vgchange -a y
|
4.
相关资源
5.
特别感谢
非常感谢Thilo Bangert以及Terje Kvernes为本文提供的帮助和建议。
本文档的内容遵循知识共享-署名-相同方式共享许可协议
|