FC2ブログ

[FreeBSD]コマンド2

HDD故障した時の交換方法(zpool replace失敗)

以下で状態確認したら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


スポンサーサイト

[FreeBSD]トラブルシューティング

smbd[7551]: Oplock break failed for file xx/xx.avi -- replying anyway

コピー中に発生。
以下が参考になるかな。
http://april.fool.jp/blogs/2014/01/windows7%E3%81%A7samba%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E3%81%86%E3%81%BE%E3%81%8F%E9%96%8B%E3%81%91%E3%81%AA%E3%81%84%E4%BB%B6%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%EF%BC%88oplocks/#Oplocks



sambaに接続出来ない(DNSサーバインストール作業(途中)後)

sambaサーバ(h170、192.168.11.xxx)にアクセス出来なくなった。
pingは通る。
思いつく原因は、直前までDNSサーバインストールを試みた事。
/etc/resolv.confの中身

nameserver 8.8.8.8
#nameserver 192.168.10.1 → これをコメントアウトしたら接続出来た。



sambaサーバに接続出来なくて、ルータ(=DNSサーバ)へのケーブルを抜いてしまってたのが原因か。
でも、ケーブル抜く前でも、接続出来てなかった。
ケーブルを抜いたのは、WiresharkパケットログでSTP関連が何やら怪しかったから。



pingが通らない

こんな症状。
・h170
・/etc/rc.conf でfirewallはEnableになってない。
・通らないLANポートは、いずれも、LEDは光る(物理層リンクOK)、自身へのping通る。しかし、他へのping通らない。
  オンボード
  X520-DA2(下)
  X520-T2(上も下も)
これらがいずれも通らないのに、
  X520-DA2(上)
これだけping通る。
NICの認識がおかしいか、故障してんのか?とも思うが、オンボードも同じ症状なのは不可解。



pingが通らない(2)

久しぶりにFreeBSD用HDDを接続して起動。
OSは起動したが、以前のネットワークセグメントから変わってるので、最新のIPに変える。
NICは認識していて、自身へのpingは通るが、接続先のスイッチにpingが通らない。
再起動してもダメ。

ケーブルを抜き挿しして、ifconfig -aではLANケーブル繋いでないポートはstatus=no carrierであり、
LANケーブル繋いだポートはstatus=activeとなっており、物理層はリンクアップしている。
自身へのpingが通るので、データリンク層も正常稼働。
しかし他者へのpingが通らない。

いろいろやった結果、最終的にping通った時にやった事は以下。

接続: h170 + X520-DA2 --->DAC(TWINAX)---> XS708E
このままではping失敗したから、
さらにsamba設定を古いネットワークセグメントから新しい設定へ。
それでPC再起動したら、sambaアクセスも成功。pingも成功。なぜかは不明。

[FreeBSD]ベンチマーク

iperf3

構成

①-1: h170(FreeBSD、X520-DA2)
①-2: h170(FreeBSD、X520-DA2) + 10G SFP+カッパーモジュールA
①-3: h170(FreeBSD、X520-DA2) + 10G SFP+ SRモジュール(10Gtek)

②: z68(CentOS、X540-T2)

コマンド

サーバ側
# iperf3 -s

クライアント側
# iperf3 -c 192.168.xxx.xxx -t1000

結果

①-1 --DAC--> X708E --LAN--> ② = 9.42Gbps
①-2 --LAN--> X708E --LAN--> ② = 9.42Gbps
①-3 --FC--> SFP+ SRモジュールP+メディアコンバータP --LANー-> X708E --LAN--> ② = 9.42Gbps

[FreeBSD]メモ

コピー時間

①構成1

NFSサーバ:h170(FreeBSD10.2、データ用ZFS RAIDZ2)
  -ー10G--> X708E、SFP+
  --1G--> z68(CentOS7.2、データ用HDDx1、オンボードLAN)

user(1.611TB)コピー時間: 16h30m


①構成2

NFSサーバ:h170(FreeBSD10.2、データ用ZFS RAIDZ2)
  -ー10G--> X708E、SFP+
  --10G--> z68(CentOS7.2、データ用HDDx1、X540-T2

user(1.611TB)コピー時間: 20h0m

なぜ遅くなった?
最初のuserデータを別名で残しておいてからのコピーだから??

[FreeBSD]bashにする

http://www.pictnotes.jp/wp/?p=83


ログインシェルをbashにする。

#cd /usr/ports/shell/bash/
#make
#make install

/usr/local/bin/bash が生成されてた。

# chsh -s /usr/local/bin/bash
chsh: user information updated

ログインし直すと、
#echo $SHELL
とやると/usr/local/bin/bashになってる。
カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード