前言:
今天我們來說一下如何在 OMV 當中修復 RAID1 ,以及有什麼事情要注意。這篇主要包括2件事:
今天我們來說一下如何在 OMV 當中修復 RAID1 ,以及有什麼事情要注意。這篇主要包括2件事:
1.如何修復 RAID1
2. 如何在單一 RAID1 硬碟中取回資料
早陣子,筆者寫了一些架設 Nextcloud 的教學,當中使用了 OMV 作為系統,當時由於重心在於 Nextcloud,對於 OMV 沒有說明太多,但其實 OMV 最的基本功能就是做 NAS 而不是 cloud,當中可以使用圖形介面建立 RAID 是一件很方便的事。
OMV 的 RAID 都是基於 MDADM soft raid,建立時可以完全由圖形介面操作,門檻非常低,但在OMV 修復RAID 並沒有像建立一樣容易,需要用到SSH及文字介面,整體操作並不困難,但顯然比使用圖形介面操作要來得嚇人,所以這篇就是要來跟大家針對 RAID 1說明。
操作主要使用文字介面操,而且也是針對用 OMV 的情況, MDADM 本身可以全文字介面操作。
正文:
如何修復 RAID1:
RAID 1 修復有個前題,就是你的 RAID 1 硬碟出現故障了。當 RAID 出現故障/問題時,OMV 網管 當中的 "RAID 管理" 當中的RAID 會消失,你無法對他再進行操作。"檔案系統" 中的 RAID 檔案也會變成 missing。
那是因為 MDADM 在發現 RAID 出現問題時,會把RAID 的狀態變成 inactive ,以防止出現其他問題。這個時候只有使用 SSH 連線到 OMV 直接用指令操作 MDADM 才能解決。
SSH 連線後,輸入:
lsblk
上圖有有一組 raid 1 分別由2隻 250GB 硬碟組成,分別是 sda 及 sdc ,各自下方都有 md1,TYPE 是 raid 1,所以我們現在就知道有一組 raid 名叫 md1 ,由 sdb 及 sdc組成,而且是 raid 1。如果是硬碟故障情況,這邊可能就會有一個 raid 1 不見了,例如 sdb 不見了,就只剩 sdc,那麼顯然 raid1 是要有一對的,剩一隻當然不行。
現在輸入:
這樣可以讓 mdadm 報告 raid 的狀況,目前看到 /dev/md1 文字最前面的狀態是 INACTIVE (不活動)。在這樣的情況下,OMV 網管 當中的 "RAID 管理" 是看不到 raid 的。md1 是筆者這組 raid 的名字,你的 raid 可能不一樣,,一般都是 md0 , md1 , md2 之類的。
sudo mdadm --detail --scan
如果要從 OMV 修復,必須先讓 raid 跑起走來,這樣就會把狀態由 inactive 變成 active。
現在輸入: (啟動 md1)
這時當務之急是先把一隻好的硬碟插回去,並直接在 OMV 網管當中修復raid1。
你可以在"共享檔案夾" 找到 "絕對路徑" 那麼對筆者而言, 掛載指令會是這樣:
接下來你需要重新掛載 md1 ,你可以直接用指令,或者重啟 OMV 都可以。
掛載指令:
sudo mount -t ext4 /dev/md1 /(path you want to mount)
2.如何在單一 RAID1 硬碟中取回資料:
如果很不巧,你身邊沒有硬碟可以馬上對 Raid 進行修復,但你需要馬上拿到資料,那麼你同樣可以直接掛載 md1 。
在 OMV 的情況,筆者把 raid 1 用 samba 分享給其他電腦,那麼掛載目的地要選用原先的分享位置。
sudo mount -t ext4 /dev/md1 /srv/dev-disk-by-uuid-1e73a7ef-e532-4819-9dc7-895f891718fa/raid2
如果你想保留 superblock用"唯讀模式" 掛載:
sudo mount -o ro /dev/md1 /srv/dev-disk-by-uuid-1e73a7ef-e532-4819-9dc7-895f891718fa/raid2
關於 raid superblock 的補充:
Raid 的設計需要硬碟的 superblock 可以對應,如果你把 raid 1 的一隻拿掉, raid 會停止,但如果你之後把硬碟插回去, raid 1 就會自動運作。當你在單隻硬碟下把 raid 1 用可讀模式掛載,那麼硬碟的 superblock 會改變,當把原配的另一隻 raid 1 硬碟插回去時,由於superblock 已經不同步,所以raid 還會認為是單隻硬碟在運作,而使用"唯讀模式" 掛載,就不會有這樣的問題。
如果出現不同步情況,其實依然可以用以下指令把硬碟加回去。
sudo mdadm /dev/md1 -a /dev/sd(a,b,c,d,e...)
其他相關指令:
#list disk and partition
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
#list disk and hardware detail
fdisk -l
#Check all raid status
cat /proc/mdstat
#Check a specific raid status
sudo mdadm --detail /dev/md0
#Scan raid when disk fail
mdadm --detail --scan
(should show inactive array)
#force mount failed raid
mdadm --run /dev/md0
(can no get the file, need mount)
#Mount the single disk from raid1
mkdir /mut/tempdisk
sudo mount -t ext4 /dev/md1 /mnt/tempdisk
#Mount disk with read only
sudo mount -o ro /dev/sda1 /media/2tb
#Unmount OR Stop raid
sudo umount /dev/md1
sudo mdadm --stop /dev/md1
sudo mdadm --stop /dev/md1 --force
#assemble scan
sudo mdadm --assemble --scan
#output md1 has been started with 1 drive
#add drive to raid
mdadm /dev/md1 -a /dev/sdb
留言
張貼留言