Linux下使用LVM(Logical Volume Manager)(二)


4.2 Sun disk labels
仅在SUN的SPARC系统中有此问题。
5 建立LVM用例
在本节中,将在3块SCSI硬盘:/dev/sda,/dev/sdb,/dev/sdc上按步建立LVM。
5.1 准备分区
首先要做的是初始化硬盘,建立PV,这将会删除硬盘上的原有数据。在此,用整个硬盘为PV:
# pvcreate /dev/sda
# pvcreate /dev/sdb
# pvcreate /dev/sdc
pvcreate在每个硬盘的起始端建立卷组描述区( volume group descriptor area, VGDA)。
5.2 创建卷组
利用上面三个PV建立卷组:
# vgcreate test_vg /dev/sda /dev/sdb /dev/sdc/
然后可用vgdisplay 查看/验证卷组的信息:
# vgdisplay
--- Volume Group ---
VG Name               test_vg
VG Access             read/write
VG Status             available/resizable
VG #                  1
MAX LV                256
Cur LV                0
Open LV               0
MAX LV Size           255.99 GB
Max PV                256
Cur PV                3
Act PV                3
VG Size               1.45 GB
PE Size               4 MB
Total PE              372
Alloc PE / Size       0 / 0
Free  PE / Size       372/ 1.45 GB
VG UUID               nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y
其中最重要的前三条要正确,且VS size是以上三个硬盘容量之和。
5.3  建立LV
在确定卷组test_vg正确后,就可在其上创建LV。LV的大小可在VG大小范围内任意选择,如同在硬盘上分区。
5.3.1  建立线性方式LV
在test_vg上建立一个大小为1GB的线性方式LV:
# lvcreate -L1G -ntest_lv test_vg
lvcreate -- doing automatic backup of "test_vg"
lvcreate -- logical volume "/dev/test_vg/test_lv" successfully created
5.3.2  建立交错方式LV
在test_vg上建立一个大小为1GB的交错方式LV,交错参数为4KB:
# lvcreate -i3 -I4 -L1G -ntest_lv test_vg
lvcreate -- rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PE
lvcreate -- doing automatic backup of "test_vg"
lvcreate -- logical volume "/dev/test_vg/test_lv" successfully created
注意:如果使用 -i2参数,则LV将仅使用test_vg中的两块硬盘。
5.4 建立文件系统
在LV test_lv创建后,就可在其上建立文件系统,
如,ext2/ext3系统:
# mke2fs /dev/test_vg/test_lv
如,reiserfs:
# mkreiserfs /dev/test_vg/test_lv
5.5 测试文件系统
安装LV:
# mount /dev/test_vg/test_lv /mnt
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda1              1311552    628824    616104  51% /
/dev/test_vg/test_lv   1040132        20    987276   0% /mnt
则可以通过/mnt访问LV。
6 使用snapshot 做备份
例 如我们要对卷组"test_vg"每晚进行数据库备份,就要采用snapshot类型的卷组。这种卷组是其它卷组的一个只读拷贝,它含有在创建 snapshot卷组时原卷组的所有数据,这意味你可以备份这个卷组而不用担心在备份过程中数据会改变,也不需要暂时关闭数据库卷以备份。

目标: 在安装后创建逻辑卷和阵列的技巧
步骤一: 使用LVM创建逻辑卷
1. 使用fdisk在未分区空间创建四个新分区,类型为Linux LVM (0x8e), 尺寸一样,为了加快速度,不要大于1G. 退出时使用w保存更改.不要重启动.
2. 编辑/etc/modules.conf中包含以下行(RHEL 可以不用做以下修改):
alias block-major-58 lvm-mod
alias char-major-109 lvm-mod
使用当前内核创建initrd
mkinintrd –f –v /boot/initrd-$(uname –r).img $(uname –r)
这个命令将使系统在启动时加载lvm-mod模块,启用LVM
3. 重启动系统
4. 用root登录, 运行vgscan初始化LVM配置文件
5. 使用pvcreate将LVM分区初始化为物理卷.假设分区为
/dev/hda9
/dev/hda10
/dev/hda11
/dev/hda12
命令为: pvcreate /dev/hda9 /dev/hda10 /dev/hda11 /dev/hda12
可以使用pddisplay查看分区信息
6. 然后创建卷组test0. 使用默认4MB的扩展尺寸,只包含一个物理卷
vgcreate test0 /dev/hda9
可以使用pddisplay查看信息
7. 创建一个小逻辑卷,不要占用所有空间. 使用vgdisplay的VG size和 PE/size信息,比如创建一个40M的逻辑卷:
lvcreate –L 40M –n data test0
可以使用 lvdisplay /dev/test0/data 确认命令执行了.
8. 在逻辑卷上创建ext3文件系统: mke2fs –j /dev/test0/data
9. 创建/data目录. mount /dev/test0/data /data
10. 复制文件到/data. 可以创建一个大文件: dd if=/dev/zero f=/data/bigfile bs=1024 count=20000
使用df检查/data的磁盘使用情况和剩余空间. 确认能够正常使用.可以编辑/etc/fstab来自动加载/data.重启动测试
步骤二: 使用逻辑卷
1. 首先, 卸载/data. 使用e2fsadm扩展分区尺寸: e2fsadm –L+50M /dev/test0/data
2. 重加载/dev/test0/data到/data, 确认文件. 运行df检查/data的磁盘使用情况和剩余空间.
3. 使用剩余扩展创建第二个逻辑分区. 运行vgdisplay查看PE /size,格式类似于166/644MB,这表示卷组包含166个扩展,664MB剩余空间. 创建一个占用166个扩展逻辑卷/dev/test0/scratch, 命令为:
lvcreate –l 166 –n scratch test0
4. 格式化新卷: mke2fs –j /dev/test0/scratch
5. 把未使用的物理卷加入卷组 vgextend test0 /dev/hda10
6. 如果再次运行vgdisplay, 可以看到增加的扩展.用20MB的扩展定义新逻辑卷.
e2fsadm –L+20M /dev/test0/scratch
使用lvdisplay和vgdisplay确认成功
7. 接下来用/data的只读快照创建新的逻辑卷. 首先用只读选项加载/data
mount –o remount,ro /data
8. 快照不需要和父卷尺寸一致,我们假设不需要保存太多数据,可以设置为5M
lvcreate –s –L 5M –n snap /dev/test0/data
9. 现在重加载/data为读写状态
mount –o remount,rw /data
10. 创建新加载点/snap, 使用 mount /dev/test0/snap /snap 比较/data和/snap,两者内容应该一致
11. 运行命令 for I in$(seq 1 10); do echo $1 > /data/$1; done 将在/data下创建十个文件,名称从1到10. 这个命令不影响/snap, 可以用lvdisplay /dev/test0/snap检查
12. 当快照逻辑卷不能容纳改变的块时,将被LVM自动删除,即使当前在加载状态.(避免这一情况的方法是尺寸和父卷一致,或者及时用lvextend扩展尺寸)可以通过以下方式看到这一现象:
rm /data/bigfile
for i in $(seq 1 10000); do echo $1 > /data/$1; done
13. 在/var/log/messages里可以看到类似信息:
Mar 19 16:30:02 station12 kernel: lvm --giving up to snapshot
/dev/test0/data on /dev/test0/snap: out of space
运行ls /snap. 快照已经不可用了,目录是空的.运行 lvdisplay /dev/test0/snap,和11步的结果比较.
14. 做完快照之后,如果数据已经备份,或者快照已被删除,都需要被卸载,否则会造成轻微的性能下降, 使用 umount /snap; lvremove /dev/test0/snap
在进行阵列试验以前清除LVM卷:
删除所有/etc/fstab中增加的记录
umount /dev/test0/data; umount /dev/test0/scratch
lvremove /dev/test0/data; lvremove /dev/test0/scratch
vgchange –an test0; vgremove test0

 

相应排错的文章收集:

同事打电话询问LVM故障的处理办法,其实我对LVM也是一知半解,只是恰好在用户现场解决过几次有关LVM的故障。
这次故障的发生是因为不小心,把grub的信息写入到了阵列设备上,而阵列设备是用来做LVM的,导致的结果是pvscan可以得到pv信息,lvscan也能得到lv信息,但是 vgscan却不能。

使用vgcfgrestore命令恢复后,正常了。为了重现用户的现象,我做了另外一个实验,不是vg信息找不到,而是找不到对应 uuid号的设备,过程如下:
1)创建pv,vg,lv

[root@lancy ~]# pvcreate /dev/mdp0
Physical volume "/dev/mdp0" successfully created
[root@lancy ~]# vgcreate vg01 /dev/mdp0
Volume group "vg01" successfully created
[root@lancy ~]# lvcreate  -n lv01 -L+200M vg01
Logical volume "lv01" created
[root@lancy ~]# mkfs.ext3 /dev/mapper/vg01-lv01  -m 0
[root@lancy ~]# mount /dev/mapper/vg01-lv01 /misc
[root@lancy ~]# cp mdadm-2.5.2-1.i386.rpm /misc/
[root@lancy ~]# umount /misc

2)做一个破坏者

[root@lancy ~]# dd if=/dev/zero f=/dev/mdp0 bs=512 count=3
3+0 records in
3+0 records out
1536 bytes (1.5 kB) copied,7.6469e-05 秒,20.1 MB/秒
[root@lancy ~]# pvscan
No matching physical volumes found
[root@lancy ~]# vgscan
Reading all physical volumes.  This may take a while...
No volume groups found

pv,vg,lv都找不到了,但是vg01-lv01这个设备还是存在的,而且也能mount。不过估计重启后就找不到了。于是恢复。
3)尝试老办法

[root@lancy ~]# vgcfgrestore -f /etc/lvm/backup/vg01 -n vg01 -t /dev/mdp0
Test mode: Metadata will NOT be updated.
Couldn't find device with uuid 'fPsp4D-aaxu-YMGZ-gqGn-sbUq-fZE0-YnCbwz'.
Couldn't find all physical volumes for volume group vg01.
Restore failed.

看来vgcfgrestore不是万能的,怎么办?
4)重写uuid

[root@lancy bin]# pvcreate --uuid fPsp4D-aaxu-YMGZ-gqGn-sbUq-fZE0-YnCbwz --restorefile /etc/lvm/archive/vg01_00001.vg /dev/mdp0
Couldn't find device with uuid 'fPsp4D-aaxu-YMGZ-gqGn-sbUq-fZE0-YnCbwz'.
Physical volume "/dev/mdp1" successfully created
[root@lancy bin]# vgcfgrestore vg01
Restored volume group vg01
[root@lancy bin]# lvs
LV   VG   Attr   LSize   Origin Snap%  Move Log Copy%
lv01 vg01 -wi--- 100.00M
[root@lancy bin]# vgscan
Reading all physical volumes.  This may take a while...
Found volume group "vg01" using metadata type lvm2

哈哈,到此搞定!

 

相关文章2

不知道前因后果(大部分情况下,用户都这么描述),重启机器后,发现逻辑卷有问题,执行pvscan的结果是这样的:

# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1" of VG "ora_yz"     [49.94 GB / 17.81 GB free]
pvscan -- inactive PV "/dev/sdc1" of VG "ora_yz2"    [99.94 GB / 6 GB free]
pvscan -- inactive PV "/dev/sdd"   is associated to unknown VG "ora_yz2_02" (run vgscan)
pvscan -- ACTIVE   PV "/dev/sde1" of VG "ora_yz"     [49.94 GB / 17.81 GB free]
pvscan -- ACTIVE   PV "/dev/sdf1" of VG "ora_yz2"    [99.94 GB / 6 GB free]
pvscan -- inactive PV "/dev/sdg"   is associated to unknown VG "ora_yz2_02" (run vgscan)
pvscan -- total: 6 [580 GB] / in use: 6 [580 GB] / in no VG: 0 [0]


上面已经说名为ora_yz2_02的VG出现问题了,继续vgscan,给出的结果如下:

# vgscan
vgscan -- reading all physical volumes (this may take a while...)
vgscan -- found active volume group "ora_yz"
vgscan -- found active volume group "ora_yz2"
vgscan -- found inactive volume group "ora_yz2_02"
vgscan -- volume group "ora_yz2_02" reuses an existing logical volume number;
please vgexport/vgimport that VG or use option -f
vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created
vgscan -- WARNING: This program does not do a VGDA backup of your volume groups

上面的描述信息似乎是说ora_yz2_02这个VG重复使用了一个逻辑卷号(logical volume number),不太理解这个逻辑卷号是什么意思,google一下,也没有找到有价值的消息。
当然解决办法很简单,按照屏幕的提示执行vgscan -f 就好了。
不过我我查询了vgscan的联机手册,并没有发现这个-f的参数,不知道这个-f,是不是--force的意思,从源代码着手吧,结果源代码里vgscan命令中也没有这个参数。
于 是打电话给去解决这个问题的同事,询问是不是使用的vgscan -f 解决的,得到肯定的答复后,我突然想起一件事情,马上询问,操作系统是什么版本,结果是redflag dc4.1,原来是LVM,而不是LVM2,想当然的把它当作了LVM2,浪费了不少时间,LVM1中vgscan确实有-f这个参数,是 --forcenumbers的意思。其man手册这么描述的(vgscan(8))

引用

If used volume group and/or logical volume minor numbers are found during scan, replace them. This will potentially cause problems for NFS exported filesystems on logical volumes with changed numbers.
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25897606/viewspace-757174/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25897606/viewspace-757174/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值