«前の日記(2014-09-08) 最新 次の日記(2014-12-03)» 編集

tueda's diary


2014-09-10 tueda's diary

_ [教えて] zfs mirror on FreeBSD 10.0

日記を書くとエロ^Hエライひとがコメント欄で色々教えて下さる事がわかったので(^^;; いま悩んでることを書いておきます.

FreeBSDのバージョンは正確には 10-stableでこんな感じ.

Last Changed Rev: 271185
Last Changed Date: 2014-09-06 13:39:26 +0900 (Sat, 06 Sep 2014)

実験用に WD の緑玉な ada2, ada3 で mirroring をしていたのですが,ada3 が飛んだので(最終的には全部赤玉に入れ替える積もりで) ada3 を赤玉に入れ替えました.

# zpool replace pool0 gpt/ada3p1
# zpool status -v
  pool: pool0
 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 Wed Sep 10 09:18:44 2014
        3.89G scanned out of 208G at 63.3M/s, 0h55m to go
        3.89G resilvered, 1.87% done
config:

        NAME                        STATE     READ WRITE CKSUM
        pool0                       DEGRADED     0     0     0
          mirror-0                  DEGRADED     0     0     0
            gpt/ada2p1              ONLINE       0     0     0
            replacing-1             DEGRADED     0     0     0
              12275674524672213026  FAULTED      0     0     0  was /dev/gpt/ada3p1/old
              gpt/ada3p1            ONLINE       0     0     0  (resilvering)

となって resilvering が始まる事は始まるのですが.10% ほど進むと最初からやり直して,開始時間,所要時間,進捗率ともリセットされてしまいます.

これって,そういうものだと思って "action: Wait for the resilver to complete." にしたがって忍耐してればそのうち終わるんでしょうか?(ーー;)

実は夕べ一晩(7時間くらい)放置していたのですが,朝見るとやはり最初からやり直しています.このとき,/dev/ada3p1 が見えなくなっていたので,これは何かおかしいと思って(/dev/gpt/ada3p1 は見えてました)

# zpool detach pool0 gpt/ada3p1

を実行して gpt/ada3p1 を外して resivering を止めましたら,何故か /dev/ada3p1 が復活.うーむ.

吹っ飛んだ ada3 を引っこ抜いた状態が以下な感じ(記憶に基づいて編集してます)だったのですが

        NAME                        STATE     READ WRITE CKSUM
        pool0                       DEGRADED     0     0     0
          mirror-0                  DEGRADED     0     0     0
            gpt/ada2p1              ONLINE       0     0     0
            12275674524672213026    REMOVOED      0     0     0  was /dev/gpt/ada3p1/old

ここで zpool offline をせずにいきなり replace をしたのがイケなかったのかしらと思い,ada3 のパーティションテーブルを作り直した上でやりなおしたのが,最初のコマンドラインです.

ちなみに ada2, ada3 のパーティション情報は以下.

# gpart show ada2
=>        34  5860533101  ada2  GPT  (2.7T)
          34           6        - free -  (3.0K)
          40  5860533088     1  freebsd-zfs  (2.7T)
  5860533128           7        - free -  (3.5K)

# gpart show -l ada2
=>        34  5860533101  ada2  GPT  (2.7T)
          34           6        - free -  (3.0K)
          40  5860533088     1  ada2p1  (2.7T)
  5860533128           7        - free -  (3.5K)
# gpart show ada3
=>        34  5860533101  ada3  GPT  (2.7T)
          34           6        - free -  (3.0K)
          40  5860533088     1  freebsd-zfs  (2.7T)
  5860533128           7        - free -  (3.5K)

# gpart show -l ada3
=>        34  5860533101  ada3  GPT  (2.7T)
          34           6        - free -  (3.0K)
          40  5860533088     1  ada3p1  (2.7T)
  5860533128           7        - free -  (3.5K)

label を付けておかないと zfs の pool に追加したときにデバイス名に gptid が使われてわかりにくいので,gpt のパーティション名と同じラベル名を付けてあります.

/dev/ada3p1 が見えなくなった時は,WD 赤玉を物理的に突っ込んで,以下の手順でパーティションテーブルを設定しました.

# gpart backup ada2 | gpart restore ada3
# gpart modify -i 1 -l ada3p1 ada3

その後,前述の通り offline をせずに

# zpool replace pool0 gpt/ada3p1

とやったわけです.一旦止めて,ada3p1 を切り直した手順は以下.

# zpool offline pool0 gpt/ada3p1
# gpart destroy -F ada3
# gpart create -s gpt ada3
# gpart add -a 4k -t freebsd-zfs -l ada3p1 ada3
# zpool online pool0 gpt/ada3p1
# zpool replace pool0 gpt/ada3p1

しかし結果は同じで,数分くらいやると最初からやり直している感じで,永遠に終わらないんじゃ無いかという気がします.現時点で2時間半ほど経ちますが,今の所デバイスもラベルも問題無く見えています.

# ls -al /dev/ada3*
crw-r-----  1 root  operator  0x74 Sep  9 22:44 /dev/ada3
crw-r-----  1 root  operator  0xa3 Sep 10 06:58 /dev/ada3p1
# ls -al /dev/gpt/ada3*
crw-r-----  1 root  operator  0xa5 Sep 10 06:58 /dev/gpt/ada3p1

今朝も,7時間ほどの所で辛抱しきれなかったのが良くなくて,もう少し待ってれば良かったんでしょうか?それともやっぱり何かがおかしいんでしょうか?

あと関係ありそうな情報としては,smart で見た SATA 速度くらいでしょうか.

# smartctl -i /dev/ada2
smartctl 6.3 2014-07-26 r3976 [FreeBSD 10.1-PRERELEASE amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar Green (AF, SATA 6Gb/s)
Device Model:     WDC WD30EZRX-00D8PB0
Serial Number:    WD-WMC4N2726890
LU WWN Device Id: 5 0014ee 6048198ca
Firmware Version: 80.00A80
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Wed Sep 10 09:44:12 2014 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
# smartctl -i /dev/ada3
smartctl 6.3 2014-07-26 r3976 [FreeBSD 10.1-PRERELEASE amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Red (AF)
Device Model:     WDC WD30EFRX-68EUZN0
Serial Number:    WD-WMC4N0D4ZK5M
LU WWN Device Id: 5 0014ee 604cca3f9
Firmware Version: 82.00A82
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Wed Sep 10 09:44:36 2014 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

と,SATA の速度が違います.ML110 G7 にはオンボードに SATA コントローラがふたつ載ってるみたいなので,敢えて別コントローラに分けて繋いだのですが…これも実は不思議で

# dmesg | grep atapci
atapci0: <Intel Cougar Point SATA300 controller> port 0x1038-0x103f,0x1040-0x1043,0x1048-0x104f,0x1050-0x1053,0x1060-0x106f,0x1070-0x107f irq 17 at device 31.2 on pci0
ata2: <ATA channel> at channel 0 on atapci0
ata3: <ATA channel> at channel 1 on atapci0
atapci1: <Intel Cougar Point SATA300 controller> port 0x1080-0x1087,0x1088-0x108b,0x1090-0x1097,0x1098-0x109b,0x10a0-0x10af,0x10b0-0x10bf irq 17 at device 31.5 on pci0
ata4: <ATA channel> at channel 0 on atapci1
ata5: <ATA channel> at channel 1 on atapci1

と,dmesg 的には両方とも同じ物に見えるのですが何故?という感じです.ちなみにada0, ada1 は WD の赤玉が載っていて,gmirror でraid1を構成していますが,こちらも 6Gbps と 3Gbps で認識しています.うーん,何故じゃ(ーー;)

教えて,エロいひと!


総訪問者数: 本日の訪問者数: 昨日の訪問者数: