zfs-on-linux ディスク交換
6TBのHDDが安くなったので、低消費電力化と多少の低発熱を期待して
大容量のHDDに交換を図ってみたので、メモ書き
raidz2なのを良いことに無茶してますので、きちんとした対応はオフラインにしてからですよ
まずは、確認
$sudo zpool status
pool: zfs_pool
state: ONLINE
scan: scrub repaired 0 in 2h35m with 0 errors on Sun Jul 8 02:59:27 2018
config:
NAME STATE READ WRITE CKSUM
zfs_pool ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46LZDJGS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46M52GGS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46LZB9GS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46LV2TGS ONLINE 0 0 0
ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0YEYDK8 ONLINE 0 0 0
errors: No known data errors
とりあえず、問題ないことを確認
raidz2なので、電源OFFにして、いきなり1台交換した
HDDの入れ替え
$ sudo parted -l #入れ替えたHDDを確認
HDDをGPTに
$ sudo parted /dev/sde #今回は、sde
(parted) mklabel gpt #gptに変更
Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? Yes
(parted) quit #quitで終了 .
Information: You may need to update /etc/fstab.
フォーマットはしなくて良い
一応、GUIでもできるが、コマンド打った方が早いね(以下、GUI使った場合)
$ sudo apt-get install gparted
再起動するとシステム→システム管理に GParted が表示されるので起動
GPartedのツールバーの右側にあるドロップダウンリストをクリックして対象のデバイスを選択する。
メニューバーのデバイスからパーティションテーブルの作成 を選択
gptを選択して「適用」ボタンをクリックするとGUID パーティションテーブルが作成される
未割り当てとなっているパーティションを右クリックして新規をクリック
パーティション作成のウィンドウが表示されるので、サイズを入力、
ファイルシステムを未フォーマットにして「追加」ボタンをクリック
メニューバーの緑色のチェック(レ点)をクリックして保留中の動作を適用させる
再確認
$ sudo zpool status
pool: zfs_pool
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using ‘zpool replace’.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 2h35m with 0 errors on Sun Jul 8 02:59:27 2018
config:
NAME STATE READ WRITE CKSUM
zfs_pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ata-TOSHIBA_DT01ACA300_X46LZDJGS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46M52GGS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46LZB9GS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46LV2TGS ONLINE 0 0 0
16053920286801522910 UNAVAIL 0 0 0 was /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0YEYDK8-part1
errors: No known data errors #エラーある場合は、チェックしてからやった方が良いと思う
HDDをオフライン処置せずに交換したので、当然 DEGRADED 表示になった
HDDも UNAVAIL 表示になった
zpool replace をするように言われるので実行
その前にHDDのdisk-idを確認しておく
$ ls /dev/disk/by-id
ata-WDC_WD30EZRX-00D8PB0_WD-WCC4N0586098
ata-WDC_WD30EZRX-00D8PB0_WD-WCC4N0586098-part1
ata-WDC_WD60EZRZ-00GZ5B1_WD-WX61D38K3FFH
ata-WDC_WD60EZRZ-00GZ5B1_WD-WX61D38K3FFH-part1
ata-TOSHIBA_DT01ACA300_X46LZB9GS
ata-TOSHIBA_DT01ACA300_X46LZB9GS-part1
ata-TOSHIBA_DT01ACA300_X46LZB9GS-part9
こんな感じで表示されるので、新規に交換したHDDのIDを確認しておく
replaceコマンドを実行
# replace [-f] [-o property=value] <pool> <device> [new-device] #コマンドリファレンス的な表示
$ sudo zpool replace -f zfs_pool /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0YEYDK8 /dev/disk/by-id/ata-WDC_WD60EZRZ-00GZ5B1_WD-WX61D38K3FFH
was以下が以前のHDDなので、それを記載してから、先程確認した新規HDDのIDを記載して実行
$ sudo zpool status
pool: zfs_pool
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 Jul 19 22:55:08 2018
12.4G scanned out of 4.40T at 455M/s, 2h48m to go
2.48G resilvered, 0.28% done
config:
NAME STATE READ WRITE CKSUM
zfs_pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ata-TOSHIBA_DT01ACA300_X46LZDJGS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46M52GGS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46LZB9GS ONLINE 0 0 0
ata-TOSHIBA_DT01ACA300_X46LV2TGS ONLINE 0 0 0
replacing-4 DEGRADED 0 0 0
16053920286801522910 UNAVAIL 0 0 0 was /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0YEYDK8-part1
ata-WDC_WD60EZRZ-00GZ5B1_WD-WX61D38K3FFH-part1 ONLINE 0 0 0 (resilvering)
errors: No known data errors
新しいHDDが認識されたので 古い方は削除する
$ sudo zpool detach zfs_pool 16053920286801522910
この調子で全部交換完了する
全て交換が終わると自動的に容量が増えてました