【FreeNAS】RAIDZでDisk交換をする

  • 0
    いいね
  • 0
    コメント

    FreeNAS

    FreeNASはNAS構築に特化したUNIXのディストリビューションです。FreeBSDベースで作られており、派生として、NAs4FreeやLinuxベースのOpen media vaultが存在しています。

    RAID-Z

    RAID0,1,5...という区分の中ではRAID5に相当する。自宅のNASはHDDが3台のRAID-Zで運用されている。そのため、HDD1本が壊れても動作し続けるくらいの耐障害性がある。
    今回このRAID-Zを構成しているHDDのうち1本がおかしいということで、入れ替え作業をメモメモ

    FreeNAS上での確認

    最初はアラートに気づいていなかったけれど、2回目のアラートでHDDのトラブルを確認
    FreeNAS上のUIからは下記のように見える。とりあえず警告が出てる。
    まだエラーになっていないから大丈夫。きっとまだいける。
    本当にダメになるとFreeNASが自動的にHDDを切り離すはず。

    スクリーンショット 2017-06-08 20.57.30.png

    zpool statusで確認

    まだ切り離しがされていないこともあり、基本的にステータスは問題ないっぽい

    
    [root@freenas] ~# zpool status
      pool: RaidZStorage
     state: ONLINE
      scan: scrub repaired 0 in 14h25m with 0 errors on Sun May  7 14:25:35 2017
    config:
    
        NAME                                            STATE     READ WRITE CKSUM
        RaidZStorage                                    ONLINE       0     0     0
          raidz1-0                                      ONLINE       0     0     0
            gptid/86502484-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
            gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
            gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
    

    smartctlで確認

    今回対象となっているDiskは/dev/ada2mなので、ada2の情報をsmartctlで確認する。
    197,198の最後の値がじゃないと、基本的に動いてはいるけど、いつ壊れてもおかしくないよって感じ。書き込みできない不良セクタってやつ。
    shell-session
    smartctl -a /dev/ada2
    ~略~
    197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 120
    198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 120
    ~略~

    ちなみに正常だと思われる/dev/ada0についてはこんな感じ。

    smartctl -a /dev/ada2
    ~略~
    197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
    198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
    ~略~
    

    交換するHDDの確認

    NASに使ってるHP microserver(N54L)はHDDランプがないので、どのDiskが交換対象かはパット見わからない。そこでsmartctlの結果をメモした上で交換対象のDiskを特定する。とりあえずこれっぽい。

    === START OF INFORMATION SECTION ===
    Model Family:     Seagate Barracuda 7200.14 (AF)
    Device Model:     ST2000DM001-1CH164
    Serial Number:    Z1E4BQRA
    LU WWN Device Id: 5 000c50 050aef61b
    Firmware Version: CC44
    User Capacity:    2,000,398,934,016 bytes [2.00 TB]
    Sector Sizes:     512 bytes logical, 4096 bytes physical
    Rotation Rate:    7200 rpm
    Form Factor:      3.5 inches
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   ATA8-ACS T13/1699-D revision 4
    SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
    Local Time is:    Thu Jun  8 21:33:41 2017 JST
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    

    念のために正常なDiskのシリアルも確認

    Serial Number:    WD-WMC4N0F119Z5 (ada0)
    Serial Number:    WD-WMC4N0F05M3S (ada1)
    

    パーティション情報の取得

    念のためパーティション情報も取得しておく

    [root@freenas] ~# gpart show ada2
    =>        34  3907029101  ada2  GPT  (1.8T)
              34          94        - free -  (47K)
             128     4194304     1  freebsd-swap  (2.0G)
         4194432  3902834696     2  freebsd-zfs  (1.8T)
      3907029128           7        - free -  (3.5K)
    

    FreeNASのシャットダウン

    各種クライアントからのマウントをやめた上で

    
    [root@freenas] ~# shutdown -p now
    Shutdown NOW!
    shutdown: [pid 96234]
    

    HDD交換後

    zool statusで確認

    自動でRAIDの再構築は始まらないので、下記のような表示でDEGRADEDになっているはず。

    [root@freenas] ~# zpool status
      pool: RaidZStorage
     state: DEGRADED
    status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
    action: Attach the missing device and online it using 'zpool online'.
       see: http://illumos.org/msg/ZFS-8000-2Q
      scan: scrub repaired 0 in 14h25m with 0 errors on Sun May  7 14:25:35 2017
    config:
    
        NAME                                            STATE     READ WRITE CKSUM
        RaidZStorage                                    DEGRADED     0     0     0
          raidz1-0                                      DEGRADED     0     0     0
            12153346589594475547                        UNAVAIL      0     0     0  was /dev/gptid/86502484-7ef4-11e4-ad6c-38eaa7a93732
            gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
            gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
    

    パーティションの作成

    今回はDiskを3TBに変更しました。1TB無駄になるけど、将来的に3TB構成にするには徐々に入れ替えるしかない

    [root@freenas] ~# gpart show ada2
    gpart: No such geom: ada2.
    [root@freenas] ~# gpart create -s gpt ada2
    ada2 created
    [root@freenas] ~# gpart show ada2
    =>        34  5860533101  ada2  GPT  (2.7T)
              34  5860533101        - free -  (2.7T)
    

    先程のパーティション情報をもとにパーティションを作成していく

    
    [root@freenas] ~# gpart add -i 1 -t freebsd-swap -b 128 -s 4194304 ada2
    ada2p1 added
    [root@freenas] ~# gpart show ada2
    =>        34  5860533101  ada2  GPT  (2.7T)
              34          94        - free -  (47K)
             128     4194304     1  freebsd-swap  (2.0G)
         4194432  5856338703        - free -  (2.7T)
    
    [root@freenas] ~# gpart add -i 2 -t freebsd-zfs ada2
    ada2p2 added
    [root@freenas] ~# gpart show ada2
    =>        34  5860533101  ada2  GPT  (2.7T)
              34          94        - free -  (47K)
             128     4194304     1  freebsd-swap  (2.0G)
         4194432  5856338696     2  freebsd-zfs  (2.7T)
      5860533128           7        - free -  (3.5K)
    

    ZFS(zpool)にDiskを組み込む

    freebsd-zfs の rawuuid を確認する。

    2. Name: ada2p2
       Mediasize: 2998445412352 (2.7T)
       Sectorsize: 512
       Stripesize: 4096
       Stripeoffset: 0
       Mode: r0w0e0
       rawuuid: bd86d5e8-4c4b-11e7-83b1-38eaa7a93732
       rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
       label: (null)
       length: 2998445412352
       offset: 2147549184
       type: freebsd-zfs
       index: 2
       end: 5860533127
       start: 4194432
    

    zpool statsuでOFFLINEのDISK IDを確認する

    [root@freenas] ~# zpool status
      pool: RaidZStorage
     state: DEGRADED
    status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
    action: Attach the missing device and online it using 'zpool online'.
       see: http://illumos.org/msg/ZFS-8000-2Q
      scan: scrub repaired 0 in 14h25m with 0 errors on Sun May  7 14:25:35 2017
    config:
    
        NAME                                            STATE     READ WRITE CKSUM
        RaidZStorage                                    DEGRADED     0     0     0
          raidz1-0                                      DEGRADED     0     0     0
            12153346589594475547   ←これ                 UNAVAIL      0     0     0  was /dev/gptid/86502484-7ef4-11e4-ad6c-38eaa7a93732
            gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
            gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
    

    replaceする

    [root@freenas] ~# zpool replace RaidZStorage 12153346589594475547 gptid/bd86d5e8-4c4b-11e7-83b1-38eaa7a93732
    

    確認

    replace後はRAIDの再構築が始まる。

    [root@freenas] ~# zpool status
      pool: RaidZStorage
     state: DEGRADED
    status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
    action: Wait for the resilver to complete.
      scan: resilver in progress since Thu Jun  8 22:15:56 2017
            4.00G scanned out of 3.49T at 15.5M/s, 65h42m to go
            1.33G resilvered, 0.11% done
    config:
    
        NAME                                              STATE     READ WRITE CKSUM
        RaidZStorage                                      DEGRADED     0     0     0
          raidz1-0                                        DEGRADED     0     0     0
            replacing-0                                   UNAVAIL      0     0     0
              12153346589594475547                        UNAVAIL      0     0     0  was /dev/gptid/86502484-7ef4-11e4-ad6c-38eaa7a93732
              gptid/bd86d5e8-4c4b-11e7-83b1-38eaa7a93732  ONLINE       0     0     0  (resilvering)
            gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732    ONLINE       0     0     0
            gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732    ONLINE       0     0     0
    

    結構かかりそう...

    その後...

    どれくらいかかるか不明でしたが、数時間後にはRAIDの再構築も終わって、3本のDiskがONLINE状態になりました。

    [root@freenas] ~# zpool status
      pool: RaidZStorage
     state: ONLINE
      scan: resilvered 1.16T in 11h50m with 0 errors on Fri Jun  9 10:06:53 2017
    config:
    
        NAME                                            STATE     READ WRITE CKSUM
        RaidZStorage                                    ONLINE       0     0     0
          raidz1-0                                      ONLINE       0     0     0
            gptid/bd86d5e8-4c4b-11e7-83b1-38eaa7a93732  ONLINE       0     0     0
            gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
            gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732  ONLINE       0     0     0
    
    errors: No known data errors
    

    これでまたしばらく安心なNAS生活が送れそうです。