2015年5月17日日曜日

サーバのスペアドライブの交換

ファイルサーバはRAID-Zで構築しているんだが、そのRAID-Zがある程度壊れても復旧するようにしていたんだが、SMARTDから、読めないセクタが出てるよとアラートが上がってきたので、なんで使ってないのにエラーがでるかな?と思いながらも交換することにした。

地元資本の量販店で、WD3001FFX いわゆるWD RED PROなんぞを購入。

ターミナルでログイン、SUで、zfsで、状態を確認。

# zpool status
  pool: ztank
state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        ztank       ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            sda     ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sdg     ONLINE       0     0     0
            sdh     ONLINE       0     0     0
        spares
          sde       AVAIL

errors: No known data errors

問題のsparesはsdeとわかるので、一旦取り外す

# zpool detach ztank /dev/sde
cannot detach /dev/sde: device is reserved as a hot spare

と怒られる。ホットスペアを解除しないといけないようだ。

# zpool remove ztank /dev/sde
# zpool status
  pool: ztank
state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        ztank       ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            sda     ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sdg     ONLINE       0     0     0
            sdh     ONLINE       0     0     0

errors: No known data errors

OK、これでスペアが消えたので、一旦サーバの電源を落とす。
(落とさなくても行けそうなんだが、ちょっとしたことで壊すことがおおいので手順を踏んでおきます。)

# shutdown -h now

ディスクを入れ替えたら、起動。

# fdisk –l

で、接続したHDDを認識しているか確認。ちゃんとsdeになっているのを確認したら。

# zpool add ztank spare sde
invalid vdev specification
use '-f' to override the following errors:
/dev/sde does not contain an EFI label but it may contain partition
information in the MBR.

ありゃエラーが出てしまいました。

# parted /dev/sde
GNU Parted 2.1
/dev/sde を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) mklabel gpt
(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

# zpool add ztank spare sde
# zpool status
  pool: ztank
state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        ztank       ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            sda     ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sdg     ONLINE       0     0     0
            sdh     ONLINE       0     0     0
        spares
          sde       AVAIL

errors: No known data errors

OKこれでできた。