首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

逻辑卷管理(2)系统准备及新卷

逻辑卷管理(2)系统准备及新卷

检查您的 Linux 发行版是否安装了 LVM2 软件包。如果还没有,就安装它(最好安装发行版附带的软件包)。
设备映射器模块必须在系统启动时装载。用 lsmod | grep dm_mod 命令检查当前是否装载了这个模块。如果没有装载,那么可能需要安装并配置更多的软件包(文档会说明如何启用 LVM2)。
如果只是想测试一下(或者挽救某个系统),那么可以使用以下命令启动 LVM2:
清单 1. 启动 LVM2 的基本命令
1
2
3
4
5
6
7
8
#this should load the Device-mapper module
modprobe dm_mod

#this should find all the PVs in your physical disks
pvscan

#this should activete all the Volume Groups
vgchange -ay




如果打算将根文件系统放在一个 LVM LV 中,那么还要注意 initial-ramdisk 映像。同样,发行版常常会负责处理这个问题 —— 在安装 LVM2 包时,它们常常会重新构建或更新 initrd 映像,在其中添加适当的内核模块和启动脚本。但是,可能需要查看发行版的文档,确保系统支持 LVM2 根文件系统。
注意,通常只有当探测到根文件系统在一个 VG 中时,initial-ramdisk 映像才会启用 LVM。这种探测常常是通过分析 root= 内核参数执行的。不同的发行版以不同的方式判断根文件系统是否在卷组中。细节参见发行版的文档。如果不确定的话,就需要检查 initrd 或 initramdisk 的配置。
创建新的卷使用您喜欢的分区工具(比如 fdisk、parted 或 gparted),创建一个供 LVM 使用的新分区。尽管 LVM 支持在整个磁盘上使用 LVM,但是 建议这么做:其他操作系统可能认为这个磁盘没有初始化,可能会破坏它!更好的方法是创建一个覆盖整个磁盘的分区。
大多数分区工具常常默认使用分区 ID 0x83(或 Linux)来创建新分区。可以使用这个默认 ID,但是为了便于组织,最好将它改为 0x8e(或 Linux LVM)。
在创建分区之后,应该会在分区表中看到一个(或多个)Linux LVM 分区:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@klausk:/tmp/a# fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1623    13036716    7  HPFS/NTFS
/dev/hda2            1624        2103     3855600   8e  Linux LVM
/dev/hda3            2104        2740     5116702+  83  Linux
/dev/hda4            3000        9729    54058725    5  Extended
/dev/hda5            9569        9729     1293232+  82  Linux swap / Solaris
/dev/hda6            3000        4274    10241374+  83  Linux
/dev/hda7            4275        5549    10241406   83  Linux
/dev/hda8            5550        6824    10241406   83  Linux
/dev/hda9            6825        8099    10241406   83  Linux
/dev/hda10           8100        9568    11799711   8e  Linux LVM

Partition table entries are not in disk order
root@klausk:/tmp/a#




现在用 pvcreate 对每个分区进行初始化:
清单 2. 分区初始化
1
2
3
4
root@klausk:/tmp/a# pvcreate /dev/hda2 /dev/hda10
  Physical volume "/dev/hda2" successfully created
  Physical volume "/dev/hda10" successfully created
root@klausk:/tmp/a#




在一个步骤中同时创建 PV 和 VG:vgcreate:
清单 3. 创建 PV 和 VG
1
2
3
root@klausk:~# vgcreate test-volume /dev/hda2 /dev/hda10
  Volume group "test-volume" successfully created
root@klausk:~#




上面的命令创建一个称为 test-volume 的逻辑卷,它使用 /dev/hda2 和 /dev/hda10 作为最初的 PV。
在创建 VG test-volume 之后,使用 vgdisplay 命令查看刚创建的 VG 的基本信息:
清单 4. 查看刚创建的 VG 的基本信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
root@klausk:/dev# vgdisplay -v test-volume
    Using volume group(s) on command line
    Finding volume group "test-volume"
  --- Volume group ---
  VG Name               test-volume
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               14.93 GB
  PE Size               4.00 MB
  Total PE              3821
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3821 / 14.93 GB
  VG UUID               lk8oco-ndQA-yIMZ-ZWhu-LtYX-T2D7-7sGKaV
   
  --- Physical volumes ---
  PV Name               /dev/hda2     
  PV UUID               8LTWlw-p1OJ-dF6w-ZfMI-PCuo-8CiU-CT4Oc6
  PV Status             allocatable
  Total PE / Free PE    941 / 941
   
  PV Name               /dev/hda10     
  PV UUID               vC9Lwb-wvgU-UZnF-0YcE-KMBb-rCmU-x1G3hw
  PV Status             allocatable
  Total PE / Free PE    2880 / 2880
   
root@klausk:/dev#




在清单 4 中,可以看到有两个 PV 被分配给这个 VG,总大小为 14.93GB,有 3,821 个 4MB 的 PE,这些 PE 都是空闲的!
既然卷组已经准备好了,就可以像使用磁盘一样用它创建分区(LV)、删除分区和重新设置分区大小 —— 注意,卷组是一个抽象实体,只有 LVM 工具集能够看到它们。使用 lvcreate 创建一个新的逻辑卷:
清单 5. 创建新的逻辑卷(分区)
1
2
3
root@klausk:/# lvcreate -L 5G -n data test-volume
  Logical volume "data" created
root@klausk:/#




清单 5 创建一个名为 data 的 5GB LV。创建这个 LV 之后,可以检查它的设备节点:
清单 6. 检查 LV 的设备节点
1
2
3
4
5
6
root@klausk:/# ls -l /dev/mapper/test--volume-data
brw-rw---- 1 root disk 253, 4 2006-11-28 17:48 /dev/mapper/test--volume-data
root@klausk:/# ls -l /dev/test-volume/data
lrwxrwxrwx 1 root root 29 2006-11-28 17:48 /dev/test-volume/data ->
/dev/mapper/test--volume-data
root@klausk:/#




还可以用 lvdisplay 命令查看 LV 的属性:
清单 7. 查看 LV 的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@klausk:~# lvdisplay /dev/test-volume/data
  --- Logical volume ---
  LV Name                /dev/test-volume/data
  VG Name                test-volume
  LV UUID                FZK4le-RzHx-VfLz-tLjK-0xXH-mOML-lfucOH
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                5.00 GB
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:4
   
root@klausk:~#




在这里可以看到,在实际使用时 LV 的名称/路径是 /dev/{VG_name}/{LV_name},比如 /dev/test-volume/data。除了用作 /dev/{VG_name}/{LV_name} 链接的目标之外,不应该在其他地方使用 /dev/mapper/{VG_name}-{LV_name} 文件。大多数 LVM 命令要求以 /dev/{vg-name}/{lv-name} 格式指定操作的目标。
建立逻辑卷之后,可以使用任何文件系统对它进行格式化,然后将它挂载在某个挂载点上:
清单 8. 挂载 LV
1
2
3
4
5
6
7
8
root@klausk:~# mkfs.reiserfs /dev/test-volume/data
root@klausk:~# mkdir /data
root@klausk:~# mount -t reiserfs /dev/test-volume/data /data/
root@klausk:~# df -h /data
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/test--volume-data
                      5.0G   33M  5.0G   1% /data
root@klausk:~#




还可以编辑 fstab(5) 文件,从而在引导时自动挂载这个文件系统:
清单 9. 自动挂载 LV
1
2
#mount Logical Volume 'data' under /data
/dev/test-volume/data   /data   reiserfs        defaults        0 2




在实际使用中,逻辑卷的表现就像一个块设备,比如可以将它用作数据库的原始分区。实际上,如果希望对数据库执行一致的备份,那么使用 LVM 快照是标准的最佳实践。
返回列表