跳到主要內容

Raid1 修復指南

 


前言:
今天我們來說一下如何在 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 正常的情況。注意 Typle 的部分,有說是這個是什麼東東,比如 sdb 的 TYPE(類別) 是 disk(硬碟),sdb 之下有 sdb1,2,5 ,TYPE 是 part (partition/分區)。

上圖有有一組 raid 1 分別由2隻 250GB 硬碟組成,分別是 sda 及 sdc ,各自下方都有 md1,TYPE 是 raid 1,所以我們現在就知道有一組 raid 名叫 md1 ,由 sdb 及 sdc組成,而且是 raid 1。如果是硬碟故障情況,這邊可能就會有一個 raid 1 不見了,例如 sdb 不見了,就只剩 sdc,那麼顯然 raid1 是要有一對的,剩一隻當然不行。


現在筆者把 raid 1 其中一隻硬碟拿掉(模擬其中一隻硬碟故障無法讀取的情況),由於 mdadm 發現這組RAID 不完整,所以會直接把這組 raid 停掉,在這邊就看不到RAID資料。

現在輸入:

sudo mdadm --detail --scan


這樣可以讓 mdadm 報告 raid 的狀況,目前看到 /dev/md1 文字最前面的狀態是 INACTIVE (不活動)。在這樣的情況下,OMV 網管 當中的  "RAID 管理" 是看不到 raid 的。md1 是筆者這組 raid 的名字,你的 raid 可能不一樣,,一般都是 md0 , md1 , md2 之類的。 

如果要從 OMV 修復,必須先讓 raid 跑起走來,這樣就會把狀態由 inactive 變成 active。


現在輸入: (啟動 md1)

sudo mdadm --run /dev/md1




啟動之後,OMV 網管 當中的  "RAID 管理" 就可以看到 raid 了,但狀況會是 clean, degraded。目前只是把 raid 啟動,並沒有掛載,所以無法讀取當中的資料。

這時當務之急是先把一隻好的硬碟插回去,並直接在 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




留言

這個網誌中的熱門文章

Fan Control 超好用的風扇控制軟件

前言:  今天來跟大家分享一下超好用的風扇控制軟件 Fan Control,功能精簡好用,介面直觀好操作。 Fan Control 是由 Github 一個小團隊開發的免費軟件, Github 有很好的官方使用說明和資料: https://github.com/Rem0o/FanControl.Releases 不過筆者還是打算不厭其煩在這邊用中文跟大家分享一下。 Fan Control 可以讓你高自由度設定風扇,例如對指定系統溫度作反應等等。比如筆者的顯卡很熱,但機箱風扇都針對CPU熱的時候才有反應,導致顯卡的熱力累積在機箱內部,結果顯卡又只能拿已經很熱的機箱空氣來用。那裡如果設置成顯卡熱時,機箱風扇一起反應就好了,用 Fan Control 達成就很 EASY!

Nikon FE 底片機 開箱 評測 用後感

  前言: 近年,底片機又有點微熱,也有人來問筆者怎麼選。當中 FM2 的價格被拉得滿高的,其中一個原因是知名度比較高,但其實Nikon 還有很多很棒的傳統底片機可以考濾。當中 FE 是筆者最推薦的,cp值高,性能又整全,這篇就來好好介紹一下,讓大家認識 Nikon FE !

Olympus Trip 35 底片機 開箱 評測 用後感

  前言: 這陣子筆者忙了很多事情,結果文章又停了一下。今天來跟大家介紹一下 OLYMPUS 的一台隨拍機。事關很多想體驗底片的朋友,對設定參數沒什麼興趣,反正就是想要一台底片機可以輕鬆拍,那麼這台就是了, Olympus Trip 35  可是一台由推出到現在,近半世紀都大熱的一台隨拍機。下文這台,也是筆者親自全機整修過的,就來跟大家一起說明一下。