LVM Mirrors 的创建及故障恢复(原创)
作者: 曲文庆 日期: 2008-10-11 10:05
操作系统:CentOS 5.2
lvm>pvdisplay
--- Physical volume ---
PV Name /dev/hda8
VG Name vg00
PV Size 7.67 GB / not usable 4.05 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 1962
Free PE 1962
Allocated PE 0
PV UUID sgwj7p-bvEE-WX5G-EFYH-01Yb-0BHN-CTYxR9
--- Physical volume ---
PV Name /dev/hdc8
VG Name vg00
PV Size 7.67 GB / not usable 4.05 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 1962
Free PE 1962
Allocated PE 0
PV UUID oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w
lvm>vgdisplay
--- Volume group ---
VG Name vg00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 61
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 15.33 GB
PE Size 4.00 MB
Total PE 3924
Alloc PE / Size 0 / 0
Free PE / Size 3924 / 15.33 GB
VG UUID fn8mmz-wNoY-Kurv-HtDq-3ghG-rCVI-zAyPQS
pv和vg的创建我就不多说了,请参考基础篇的操作,下面说说如何创建及故障恢复LVM Mirrors。
一、 没有创建过LV的情况下,创建Mirrors
lvm>lvcreate –m1 –corelog –l1962 –n lv00 vg00
两个主要参数:
-m1 创建一个镜像,如果要创建多个镜像,用mn,当然要有n个pv来支持
--corelog 将日志创建到内存中。如果没有这个参数,日志需要单独一个pv来创建(也就是说需要3个pv来创建镜像)。上面命令变为lvcreate –m1 –l1962 –n lv00 vg00 /dev/hda8 /dev/hdc8 /dev/hdd8(hdd8为假设新增的pv),镜像日志保存在hdd8上。
二、 已经创建过LV的情况下,改造成Mirrors
假设已经用下述命令创建了PV
lvm>lvcreate –l1962 –n lv00 vg00 /dev/hda8
该LV全部创建到hda8上了
下面将lv00转换成镜像模式
lvm>lvconvert –m1 –corelog vg00/lv00 /dev/hdc8
三、查看创建情况
lvm> lvs -a -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
lv00 vg00 mwi-a- 7.66G 3.11 lv00_mimage_0(0),lv00_mimage_1(0)
[lv00_mimage_0] vg00 iwi-ao 7.66G /dev/hda8(0)
[lv00_mimage_1] vg00 iwi-ao 7.66G /dev/hdc8(0)
当copy%提示100%时候,镜像盘同步完毕。
然后就是创建文件系统、挂载使用了
四、 关机、让hdc硬盘离线,模拟硬件故障。
如果前面创建的LV是做到自加载的fstab文件里去的话,会导致系统无法正确引导,提示进入修复模式进行修复。现假设是手工加载方式,系统正常引导,但是LVM启动不起来。
lvm>pvdisplay
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find all physical volumes for volume group vg00.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find all physical volumes for volume group vg00.
Can't read vg00: skipping
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find all physical volumes for volume group vg00.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find all physical volumes for volume group vg00.
Can't read vg00: skipping
lvm>pvscan
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
PV /dev/hda8 VG vg00 lvm2 [7.66 GB / 0 free]
PV unknown device VG vg00 lvm2 [7.66 GB / 0 free]
Total: 2 [15.33 GB] / in use: 2 [15.33 GB] / in no VG: 0 [0 ]
上述提示找不到/dev/hdc8设备。
基于上述情况,做下列操作进行修复
lvm> vgreduce --mirrorsonly --removemissing vg00
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find all physical volumes for volume group vg00.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find all physical volumes for volume group vg00.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
Couldn't find device with uuid 'oqWfok-Ktuj-zKAq-IdkH-kl3Y-wIbf-nApl2w'.
WARNING: Unable to determine mirror sync status of vg00/lv00.
WARNING: Bad device removed from mirror volume, vg00/lv00
WARNING: Mirror volume, vg00/lv00 converted to linear due to device failure.
Wrote out consistent volume group vg00
lvm> pvdisplay
--- Physical volume ---
PV Name /dev/hda8
VG Name vg00
PV Size 7.67 GB / not usable 4.05 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 1962
Free PE 0
Allocated PE 1962
PV UUID gwj7p-bvEE-WX5G-EFYH-01Yb-0BHN-CTYxR9
lvm> pvscan
PV /dev/hda8 VG vg00 lvm2 [7.66 GB / 0 free]
Total: 1 [7.66 GB] / in use: 1 [7.66 GB] / in no VG: 0 [0 ]
vgdisplay、lvdisplay显示都正常,LV从Mirrors模式转换成linear模式工作。更换完毕硬盘后,参照第二步,将LV转换成Mirrors方式。
故障修复后重启可能会遇到“Warning: Volume Group vg00 is not consistent”问题提示,
lvm>vgchange –ay vg00
Volume group "vg00" inconsistent
Inconsistent metadata copies found - updating to use version 89
Volume group vg00 metadata is inconsistent
Volume group for uuid not found: fn8mmzwNoYKurvHtDq3ghGrCVIzAyPQSAxOy1I19Tlsh5Ow67mVlEo2a2CwoSQi1
1 logical volume(s) in volume group "vg00" now active
lvm>vgdisplay
--- Volume group ---
VG Name vg00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 95
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 7.66 GB
PE Size 4.00 MB
Total PE 1962
Alloc PE / Size 1962 / 7.66 GB
Free PE / Size 0 / 0
VG UUID fn8mmz-wNoY-Kurv-HtDq-3ghG-rCVI-zAyPQS
lvm> lvdisplay
--- Logical volume ---
LV Name /dev/vg00/lv00
VG Name vg00
LV UUID AxOy1I-19Tl-sh5O-w67m-VlEo-2a2C-woSQi1
LV Write Access read/write
LV Status available
# open 0
LV Size 7.66 GB
Current LE 1962
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0
同时导致LVM无法使用。对比vgchange和vgdisplay输出的uuid,发现两者不同(vgchange提示的uuid是vg uuid+lv uuid)。从网上查找若干资料,也没有找到解决方案。想删除vg重做,也提示失败。经过多次测试,发现创建一个新PV后,症状消失。分析应该是创建了一个新pv后,自动重置了vg的uuid,所以恢复正常了。通过检测对比,发现情况确实如此,具体原因不明。
Nginx配置PHP的一个关键注意点 (2009-02-02 17:20)
今冬第一雪 (2008-12-21 16:13)
油价终于下调了 (2008-12-19 09:25)
SSH连接慢问题解决 (2008-12-02 16:37)
Linux下的Memcache安装 (2008-12-02 16:26)
搭建Lighttpd的SSL模块(原创) (2008-11-05 16:32)
让PHP5支持java(原创) (2008-11-04 20:35)
yum Could not find any working storages 问题处理(原创) (2008-11-04 20:23)
让CentOS支持4G以上内存(原创) (2008-11-04 20:05)