在LVM分区上安装Ubuntu 12.04

今天在工作站上安装了Ubuntu 12.04 LTS版,安装后发现Ubuntu缺省并不使用LVM分区,而是把所有内容都安装在了根分区,个人还是习惯于将操作系统和用户数据分别放在不同的分区上,以保证数据的安全。因为LVM能够提供更加灵活的磁盘管理功能,因此打算把Ubuntu 12.04安装在LVM分区上。

关于LVM分区的更多介绍,可以参见易水博客上的Linux逻辑卷管理器(LVM)学习笔记

由于Ubuntu 12.04缺省并不支持LVM,需要采用特殊的安装步骤才能使用LVM,因此在网上找了一下Ubuntu社区给出的解决办法,具体方法如下。

1. 使用光盘启动Ubuntu

首先设置计算机BIOS,使用光盘引导,然后使用光盘启动Ubuntu Live。进入图形界面后,选择“Try Ubuntu”。

2. 安装lvm2

首先打开一个终端,运行如下命令安装lvm2:
sudo apt-get -y install lvm2

3. 设置硬盘分区

接下来需要设置硬盘分区。我的分区基本与参考文档中的分区是一样的,因此借用了它的操作步骤:在/dev/sda上分两个分区,其中/dev/sda1用来安装/boot,而/dev/sda2则用来创建LVM分区。需要注意的一点是,需要把/dev/sda2的分区类型设置为0x8e,表明这是一个Linux LVM分区。
ubuntu@ubuntu:~$ sudo fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x568311d6.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-5221, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-5221, default 5221): +1G

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (133-5221, default 133):
Using default value 133
Last cylinder, +cylinders or +size{K,M,G} (133-5221, default 5221):
Using default value 5221

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e

Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x568311d6

Device Boot Start End Blocks Id System
/dev/sda1 1 132 1060258+ 83 Linux
/dev/sda2 133 5221 40877392+ 8e Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

4. 创建LVM分区

接下来就是创建LVM分区,这里所提到的一些概念,可以参考EaswyLinux逻辑卷管理器(LVM)学习笔记

首先创建一个物理卷(PV):
sudo pvcreate /dev/sda2

然后在此物理卷上创建一个逻辑卷组(LVG):
sudo vgcreate sysvg /dev/sda2

最后在卷组上划分逻辑卷(LV):
sudo lvcreate -L 1G -n lvswap sysvg
sudo lvcreate -L 20G -n lvroot sysvg
sudo lvcreate -L 15G -n lvhome sysvg

这里创建了三个逻辑卷,分别用来安装交换分区(lvswap)、根文件系统(lvroot)以及home目录(lvhome)。
我一般会在卷组中预留一些空闲空间,这样一旦某个分区大小不太合适时,就可以随时调整。

5. 安装Ubuntu

创建完LVM分区后,就可以双击Ubuntu Live桌面上的“Install Ubuntu 12.04”,开始安装Ubuntu。在分配磁盘分区时,选择“Something else”,以便使用我们创建的LVM分区。具体操作可以看参考文档中的屏幕截图。
选择好安装分区后,就可以开始安装Ubuntu了。

6. 把lvm2安装到磁盘上的Ubuntu中

在Ubuntu安装完后,会提示你重启系统,但此时还不能重启系统,因为Ubuntu缺省不会安装lvm2包,此时重启会导致系统引导不起来。
我们需要先切换到磁盘上新安装的Ubuntu文件系统中:
sudo mount /dev/mapper/sysvg-lvroot /mnt
sudo mount /dev/mapper/sysvg-lvhome /mnt/home/
sudo mount /dev/sda1 /mnt/boot
sudo chroot /mnt

这几条命令会挂载各分区到Ubuntu Live的/mnt分区,然后chroot到/mnt。
现在我们已经位于新安装的Ubuntu文件系统中了,运行如下命令配置kernel module:
echo "dm-mod" >> /etc/modules
echo "dm-snapshot" >> /etc/modules
echo "dm-mirror" >> /etc/modules
echo "dm-mod" >> /etc/initramfs-tools/modules
echo "dm-snapshot" >> /etc/initramfs-tools/modules
echo "dm-mirror" >> /etc/initramfs-tools/modules

然后安装lvm2包:
root@ubuntu:/# apt-get -y install lvm2

7. 大功告成!

现在你可以重启了,记得把光盘拿出来。重启后就会进入我们的新安装的Ubuntu了。此时的Ubuntu,已经安装在了LVM分区上。

8. 参考文档

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/install-ubuntu-12-04-on-lvm-partition/

文章的脚注信息由WordPress的wp-posturl插件自动生成

Linux逻辑卷管理器(LVM)学习笔记

通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O操作的性能,以及提供冗余保护,它的快照功能允许用户对逻辑卷进行实时的备份。

对一般用户来讲,使用最多的是动态调整文件系统大小的功能。这样,你在分区时就不必为如何设置分区的大小而烦恼,只要在硬盘中预留出部分空闲空间,然后根据系统的使用情况,动态调整分区大小。

以下内容总结了Easwy对于LVM的理解。

在LVM中,主要有三个概念:

  • 物理卷(Physical Volume, PV): 物理卷可以是一个磁盘,也可以是磁盘中的一个分区。它为LVM提供了存储介质。
  • 逻辑卷组(Logical Volume Group, LVG): 可以把逻辑卷组想象成一个存储池,或者是逻辑硬盘。物理卷与物理卷在硬件上可以是不连续的,但把多个物理卷加入逻辑卷组后,就可以把这个逻辑卷组看成一个存储空间连续的逻辑硬盘,在这块硬盘上,可以创建多个逻辑卷(LV)。
  • 逻辑卷(Logical Volume, LV): 可以将卷组划分成若干个逻辑卷,相当于在逻辑硬盘上划分出几个逻辑分区,每个逻辑分区上都可以创建具体的文件系统。

到这里我们可以看出,原本是直接在硬盘上创建分区,然后在分区上创建文件系统。使用了LVM后,在其中插入一个逻辑层,相当于是在一块逻辑硬盘上创建逻辑分区,然后在逻辑分区上创建文件系统。

新插入一个逻辑层,对单个硬盘的读写会有一定的性能损失,但其带来的好处是巨大的。首先,逻辑分区大小不再受硬盘实际大小的限制,它可以扩展到几块硬盘上;其次,逻辑分区可以很方便的做调整大小、备份等维护操作;而且,如果系统中存在多块硬盘,通过设置逻辑卷到物理卷的映射关系(采用LVM striped mapping),可以提高I/O的读写性能,因为此时的读写是在多块硬盘上并发进行的,比对单个硬盘的读写显然要快很多。

下面是一个LVM使用的例子:

Linux下逻辑卷管理器(LVM)示例
Linux下逻辑卷管理器(LVM)的一个例子

在图中有两块硬盘,其中硬盘1分了两个分区,/dev/sda1/dev/sda2,硬盘2没有创建分区。接下来在/dev/sda2/dev/sdb上创建物理卷,然后把这两个物理卷加入到逻辑卷组vg0中,现在,逻辑卷组vg0看起来像一块很大的逻辑硬盘,然后在其中创建两个逻辑卷/dev/vg0/lv0/dev/vg0/lv1

最后,分别在/dev/sda1/dev/vg0/lv0/dev/vg0/lv1上创建文件系统,并分别把它们挂载到文件系统树中。这样看上去,逻辑卷是不是很像是一个逻辑的分区?

在逻辑卷组vg0中,还预留有一部分空间未用,如果在使用中发现某个逻辑卷空间不够用了,可以在不停机的情况下,直接调整逻辑卷及其上的文件系统的大小。对服务器来讲,这是简单但非常有用的功能。

更多内容,请阅读易水博客上的其它文章。

[ 参考文档 ]

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/linux-lvm-learning-notes/

文章的脚注信息由WordPress的wp-posturl插件自动生成