背景
最近在研究各种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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
其次,尝试挂载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’.
1
2
3
因此,需要使用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).
1
2
3
4
5
再次将RAID分区挂载到系统中:
[root@SCVM-CNT8-01 ~]# mount /dev/md2 /mnt/raidcheck
1
检查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
1
2
3
4
5
6
7
8
9
还可以查看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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
常见错误
此外,你可能会遇到下面的错误:
[root@SCVM-CNT8-01 ~]# mdadm –assemble –run /dev/md2 /dev/sdb2
mdadm: /dev/sdb2 is busy – skipping
1
2
这时,你可以这样检查一下:
[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
1742225408 blocks
md126 : inactive sdb2
209715136 blocks
md127 : inactive sdb1
524224 blocks
unused devices:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
你可能会发现你要挂载的sdb2分区已经被使用了。
当然,如果你愿意的话,你也可以手动停用它,方法是:
[root@SCVM-CNT8-01 ~]# mdadm –stop /dev/md126
[root@SCVM-CNT8-01 ~]#
原文链接:https://blog.csdn.net/weixin_52428496/article/details/112466061?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836984016800222818288%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836984016800222818288&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-13-112466061-null-null.nonecase&utm_term=NAS%E7%A1%AC%E7%9B%98