FreeBSDでddで吸い出したHDDイメージをマウントする
概要
FreeBSDでdd等で作ったイメージをマウントするにはmdconfig実行後にデバイス名がたぶんmd0とかで出てくるのでそのmd0を普通にマウントするとよい
以下例
# mdconfig -a -t vnode -f hdd.img md0 # mount_ntfs -C CP932 /dev/md0 /mnt
HDDが死んだ\(^o^)/オワタ
自分のメインPCのHDDが突然壊れました。
ATOKが急に動かなくなったー!再起動しよう!と思って再起動したらOSすら起動しない。
HDDから異音がするのに気がついて翌日新HDDを買ってきてOS再セットアップしました
旧HDDへの未練
まぁ仕事データはサーバに置いてるし写真も2010年分までは外付けHDDにおいてるし4月からの写真はデジカメ内のSDカードにあるしgoogle chromeのデータはなんか同期したらほとんど戻ったし*1失ったデータは幼稚園の父母会の書類と、3月までの写真だけだから旧HDDの中身は別にいいやー
と思っていたのですが!今年の1月に幼稚園の誕生会イベントの写真を撮ったのにバックアップして無かったのを思い出したり、IS01用の諸々データや、お宝画像*2が失われたことに気がつき、何とか復旧できないだろうか!と思った次第
Windowsから認識しないパーティション
しょっちゅう重要なデータを消したりするのでファイナルデータとか買って持ってたりするので、旦那の予備PCがリムーバブルカートリッジとかついてて作業がしやすいので旧HDDをUSB変換ケーブルにつけて
WindowsからHDDが認識できれば何とかなるでしょーと思ったらWindowsからCドライブとsystem reservedになってたパーティションしか見えませんorz重要なのはDドライブにしてたパーティションなのに!
ファイナルデータにも探させたけどだめだった\(;o;)/
Linuxではどうだ
ubuntuのCDを焼いて起動すると目当てのパーティションが/dev/sddとして認識しました!認識したところでddでイメージを吸い出し。元々150GBのパーティションだったのにイメージが60GBしか無くて、これしか吸えなかったのかーと思ったらddのオプションがいろいろ不適切でした。
$ sudo dd if=/dev/sdd conv=sync,noerror of=/media/なんたら/hdd.img
として吸い出しやりなおし。
全部で36時間くらいかかったけど、150GB位のイメージを吸い出せた。
bsが小さい方がエラーのあるHDDはよいらしいという情報を得てbs指定しなかったんだけど、obsは指定した方が早かったのかもしれない。
得たイメージをFreeBSD鯖にコピー
旦那が帰って来る前にPCを開けないといけなかったので、150GBのイメージをネットワーク経由で自分が自由に使えるFreeBSD鯖にコピー。
ssh鍵を生成して自分のホームページに一旦公開鍵おいて、それから鍵束の入ってる自分のPCでブラウザから鍵をコピペしてauthorized_keysに追加したー
で、FreeBSDでNTFSのイメージがマウントできない
やっと概要の話題。
ddでとったHDDイメージをマウントしようとおもって
# mount -o ro,loop hdd.img /mnt
とかやったけど当然エラーな訳で…あーこれLinuxのmountだよなー、FreeBSDでループバックマウントってどうやるんだろう?と思ってman mountやらman mount_ntfsやらしてみたり、googleでfreebsd ループバックマウントとかfreebsd imgとかしてみたけどいまいちよくわからず
もう遅いから旦那が明日会社に行ったらまたPC借りて作業しよう
私、@koie氏には前にも何かFreeBSDで助言してもらってる様な気がします。ありがたい!
最近の活動
IS01をいじったり http://www.go5.jp/~nyomo/is01/index.html
電子工作を始めてみたり hc08:にょもです
してます。
あと、3月に出るDSiWareのプチコンが気になります
MySQLのrootパスワードを忘れた時の対処方法
自宅で使ってるMySQLサーバに新しいデータベースを作りたくなったんだけど、rootパスワードを忘れてしまったので、ググってみたけどバージョン5.1ではその方法は使えなかったので、英語マニュアルを見たけど、再度忘れた時にやり方をまた英語で読むのがめんどくさいのでメモ。
mysqlを動かすユーザでログインする作業があるから外のネットワークからログイン出来ない環境にしてから作業した方がいいかも
以下
http://dev.mysql.com/doc/refman/5.1/ja/resetting-permissions.html
からの抜粋メモ
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ここに新しいパスワード');
- mysqld_safe --init-file=/tmp/mysql-init & を実行する
実行した後は/tmp/mysql-initを削除する
これで新しいパスワードが設定完了。MySQLを動かしていたユーザをログイン出来ないようにしていたなら戻して、念のためMySQLを再起動する
削除してしまったファイルを取り戻したい
日記
ファイルサーバ上にあるファイルを間違えて消しちゃったよ( ・ω・)と旦那に言われて、この間zfsと格闘したときにsnapshotをとってあった事を思い出した。
zfsはsnapshotを簡単にとれるからバックアップが超簡単!という説明を読んでいたので、これから消してしまったデータを救い出してあげれば良いんじゃないかと思い調べてみた。
snapshotをとった時の状態にデータを戻す事をロールバックと言うらしい…が、ロールバックしてしまうと、snapshotをとった後に作ったファイルは消えてしまうらしい。
1つのファイルを取り戻すために他のファイルが失われてしまっては困る。
ファイルを削除した後に変更を加えたファイルを別のファイルシステムにコピーしてからロールバックをするという手も考えたけど、余りにスマートではない。
絶対にゴミ箱的なsnapshotからファイルを選んで復旧する手段があるはずだ!と調べたら
ls -al オプションでリストを表示しても、.zfs ディレクトリはデフォルトで 表示されませんが .zfs/snapshot ディレクトリを直接指定してリストを表示 してみます。
このスナップショットのデータは、読み込み専用で参照する事が可能なので、一部のファイル を戻したい時は、ここのディレクトリから直接コピーしてファイルを復旧する事ができます。
http://blogs.sun.com/yappri/entry/zfs_snapshot
とのこと。試しにzfsのプールをマウントしたディレクトリでcd .zfsってしたらsnapshotというディレクトリがあってそのしたにスナップショットの名前のディレクトリがあってさらにその中にファイルシステムのディレクトリ構造がそのまま入ってました。
旦那に消したファイルの名前を聞いてコピーして復旧完了。おめでとう