~nabeken/diary/

Gentoo Linux(6年くらい)とFreeBSD(1年くらい)とOpenBSD(新参者)を使う日々。


IHANet BGP peering overview

MAXSERVのポートマルチプライヤ(PMP) NA-910CをFreeBSDで動かす + ZFSでディスク交換の練習

Posted on Mon Nov 01 21:53:42 +0900 2010 by nabeken

以前、DECAのMG-SA1443を買いました。同じものを買おうとしたところ値段が上がっていたので同種で安いNA-910Cを買ってFreeBSDに刺してみました。 2TBのディスクも同時に購入したので練習も兼ねてZFSでのディスク交換を行なってみました。

PMPのボードはなかなかないが、あるところにはある

以前MG-SA1443を買ったT-ZONEでは数カ月前から扱いをやめたようです。そこでいろいろ探したのですが、結局オリオスペックに大量に在庫がありました。

チップは同じです。異なるのは値段とコネクタの向きでした。今回は値段を取ってNA-910Cを買ってみました。 (細かなところではNA-910Cはチップの上にヒートシンクがありました。前に買ったやつはかなり熱を持っていたのでうれしい改良。)

PMPのボードが欲しい人はオリオスペックで買うといいと思います。

ではさっそくdmesg。チップは同じなので当然ながら同じでした。

    siis0: <SiI3132 SATA controller> port 0xe000-0xe07f mem 0xfe484000-0xfe48407f,0xfe480000-0xfe483fff irq 16 at device 0.0 on pci2 ★eSATAのホスト側
    siis0: [ITHREAD]
    siisch0: <SIIS channel> at channel 0 on siis0
    siisch0: [ITHREAD]
    siisch1: <SIIS channel> at channel 1 on siis0
    siisch1: [ITHREAD]
    pmp0 at siisch0 bus 0 scbus0 target 15 lun 0 ★eSATAの2つあるうちの1つ目(今回買ったNA-910C)
    pmp0: <Port Multiplier 37261095 1706> ATA-0 device
    pmp0: 300.000MB/s transfers (SATA 2.x, NONE, PIO 8192bytes)
    pmp0: 5 fan-out ports
    pmp1 at siisch1 bus 0 scbus1 target 15 lun 0 ★eSATAの2つあるうちの2つ目
    pmp1: <Port Multiplier 37261095 1706> ATA-0 device
    pmp1: 300.000MB/s transfers (SATA 2.x, NONE, PIO 8192bytes)
    pmp1: 5 fan-out ports
    ada0 at siisch0 bus 0 scbus0 target 0 lun 0  ★eSATAの2つあるうちの1つ目のPMP(今回買ったNA-910C)の1つ目にぶらさがっているディスク
    ada0: <WDC WD20EARS-00MVWB0 51.0AB51> ATA-8 SATA 2.x device
    ada0: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
    ada0: Command Queueing enabled
    ada0: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
    ada1 at siisch1 bus 0 scbus1 target 0 lun 0
    ada1: <WDC WD10EADS-22M2B0 01.00A01> ATA-8 SATA 2.x device
    ada1: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
    ada1: Command Queueing enabled
    ada1: 953869MB (1953525168 512 byte sectors: 16H 63S/T 16383C)
    ada2 at siisch1 bus 0 scbus1 target 1 lun 0
    ada2: <Hitachi HDT721010SLA360 ST6OA3AA> ATA-8 SATA 2.x device
    ada2: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
    ada2: Command Queueing enabled
    ada2: 953869MB (1953525168 512 byte sectors: 16H 63S/T 16383C)
    ada3 at siisch1 bus 0 scbus1 target 2 lun 0
    ada3: <Hitachi HDT721010SLA360 ST6OA3AA> ATA-8 SATA 2.x device
    ada3: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
    ada3: Command Queueing enabled
    ada3: 953869MB (1953525168 512 byte sectors: 16H 63S/T 16383C)
    ada4 at siisch1 bus 0 scbus1 target 3 lun 0
    ada4: <WDC WD20EARS-00S8B1 80.00A80> ATA-8 SATA 2.x device
    ada4: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
    ada4: Command Queueing enabled
    ada4: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
    ada5 at siisch1 bus 0 scbus1 target 4 lun 0
    ada5: <WDC WD20EARS-00MVWB0 50.0AB50> ATA-8 SATA 2.x device
    ada5: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
    ada5: Command Queueing enabled
    ada5: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)

ZFSでディスク交換の練習

今回は普通にディスクを追加してもよかったのですが、折角なので今付いている1TBと交換してみることにしました。 将来ディスク交換の必要がでてくるので慌てないように練習です。交換が終了したら1TBはもう1度追加しなおします。

まずは買ってきたディスクを下ごしらえ

前回の記事を参考にしつつ下ごしらえします。

上のdmesgから新しく追加したディスクはada0です。 ディスク全体をZFS領域にします。

    # gpart create -s gpt ada0
    # gpart add -b 34 -t freebsd-zfs -l storage1-1 ada0

現状

storage0が今回ディスクを追加するストレージプールです。

    # zpool status
      pool: storage0
     state: ONLINE
     scrub: none requested
    config:
    
    	NAME              STATE     READ WRITE CKSUM
    	storage0          ONLINE       0     0     0
    	  gpt/storage0-1  ONLINE       0     0     0
    	  gpt/storage0-2  ONLINE       0     0     0
    	  gpt/storage0-3  ONLINE       0     0     0
    	  gpt/storage0-4  ONLINE       0     0     0
    	  gpt/storage0-5  ONLINE       0     0     0
    
    errors: No known data errors

ここに/dev/gpt/storage1-1を追加します。ただし、ディスク交換用なのでいったんspareとして追加します。

    # zpool add storage0 spare gpt/storage1-1
    # zpool status
    
      pool: storage0
     state: ONLINE
     scrub: none requested
    config:
    
    	NAME              STATE     READ WRITE CKSUM
    	storage0          ONLINE       0     0     0
    	  gpt/storage0-1  ONLINE       0     0     0
    	  gpt/storage0-2  ONLINE       0     0     0
    	  gpt/storage0-3  ONLINE       0     0     0
    	  gpt/storage0-4  ONLINE       0     0     0
    	  gpt/storage0-5  ONLINE       0     0     0
    	spares
    	  gpt/storage1-1  AVAIL   
    
    errors: No known data errors

sparesにgpt/storage1-1が追加されました。今回は練習としてgpt/storage0-4と交換してみます。

    # zpool replace storage0 gpt/storage0-4 gpt/storage1-1

replaceの引数の順はsrc, destです。

    # zpool status
      pool: storage0
     state: ONLINE
    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.
     scrub: resilver in progress for 0h1m, 9.39% done, 0h12m to go
    config:
    
    	NAME                STATE     READ WRITE CKSUM
    	storage0            ONLINE       0     0     0
    	  gpt/storage0-1    ONLINE       0     0     0
    	  gpt/storage0-2    ONLINE       0     0     0
    	  gpt/storage0-3    ONLINE       0     0     0
    	  spare             ONLINE       0     0     0
    	    gpt/storage0-4  ONLINE       0     0     0
    	    gpt/storage1-1  ONLINE       0     0     0  26.2M resilvered
    	  gpt/storage0-5    ONLINE       0     0     0
    	spares
    	  gpt/storage1-1    INUSE     currently in use
    
    errors: No known data errors

resilverが走りはじめました。resilver中も通常動作が可能です。約11時間ほどでresilverが完了しました。 (895GB/(11h * 3600s) = 22MB/sほど)

    # zpool status
      pool: storage0
     state: ONLINE
     scrub: resilver completed after 11h1m with 0 errors on Mon Nov  1 09:39:35 2010
    config:
    
    	NAME                STATE     READ WRITE CKSUM
    	storage0            ONLINE       0     0     0
    	  gpt/storage0-1    ONLINE       0     0     0
    	  gpt/storage0-2    ONLINE       0     0     0
    	  gpt/storage0-3    ONLINE       0     0     0
    	  spare             ONLINE       0     0     0
    	    gpt/storage0-4  ONLINE       0     0     0
    	    gpt/storage1-1  ONLINE       0     0     0  895G resilvered
    	  gpt/storage0-5    ONLINE       0     0     0
    	spares
    	  gpt/storage1-1    INUSE     currently in use
    
    errors: No known data errors

replaceしただけではまだspareとして使用中のままなので交換元のディスクを外し、通常運用へ戻します(zfsadminのp.100)。 交換元のgpt/storage0-4をストレージプールからdetachします。

    # zpool detach storage0 gpt/storage0-4
    # zpool status
      pool: storage0
     state: ONLINE
     scrub: resilver completed after 11h1m with 0 errors on Mon Nov  1 09:39:35 2010
    config:
    
    	NAME              STATE     READ WRITE CKSUM
    	storage0          ONLINE       0     0     0
    	  gpt/storage0-1  ONLINE       0     0     0
    	  gpt/storage0-2  ONLINE       0     0     0
    	  gpt/storage0-3  ONLINE       0     0     0
    	  gpt/storage1-1  ONLINE       0     0     0  895G resilvered
    	  gpt/storage0-5  ONLINE       0     0     0
    
    errors: No known data errors

これで追加したgpt/storage1-1がsparesから通常の状態へ移動しました。 今回はあくまでも練習なので交換元のディスクはストレージプールへまた戻します。

    # zpool add storage0 gpt/storage0-4
    # zpool status
      pool: storage0
     state: ONLINE
     scrub: resilver completed after 11h1m with 0 errors on Mon Nov  1 09:39:35 2010
    config:
    
    	NAME              STATE     READ WRITE CKSUM
    	storage0          ONLINE       0     0     0
    	  gpt/storage0-1  ONLINE       0     0     0
    	  gpt/storage0-2  ONLINE       0     0     0
    	  gpt/storage0-3  ONLINE       0     0     0
    	  gpt/storage1-1  ONLINE       0     0     0  895G resilvered
    	  gpt/storage0-5  ONLINE       0     0     0
    	  gpt/storage0-4  ONLINE       0     0     0
    
    errors: No known data errors

以上でディスク交換の練習はおしまいです。

    # zfs list storage0
    NAME       USED  AVAIL  REFER  MOUNTPOINT
    storage0  6.20T  1.83T  4.52G  /srv/storage

裸族のマンション2階立て + PMP + FreeBSD 8.1-R + ZFSでお手軽ストレージサーバはいかがっすか〜