|
楼主 |
发表于 2003-3-22 00:14:51
|
显示全部楼层
6.4 删除snapshot 卷
在完成备份后,就可卸载并删除snapshot卷。
# umount /mnt/test_vg/dbbackup
# lvremove /dev/test_vg/dbbackup
lvremove -- do you really want to remove "/dev/test_vg/dbbackup"? [y/n]: y
lvremove -- doing automatic backup of volume group "test_vg"
lvremove -- logical volume "/dev/test_vg/dbbackup" successfully removed
7 更换卷组硬盘
由于某种原因,需要用新的硬盘替代卷组中的旧硬盘,如用一SCSI硬盘替换IDE硬盘,其步骤为:
7.1 准备/初始化新硬盘
首先用pvcreate命令初始化新的硬盘,如使用整个硬盘:
# pvcreate /dev/sdf
pvcreate -- physical volume "/dev/sdf" successfully created
7.2 加入卷组
把新硬盘加入卷组:
# vgextend test_vg /dev/sdf
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "test_vg"
vgextend -- volume group "test_vg" successfully extended
7.3 数据搬家
在移除旧硬盘前,要把其上的数据转移到新硬盘上。在转移数据时,不要求卸载文件系统,但建议在数据转移前进行备份,以防转移进程中意外导致数据丢失。
pvmove用来实现数据转移,根据数据量的多少,它可能要使用大量的时间,并可降低逻辑卷的性能,因此要在系统不太忙时操作。
# pvmove /dev/hdb /dev/sdf
pvmove -- moving physical extents in active volume group "test_vg"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved
7.4 移除未用硬盘
当数据被转移到其它硬盘后,就可以从卷组中删除这块不再使用的硬盘:
# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "test_vg"
vgreduce -- volume group "test_vg" successfully reduced by physical volume:
vgreduce -- /dev/hdb
从此,卷组test_vg不再使用IDE硬盘/dev/hdb,这块硬盘可以从机器中拆下或用作它途。
8 迁移卷组到其它系统
把一个卷组转移到其它系统是很容易的(如更换服务器),这要用命令vgexport与vgimport。
8.1 卸载文件系统
为整体搬迁卷组,应首先把它从文件系统中卸载,如:
# unmount /mnt/design/users
8.2 设置卷组为非活动状态
把卷组从内核中卸载,以避免任何对它可能的操作:
# vgchange -an test_vg
vgchange -- volume group "test_vg" successfully deactivated
8.3 Export 卷组
这个操作不是必须的,便它可以防止系统对卷组的访问:
# vgexport test_vg
vgexport -- volume group "test_vg" sucessfully exported
当机器关机后,构成卷组的硬盘就可被转移到新的服务器上。
8.4 Import 卷组
在新的服务器上,可用pvscan查看卷组情况,如在这台计算机上,硬盘新的设备为/dev/sdb,使用pvscan可有:
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1" is in EXPORTED VG "test_vg" [996 MB / 996 MB free]
pvscan -- inactive PV "/dev/sdb2" is in EXPORTED VG "test_vg" [996 MB / 244 MB free]
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
现可以import卷组test_vg (同时也激活它)以安装其上的文件系统
# vgimport test_vg /dev/sdb1 /dev/sdb2
vgimport -- doing automatic backup of volume group "test_vg"
vgimport -- volume group "test_vg" successfully imported and activated
8.5 安装文件系统
# mkdir -p /mnt/design/users
# mount /dev/test_vg/users /mnt/design/users
在完成以上操作后,原卷组在新的服务器上就可使用了。
9 分割卷组
这种情况是:需要在系统中加入新的卷组,但没有其它可用新硬盘,而已有的卷组中还有大量空间可用。如向系统加入一个"design"卷组。
9.1 检查可用空间
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE PV "/dev/sda" of VG "dev" [1.95 GB / 0 free]
pvscan -- ACTIVE PV "/dev/sdb" of VG "sales" [1.95 GB / 1.27 GB free]
pvscan -- ACTIVE PV "/dev/sdc" of VG "ops" [1.95 GB / 564 MB free]
pvscan -- ACTIVE PV "/dev/sdd" of VG "dev" [1.95 GB / 0 free]
pvscan -- ACTIVE PV "/dev/sde" of VG "ops" [1.95 GB / 1.9 GB free]
pvscan -- ACTIVE PV "/dev/sdf" of VG "dev" [1.95 GB / 1.33 GB free]
pvscan -- ACTIVE PV "/dev/sdg1" of VG "ops" [996 MB / 432 MB free]
pvscan -- ACTIVE PV "/dev/sdg2" of VG "dev" [996 MB / 632 MB free]
pvscan -- total: 8 [13.67 GB] / in use: 8 [13.67 GB] / in no VG: 0 [0]
我们决定把/dev/sdg1与/dev/sdg2分配组design,但首先要把其上的物理块移到其它卷的空闲空间中(如把卷组dev移到/dev/sdf,卷组ops移到/dev/sde)。
9.2 从选定硬盘移出数据
由于硬盘上的逻辑卷仍在使用,故首先要转移它们的数据。
把所有在使用的物理块从/dev/sdg1上转移到/dev/sde,及从/dev/sdg2转移到/dev/sdf。
# pvmove /dev/sdg1 /dev/sde
pvmove -- moving physical extents in active volume group "ops"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "ops"
pvmove -- 141 extents of physical volume "/dev/sdg1" successfully moved
# pvmove /dev/sdg2 /dev/sdf
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "dev"
pvmove -- 91 extents of physical volume "/dev/sdg2" successfully moved
9.3 创建新卷组
现在把/dev/sdg2从卷组dev从分割出并加入到新卷组design中。我们可用vgreduce与vgcreate完成工作,但vgsplit此时更方便:
# vgsplit dev design /dev/sdg2
vgsplit -- doing automatic backup of volume group "dev"
vgsplit -- doing automatic backup of volume group "design"
vgsplit -- volume group "dev" successfully split into "dev" and "design"
9.4 移除剩余的卷
接下来的工作 把/dev/sdg1从卷组ops中分出并加入卷组design:
# vgreduce ops /dev/sdg1
vgreduce -- doing automatic backup of volume group "ops"
vgreduce -- volume group "ops" successfully reduced by physical volume:
vgreduce -- /dev/sdg1
# vgextend design /dev/sdg1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "design"
vgextend -- volume group "design" successfully extended
9.5 建立新逻辑卷及文件系统
在卷组design上建立逻辑卷,为今后的方便,现只使用一部分空间:
# lvcreate -L750M -n users design
lvcreate -- rounding up size to physical extent boundary "752 MB"
lvcreate -- doing automatic backup of "design"
lvcreate -- logical volume "/dev/design/users" successfully created
# mke2fs /dev/design/users
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
96384 inodes, 192512 blocks
9625 blocks (5.00<!-- ) reserved for the super user
First data block=0
6 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mkdir -p /mnt/design/users
# mount /dev/design/users /mnt/design/users/
现在就可使用卷组design。为方便使用,可把下面一行加入文件/etc/fstab中:
/dev/design/user /mnt/design/users ext2 defaults 1 2
10 转变根文件系统为LVM
注意:强烈要求在进行下面的操作前对系统进行备份,并且把/文件系统建立在LVM上会导致系统升级很复杂。
在下面的例子中,系统除了/boot外都安装在同一个分区中,文件系统的情况为:
/dev/hda1 /boot
/dev/hda2 swap
/dev/hda3 /
进行转换的一个必要条件是硬盘上还有足够的空间给分区/dev/hda4创立LVM并把/分区的内容都复制到LVM上,否则:
1./分区还有至少一半空间空闲,可以缩减/分区,并把分出的空间划分到分区/dev/hda4;
为方便可用GNU parted工具:ftp://ftp.gnu.org/pub/gnu/parted ... 成这个操作;
2.硬盘上已无足够空间,必须使用第二块硬盘,如/dev/hdb。
在完成以上准备及备份系统后,可继续以下步骤:
1.确认使用的Linux内核支持LVM,并且在编译时设置了 CONFIG BLK DEV RAM 与 CONFIG BLK DEV INITRD 。
2.设置/dev/hda4分区类型为LVM(8e):
# 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
3.设置LVM:
"初始化LVM (vgscan)
# vgscan
"转变分区为PV:
# pvcreate /dev/hda4
"建立卷组:
# vgcreate vg /dev/hda4
"建立逻辑卷用以存放根系统:(这里假设空间为250MB)
# lvcreate -L250M root vg
4.在逻辑卷上建立文件系统并把系统复制到其上:
# mke2fs /dev/vg/root
# mount /dev/vg/root /mnt/
# find / -xdev | cpio -pvmd /mnt
5.修改新系统的fstab文件/mnt/etc/fstab,使/安装到/dev/vg/root:
/dev/hda3 / ext2 defaults 1 1
改变为:
/dev/vg/root / ext2 defaults 1 1
6.创建LVM初始化RAM盘:
# lvmcreate_initrd
此处要确认为lvmcreate_init给出正确的initrd image文件名,它应在/boot/ 目录下。
7. 在/etc/lilo.conf 中为LVM加入新入口项,其形式如下:
image = /boot/KERNEL_IMAGE_NAME
label = lvm
root = /dev/vg/root
initrd = /boot/INITRD_IMAGE_NAME
ramdisk = 8192
此处 KERNEL IMAGE NAME是支持LVM的内核,INITRD IMAGE NAME 指由lvmcreate_initrd建立的initrd image。如果LVM的配置很多,可以把ramdisk设置的大一些:此处为8192,缺省为4096。在lvmcrate_initrd的输出中有如下一行:
lvmcreate_initrd -- making loopback file (6189 kB)
其中括号中的数值为实际所需大小。
8.运行LILO,设置BOOT扇区:
# lilo
9.重启计算机,在LILO提示符处输入"lvm" 启动计算机,此时系统的根文件系统是新建立的逻辑卷。此后可在LILO配置文件/etc/lilo.conf中加入以下一行:
default=lvm
并运行lilo设置缺省启动项为lvm。
如果系统未能正常启动,可能的原因是内核不支持LVM、initrd image不正确等等。
10.在正常启动后,就可把硬盘其它分区:/dev/hda3加入LVM。
"首先设置分区类型为 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
11 共享LVM卷
LVM不支持物理共享访问,这会导致数据的丢失。
在使用fibre-channel 或shared-SCSI 的环境中,多台计算机以物理方式直接访问一组硬盘,于是可以使用LVM把这些硬盘分为不同的逻辑卷。如果需要共享数据,则应使用GFS。
12 参考文献
AJ Lewis,LVM HOWTO,(http://tldp.org/HOWTO/LVM-HOWTO/),Sistina Software, Inc。 |
|