- 论坛徽章:
- 0
|
声明:本人是一名普通的Linux fans,对一切基于Linux的技术都倍感兴趣,只要有利于你我,有利于国家,有利于民族。特此
将来自于http://www.siliconvalleyccie.com/linux-adv/lvm.htm的内容翻译为中文。同时,本人对在实际中使用该技术造成的
一切不良后果均不负责。最后,本人翻译水平有限,加上时间有限(一天),不妥之处望大家见谅。希望本文能抛砖引玉。
(某些部分,为使语句通顺,有部分删减和填充,请与原文对照。)
正文
Logical Volume Manager (LVM)是一项允许用户来对硬盘的分区大小进行重新分配,而不需要同时对相应硬盘的分区
表进行调整的一项安全且的实用技术,该项技术是基于Linux平台的。这样,如果你遇到分区大小不能满足需求时,
你就可以通过使用该工具来调整分区的大小,而不是一股脑儿的将文件系统重新都转移到新的磁盘上,或者来重新安装
系统,重新分配空间。
LVM术语
Physical Volume--物理卷
物理卷(PV)是在LVM中使用的与物理磁盘分区非常相似的一个概念。
Logical Volume--逻辑卷
任意磁盘上的任意物理卷(PVs)可以聚集成为一个逻辑卷(LV)。在LVM中,逻辑卷类似于“虚拟磁盘”。
Volume Groups--卷组
逻辑卷可以再细分为卷组。每个卷组会象磁盘分区一样被格式化,因此卷组就象在虚拟磁盘上的虚拟分区。
这儿看上去这项技术好象有点复杂,但如果在实际当中无法更改磁盘分区的大小时,你可以通过调整卷组
的大小来改变创建新的虚拟分区的大小。LVM的另一个优点就是你可以在线操作磁盘,而不会影响硬盘上的
其他任何非LVM分区。
Physical Extent--物理扩展区
在将实际当中的磁盘分区加入LV时,这些分区将被分为被称作物理扩展区(PES)的数据块。因为你
不总是以GB来分配VG的大小,这样就可以用几个PEs来定义VGs的大小,由此可见PEs的重要性。
配置LVM
范例背景描述
在该范例中,/home文件系统被mount在/dev/hde5上,但已经没有更多的空间来存储数据。我们需要添加一块
新的硬盘/dev/hdf且将其一半的空间分配给/dev/hde5来扩展/home的大小。/dev/hdf只有一个分区/dev/hdf1。
前期准备
系统环境
2.4-series kernel 已内建支持LVM,同时应查看系统是否安装了LVM的管理包“rpm -qa | grep lvm" (本人添加)
数据备份
因为在建立LVM的过程中会破坏所有PVs上的数据,所以应使用tar命令或其他方式来备份/home中的数据。
unmount /home
为确保/home中数据为当前最新,需确认所有的用户已经下线。
>; 然后切换系统至单用户模式
[root@bigboy root]# init 1
>; umount /home
[root@bigboy root]# umount /home
确认已有分区的类型
你需要确认每一个LVM分区的类型为8e(Linux LVM)。可以用“fdisk -l”来查看各分区的类型。以下范例使用/dev/hde来显示
但/home所在分区为非LVM分区。
[root@bigboy root]# fdisk -l /dev/hde
Disk /dev/hde: 4311 MB, 4311982080 bytes
16 heads, 63 sectors/track, 8355 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hde1 1 4088 2060320+ fd Linux raid autodetect
/dev/hde2 4089 5713 819000 83 Linux
/dev/hde3 5714 6607 450576 83 Linux
/dev/hde4 6608 8355 880992 5 Extended
/dev/hde5 6608 7500 450040+ 83 Linux <---
/dev/hdf1 7501 8355 430888+ 83 Linux
[root@bigboy root]#
启动FDISK
>; 你可以使用fdisk来更改分区的类型。以下是范例。
[root@bigboy root]# fdisk /dev/hde
The number of cylinders for this disk is set to 8355.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
>; 将分区的ID改为8e
Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)
Command (m for help):
>; 确认更改已生效
Command (m for help): p
Disk /dev/hde: 4311 MB, 4311982080 bytes
16 heads, 63 sectors/track, 8355 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hde1 1 4088 2060320+ fd Linux raid autodetect
/dev/hde2 4089 5713 819000 83 Linux
/dev/hde3 5714 6607 450576 83 Linux
/dev/hde4 6608 8355 880992 5 Extended
/dev/hde5 6608 7500 450040+ 8e Linux LVM
/dev/hdf1 7501 8355 430888+ 8e Linux LVM
Command (m for help):
>; 保存更改的信息
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@bigboy updates]#
运行vgscan
在下面的步骤中,系统将扫描系统中的任何新的LVM分区,并在/etc目录中自动创建LVM的配置文件。以下是范例。
[root@bigboy root]# vgscan
vgscan -- reading all physical volumes (this may take a while...)
vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created
vgscan -- WARNING: This program does not do a VGDA backup of your volume group
[root@bigboy root]#
定义逻辑卷
用pvcreate初始化目标分区。这将抹掉分区上的所有数据以备下一步骤。请在运行该命令前备份相应分区上的
所有的数据。
[root@bigboy root]# pvcreate /dev/hde5
pvcreate -- physical volume "/dev/hde5" successfully created
[root@bigboy root]# pvcreate /dev/hdf1
pvcreate -- physical volume "/dev/hdf1" successfully created
[root@bigboy root]#
为PVS创建一个VG
o vgcreate命令用于将两个PV绑定为一个VG。LVM会使操作系统将该VG当做一个新的硬盘。
o 在我们的范例中,我们将该VG命名为“lvm-hde”
[root@bigboy root]# vgcreate lvm-hde /dev/hdf1 /dev/hde5
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "lvm-hde"
vgcreate -- volume group "lvm-hde" successfully created and activated
[root@bigboy root]#
从VG中创建一个LV
下面的步骤将VG分为LVs。其中使用的命令为lvcreate。就象硬盘由数据块构成,LVs由PEs构成。
在创建LV前你必须要知道可用的PEs的数量。此时,要用vgdisplay命令。
[root@bigboy root]# vgdisplay lvm-hde
--- Volume group ---
VG Name lvm-hde
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 848 MB
PE Size 4 MB
Total PE 212
Alloc PE / Size 0 / 0
Free PE / Size 212 / 848 MB
VG UUID W7bgLB-lAFW-wtKi-wZET-jDJF-8VYD-snUaSZ
[root@bigboy root]#
命令显示由212个PEs是可以使用的。我们将使用全部的212个PEs在“lvm-hde”VG中创建一个名为“lvm0”
的LV。
[root@bigboy root]# lvcreate -l 212 lvm-hde -n lvm0
lvcreate -- doing automatic backup of "lvm-hde"
lvcreate -- logical volume "/dev/lvm-hde/lvm0" successfully created
[root@bigboy root]#
格式化VG
一旦创建VG,我们就可以将相应的LV格式化。
[root@bigboy root]# mkfs -j /dev/lvm-hde/lvm0
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
108640 inodes, 217088 blocks
10854 blocks (5.00%) reserved for the super user
First data block=0
7 block groups
32768 blocks per group, 32768 fragments per group
15520 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@bigboy root]#
Mount VG
下面的步骤就简单了
标示VG
>; 用e2label命令将该VG标示为/lvm0。
[root@bigboy root]# e2label /dev/lvm-hde/lvm0 /lvm0
创建mount点。
>; 创建一个mount目录/mnt/lvm。
[root@bigboy root]# mkdir /mnt/lvm
更新/etc/fstab
>; 我们将更新/etc/fstab文件。加入以下内容。
LABEL=/lvm0 /mnt/lvm ext3 defaults 1 2
mount卷
>; “mount -a”命令将读取/etc/fstab文件并mount所有的没有被mount的设备。在mount完后,我们可以
列出目录的内容来测试我们的操作结果。
[root@bigboy root]# mount -a
[root@bigboy root]# ls /mnt/lvm
lost+found
[root@bigboy root]#
创建一个到/home的符号链接
你需要创建一个到/home的指向/mnt/lvm的符号链接。
[root@bigboy root]# ln -s /mnt/lvm /home
恢复数据
现在将备份的数据恢复到/home
退出单用户模式。
用“init 3”或“init 5”返回原始状态。
(全文完) |
|