首先建立lvm(2個8T的盤,因爲硬件製造商的緣由8T的盤在操做系統識別來看並無8T)git
parted /dev/sdb parted /dev/sdc (parted) mklabel gpt #標記爲gpt格式的硬盤 (parted) mkpart #分區 文件系統類型? [ext2]? ext4 #ext4文件系統 起始點? 0 結束點?-1 toggle lvm #給分區打上lvm標籤
mkfs.ext4 /dev/sdb1 #格式化 mkfs.ext4 /dev/sdc1 #格式化 tune2fs -m 1 /dev/sdb1 #調整系統爲root用戶保留的空間,默認爲5% tune2fs -m 1 /dev/sdc1 pvcreate /dev/sdb1 /dev/sdc1 #建立pv vgcreate vr_vg /dev/sdb1 /dev/sdc1 #建立vg vgdisplay #查看vg全部的PE,默認4M爲一個PE lvcreate -l 3815442 -n lv_vr vg_vr #將全部的空間建立一個lv
#第一次建立pv就這樣結束了,並無碰見任何坑;可是第二次擴展的時候卻碰見了一個大坑 #因爲業務的變遷,16T的硬盤已經再也不夠用,須要將剩下的一塊盤(8T)擴展到lvm中
擴展lvm: 首先將硬盤分區格式(參照上面的步驟) pvcreate /dev/sdd1 vgvgextend vg_vr /dev/sdd1 #擴展vg lvresize -l +1907720 /dev/mapper/vr_vg-vr_lv #擴展lv
執行lvdisplay能夠看見lv已經擴展了,可是使用df -hl查看的時候分區仍是這麼大,這時候我執行 resize2fs /dev/mapper/vr_vg-vr_lv 刷新邏輯卷的時候 "坑出現了"
$ resize2fs /dev/mapper/vr_vg-vr_lv resize2fs: New size too large to be expressed in 32 bits #報錯了,說32文件系統最大隻支持16T的分區,emmm 出現問題就要解決,沒辦法只能 百度告終果沒有找到換Google試試,最後總算找到了解決辦法 https://askubuntu.com/questions/779754/how-do-i-resize-an-ext4-partition-beyond-the-16tb-limit #Google找到的文檔,國內也能夠訪問 更具文檔的相關描述是由於 resize2fs 低版本有個bug(其實也不算bug),既然知道了緣由那麼接開始幹,將resize2fs升級爲最新版本 umount /dev/mapper/vr_vg-vr_lv #先把掛載去掉 git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs #下載resize2fs 版本必須高於1.44 ./configure #檢查依賴關係(通常都不會碰見什麼坑) make #編譯,別執行make install cd resize/ ./resize2fs /dev/mapper/vr_vg-vr_lv #運行這條命令會把32位文件系統轉換爲64爲文件系統(分區小於16T不會裝換),而且會擴大超級塊的數量 #轉換完以後提示須要使用e2fsck -f 檢查分區 e2fsck -f /dev/mapper/vr_vg-vr_lv #擦,又報錯,說e2fsck不支持64位的文件系統, emmmmm, 想了一下可能 e2fsck 和 resize2fs 同樣版本太低不支持64位文件系統,用最新版本試試,e2fsck和resize2fs是由一個包提供的 cd .. cd e2fsck/ ./e2fsck /dev/mapper/vr_vg-vr_lv #果真使用新版本的e2fsck就能夠了 ./resize/resize2fs /dev/mapper/vr_vg-vr_lv #而後刷新文件系統 df -hl #看見22T分區大小(硬件製造商的鍋) #到這兒我心想應該沒問題了,結果更大的坑還在後面等着我 執行 lvdisplay 看看沒問題 執行 vgdisplay 看看沒問題 執行 pvdisplay 看看.....坑來了 --- Physical volume --- PV Name /dev/sdb1 VG Name vr_vg PV Size 7.28 TiB / not usable 1.30 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 1907721 Free PE 0 Allocated PE 1907721 PV UUID PCFu9x-SEGH-W941-0hc9-NHBb-0Nox-QdT79y --- Physical volume --- PV Name /dev/sdc1 VG Name vr_vg PV Size 7.28 TiB / not usable 1.30 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 1907721 Free PE 0 Allocated PE 1907721 PV UUID VHZUiE-in7U-RljG-WrvU-rO5u-lLf4-gpuMqE --- Physical volume --- PV Name unknown device #未識別的設備????這是什麼狀況 VG Name vr_vg PV Size 7.28 TiB / not usable 4.37 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 1907720 Free PE 0 Allocated PE 1907720 PV UUID x38382-rjUg-Fj5B-h5hC-LvrK-tq2h-HcZrkJ #沒辦法解決了半天沒仍是解決不了.....,重啓一下試試,結果一重啓機器起不來了,叫機房的人看看....最後發現是系統檢查 /dev/mapper/vr_vg-vr_lv 報錯了,果真是個坑啊,沒辦法機房的人解決不了,本身去一下機房解決吧!!! #來到機房第一件事進單用戶模式,結果進不去...緣由是由於fsck檢查/dev/mapper/vr_vg-vr_lv失敗 /dev/mapper/vr_vg-vr_lv /data ext4 defaults 1 2 #/etc/fstab配置 硬盤檢查不過進不了系統,那麼就只能把服務器的系統盤卸下來掛載到其餘的服務器上,修改掛載盤的 etc/fstab 把掛載lvm的哪行去掉,而後放回原來的服務器 #作完這些操做以後成功進入系統....可是檢查lvm卻發現/dev/mapper/不存在vr_vg-vr_lv.... 這是什麼狀況??? lvdisplay #沒問題一切正常 vgdisplay #沒問題一切正常 pvdisplay #/dev/sdd仍是顯示unknown device 那麼先解決unknown device這個問題吧: 首先確定要卸掉/dev/sdd這個盤: vgreduce vr_vg --removemissing --force #強行卸掉vr_vg裏面未知的設備 lvdisplay #查看lv大小仍是22T,可是如今兩塊盤只有16T,全部要將lvm恢復成兩塊盤時候的大小 恢復lvm: cd /etc/lvm/ #在lvm目錄下有兩個主要的目錄 archive:保存lvm每次發生改變的源數據 backup:lvm的備份文件 cd archive/ #找到lvm仍是兩塊盤的時候的備份 cp vr_vg_00002-1529881488.vg ../backup/ #vgcfgrestore 恢復時只會在這個目錄查找 cd ../backup/ mv vr_vg vr_vg.back1 #備份當前的vr_vg(vg的名字) mv vr_vg_00002-1529881488.vg vr_vg vgcfgrestore vr_vg #恢復備份 lvdisplay #查看lv大小已經恢復成16T,如今須要把剩下的那塊盤加上 首先仍是將硬盤分區格式,而後使用pvcreate建立pv,使用vgextend擴展vg,使用lvresize擴展lv 擴展完後/dev/mapper/仍是不存在vr_vg-vr_lv,那是由於vg尚未激活 vgchange -ay vr_vg #激活vg,這個時候再去查看/dev/mapper/發現vr_vg-vr_lv已經有了,可是這時候還不能直接使用,由於剛加了的盤尚未執行resize2fs ./e2fsck -f /dev/mapper/vr_vg-vr_lv #先檢查硬盤(由於lv已經擴展過一次了因此會提示實際的塊小於應有的塊,是否檢查,回覆 y 就行,當檢查到全部的塊以後會詢問你是否將這些加入現有分區,回覆y便可) ./resize/resize2fs /dev/mapper/vr_vg-vr_lv #刷新lv大小 最後刷新完以後,一切正常,因爲lvm的線性存儲,數據也沒有丟失 最後: 修改 /etc/fstab配置/dev/mapper/vr_vg-vr_lv /data ext4 defaults 0 0