![]() | 备份您的系统 |
---|---|
强烈建议您在尝试将根文件系统转换为 LVM 1 之前,对您的系统进行完整备份。 |
![]() | 升级复杂性 |
---|---|
在 LVM 1 上拥有根文件系统会显著增加升级过程的复杂性(取决于您的发行版),因此不应轻易尝试。 特别是,您必须考虑如何确保 LVM 1 内核模块(如果您没有将 LVM 1 编译到内核中)以及 vgscan/vgchange 工具在升级之前、期间和之后可用。 |
![]() | 恢复复杂性 |
---|---|
在 LVM 1 上拥有根文件系统会显著增加损坏文件系统的恢复复杂性。 如果您丢失了 initrd,则将很难启动您的系统。 您将需要一个包含内核、LVM 1 模块和 LVM 1 工具以及任何恢复损坏文件系统所需工具的恢复盘。 请务必定期备份并拥有最新的备用启动方法,以便恢复 LVM 1。 |
在此示例中,整个系统安装在单个根分区中,/boot 除外。 该系统有一个 2 GB 的磁盘,分区如下:
/dev/hda1 /boot /dev/hda2 swap /dev/hda3 / |
/ 分区覆盖了 /boot 和 swap 未使用的所有磁盘空间。 此过程的一个重要先决条件是根分区小于半满(以便可以在逻辑卷中创建其副本)。 如果不是这种情况,则应使用第二个磁盘驱动器。 在这种情况下,过程类似,但无需缩小现有根分区,并且示例中应将 /dev/hda4 替换为(例如)/dev/hdb1。
要做到这一点,最简单的方法是使用 GNU parted。 此软件允许您增长和缩小包含文件系统的分区。 可以使用 resize2fs 和 fdisk 来完成此操作,但 GNU parted 使其不易出错。 它可能包含在您的发行版中,如果没有,您可以从 ftp://ftp.gnu.org/pub/gnu/parted 下载。
一旦您的系统上安装了 parted 并且您已备份系统
运行 parted 以缩小根分区。 这样做是为了在磁盘上有足够的空间来完整复制到逻辑卷中。 在此示例中,一个 1.8 GB 的分区被缩小到 1 GB。 这将显示磁盘上分区的大小和名称
# parted /dev/hda (parted) p . . . |
现在调整分区大小
(parted) resize 3 145 999 |
创建一个新分区
(parted) mkpart primary ext2 1000 1999 |
退出 parted
(parted) q |
将新创建分区上的分区类型从 Linux 更改为 LVM (8e)。 Parted 不理解 LVM 1 分区,因此必须使用 fdisk 完成此操作。
# fdisk /dev/hda Command (m for help): t Partition number (1-4): 4 Hex code (type L to list codes): 8e Changed system type of partition 4 to 8e (Unknown) Command (m for help): w |
初始化 LVM 1 (vgscan)
# vgscan |
将新分区制作为 PV
# pvcreate /dev/hda4 |
创建一个新的卷组
# vgcreate vg /dev/hda4 |
创建一个逻辑卷来保存新的根目录。
# lvcreate -L250M -n root vg |
在逻辑卷中创建一个文件系统,并将根文件复制到其中。
# mke2fs /dev/vg/root # mount /dev/vg/root /mnt/ # find / -xdev | cpio -pvmd /mnt |
编辑新根目录上的 /mnt/etc/fstab,以便将 / 挂载在 /dev/vg/root 上。 例如
/dev/hda3 / ext2 defaults 1 1 |
/dev/vg/root / ext2 defaults 1 1 |
在 /etc/lilo.conf 中为 LVM 1 添加一个条目。 这应类似于以下内容
image = /boot/KERNEL_IMAGE_NAME label = lvm root = /dev/vg/root initrd = /boot/INITRD_IMAGE_NAME ramdisk = 8192 |
lvmcreate_initrd -- making loopback file (6189 kB) |
您也应该将这个新的 lilo.conf 复制到新根文件系统中的 /etc 中。
# cp /etc/lilo.conf /mnt/etc/ |
重启 - 在 LILO 提示符下键入 "lvm"。 系统应使用新创建的逻辑卷重启进入 Linux。
如果这有效,那么您应该通过在 /etc/lilo.conf 的第一部分中添加以下行,使 lvm 成为默认的 LILO 引导目标
default=lvm |
如果它不起作用,则正常重启并尝试诊断问题。 这可能是 lilo.conf 中的输入错误,或者初始 RAM 磁盘或其内核中 LVM 1 不可用。 仔细检查启动时生成的消息。
将磁盘的其余部分添加到 LVM 1 中。当您对这个设置感到满意时,您可以将旧的根分区添加到 LVM 1 并分布到整个磁盘上。
首先将分区类型设置为 8e (LVM)
# fdisk /dev/hda Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Unknown) Command (m for help): w |
将其转换为 PV 并将其添加到卷组
# pvcreate /dev/hda3 # vgextend vg /dev/hda3 |