web-dev-qa-db-ja.com

RAID 4アレイをRAID 0に変換するにはどうすればよいですか?

3ディスクのRAID 0アレイがあり、次を実行して4番目のディスクを追加しました。

mdadm --manage /dev/md127 --add /dev/xvdi

各ディスクは1TB EC2ボリュームです。アレイの形状を変更するには約40時間かかりました。約1時間で、再形成が停止し、ボリュームにアクセスできなくなりました。マシンを再起動し、再形成を続け、一見正常に終了しましたが、アレイレベルはRAID 4として報告され、使用可能な容量は変更されていません。

mdadm --detail /dev/md127は次を報告するようになりました。

/dev/md127:
        Version : 1.2
  Creation Time : Wed Jul  1 22:26:36 2015
     Raid Level : raid4
     Array Size : 4294965248 (4096.00 GiB 4398.04 GB)
  Used Dev Size : 1073741312 (1024.00 GiB 1099.51 GB)
   Raid Devices : 5
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sun Oct 11 07:40:48 2015
          State : clean, degraded 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : [removed]
           UUID : [removed]
         Events : 63530

    Number   Major   Minor   RaidDevice State
       0     202      160        0      active sync   /dev/xvdk
       1     202      144        1      active sync   /dev/xvdj
       2     202       80        2      active sync   /dev/xvdf
       4     202      128        3      active sync   /dev/xvdi
       4       0        0        4      removed

ここでの私の目的は、4TB RAID 0アレイを持つことです。 AWSでボリュームスナップショットを取得してバックアップするため、冗長性は必要ありません。 Ubuntu Server 14.04.3を実行しています。

状態がclean, degradedであるという事実を考慮して、データを失うことなくRAID 0に切り替えるにはどうすればよいですか?

mdadm -G -l 0 /dev/md127を使用して、現在の構成をRAIDに直接変更できます。 5つのメンバーのうち4つだけのRAID 4は基本的にパリティストライプのないRAID 0であるため、変換は即座に行われます。パリティメンバがあった場合、それはドロップされますが、すでに「Removed」としてリストされているため、単にドロップされ、Raid Devicesは4にデクリメントされ、状態は「clean」になります。

上記のmdadmクエリから、メンバーサイズが1TB、ボリュームサイズが4TBであることがわかります。したがって、パリティメンバーがなくてもボリュームはそのまま使用できるはずです。次に、 partedでパーティションを拡大 し、通常どおりファイルシステムのサイズ変更操作を実行する必要があります。

5
Paul

私はこれが古いことを知っていますが、これらの手順は人々に役立つかもしれません。

RAID-0にディスクを追加する方法は?

環境:

  1. centos 7(カーネル:3.10.0-327.22.2.el7.x86_64)
  2. mdadmバージョンv3.4-2016年1月28日
  3. 各10GBの最初の3つのディスク
  4. 4番目のディスクも10GB

初期セットアップ:

$ Sudo mdadm --create --verbose /dev/md0 --level=0 --name=DB_RAID2 --raid-devices=3 /dev/xvdh /dev/xvdi /dev/xvdj
$ Sudo mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep  5 14:25:10 2017
     Raid Level : raid0
     Array Size : 31432704 (29.98 GiB 32.19 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Tue Sep  5 14:25:10 2017
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : temp:DB_RAID2  (local to Host temp)
           UUID : e8780813:5adbe875:ffb0ab8a:05f1352d
         Events : 0

    Number   Major   Minor   RaidDevice State
       0     202      112        0      active sync   /dev/xvdh
       1     202      128        1      active sync   /dev/xvdi
       2     202      144        2      active sync   /dev/xvdj

$ Sudo mkfs -t ext4 /dev/md0
$ Sudo mount /dev/md0 /mnt/test

ワンステップでRAID-0にディスクを追加します(機能しません):

$ Sudo mdadm --grow /dev/md0 --raid-devices=4 --add /dev/xvdk
mdadm: level of /dev/md0 changed to raid4
mdadm: added /dev/xvdk
mdadm: Failed to initiate reshape!

おそらく、これは bug が原因で失敗します。

ステップ-1:RAID-4に変換:

$ Sudo mdadm --grow --level 4 /dev/md0
mdadm: level of /dev/md0 changed to raid4
$ cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid4 xvdj[2] xvdi[1] xvdh[0]
      31432704 blocks super 1.2 level 4, 512k chunk, algorithm 5 [4/3] [UUU_]

unused devices: <none>

ステップ-2:ディスクを追加します:

$ Sudo mdadm --manage /dev/md0 --add /dev/xvdk
mdadm: added /dev/xvdk

回復するまで待ちます:

$ cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid4 xvdk[4] xvdj[2] xvdi[1] xvdh[0]
      31432704 blocks super 1.2 level 4, 512k chunk, algorithm 5 [4/3] [UUU_]
      [=>...................]  recovery =  8.5% (893572/10477568) finish=3.5min speed=44678K/sec

$ cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid4 xvdk[4] xvdj[2] xvdi[1] xvdh[0]
      31432704 blocks super 1.2 level 4, 512k chunk, algorithm 5 [4/4] [UUUU]

unused devices: <none>

ステップ-3:RAID-0に戻す:

$ Sudo mdadm --grow --level 0 --raid-devices=4 /dev/md0
$

形が変わるまで待ちます:

$ cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid4 xvdk[4] xvdj[2] xvdi[1] xvdh[0]
      31432704 blocks super 1.2 level 4, 512k chunk, algorithm 5 [5/4] [UUUU_]
      [===>.................]  reshape = 16.2% (1702156/10477568) finish=6.1min speed=23912K/sec

$ cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid0 xvdk[4] xvdj[2] xvdi[1] xvdh[0]
      41910272 blocks super 1.2 512k chunks

ステップ-4:ファイルシステムのサイズを変更する:

$ Sudo mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep  5 14:25:10 2017
     Raid Level : raid0
     Array Size : 41910272 (39.97 GiB 42.92 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Tue Sep  5 14:55:46 2017
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : temp:DB_RAID2  (local to Host temp)
           UUID : e8780813:5adbe875:ffb0ab8a:05f1352d
         Events : 107

    Number   Major   Minor   RaidDevice State
       0     202      112        0      active sync   /dev/xvdh
       1     202      128        1      active sync   /dev/xvdi
       2     202      144        2      active sync   /dev/xvdj
       4     202      160        3      active sync   /dev/xvdk
$ df -h
/dev/md0         30G   45M   28G   1% /mnt/test

実際のサイズ変更とサイズ変更後:

$ Sudo resize2fs /dev/md0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/md0 is mounted on /mnt/test; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 5
The filesystem on /dev/md0 is now 10477568 blocks long.

$ df -h /dev/md0
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0         40G   48M   38G   1% /mnt/test
4
rsmoorthy

FAILEDアレイの性能が低下するというシナリオが1つあります。こんなふうになります:

  • rAID0ストライピングアレイを作成する
  • RAID4に変換します
  • RAID4アレイにパリティディスクを追加します
  • アレイ内の他のディスクの1つに障害を発生させて削除します
  • RAID4アレイをRAID0に変換します

最後の手順では、パリティディスクが削除され、アレイをRAID0に変換できないことがわかります。ただし、事前に知っている可能性があります(明らかに、すべての非パリティディスクがオンラインである必要があります)。その結果、アレイはクリーンで劣化した状態になります。

rAID0ストライピングをRAID4に変換する

mdadm --grow/dev/md/vg_docker --level = 4 mdadm --detail/dev/md/vg_docker

パリティディスクを追加します

mdadm --manage/dev/md/vg_docker --add/dev/sdm mdadm --detail/dev/md/vg_docker

再構築が完了するまで待つ

rAID0アレイの元のディスクの1つに障害が発生する

mdadm --manage/dev/md/vg_docker --fail/dev/sde mdadm --detail/dev/md/vg_docker

配列から削除します

mdadm --manage/dev/md/vg_docker --remove/dev/sde mdadm --detail/dev/md/vg_docker

rAID0ストライプに戻す

mdadm --grow/dev/md/vg_docker --level = stripe

出力:mdadm:/ dev/md/vg_docker:レベルをraid0に設定できませんでした

mdadm --detail/dev/md/vg_docker

状態はクリーンで失敗し、すべてのデータが失われました。

操作を実行できる場合、アレイをRAID0ストライプに変換する前にmdadmがチェックできれば良いでしょう。

背景:RAID0ストライピングは、クラウド設定でパフォーマンスを向上させるのに役立ちます。基盤となるストレージはすでに高可用性であるため、RAIDは追加のパフォーマンスのためにのみ必要です。上記は、新しいディスク(パリティ)を追加し、削除するディスクを削除することにより、RAID0アレイのディスクを別のディスクに置き換えようとしたいくつかの実験からのものです。その後、RAID0に戻すと、1つのディスクが交換された場合に必要な結果が得られます。

0
Erik