思考実験とD.I.Y.

D.I.Y and Gedankenexperiment

[zfs]メインファイルサーバーのpoolを飛ばした!!(5):実機でリカバリ実行!と思ったら。。。

実機でリカバリ実行!と思ったら。。。zfsに”pool1”は既にあるよ”と叱られました(^^;;)。【注*1

0. いざ、実機でリカバリ。と思ったら。。。

(1)zfsに叱られた

実機でリカバリをしようとしたら、”pool1”は既にあるよ”と叱られました😅。

[root@main_sv] #  zpool import -XF -m -f -o readonly=on pool1

 

既にzfsに認識されている”pool1”をimportしようとしても無理な話です😅。

当たり前と言えば当たり前の話でした😅。。。。

(2)さてどうするか。。。

zfsに特定のpoolを認識させなくする方法など、”経験がない”/”遭遇したことがない”、そもそも”必要がなかった”ので、ググってみると、”zpool destroy コマンドを使用”というリンクばかりがリストアップされます😑。

zpool destroy”では、pool内の情報すべてが時空のかなたに消えると思うので、これは怖くて使えません🤔。

根気強く探してみたところ、資料[*2]を発見😀。

資料によれば、” zpool exportを実行したあとは、プールはシステムから認識されなくなります。”とのことなので、このやり方を試して見ることにします😀。

試すにしても、経験のない作業を、いきなり実機で行うと、せっかくここまで来たのに、泥沼にはまりそうですので😅、別のFreeBSDサーバーで試行してみる事にします😀。

 1.  リカバリテストの準備

一時ファイル保管/Replicate用ファイルサーバーに、USB/HDDを付けて試してみることにします。

(1)テスト用USBハードディスク(HDD)の準備

古いハードディスク(HDD:250Gbyte、通電時間17,198時間)を、中身を取り出して別用途に使った[*3]予備のUSBなケースに取り付けます。

保管ディスクにはポストイットで、”Ubuntu24.04”とメモが張ってありましたので、VirutalBox専用機を最初に試作した際のシステムディスクだった気がします。

VirutalBox専用機は既に別のHDDで安定運用しており、このHDDの中身は特に必要ありませんので、テストに活用します。

まずは、dmesgでUSB/HDDのデバイス名を確認。

[root@file_sv] # dmesg | less

 

 ”da0”になっています。
(2)USB/HDDの初期化

中身を綺麗にするために初期化しておきます。

[root@file_sv] # gpart destroy -F da0 ;
[root@file_sv] # gpart list da0 ;

 

(3)zfsプールの作成

まず、ファイルサーバーに接続したUSB/HDDに”zfsプール”を作成します。

[root@file_sv] # zpool create pool1 da0 ;
[root@file_sv] # zpool status ;

 

 

"pool1"はデフォルトのマウントポイントである、”/pool1”にマウントされています。

(4)poolの初期化

一応、poolを初期化してきます。

[root@file_sv] # zpool initialize pool1 ; pool1を初期化。

イニシャライズ中でも作業はできますが、問題が生じたとき、イニシャライズ中だったせいなのか、試行内容に問題があったのかを切り分けるのに手間がかかります。🤔

そこで、イニシャライズが終わるのを気長に待つことにします😑。

2.  リカバリテスト

(1)テストデータ準備

試行前後のファイル名とタイムスタンプに差分が生じるかを確認するために、適当なフォルダ/ファイルを”/pool1”にコピーしておきます😀。

今回は、リカバリ試行で、ActiveDirectoryドメインコントローラー(AD-DC)のデータバックアップ用エンクロージャーに引き上げた、”作業記録htmlファイル用フォルダ”をrsyncで”/pool1”にコピー。

(2)"zfs export"/"zfs import"のテスト

テスト用USB/HDDに作成したpoolに対して"zfs export"を試行。

[root@file_sv] # zpool export pool1 ;  
[root@file_sv] # zpool status ;  
[root@file_sv] # zfs list ;  

 

pool1は見えなくなりました😀。

 

これまでの試行でpoolが見えるようになった方法でimportしてみます。

[root@file_sv] # zpool import -XF -m -f -o readonly=on pool1 ;  
[root@file_sv] # zpool status ;  
[root@file_sv] # zfs list ;  

 

再び、pool1が見えるようになりました😀。

(3)"zfs export"/"zfs import"結果の確認

rsyncを”-n”オプションを付けて、シミュレーションのみを行い、"zfs export"/"zfs import"を行った後のファイル名とタイムスタンプに差分が生じているかを確認します。

[root@file_sv] # rsync -n -avh /share/Backups/main-sv/www/ /pool1/www/ ;  

 

差分なしでrsyncは終了しているので😀、"zfs export"を行ってから、"zfs import"すればよいとの結論にたどり着きました😀。

次は、実機でリカバリを実行しようと思います😀。

【次回に続く】

ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ

出典・引用・備考

*1:この投稿の内容は、特定の機種並びに特定の環境での確認結果になります。
同等機種や異なる環境での動作他を保証するものではありませんので、ご留意いただけます様お願いいたします。

*2:"ZFS ストレージプールをエクスポートする"、日本オラクル株式会社、https://docs.oracle.com/cd/E19253-01/819-6260/gazqr/index.html、URL、最終閲覧日:2025年9月19日

*3: