使用Linux掛載NAS硬盤的RAID分區

背景

最近在研究各種NAS,包括我的D-Link DNS-320和羣暉的DSM,使用NAS是爲了給數據存儲提供方便和安全保障,當然前提是不能被某個技術或產品綁架,尤其對於我們搞開源的工程師來說,更是如此。我比較關注我的數據安全,我會考慮如果某天我的NAS壞掉了,數據是否能夠在其他設備上讀取出來,這是蠻重要的事情。
因此我對DNS-320和羣暉DSM系統做了這方面的驗證,結果證明它們都使用了開源的RAID方案,因此我可以很方便地在Linux系統下訪問這些RAID分區。

試驗環境

下面的操作以DNS-320創建的RAID1分區爲例,羣暉DSM也是類似的,只是元數據目錄結構會有些差異,但基本大同小異。Linux系統我用的是CentOS 8.1,其他發行版也都有類似功能。

掛載步驟

首先,硬件連接物理硬盤到主機,Linux正常識別到硬盤及RAID分區(/dev/sdb2),這一步通過分區大小就能判斷:

[root@SCVM-CNT8-01 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   16G  0 disk
├─sda1        8:1    0  600M  0 part /boot/efi
├─sda2        8:2    0    1G  0 part /boot
└─sda3        8:3    0 14.4G  0 part
  ├─cl-root 253:0    0 12.8G  0 lvm  /
  └─cl-swap 253:1    0  1.6G  0 lvm  [SWAP]
sdb           8:16   0  1.8T  0 disk
├─sdb1        8:17   0  512M  0 part
├─sdb2        8:18   0  200G  0 part
├─sdb3        8:19   0  1.6T  0 part
└─sdb4        8:20   0    1G  0 part
sr0          11:0    1 1024M  0 rom

其次,嘗試掛載RAID分區。但RAID分區並不能直接掛載,會報錯:

[root@SCVM-CNT8-01 ~]# mkdir /mnt/raidcheck
[root@SCVM-CNT8-01 ~]# mount /dev/sdb2 /mnt/raidcheck
mount: /mnt/raidcheck: unknown filesystem type 'linux_raid_member'.

因此,需要使用mdadm命令還原RAID分區:

[root@SCVM-CNT8-01 ~]# yum install -y mdadm
......
Complete!
[root@SCVM-CNT8-01 ~]# mdadm --assemble --run /dev/md2 /dev/sdb2
mdadm: /dev/md2 has been started with 1 drive (out of 2).

再次將RAID分區掛載到系統中:

[root@SCVM-CNT8-01 ~]# mount /dev/md2 /mnt/raidcheck

檢查RAID分區中的文件:

[root@SCVM-CNT8-01 ~]# ll /mnt/raidcheck/
total 24
drwx------. 2 root root 16384 Apr 20 02:52 lost+found
drwxrwxrwx. 3 root root  4096 Apr 20 03:03 Nas_Prog
drwxrwxrwx. 2  501  501  4096 Apr 20 22:56 RAID1_TEST_DATA
[root@SCVM-CNT8-01 ~]# ll /mnt/raidcheck/RAID1_TEST_DATA/
total 238660
-rwxrwxrwx. 1 1001 501     99157 Dec 10 03:01 testdata1.log
-rwxrwxrwx. 1 1001 501 244283341 Feb  7 06:41 testdata2.tar.gz

還可以查看RAID分區的信息:

[root@SCVM-CNT8-01 ~]# mdadm --detail /dev/md2
/dev/md2:
           Version : 0.90
     Creation Time : Mon Apr 20 02:51:59 2020
        Raid Level : raid1                             # RAID類型
        Array Size : 209715136 (200.00 GiB 214.75 GB)  # RAID大小
     Used Dev Size : 209715136 (200.00 GiB 214.75 GB)
      Raid Devices : 2                                 # 原有2塊硬盤
     Total Devices : 1                                 # 發現1塊硬盤
   Preferred Minor : 2                                 # 至少2塊硬盤
       Persistence : Superblock is persistent

       Update Time : Tue Apr 21 03:03:35 2020
             State : clean, degraded              # 處於降級的服務狀態
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              UUID : 2b9e5511:d8210d7b:32043162:e56069a7
            Events : 0.321

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       18        1      active sync   /dev/sdb2

常見錯誤

此外,你可能會遇到下面的錯誤:

[root@SCVM-CNT8-01 ~]# mdadm --assemble --run /dev/md2 /dev/sdb2
mdadm: /dev/sdb2 is busy - skipping

這時,你可以這樣檢查一下:

[root@SCVM-CNT8-01 ~]# cat /proc/mdstat
Personalities : [raid1]
md124 : active (auto-read-only) raid1 sdc3[0]
      1948692544 blocks super 1.2 [1/1] [U]

md125 : inactive sdb3[1](S)
      1742225408 blocks

md126 : inactive sdb2[1](S)
      209715136 blocks

md127 : inactive sdb1[1](S)
      524224 blocks

unused devices: <none>

你可能會發現你要掛載的sdb2分區已經被使用了。

當然,如果你願意的話,你也可以手動停用它,方法是:

[root@SCVM-CNT8-01 ~]# mdadm --stop /dev/md126
[root@SCVM-CNT8-01 ~]#
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章