今天工程侧的兄弟反馈一个问题,LVM分区在安装完成重启后发现无法挂载和识别,主机环境为slse11 sp3,通过查看和处理,现在将结果记录下.
一、在线解决
1、通过lvscan查看lv信息,代码如下:
phpfensi.com:~ # lvscan inactive '/dev/vgteas/lvteasdata' [2.72 TiB] inherit
发现lv信息是inactive状态.
2、通过vgchange激活卷组并重启挂载,代码如下:
- phpfensi.com:~#vgchange-ayvgteas
- 1logicalvolume(s)involumegroup"vgteas"nowactive
- phpfensi.com:~#df-hP
- FilesystemSizeUsedAvailUse%Mountedon
- /dev/cciss/c0d0p540G920M37G3%/
- udev63G188K63G1%/dev
- tmpfs63G72K63G1%/dev/shm
- /dev/cciss/c0d0p19.9G186M9.2G2%/boot
- /dev/cciss/c0d0p938G9.9G26G28%/home
- /dev/cciss/c0d0p12259G772M245G1%/onip/teastore
- /dev/cciss/c0d0p1199G1.2G93G2%/teasredo
- phpfensi.com:~#mount-a
- phpfensi.com:~#df-hP
- FilesystemSizeUsedAvailUse%Mountedon
- /dev/cciss/c0d0p540G920M37G3%/
- udev63G188K63G1%/dev
- tmpfs63G72K63G1%/dev/shm
- /dev/cciss/c0d0p19.9G186M9.2G2%/boot
- /dev/cciss/c0d0p938G9.9G26G28%/home
- /dev/cciss/c0d0p12259G772M245G1%/onip/teastore
- /dev/cciss/c0d0p1199G1.2G93G2%/teasredo
- /dev/mapper/vgteas-lvteasdata2.7T202M2.6T1%/teasdata
发现分区可以重新挂上了.
二、规避方法
(1)设置boot.lvm开机自启动
LVM is "inactive" on first reboot after installation,避免该问题重现,可以从以下两方法如手.
1、查看boot.lvm服务的是否默认随系统load,代码如下:
- phpfensi.com:~#/etc/init.d/boot.lvmstatus
- unknown
- phpfensi.com:~#chkconfig--list|greplvm
- lvm_wait_merge_snapshot0:off1:on2:off3:off4:off5:off6:offS:on
看到状态是unknow,也就是没有随机启动,这里需要注意的是直接chkconfig --list是无法直接查看到boot.lvm服务的.
2、设置boot.lvm服务开机自启动,代码如下:
- phpfensi.com:~#chkconfigboot.lvm
- boot.lvmoff
- phpfensi.com:~#chkconfigboot.lvmon
3、启动boot.lvm服务,代码如下:
- phpfensi.com:~#/etc/init.d/boot.lvmstart
- Waitingforudevtosettle...
- ScanningforLVMvolumegroups...
- Readingallphysicalvolumes.Thismaytakeawhile...
- Foundvolumegroup"vgteas"usingmetadatatypelvm2
- ActivatingLVMvolumegroups...
- PARTIALMODE.Incompletelogicalvolumeswillbeprocessed.
- 1logicalvolume(s)involumegroup"vgteas"nowactive
- done
启动后可以发现,这里自动发现了vgteas卷组.
4、同redhat略有不同的是,在suse下有一部分服务在rcx.d(x为0-6)运行级别下没有一些系统相关的服务,这部分服务在/etc/init.d目录下可以找到,不过其控制是否开机加载是在/etc/init.d/boot.d 目录下的,代码如下:
- phpfensi.com:~#ls/etc/rc.d/boot.d
- K01boot.complianceK01boot.klogK01boot.udev_retryK04boot.localfsS02boot.rootfsckS13boot.fuseS14boot.ldconfigS17boot.kdump
- K01boot.cycleK01boot.ldconfigK02boot.cleanupK06boot.rootfsckS03boot.clockS13boot.klogS14boot.quota
- K01boot.debugfsK01boot.lvm_monitorK02boot.clockK08boot.device-mapperS04boot.device-mapperS13boot.lvm_monitorS14boot.sysctl
- K01boot.efivarsK01boot.procK02boot.loadmodulesK09boot.udevS04boot.loadmodulesS13boot.procS15boot.cleanup
- K01boot.fuseK01boot.quotaK02boot.localnetS01boot.debugfsS10boot.localfsS13boot.scpmS15boot.ipconfig
- K01boot.ipconfigK01boot.scpmK02boot.swapS01boot.efivarsS12boot.complianceS13boot.swapS16boot.apparmor
- K01boot.kdumpK01boot.sysctlK03boot.apparmorS01boot.udevS13boot.cycleS13boot.udev_retryS16boot.localnet
(2),修改lvm 的默认配置文件,以下是lvm配置文件的默认配置,代码如下:
- phpfensi.com:~#cat/etc/sysconfig/lvm
- ##Path:System/Filesystems/LVM
- ##Description:LVMconfiguration
- ##Type:string
- ##Default:""
- #
- #ThisvariableallowstoonlyactivatetheLVMvolumegroupslistedat
- #bootup.Ifitisempty,allLVMvolumegroupsareactivatedatbootup.
- #Thisvariableneedssettingonlyunderveryspecialcircumstances.
- #ForalmostallstandardLVMinstallationsitcansafelystayempty.
- #
- LVM_VGS_ACTIVATED_ON_BOOT=""
- ##Path:System/Filesystems/LVM
- ##Description:LVMconfiguration
- ##Type:string
- ##Default:"disable"
- #
- #ThisvariableallowsnewlydiscoveredVGtobeactivatedautomatically
- #viaudevrules.Setto"enable"toturnthisfeatureon.
- #
- LVM_ACTIVATED_ON_DISCOVERED="disable"
从上面的注释说明来看,第二个参数设置成enable可以自动发现一些新创建的lvm分区并设置为active状态,这里将上面的disable改为enable,代码如下:
- phpfensi.com:~#sed-i's/LVM_ACTIVATED_ON_DISCOVERED="disable"/LVM_ACTIVATED_ON_DISCOVERED="enable"/g'/etc/sysconfig/lvm
三、其他可能的原因及参考
在网上也查到一些其他原因可能会引起以上的情况出现.
情况1:uuid重复.
- Problem(Abstract)
- IfadiskwithLogicalVolumeManager(LVM)onitismountedtotheoriginalmachinewiththesamedisk,oneormoreduplicateUniversalUniqueIdentifiers(UUID)arecreated
具体可以参看ibm站点上的技术文章,该问题貌似是redhat5等一些版本上存在的一个bug.
情况2:安装时未使用默认安装,导致未开机加载.
- Thesystemisnotinstalledthroughthedefualtinstaller,insteadbootstrapped
- throughzypperandtheninstalledadditionalpatternsthroughYaSTandmightbe
- thecausetheLVMnotloading;
具体参看opensuse上的文档,这里的情况2,个人理解应该就是由于boot.lvm服务未开机自启动的原因,由于水平有限,并未能理解opensuse这个参考页上最后部分想表示的意思.