今天工程側的兄弟反饋一個問題,LVM分區在安裝完成重啟後發現無法掛載和識別,主機環境為slse11 sp3。通過查看和處理,現在將結果記錄下。
一、線上解決
1、通過lvscan查看lv資訊
代碼如下 |
複製代碼 |
111cn.net:~ # lvscan inactive '/dev/vgteas/lvteasdata' [2.72 TiB] inherit
|
發現lv資訊是inactive狀態。
2、通過vgchange啟用卷組並重啟掛載
代碼如下 |
複製代碼 |
111cn.net:~ # vgchange -a y vgteas 1 logical volume(s) in volume group "vgteas" now active 111cn.net:~ # df -hP Filesystem Size Used Avail Use% Mounted on /dev/cciss/c0d0p5 40G 920M 37G 3% / udev 63G 188K 63G 1% /dev tmpfs 63G 72K 63G 1% /dev/shm /dev/cciss/c0d0p1 9.9G 186M 9.2G 2% /boot /dev/cciss/c0d0p9 38G 9.9G 26G 28% /home /dev/cciss/c0d0p12 259G 772M 245G 1% /onip/teastore /dev/cciss/c0d0p11 99G 1.2G 93G 2% /teasredo 111cn.net:~ # mount -a 111cn.net:~ # df -hP Filesystem Size Used Avail Use% Mounted on /dev/cciss/c0d0p5 40G 920M 37G 3% / udev 63G 188K 63G 1% /dev tmpfs 63G 72K 63G 1% /dev/shm /dev/cciss/c0d0p1 9.9G 186M 9.2G 2% /boot /dev/cciss/c0d0p9 38G 9.9G 26G 28% /home /dev/cciss/c0d0p12 259G 772M 245G 1% /onip/teastore /dev/cciss/c0d0p11 99G 1.2G 93G 2% /teasredo /dev/mapper/vgteas-lvteasdata 2.7T 202M 2.6T 1% /teasdata
|
發現分區可以重新掛上了。
二、規避方法
(1)設定boot.lvm開機自啟動
LVM is "inactive" on first reboot after installation ,避免該問題重現,可以從以下兩方法如手:
1、查看boot.lvm服務的是否預設隨系統load
代碼如下 |
複製代碼 |
111cn.net:~ # /etc/init.d/boot.lvm status unknown 111cn.net:~ # chkconfig --list|grep lvm lvm_wait_merge_snapshot 0:off 1:on 2:off 3:off 4:off 5:off 6:off S:on
|
看到狀態是unknow,也就是沒有隨機啟動 ,這裡需要注意的是直接chkconfig --list是無法直接查看到boot.lvm服務的。
2、設定boot.lvm服務開機自啟動
代碼如下 |
複製代碼 |
111cn.net:~ # chkconfig boot.lvm boot.lvm off 111cn.net:~ # chkconfig boot.lvm on
|
3、啟動boot.lvm服務
代碼如下 |
複製代碼 |
111cn.net:~ # /etc/init.d/boot.lvm start Waiting for udev to settle... Scanning for LVM volume groups... Reading all physical volumes. This may take a while... Found volume group "vgteas" using metadata type lvm2 Activating LVM volume groups... PARTIAL MODE. Incomplete logical volumes will be processed. 1 logical volume(s) in volume group "vgteas" now active done
|
啟動後可以發現,這裡自動探索了vgteas卷組。
4、同redhat略有不同的是,在suse下有一部分服務在rcx.d(x為0-6)運行層級下沒有一些系統相關的服務。這部分服務在/etc/init.d目錄下可以找到,不過其控制是否開機載入是在/etc/init.d/boot.d 目錄下的。
代碼如下 |
複製代碼 |
111cn.net:~ # ls /etc/rc.d/boot.d K01boot.compliance K01boot.klog K01boot.udev_retry K04boot.localfs S02boot.rootfsck S13boot.fuse S14boot.ldconfig S17boot.kdump K01boot.cycle K01boot.ldconfig K02boot.cleanup K06boot.rootfsck S03boot.clock S13boot.klog S14boot.quota K01boot.debugfs K01boot.lvm_monitor K02boot.clock K08boot.device-mapper S04boot.device-mapper S13boot.lvm_monitor S14boot.sysctl K01boot.efivars K01boot.proc K02boot.loadmodules K09boot.udev S04boot.loadmodules S13boot.proc S15boot.cleanup K01boot.fuse K01boot.quota K02boot.localnet S01boot.debugfs S10boot.localfs S13boot.scpm S15boot.ipconfig K01boot.ipconfig K01boot.scpm K02boot.swap S01boot.efivars S12boot.compliance S13boot.swap S16boot.apparmor K01boot.kdump K01boot.sysctl K03boot.apparmor S01boot.udev S13boot.cycle S13boot.udev_retry S16boot.localnet |
(2)修改lvm 的預設設定檔
以下是lvm設定檔的預設配置
代碼如下 |
複製代碼 |
111cn.net:~ # cat /etc/sysconfig/lvm ## Path: System/File systems/LVM ## Description: LVM configuration ## Type: string ## Default: "" # # This variable allows to only activate the LVM volume groups listed at # bootup. If it is empty, all LVM volume groups are activated at bootup. # This variable needs setting only under very special circumstances. # For almost all standard LVM installations it can safely stay empty. # LVM_VGS_ACTIVATED_ON_BOOT="" ## Path: System/File systems/LVM ## Description: LVM configuration ## Type: string ## Default: "disable" # # This variable allows newly discovered VG to be activated automatically # via udev rules. Set to "enable" to turn this feature on. # LVM_ACTIVATED_ON_DISCOVERED="disable"
|
從上面的注釋說明來看,第二個參數設定成enable可以自動探索一些新建立的lvm分區並設定為active狀態 ,這裡將上面的disable改為enable 。
代碼如下 |
複製代碼 |
111cn.net:~ # sed -i 's/LVM_ACTIVATED_ON_DISCOVERED="disable"/LVM_ACTIVATED_ON_DISCOVERED="enable"/g' /etc/sysconfig/lvm
|
三、其他可能的原因及參考
在網上也查到一些其他原因可能會引起以上的情況出現。
情況1 :uuid重複
Problem(Abstract)
If a disk with Logical Volume Manager (LVM) on it is mounted to the original machine with the same disk, one or more duplicate Universal Unique Identifiers (UUID) are created
具體可以參看ibm網站上的技術文章,該問題貌似是redhat5等一些版本上存在的一個bug。
情況2:安裝時未使用預設安裝,導致未開機載入
The system is not installed through the defualt installer, instead bootstrapped
through zypper and then installed additional patterns through YaST and might be
the cause the LVM not loading;
具體參看opensuse上的文檔。
這裡的情況2,個人理解應該就是由於boot.lvm服務未開機自啟動的原因,由於水平有限,並未能理解opensuse這個參考頁上最後部分想表示的意思。