2012年2月14日火曜日

GEOM Gateでネットワーク越しにgmirror

PowerEdge 860にSATA 250GBなHDDを2発付けてRoot On GEOM Mirrorしたのはいいけれど、もろもろ設定して「仕事用マシン」にした後にHDDの容量が足りないことに気が付いた。手元に2TBのHDDもあったので、ただ再インストールするのも面白くないのでやってみた。
GEOM Gateを使って、ローカル側のgm0にリモート側に付けた2TBのHDDを追加してmirrorした後にHDDを取り換えるという作戦を取ることに。
  • サーバ(2TBのHDDを取り付けた方)
    • FreeBSD 9.0-RELEASE
    • 192.168.10.1/24
    • ggatedでexportするHDD
      ggated# dmesg|grep ada1
      ada1 at ata2 bus 0 scbus1 target 1 lun 0
      ada1:  ATA-8 SATA 2.x device
      ada1: 150.000MB/s transfers (SATA 1.x, UDMA5, PIO 8192bytes)
      ada1: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
      ada1: Previously was known as ad5
      ggated# dmesg | grep ada2
      ada2 at ata3 bus 0 scbus2 target 0 lun 0
      ada2:  ATA-8 SATA 2.x device
      ada2: 150.000MB/s transfers (SATA 1.x, UDMA5, PIO 8192bytes)
      ada2: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
      ada2: Previously was known as ad6
      
    • /etc/gg.exports
      ggated# cat /etc/gg.exports
      192.168.10.0/24 RW /dev/ada1
      192.168.10.0/24 RW /dev/ada2
      
    • いらないかもしれないけど、/etc/hosts.allow
      ggated# grep 'ggated' /etc/hosts.allow
      ggated : 192.168.10.0/255.255.255.0 : allow
      ggated : ALL : deny
      
  • クライアント(250GBのHDDを取り付けた方)
    • FreeBSD 9.0-RELEASE
    • 192.168.10.2/24

こんな感じでマシンを準備しておいて、以下の手順で。
  1. 準備ができたら、サーバ側でggatedを起動
    ggated# ggated
  2. クライアント側でデバイスを生やす
    % sudo ggatec create -o rw 192.168.10.1 /dev/ada1
    パスワード:
    ggate0
    % sudo ggatec create -o rw 192.168.10.1 /dev/ada2
    ggate1
    
  3. クライアント側の既存のgmirrorに追加する
    % gmirror status
            Name  Status        Components
    mirror/gm0  COMPLETE  ada0 (ACTIVE)
                                        ada1 (ACTIVE)
    % gmirror list
    Geom name: gm0
    State: COMPLETE
    Components: 2
    Balance: load
    Slice: 4096
    Flags: NONE
    GenID: 0
    SyncID: 1
    ID: 474148217
    Providers:
    1. Name: mirror/gm0
       Mediasize: 249999999488 (232G)
       Sectorsize: 512
       Mode: r2w2e3
    Consumers:
    1. Name: ada0
       Mediasize: 250000000000 (232G)
       Sectorsize: 512
       Mode: r1w1e1
       State: ACTIVE
       Priority: 0
       Flags: DIRTY
       GenID: 0
       SyncID: 1
       ID: 4280809814
    2. Name: ada1
       Mediasize: 250000000000 (232G)
       Sectorsize: 512
       Mode: r1w1e1
       State: ACTIVE
       Priority: 1
       Flags: DIRTY
       GenID: 0
       SyncID: 1
       ID: 1891649756
    % sudo gmirror insert gm0 ggate0
    パスワード:
    % sudo gmirror insert gm0 ggate1
    % gmirror status
            Name  Status        Components
    mirror/gm0  DEGRADED  ada0 (ACTIVE)
                                        ada1 (ACTIVE)
                                        ggate0 (SYNCHRONIZING, 0%)
                                        ggate1 (SYNCHRONIZING, 0%)
    % gmirror list
    Geom name: gm0
    State: DEGRADED
    Components: 4
    Balance: load
    Slice: 4096
    Flags: NONE
    GenID: 0
    SyncID: 1
    ID: 474148217
    Providers:
    1. Name: mirror/gm0
       Mediasize: 249999999488 (232G)
       Sectorsize: 512
       Mode: r4w2e3
    Consumers:
    1. Name: ada0
       Mediasize: 250000000000 (232G)
       Sectorsize: 512
       Mode: r1w1e1
       State: ACTIVE
       Priority: 0
       Flags: DIRTY
       GenID: 0
       SyncID: 1
       ID: 4280809814
    2. Name: ada1
       Mediasize: 250000000000 (232G)
       Sectorsize: 512
       Mode: r1w1e1
       State: ACTIVE
       Priority: 1
       Flags: DIRTY
       GenID: 0
       SyncID: 1
       ID: 1891649756
    3. Name: ggate0
       Mediasize: 2000398934016 (1.8T)
       Sectorsize: 512
       Mode: r1w1e1
       State: SYNCHRONIZING
       Priority: 0
       Flags: DIRTY, SYNCHRONIZING
       GenID: 0
       SyncID: 1
       Synchronized: 0%
       ID: 989612303
    4. Name: ggate1
       Mediasize: 2000398934016 (1.8T)
       Sectorsize: 512
       Mode: r1w1e1
       State: SYNCHRONIZING
       Priority: 0
       Flags: DIRTY, SYNCHRONIZING
       GenID: 0
       SyncID: 1
       Synchronized: 0%
       ID: 3578002709
    
  4. リビルド始まったのでしばらく放置。これをやった時は、同じL2スイッチに100MBでリンクアップした状態で、10分で1%位の速度が出てた。
  5. リビルドが終わったら、マウント解除してggatedを止める。今回は
    ggated# pkill ggated
    
    しちゃいました。

で、250GBと2TBで無理やりmirrorしてるので、この後GPTをもげる必要があるけど、それは別のエントリというこで。