[FreeBSD]コマンド2
HDD故障した時の交換方法(zpool replace失敗)
以下で状態確認したらDEGRADされてる。
# zpool status
オープンなPCケースなので、HDDのアクセスランプなんて無いし、どれが故障したHDDだか分からない。
そのため、以下コマンドで認識可能なHDDのシリアル番号を全て調べてリスト化しておく。
# camcontrol identify ada0
尚、zpool statusでDEGRADEの原因となりREMOVEされたHDDはada3だったが、それも見てみるとOSで外された?せいか、
以下のように見つからない。
# camcontrol identify ada3
また、全てのHDDリスト見るには以下。
# camcontrol devlist
※ 表示されなくなるので左端の<は削除してる。
次にシャットダウンして問題のHDDをPCから外す。
# shutdown -p now
接続されている全HDD 5台を確認すると、確かにada3のHDDだけ、メモしたシリアル番号リストになかった。
つまり、シリアル番号がリストにないHDDが問題が発生したHDDなので、それをPCから外す。
外して新しい同等品に交換したら、再度PCを起動。無事起動した。
今度は以下で表示されているので、無事交換したHDDも認識されている。
# camcontrol identify ada3
正常動作してるHDD見ると、パーティションタイプはGPTになってる。
MBRじゃ2TB以上のパーティション扱えないから、3TB HDDを扱うために過去の自分がGPTにしたんだろう。記憶無し。
# gpart show ada0
交換したばかりのada3は確認してもパーティションタイプが設定してない?から、No such geomと言われるみたい。
# gpart show ada3
gpart: No such geom: ada0.
GPTパーティションタイプにする。
# gpart create -s gpt ada3
ところで、今やってるように、故障したHDDが認識されていたada3へ、新HDDを交換してada3で認識されている状態において、
どうやってzpool replaceを実行するのか?
調べたら以下にぴったりの回答があった。
https://docs.oracle.com/cd/E19253-01/819-6260/gazgd/index.html
この情報によると、状況によってコマンドが変わるとの事。
①新旧HDDを交換してしまい、新HDDが旧HDDと同じ場所(ada3)になっている場合
→ zpool replace rz2pool ada3
②PCに旧HDD(ada3)、新HDD(ada5)の両方が接続されている場合
→ zpool replace rz2pool ada3 ada5
今回は①のケースなので、以下実行してみる。
# zpool replace rz2pool ada3
すぐに実行完了した。状態を見てみると・・・
# zpool status rz2pool
旧HDD(2685441344063119102)に対して、新HDD(ada3)がresilveringという状態になってる。
10分くらい経っても161G resilvered, 12.14% doneくらいで、3TBのresilverには時間かかるね。
他のブログを見ると、新HDDをGPTに設定した後、元の正常HDDのパーティション構成に真似て、
1つ1つパーティションを設定しているのを見たが、あれはスキップしても良いのかな?
今回はGPT設定だけやって、あとはzpool replaceでうまくいってるみたいだし。
っと思ったら、resilverが終わったら、なぜかこんな感じに新旧HDD両方共にREMOVEDになってる。
# zpool status
PCの同じスロットで新旧HDDを交換した場合は、replaceコマンドだけで置き換え完了するって書いてあるけど・・・
https://docs.oracle.com/cd/E24845_01/html/819-6260/gayrd.html#gazgd
今更気付いたが、zpool replaceで指定するHDDは、新HDDでなくて、旧HDDの方だった。
このまま新HDDをPCに接続したまま再起動すると、ada4だったHDDがada3として起動し、
しかも故障したHDD(旧HDD)も交換用に追加したHDD(新HDD)もREMOVED扱いのまま。
# zpool status
新HDDのSATAデータ線を外してPCを再起動しても、変わらず。
起動中に新HDDのSATAデータ線を繋いでも認識されないので、新HDDのSATA電源とデータ線を両方抜いてから、
再度データ線、電源の順に接続すると・・・
rz2poolの他のHDDもREMOVEDされてUNAVAIL状態になった。
シャットダウンしても、途中止まってるようで、telnetログインも拒否される。なぜかpingは通るが、一向に電源切れない。
電源長押しで強制OFF。
その後起動すると、また新HDDが自動的にresilveringされ始めた。
0.1%doneくらいから新HDDの認識がada3から9168xxxxxxに変わって、ONLINEだったのが、REMOVEDに変わった。
:
旧HDDの接続されていたada3へ新しいHDDを接続して、
zpool replace rz2pool ada3
※ 旧HDDのID(長い数字のランダムみたいなもの)を指定するとエラー出たため、ada3と新HDDを指定してる。
オラクルマニュアルではどちらでもOKと記載あった。
とやっても、結局resilveringの後に、その新HDDがREMOVEDになる原因が分からず。
結局、FreeBSDを再度インストールする事に。
元の構成はOS HDD x1本 + データプール(HDD x 4本でZFS)としてたが、
今度の構成はOSとデータ全部込みでHDD x 5本でZFSを組んでる。
11.2新規インストール
11.2をDVDからインストール。
OS含めたZFSプールは、東芝DT01ACA300 x 5本。512eのHDDなので、ZFSプール作成時のForce 4KはNOにした。
(このHDDは512eなので、ホストから見たら512Bセクターなので。)
portイントール??
# cd /usr/ports/japanese/ne
# make install clean
https://freebsd.sing.ne.jp/11.01/02/08.html
treeインストール
# cd /usr/ports/sysutils/tree
# make
# make install
vimインストール
# cd /usr/ports/editors/vim
# make
# make install
GNOME対応にチェックしたせいか、途中で各ライブラリのコンフィグ画面が起動していちいちOKしないといけないの面倒。
しかもエラーで終わってる。
sshdインストール
# vi /etc/rc.conf
sshd_enable="YES"
# vi /etc/ssh/sshd_config
# /etc/rc.d/sshd restart
# ssh-keygen -t rsa
※ パスフレーズは使用しない設定にしたので、EmptyのままEnter
hogeユーザがsuでrootになれるように設定
# vi /etc/group
wheel:*:0:root,hoge → 末尾に「,hoge」を追加した。
sambaインストール
https://www.kishiro.com/FreeBSD/samba4.html
libiconvを入れておくと、Windows上の日本語フォルダやファイルが正しく表示されるようになる、との事。
確かに以前に作ったFreeBSDのsambaは文字化けしていて困った事ある。これで解決か?
# cd /usr/ports/converters/libiconv
# make config-recursive
# make install clean
続いてsamba48をインストール。
# cd /usr/ports/net/samba48
# make config-recursive
# make install clean
smb4.confを新規作成
#vi /usr/local/etc/smb4.conf
# vi /etc/rc.conf
share用フォルダの権限を設定
# chmod 777 /home/share
samba再起動。
# /usr/local/etc/rc.d/samba_server restart
GNU ls 等を使用できるようにするportsインストール。
# cd /usr/ports/sysutils/coreutils
# make
# make install
ん? 既にZFSプールがDEGRADED
以下初期設定やってから気づいたが、zpool statusで状況見てみたら、
# zpool status
以下で状態確認したらDEGRADされてる。
# zpool status
pool: rz2pool
state: DEGRADED
status: ...
action: ... or replace the device with 'zpool replace'.
scan: ...
config:
NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
2685.. REMOVED 0 0 0 was /dev/ada3
ada4 ONLINE 0 0 0
errors: No known data errors
オープンなPCケースなので、HDDのアクセスランプなんて無いし、どれが故障したHDDだか分からない。
そのため、以下コマンドで認識可能なHDDのシリアル番号を全て調べてリスト化しておく。
# camcontrol identify ada0
pass0:ATA8-ACS SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
protocol ATA/ATAPI-8 SATA 3.x
device model TOSHIBA DT01ACA300
firmware revision MX6OABB0
serial number xxxxxxxxxx --> これがシリアル番号
:
尚、zpool statusでDEGRADEの原因となりREMOVEされたHDDはada3だったが、それも見てみるとOSで外された?せいか、
以下のように見つからない。
# camcontrol identify ada3
camcontrol: cam_lookup_pass: CAMGETPASSTHRU ioctl failed
cam_lookup_pass: No such file or directory
cam_lookup_pass: either the pass driver isn't in your kernel
cam_lookup_pass: or ada3 doesn't exist
また、全てのHDDリスト見るには以下。
# camcontrol devlist
※ 表示されなくなるので左端の<は削除してる。
TOSHIBA DT01ACA300 MX6OABB0> at scbus0 target 0 lun 0 (ada0,pass0)
Optiarc DVD RW AD-7200S 1.06> at scbus1 target 0 lun 0 (cd0,pass1)
TOSHIBA DT01ACA300 MX6OABB0> at scbus2 target 0 lun 0 (ada1,pass2)
TOSHIBA DT01ACA300 MX6OABB0> at scbus3 target 0 lun 0 (ada2,pass3)
TOSHIBA DT01ACA300 MX6OABB0> at scbus5 target 0 lun 0 (ada4,pass5)
AHCI SGPIO Enclosure 1.00 0001> at scbus6 target 0 lun 0 (ses0,pass6)
次にシャットダウンして問題のHDDをPCから外す。
# shutdown -p now
接続されている全HDD 5台を確認すると、確かにada3のHDDだけ、メモしたシリアル番号リストになかった。
つまり、シリアル番号がリストにないHDDが問題が発生したHDDなので、それをPCから外す。
外して新しい同等品に交換したら、再度PCを起動。無事起動した。
今度は以下で表示されているので、無事交換したHDDも認識されている。
# camcontrol identify ada3
正常動作してるHDD見ると、パーティションタイプはGPTになってる。
MBRじゃ2TB以上のパーティション扱えないから、3TB HDDを扱うために過去の自分がGPTにしたんだろう。記憶無し。
# gpart show ada0
=> 34 5860533101 ada0 GPT (2.7T)
34 6 - free - (3.0K)
40 1024 1 freebsd-boot (512K)
1064 5853150200 2 freebsd-ufs (2.7T)
5853151264 7381870 3 freebsd-swap (3.5G)
5860533134 1 - free - (512B)
交換したばかりのada3は確認してもパーティションタイプが設定してない?から、No such geomと言われるみたい。
# gpart show ada3
gpart: No such geom: ada0.
GPTパーティションタイプにする。
# gpart create -s gpt ada3
ところで、今やってるように、故障したHDDが認識されていたada3へ、新HDDを交換してada3で認識されている状態において、
どうやってzpool replaceを実行するのか?
調べたら以下にぴったりの回答があった。
https://docs.oracle.com/cd/E19253-01/819-6260/gazgd/index.html
この情報によると、状況によってコマンドが変わるとの事。
①新旧HDDを交換してしまい、新HDDが旧HDDと同じ場所(ada3)になっている場合
→ zpool replace rz2pool ada3
②PCに旧HDD(ada3)、新HDD(ada5)の両方が接続されている場合
→ zpool replace rz2pool ada3 ada5
今回は①のケースなので、以下実行してみる。
# zpool replace rz2pool ada3
すぐに実行完了した。状態を見てみると・・・
# zpool status rz2pool
pool: rz2pool
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 Sat Aug 25 09:29:38 2018
2.39G scanned out of 5.36T at 122M/s, 12h44m to go
590M resilvered, 0.04% done
config:
NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
replacing-2 REMOVED 0 0 0
2685441344063119102 REMOVED 0 0 0 was /dev/ada3/old
ada3 ONLINE 0 0 0 (resilvering)
ada4 ONLINE 0 0 0
errors: No known data errors
旧HDD(2685441344063119102)に対して、新HDD(ada3)がresilveringという状態になってる。
10分くらい経っても161G resilvered, 12.14% doneくらいで、3TBのresilverには時間かかるね。
他のブログを見ると、新HDDをGPTに設定した後、元の正常HDDのパーティション構成に真似て、
1つ1つパーティションを設定しているのを見たが、あれはスキップしても良いのかな?
今回はGPT設定だけやって、あとはzpool replaceでうまくいってるみたいだし。
っと思ったら、resilverが終わったら、なぜかこんな感じに新旧HDD両方共にREMOVEDになってる。
# zpool status
pool: rz2pool
state: DEGRADED
:
config:
NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
replacing-2 DEGRADED 0 0 1
2685441344063119102 REMOVED 0 0 0 was /dev/ada3/old
xxxxxxxxxxxxxxxxxxx REMOVED 0 0 0 was /dev/ada3
ada4 ONLINE 0 0 0
errors: No known data errors
PCの同じスロットで新旧HDDを交換した場合は、replaceコマンドだけで置き換え完了するって書いてあるけど・・・
https://docs.oracle.com/cd/E24845_01/html/819-6260/gayrd.html#gazgd
今更気付いたが、zpool replaceで指定するHDDは、新HDDでなくて、旧HDDの方だった。
このまま新HDDをPCに接続したまま再起動すると、ada4だったHDDがada3として起動し、
しかも故障したHDD(旧HDD)も交換用に追加したHDD(新HDD)もREMOVED扱いのまま。
# zpool status
pool: rz2pool
state: DEGRADED
:
config:
NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
replacing-2 DEGRADED 0 0 1
2685441344063119102 REMOVED 0 0 0 was /dev/ada3/old
xxxxxxxxxxxxxxxxxxx REMOVED 0 0 0 was /dev/ada3
ada3 ONLINE 0 0 0
errors: No known data errors
新HDDのSATAデータ線を外してPCを再起動しても、変わらず。
# zpool status
pool: rz2pool
state: DEGRADED
scan: resilvered 143M in 3h2m with 0 errors on Sun Aug 26 11:03:56 2018
config:
NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
replacing-2 UNAVAIL 0 0 0
2685441344063119102 REMOVED 0 0 0 was /dev/ada3/old
916842558509187076 REMOVED 0 0 0 was /dev/ada3
ada3 ONLINE 0 0 0
errors: No known data errors
起動中に新HDDのSATAデータ線を繋いでも認識されないので、新HDDのSATA電源とデータ線を両方抜いてから、
再度データ線、電源の順に接続すると・・・
rz2poolの他のHDDもREMOVEDされてUNAVAIL状態になった。
シャットダウンしても、途中止まってるようで、telnetログインも拒否される。なぜかpingは通るが、一向に電源切れない。
電源長押しで強制OFF。
その後起動すると、また新HDDが自動的にresilveringされ始めた。
0.1%doneくらいから新HDDの認識がada3から9168xxxxxxに変わって、ONLINEだったのが、REMOVEDに変わった。
:
旧HDDの接続されていたada3へ新しいHDDを接続して、
zpool replace rz2pool ada3
※ 旧HDDのID(長い数字のランダムみたいなもの)を指定するとエラー出たため、ada3と新HDDを指定してる。
オラクルマニュアルではどちらでもOKと記載あった。
とやっても、結局resilveringの後に、その新HDDがREMOVEDになる原因が分からず。
結局、FreeBSDを再度インストールする事に。
元の構成はOS HDD x1本 + データプール(HDD x 4本でZFS)としてたが、
今度の構成はOSとデータ全部込みでHDD x 5本でZFSを組んでる。
11.2新規インストール
11.2をDVDからインストール。
OS含めたZFSプールは、東芝DT01ACA300 x 5本。512eのHDDなので、ZFSプール作成時のForce 4KはNOにした。
(このHDDは512eなので、ホストから見たら512Bセクターなので。)
portイントール??
# cd /usr/ports/japanese/ne
# make install clean
https://freebsd.sing.ne.jp/11.01/02/08.html
treeインストール
# cd /usr/ports/sysutils/tree
# make
# make install
vimインストール
# cd /usr/ports/editors/vim
# make
# make install
GNOME対応にチェックしたせいか、途中で各ライブラリのコンフィグ画面が起動していちいちOKしないといけないの面倒。
しかもエラーで終わってる。
sshdインストール
# vi /etc/rc.conf
sshd_enable="YES"
# vi /etc/ssh/sshd_config
PasswordAuthentication yes → パスワードのみで認証する設定。
PubkeyAuthentication no → 認証に鍵を使用しない設定。
# /etc/rc.d/sshd restart
# ssh-keygen -t rsa
※ パスフレーズは使用しない設定にしたので、EmptyのままEnter
hogeユーザがsuでrootになれるように設定
# vi /etc/group
wheel:*:0:root,hoge → 末尾に「,hoge」を追加した。
sambaインストール
https://www.kishiro.com/FreeBSD/samba4.html
libiconvを入れておくと、Windows上の日本語フォルダやファイルが正しく表示されるようになる、との事。
確かに以前に作ったFreeBSDのsambaは文字化けしていて困った事ある。これで解決か?
# cd /usr/ports/converters/libiconv
# make config-recursive
# make install clean
続いてsamba48をインストール。
# cd /usr/ports/net/samba48
# make config-recursive
# make install clean
smb4.confを新規作成
#vi /usr/local/etc/smb4.conf
[global]
workgroup = HOGE
server string = Samba Server (FreeBSD)
security = user
hosts allow = 192.168.xxx.
interfaces = 192.168.xxx.yyy/24
map to guest = Bad User
guest ok = yes
guest only = yes
guest account = nobody
load printers = no
log file = /var/log/samba4/log.%m
max log size = 50
dns proxy = no
unix charset = CP932
dos charset = EUCJP-MS
create mask = 600
directory mask = 700
printing = bsd
[share]
comment = Shared Directories
path = /home/share
browseable = yes
writable = yes
# vi /etc/rc.conf
samba_server_enable="YES"
share用フォルダの権限を設定
# chmod 777 /home/share
samba再起動。
# /usr/local/etc/rc.d/samba_server restart
GNU ls 等を使用できるようにするportsインストール。
# cd /usr/ports/sysutils/coreutils
# make
# make install
ん? 既にZFSプールがDEGRADED
以下初期設定やってから気づいたが、zpool statusで状況見てみたら、
# zpool status
pool: zroot
state: DEGRADED
status: One or more devices has been removed by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada0p3 ONLINE 0 0 0
ada1p3 ONLINE 0 0 0
2542862470788629067 REMOVED 0 0 0 was /dev/ada2p3
ada3p3 ONLINE 0 0 0
ada4p3 ONLINE 0 0 0
errors: No known data errors
スポンサーサイト