2007年8月24日

有备无患:Gentoo LVM2 安装笔记(下)

3. 安装LVM2


安装全新的 Gentoo Linux 系统之前,首先要准备一张支持 LVM2 的启动光盘。我手头的是Gentoo LiveCD 2007.0,启动时记得加载 LVM2 模块:gentoo dolvm2

然后,照着葫芦画瓢直到Gentoo 安装手册《第四章 - 准备磁碟》。按照Gentoo LVM2 安装笔记(上)中的既定计划分区,我用的是 fdisk,你也可以用 fdisk 或者其它分区工具。使用 fdisk的具体步骤请参照安装手册。结果:


# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 320.0 GB, 320071851520 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot  Start   End     Blocks     Id   System
/dev/sda1    1       9       72261      83   Linux
/dev/sda2    10      72      506047+    83   Linux
/dev/sda3    73      197     1004062+   83   Linux
/dev/sda4    198     38913   310986270  5    Extended
/dev/sda5    198     16246   128913561  83   Linux
/dev/sda6    16247   18800   20514973+  83   Linux
/dev/sda7    18801   21354   20514973+  83   Linux
/dev/sda8    21355   23908   20514973+  83   Linux
/dev/sda9    23909   26462   20514973+  83   Linux
/dev/sda10   26463   29016   20514973+  83   Linux
/dev/sda11   29017   31570   20514973+  83   Linux
/dev/sda12   31571   34124   20514973+  83   Linux
/dev/sda13   34125   36678   20514973+  83   Linux
/dev/sda14   36679   38913   17952606   83   Linux

完成分区后,先初始化 Swap 置换分区。


# mkswap /dev/hda2
# swapon /dev/hda2

接着加载 LVM2 dm-mod 模组,并激活 LVM。


# modprobe dm-mod

(别让 LVM 扫描硬盘以外的设备浪费时间)
# vi /etc/lvm/lvm.conf
(找到这一行)
    filter = [ "a/.*/" ]
(把它替换为下面这一行)
    filter = [ "a|/dev/sda|", "r/.*/" ]
(ZZ,存盘并退出 vi)

# vgscan
  Reading all physical volumes.  This may take a while...
  No volume groups found

再注意一次哟,/dev/sda1、/dev/sda2、/dev/sda3 分别对应的 /boot、Swap 置换分区和主分区不要放入 LVM2 volume group。只要用 /dev/sda5 创建一个 LVM2 volume group - lvg。


# pvcreate /dev/sda5
  No physical volume label read from /dev/sda5
  Physical volume "/dev/sda5" successfully created

(建立個叫做 lvg 的卷群组)
# vgcreate lvg /dev/sda5
  /etc/lvm/backup: fsync failed: Invalid argument (无视这警告)
  Volume group "lvg" successfully created

如果想还扩充 lvg,可以用下一节将要介绍的 vgextend。但是,增加一个分区的大小通常比缩小它来的容易,所以在分配空间的时候不妨先做一个十足十的“吝啬鬼”。接下来我们要关心的是为这些个逻辑卷分配空间。



# lvcreate -L10G -nusr lvg
  Logical volume "usr" created
# lvcreate -L100G -nhome lvg
  Logical volume "home" created
# lvcreate -L5G -nopt lvg
  Logical volume "opt" created
# lvcreate -L10G -nvar lvg
  Logical volume "var" created
# lvcreate -L3G -ntmp lvg
  Logical volume "tmp" created

BTW,像 Gentoo LVM2 安装文档里介绍的一样,把 160G 的硬盘等分成8块,也是个非常不错的主意。或许还会用到 lvextend 命令,它的具体用法也可以参考下一节的例子。

然后格式化所有的分区。除了/boot 用 ext2 以外,所有分区都强烈推荐使用 reiserfs 文件格式。因为 reiserfs 支持在线修改分区容量,这样就省去先 umount 后 resize 的麻烦事了。


#mke2fs /dev/sda1
#mkreiserfs /dev/sda3
#mkreiserfs /dev/lvg/usr
#mkreiserfs /dev/lvg/home
#mkreiserfs /dev/lvg/opt
#mkreiserfs /dev/lvg/var
#mkreiserfs /dev/lvg/tmp

格式化完所有分区之后,按着安装手册里说的,先挂载主分区,后再挂载其他的分区。


# mount /dev/sda3 /mnt/gentoo/
# cd /mnt/gentoo/
# mkdir boot
# mkdir usr
# mkdir home
# mkdir var
# mkdir opt
# mkdir tmp
# mount /dev/sda1 boot/
# mount /dev/lvg/usr usr/
# mount /dev/lvg/home home/
# mount /dev/lvg/var var/
# mount /dev/lvg/opt opt/
# mount /dev/lvg/tmp tmp/

接下来回到 Gentoo 安装手册的《第五章 - Gentoo 安装档案》继续照葫芦画瓢——安装 Gentoo Linux。但记得把 LVM2 支持加入到 Linux 内核中。我用 genkernel,需要运行:


# genkernel --lvm2 --menuconfig all

编译好内核与模组后,还要在启动时加载 dm-mod 模块。


#echo "dm-mod" >> /etc/modules.autoload.d/kernel-2.6

注意:把 /usr/src/linux 链接到使用中的内核源码,因为 lvm2 ebuild 所使用 device-mapper ebuild 会用到 /usr/src/linux/include/linux 下的源码。接下来 emerge lvm2


# emerge -av lvm2

然后就像在 LiveCD 中一样,修改 /etc/lvm/lvm.conf 文件。


# vi /etc/lvm/lvm.conf
(找到这一行)
    filter = [ "a/.*/" ]
(把它替换为下面这一行)
    filter = [ "a|/dev/sda|", "r/.*/" ]
(ZZ,存盘并退出 vi)

最后设置 /etc/fstab。这是我的现成品:


# cat /etc/fstab

/dev/sda1      /boot   ext2       noauto,noatime  1 2
/dev/sda2      none    swap       sw              0 0
/dev/sda3      /       reiserfs   noatime,notail  0 1

# Logical volumes
/dev/lvg/usr   /usr    reiserfs   noatime,notail  0 2
/dev/lvg/home  /home   reiserfs   noatime,notail  0 2
/dev/lvg/opt   /opt    reiserfs   noatime,notail  0 2
/dev/lvg/var   /var    reiserfs   noatime,notail  0 2
/dev/lvg/tmp   /tmp    reiserfs   noatime,notail  0 2

注意:如果在 Gentoo 安装过程中被迫重启了,又希望继续使用刚才的逻辑卷群组的话,可以使用 vgscan 命令查找之前设置的节点


# vgscan --mknodes

最后安装完成后,用 vgdisplay 和 pvdisplay 查看 LVM2 的信息,就能知道用了哪些物理卷、卷群组还剩下多少预留空间等。


# vgdisplay -v lvg

    Using volume group(s) on command line
    Finding volume group "lvg"
  --- Volume group ---
  VG Name                lvg
  System ID            
  Format                 lvm2
  Metadata Areas         3
  Metadata Sequence No   9
  VG Access              read/write
  VG Status              resizable
  MAX LV                 0
  Cur LV                 5 
  Open LV                5
  Max PV                 0
  Cur PV                 3
  Act PV                 3
  VG Size                159.62 GB
  PE Size                4.00 MB
  Total PE               40862
  Alloc PE / Size        40448 / 158.00 GB
  Free  PE / Size        414 / 1.62 GB
  VG UUID                iHQRao-cmp4-gZ5l-kbA3-G1Yr-Fkk5-0Lt4my
  
  --- Logical volume ---
  LV Name                /dev/lvg/usr
  VG Name                lvg
  LV UUID                CMTe0N-42s0-4U5I-5quW-Pnk2-Uj4U-SPlo0y
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                10.00 GB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0
  
  --- Logical volume ---
  LV Name                /dev/lvg/home
  VG Name                lvg
  LV UUID                tfR1uD-1K0u-X5v6-Y5bs-FX2E-4y6o-A39St0
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                130.00 GB
  Current LE             33280
  Segments               4
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:1
  
  --- Logical volume ---
  LV Name                /dev/lvg/opt
  VG Name                lvg
  LV UUID                pAiUjY-2xe5-tpPr-pQvA-WF7z-OYt4-TEO0IG
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                5.00 GB
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:2
  
  --- Logical volume ---
  LV Name                /dev/lvg/var
  VG Name                lvg
  LV UUID                MCrrFa-owTk-OAVT-Gbh1-SzXA-Dt7m-3GLGTf
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                10.00 GB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:3
  
  --- Logical volume ---
  LV Name                /dev/lvg/tmp
  VG Name                lvg
  LV UUID                TOk0di-NcvR-2Dm2-Tthy-e33D-9pwI-f9O6Ia
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                3.00 GB
  Current LE             768
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:4
  
  --- Physical volumes ---
  PV Name               /dev/sda5    
  PV UUID               84Dfoi-zu8P-9j1I-4QO1-ICaL-QvYP-W8gWqZ
  PV Status             allocatable
  Total PE / Free PE    31472 / 0
  
  PV Name               /dev/sda6    
  PV UUID               ZwR0w3-0zg6-DNBj-XdDm-um9I-CG2l-5u1702
  PV Status             allocatable
  Total PE / Free PE    5008 / 414
  
  PV Name               /dev/sda14    
  PV UUID               uxPnzS-ziKj-ujXf-RUNY-QvY9-6rr6-DQnzt5
  PV Status             allocatable
  Total PE / Free PE    4382 / 0

标签: ,

3 条评论:

Anonymous 匿名 说...

为什么要分那么多区进行扩展?
lvm 设计就是可以自动伸缩的,多区的好处是什么呢?

2008-6-17 18:44:00
Anonymous 匿名 说...

macaw_w@hotmail.com

2008-6-17 18:45:00
Blogger wyt 说...

这是个人喜好,不是必须的

当然也可以在需要扩展的时候,再用fdisk分区。这样做的话,一般要重新启动

预先分好区,省去了重新启动的步骤,用下来似乎也没什么坏处

2008-6-17 19:00:00

发表评论

指向此文章的链接:

创建链接

<< 主页