Lvm

重啟後帶有 LVM 的裸機 raid 陣列消失

  • October 25, 2020

tl;博士:

RAID 陣列 + LVM 重新啟動後消失。

細節

我想根據這個 SO設置一個加密的 raid 陣列。

我設置了一個 RAID 陣列*“裸機”*(即在磁碟上而不是在分區上)。建構數組後,我沒有對其進行格式化並執行pvcreate. 然後我以通常的方式設置 LVM 和加密。(參見關於 RAID 的數字海洋指南,關於 RAID的 LVM 的拱形指南

設置加密後,我執行mdadm --detail --scan | tee -a /etc/mdadm/mdadm.confupdate-initramfs -u 重新啟動。/dev/md0然後消失了。我哪裡做錯了?

調試步驟。

有很多類似的問題,這是我迄今為止根據我的閱讀所嘗試的。

  • 的輸出mdadm --examine --scan為空白。
  • /etc/mdadm/mdadm.conf: HOMEHOST <system>, MAILADDR root,的未註釋內容ARRAY /dev/md0 metadata=1.2 name=server:0 UUID=xxxxx沒有一些 SO 答案中建議的重複條目。
  • 發行service mdadm status收益率Loaded: masked (Reason: Unit mdadm.service is masked.)
  • 發行cat /proc/mdstat收益Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] \n unused devices: <none>
  • 我嘗試執行dpkg-reconfigure mdadm並按照此處update-initramfs -u的建議執行,但沒有啟用“全部”的選項。在此之後我嘗試重新啟動,這也不起作用。

作為最後的手段,我嘗試了mdadm --assemble --scan

奇怪的是,該類型TYPE="linux_raid_member"與我對此 SO的預期不同

root@server:/home/user# blkid
/dev/sda1: UUID="xx" TYPE="ext2" PARTUUID="xx-xx"
/dev/sda5: UUID="xx" TYPE="LVM2_member" PARTUUID="xx-xx"
/dev/mapper/server--vg-root: UUID="xx" TYPE="ext4"
/dev/mapper/server--vg-swap_1: UUID="xx" TYPE="swap"
/dev/sdb: PTUUID="xx" PTTYPE="gpt"
/dev/sdc: PTUUID="xx" PTTYPE="gpt"
/dev/sdd: PTUUID="xx" PTTYPE="gpt"

數組超過 sd

$$ bcd $$/dev/sda 保存根文件系統。該陣列驅動器用於數據。 重新創建的步驟。

為了完整性,以防萬一它有用。

  • mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd創建數組
  • pvcreate /dev/md0製作物理卷
  • vgcreate data_group /dev/md0創建卷組
  • lvcreate -n secure data_group -L +900G創建卷
  • cryptsetup -v luksFormat /dev/data_group/secure設置加密
  • cryptsetup luksOpen /dev/data_group/secure cryptvault打開加密卷
  • mkfs.ext4 /dev/mapper/cryptvault分割
  • mkdir /mnt/vault製作掛載點
  • mount /dev/mapper/cryptvault /mnt/vault
  • mdadm --detail --scan | tee -a /etc/mdadm/mdadm.conf保存陣列佈局
  • update-initramfs -u使用新配置更新 init
  • reboot

這只是一個理論: mdadm 元數據版本 1.2 從設備啟動開始是 4K,並且當您創建未被 mdadm 刪除的陣列時,磁碟上已經有現有的 GPT 分區表(我希望 mdadm 刪除所有現有的簽名,但這是 GPT 簽名存在的唯一解釋)。該陣列現在沒有組裝,因為對於所有工具(包括 mdadm),這看起來就像是帶有 GPT 分區表的空磁碟(blkid 也可能檢測到磁碟末尾附近的標頭備份)而不是 mdmember,所以磁碟被忽略。

您可以嘗試使用wipefs– 首先只是簡單wipefs /dev/sdb地檢測和列印所有簽名,然後wipefs -o <offset>使用上一個命令列印的 GPT 簽名的偏移量來刪除分區表。這可能有助於系統將磁碟檢測為 mdmeber 設備。

如果這沒有幫助,我建議重新開始並選擇元數據版本 1.1(--metadata=1.1mdadm 的選項,1.1 將元數據放在設備的開頭)或在分區頂部創建陣列(使用磁碟沒有任何好處沒有分區表恕我直言)。或者,您當然可以等待其他人提出更好的建議 :-)

順便提一句。我認為這是一個全新的設置,因此設備上沒有有價值的數據,但在進行任何不可逆轉的更改之前備份磁碟的前幾個 MiB 可能會很有用。

引用自:https://unix.stackexchange.com/questions/616316