LoginSignup
2
3

More than 1 year has passed since last update.

GhostBSDのデータ救出法 - もしくは、痛い目に会って学ぶzfs

Last updated at Posted at 2023-01-20

前提

GhostBSD(もちろんFreeBSDでもいいけど)でファイルシステムzfsにしているが、何らかの理由でGhostBSDがまともに起動しなくなってしまったので、zfs対応のNomadBSDをUSBメモリから起動して、GhostBSDからデータを救出するぞ、です。そんな人がどれだけいるか知りませんけど。(あ、でも、以下に書いてある話は、zfsであればOSに依存しない(はずの)話なので、ファイルシステムがzfsな人には役に立つかも。もちろん、自己責任でお願いしますが。)
あと、zfsは暗号化が可能だったような気がしますけど、自宅のデスクトップパソコンにそこまでは、、、ということで暗号化はしてません(、のはず)。

やったこと

GhostBSDがまともに起動しなくなってしまったパソコンのUSBにNomadBSDがインストールされたUSBメモリを差し込んで、NomadBSDを起動、と言うのは当たり前ですね。
次に、とにかく

sudo zpool import

です。sudoという強い権限で何かをimportしそうなので、かなりドキドキしますが、これは以下のようにimport可能なものを表示してくれるだけです。

   pool: zroot
     id: xxxxxxxxxxxxxxx
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

	zroot       ONLINE
	  ada0p10   ONLINE

zrootという名前のpoolがあることが分かります。(idに表示されているxxxxxxxxxxxxxxxでも行けるのかもしれませんが、試したことはありません。)
いきなりsudoは怖いよね、ということでsudoをつけないで

zpool import

だけだと

cannot discover pools: permission denied

と権限が足りなくて怒られます。まあ、ディスク(厳密には「ストレージ」と呼ぶべきでしょうか)のメタな情報を見るわけですからそうなりますよね。
actionに書いてあるように、名前を指定して再度挑戦です。

sudo zpool import -R /mnt zroot

その結果は

cannot import 'zroot': pool was previously in use from another system.
Last accessed by <unknown> (hostid=0) at Tue MMM dd hh:mm:ss yyyy
The pool can be imported, use 'zpool import -f' to import the pool.

よそのシステムで使われていたものっぽいけど大丈夫か、と聞いてきているようです。
GhostBSDで使っていたシステムですから、こうなるのは当然ですね。
強制的にimportすべく、最後の行にあるように"-f"を付けてやってみましょう。

sudo zpool import -R /mnt -f zroot

何も表示されませんでした。成功した模様です。
/mntの下を確認してみましょう。

nomad@NomadBSD$ ls /mnt/usr/home/koizumi/Pictures/
usagi_mod_pal.xcf
usagi-f.xcf
usagi.png
スクリーンショット_2022-12-11_08-33-33.png

あ、見えました。年賀状のためにウサギの画像を何とかしようとして苦労した記録が、、、
ここまで行けば/mnt/usr/home/koizumiがGhostBSDでのホームディレクトリですから、必要なデータだけ取り出すでも、全部バックアップするもやりたい放題(のはず。実はまだやってません:sweat_smile:1)。

なぜ"-R /mnt"か

"-R /mnt"なしの

sudo zpool import -f zroot

でもマウントには成功します。が、デフォルトでは/(ルート)にマウントしてくれます。ということはNomadBSDの/以下がごっそりGhostBSDの/に置き換わるわけで、NomadBSDとしては大混乱です。たとえばアイコンの情報とかもおかしくなるらしく、徐々に画面が崩れていくというホラーみたいな状況になります。(と、言い切らせてもらいます。はい、実際に体験しましたので。)
ということで、"-R /mnt"を付けることで、GhostBSDのディスクの内容が/mnt以下に来るようにしてNomadBSDの/が破壊されないようにしています。

  1. この記事を書いた後のことにはなりますが、ここに書いた方法でGhostBSDのデータを退避してGhostBSDを再インストールしました。が、その時はGhostBSDのGUIが起動しなかっただけだったので、わざわざNomadBSDを持ち出すまでもなくGhostBSD上でデータを逃がせば良かったような、、、

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3