zongyongchun 发表于 2009-4-16 14:42:25

解释一下QNAP“在线RAID……”是如何实现的!

本帖最后由 zongyongchun 于 2009-5-1 10:44 编辑

解释一下QNAP“在线RAID容量扩充”和“在线RAID组态迁移”是如何实现的!

目前已经测试完“在线RAID容量扩充”,“在线RAID组态迁移”稍后补充。

全部技术基于Linux Mdadm,LVM2。

momo 发表于 2009-4-16 18:20:00

应该有点像网件的x-raid功能吧,比如四个盘位的你用了3个盘位1t的容量做raid5,那么当你要再加一个1t的硬盘的时候,本身已经做了raid5,如果没有这个技术那么就得整个raid重新做过才行,而有这个功能那么就不用他可以把新的硬盘自动加入raid5里面,这样就不用去迁移数据了。

momo 发表于 2009-4-16 18:21:00

在线RAID容量扩充
  RAID容量扩充让您可在保留所有数据、不停机的情况下,一步一步地顺利的进行RAID容量扩充。

在线RAID组态迁移
  在线RAID组态迁移让您透过简易步骤,在不停机且保留数据的状态下进行RAID等级迁移。

momo 发表于 2009-4-16 18:24:44

组态迁移就是把比如raid1换成raid5,而不用重新做raid。

kuwei 发表于 2009-4-16 18:30:15

一个简单的概念,厂家咋搞的那么复杂,官方解释也没有一点水平。

kala 发表于 2009-4-16 18:33:57

是不是堆叠呢?把两个nas合并起来?

zongyongchun 发表于 2009-4-18 00:44:06

概念,我都很清楚的,我是做企业级存储的,这些功能在企业级存储里是很常见的,但我也一直没有深入研究,一直认为这是需要借助 硬件RAID来实现的。我这里问的是“实现”,一个可以在Linux里模拟出来的“技术”。

淘宝的卖家告诉我 Synology、QNAP、Thecus 都是 Soft RAID。

大家也都知道这些NAS产品是Linux做的,X-Raid 我不清楚,但是我想Qnap还不至于为了“实现”这些功能去写新的代码,利用现有的技术应该就可以做到了。但是,这话又说回来,如果真是这样的话,Synology、Thecus 岂不是也可以做到?

fttbcm 发表于 2009-4-26 10:07:17

哪位可以解释一下QNAP“在线RAID容量扩充”和“在线RAID组态迁移”是如何实现的?

哦,这论坛感觉好冷清啊!
zongyongchun 发表于 2009-4-16 14:42 http://www.gebi1.com/images/common/back.gif在线RAID的要求是你以前做过RAID了,以后更换硬盘,只要"扩充容量"就行了,你可以到这个http://duangx.cn/819.html(我的博客)里看看.

老李菜刀 发表于 2009-4-30 09:28:01

本帖最后由 老李菜刀 于 2009-4-30 09:48 编辑

在线RAID组态迁移
  在线RAID组态迁移让您透过简易步骤,在不停机且保留数据的状态下进行RAID等级迁移。

仔细看了一下qnap raid管理工具那页的说明,在线RAID组态迁移过程中有:所有硬盘数据会清除,是否继续的选项

在线RAID容量扩充之硬盘容量扩充没看到这样的选项,但linux的mdadm确实没这样的功能,我估计也不会保留原有数据,下次等我容量用完后换更大的硬盘试试,不过试之前一定要备份数据,理论上保留原有数据确实不可能

老李菜刀 发表于 2009-4-30 09:53:48

或许是用了网件的专利技术X-raid吧

zongyongchun 发表于 2009-4-30 12:04:09

我自己用旧PC和Linux做了一个4*1.5TB的NAS,Soft-Raid5,已经因为SATA接口或线缆的原因,中断了2次了,也就是需要Recover 2次。

这两天查了一下,mdadm--grow 应该是可以实现在线RAID扩容的,等我用虚拟机测试好了,再贴上来吧。

而且 mdadm --re-add 也比较有意思,值得去研究一下。

感谢楼上两位!

zongyongchun 发表于 2009-4-30 12:34:48

在线RAID的要求是你以前做过RAID了,以后更换硬盘,只要"扩充容量"就行了,你可以到这个http://duangx.cn/819.html(我的博客)里看看.
fttbcm 发表于 2009-4-26 10:07 http://www.gebi1.com/images/common/back.gif

没有看到你的关于 “容量扩充”的部分啊?

老李菜刀 发表于 2009-4-30 12:36:57

mdadm -G 我用过在线扩充整个阵列容量,但在线扩充阵列里的每个硬盘的容量不知道行不行

你说的后面那个命令还没用过

有时间也用vm试试看

zongyongchun 发表于 2009-4-30 23:38:23

本帖最后由 zongyongchun 于 2009-5-1 00:21 编辑

mdadm -G 我用过在线扩充整个阵列容量,但在线扩充阵列里的每个硬盘的容量不知道行不行

你说的后面那个命令还没用过

有时间也用vm试试看
老李菜刀 发表于 2009-4-30 12:36 http://www.gebi1.com/images/common/back.gif

在线扩充阵列里的每个硬盘的容量?什么意思?
就是挨个换大的硬盘的意思?

zongyongchun 发表于 2009-4-30 23:39:42

本帖最后由 zongyongchun 于 2009-5-1 00:29 编辑

贴一下 QNAP 官网的 关于在线扩容 和 在线RAID模式升级 的介绍:
http://www.qnap.com/cht/pro_features_RLM.asp

下面的实验,模拟上面链接里 250GB*4 RAID5 在线扩充为 1TB*4 RAID5的例子。
在换前3块盘的时候,总容量是没有任何改变的;当更换最后一块盘以后,总容量才改变。
这个例子似乎与X-Raid不同。

http://www.qnap.com/images/products/Application/TS409/AP01_01.jpg

zongyongchun 发表于 2009-5-1 00:06:24

本帖最后由 zongyongchun 于 2009-5-1 00:35 编辑

先不考虑现实中热插拔硬盘的支持部分。

实验完毕,贴一下:
1.创建4个100MB和1个50MB的文件,预备作为虚拟磁盘。
# dd if=/dev/zero of=01.img bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.202768 seconds, 517 MB/s
# dd if=/dev/zero of=02.img bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.833963 seconds, 126 MB/s
# dd if=/dev/zero of=03.img bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.20868 seconds, 502 MB/s
# dd if=/dev/zero of=04.img bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.217478 seconds, 482 MB/s
# dd if=/dev/zero of=05.img bs=1M count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.109192 seconds, 480 MB/s

2.
# losetup /dev/loop0 01.img
# losetup /dev/loop1 02.img
# losetup /dev/loop2 03.img
# losetup /dev/loop3 04.img
# losetup /dev/loop4 05.img

3.用3个100MB和一个50MB的“盘”做一个RAID5,模拟成QNAP上面扩容的第4幅图的场景。这时的RAID大小为3*50MB = 150MB大小的盘。
# mdadm -CR /dev/md0 -l5 -n4 /dev/loop /dev/loop4 --assume-clean (-b internal)(bitmap模式)
mdadm: largest drive (/dev/loop0) exceed size (51136K) by more than 1%
mdadm: array /dev/md0 started.

# cat /proc/mdstat
Personalities :
md0 : active raid5 loop4 loop2 loop1 loop0
      153408 blocks level 5, 64k chunk, algorithm 2

unused devices: <none>

# mdadm -D /dev/md0
/dev/md0:
      Version : 00.90.03
Creation Time : Thu Apr 30 21:15:09 2009
   Raid Level : raid5
   Array Size : 153408 (149.84 MiB 157.09 MB)
Used Dev Size : 51136 (49.95 MiB 52.36 MB)
   Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Apr 30 21:15:09 2009
          State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

         Layout : left-symmetric
   Chunk Size : 64K

         UUID : 8194e2d6:843e2352:c335957f:1051c266
         Events : 0.1

    Number   Major   Minor   RaidDevice State
       0       7      0      0      active sync   /dev/loop0
       1       7      1      1      active sync   /dev/loop1
       2       7      2      2      active sync   /dev/loop2
       3       7      4      3      active sync   /dev/loop4

4.模拟换最后一块100MB的盘(即删除50MB,加入100MB的盘)。
# mdadm -f /dev/md0 /dev/loop4
mdadm: set /dev/loop4 faulty in /dev/md0
# mdadm -r /dev/md0 /dev/loop4
mdadm: hot removed /dev/loop4
# mdadm -a /dev/md0 /dev/loop3
mdadm: added /dev/loop3
这时会有同步过程发生,同步完之前是不接受扩容命令的。这时的容量仍是150MB。
# mdadm -D /dev/md0
/dev/md0:
      Version : 00.90.03
Creation Time : Thu Apr 30 21:15:09 2009
   Raid Level : raid5
   Array Size : 153408 (149.84 MiB 157.09 MB)
Used Dev Size : 51136 (49.95 MiB 52.36 MB)
   Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Apr 30 21:16:29 2009
          State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1

         Layout : left-symmetric
   Chunk Size : 64K

Rebuild Status : 54% complete

         UUID : 8194e2d6:843e2352:c335957f:1051c266
         Events : 0.4

    Number   Major   Minor   RaidDevice State
       0       7      0      0      active sync   /dev/loop0
       1       7      1      1      active sync   /dev/loop1
       2       7      2      2      active sync   /dev/loop2
       4       7      3      3      spare rebuilding   /dev/loop3

5.最后一步,扩容成功,300MB。(这里会有一个区别,如果不是bitmap模式,又会有一个同步过程;如果是bitmap模式,完全不需要同步。)(使用bitmap模式,在RAID突然中断,但其中的盘没有损坏,后面又加入阵列时不需要完全同步,只需要增量同步。而bitmap不是默认的,个人觉得应该使用bitmap模式。)
# mdadm -G /dev/md0 -z max
# mdadm -D /dev/md0
/dev/md0:
      Version : 00.90.03
Creation Time : Thu Apr 30 21:15:09 2009
   Raid Level : raid5
   Array Size : 307008 (299.86 MiB 314.38 MB)
Used Dev Size : 102336 (99.95 MiB 104.79 MB)
   Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Apr 30 21:17:29 2009
          State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

         Layout : left-symmetric
   Chunk Size : 64K

         UUID : 8194e2d6:843e2352:c335957f:1051c266
         Events : 0.8

    Number   Major   Minor   RaidDevice State
       0       7      0      0      active sync   /dev/loop0
       1       7      1      1      active sync   /dev/loop1
       2       7      2      2      active sync   /dev/loop2
       3       7      3      3      active sync   /dev/loop3

逻辑卷、文件系统的在线扩容在这里省略不写。

zongyongchun 发表于 2009-5-1 01:06:27

个人感觉 --re-add 并没有直接的用途,主要取决于是否采用 bitmap 模式,如果采用了bitmap模式,当其中一个盘中断又回到阵列中时,-a 会自动变成 --re-add,增量同步。

老李菜刀 发表于 2009-5-2 10:36:01


就是你说的那个意思

tomcat_z 发表于 2010-3-10 13:23:47

9# 老李菜刀

我刚刚做完了RAID组态迁移(RAID1 到 RAID5);
和RAID在线扩容(RAID5 3盘到4盘),数据都完整保存。

功能很好。

至于提示“硬盘数据丢失”,是指你新插入的硬盘。

qnap 发表于 2010-3-23 13:59:24

你可以参考一下这个网址,里面有详细的案例解释,http://www.qnap.com/cn/pro_features_RLM.asp
页: [1] 2
查看完整版本: 解释一下QNAP“在线RAID……”是如何实现的!