Software-Raid
如何將 mdadm raid1 轉換為單個驅動程序並保留數據?
我有一個由 mdadm 在根分區上創建的 raid1,
/dev/nvme1n1p2
並且/dev/nvme0n1p2
efi 引導分區在 /dev/nvme1n1p1 上。然後我按照一些命令刪除了其中一個磁碟並將其格式化以安裝在 /media 中。mdadm /dev/md0 --fail /dev/nvme0n1p2 --remove /dev/nvme0n1p2 mdadm --zero-superblock /dev/nvme0n1p2
目前 mdstat
mdadm --detail /dev/md0p1 /dev/md0p1: Version : 1.2 Creation Time : Tue Sep 27 15:52:16 2022 Raid Level : raid1 Array Size : 438311936 (418.01 GiB 448.83 GB) Used Dev Size : 438313984 (418.01 GiB 448.83 GB) Raid Devices : 2 Total Devices : 1 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Thu Sep 29 02:14:09 2022 State : active, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 Consistency Policy : bitmap Name : ubuntu-server:0 UUID : 765832c2:a4431240:90b2a7d7:69430147 Events : 1679 Number Major Minor RaidDevice State 0 259 5 0 active sync /dev/nvme1n1p2 - 0 0 1 removed
如何刪除md0並保留/dev/nvme1n1p2的根分區數據?我想我只需要重新啟動進入救援模式
umount /dev/md0p1 mdadm --stop /dev/md0p1 mdadm --zero-superblock /dev/nvme1n1p2
並編輯 fstab,將根分區從 /dev/md0p1 更改為 /dev/nvme1n1p2?
大多數情況下,你不能。因為分區表沒有關於您的文件系統的記錄。使用 fdisk 或 gparted 進行檢查。
https://raid.wiki.kernel.org/index.php/Partition_Types
https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm#Array_internals_and_how_it_affects_mdadm
此外,超級塊版本 1.2 從設備啟動開始儲存 4K。這些超級塊還定義了“數據偏移”。這是設備開始和數據開始之間的間隙。這意味著 v1.2 必須始終具有每個設備至少 4K,儘管它通常是幾兆字節。該空間可用於各種用途,通常是寫入意圖點陣圖、壞塊日誌和重塑數組時的緩衝區空間。
所以文件系統塊從分區開始的某個地方開始,而不是它應該在的地方。如果你在 mdadm 之上使用 lvm 那就更糟了。
您可以嘗試 testdisk 來檢查它是否可以看到您的文件系統並為您修改分區表或手動查找文件系統的開始並手動更新分區表或複制數據、創建 fs 並複制數據或保持原樣 - 它沒有害處你。