1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

初めてddでdisk backupをしたらパーティションとか関係なかった話

Last updated at Posted at 2019-12-30

fs壊れたVM、どーしようもなくなって、 xfs_repair しようとしたんだけどbackupしないと怖くね?って状態だったのでbackupの勉強した話

酔って書いてるよりも、もとの知識がアレなので非常にアレな記事です。

最初にconsole見たときは emergency modeになってた。/sysrootがmountできないというエラーで、ls /sysrootは空っぽでした。天才の同僚がrebootしたらrescue modeで起動できたと。

今回初めて知ったこと。centos 7 には grub 選ぶとこでe押したあとの systemd.unit=rescue.target ってのがあるらしい。
後で調べたらこれは(自分にとっては)ただのsingle user modeだった。rescue modeって名前には聞いてたんだけど、なんだ、ただのシングルユーザモードのことだったのか。

rescue mode is equivalent to single user mode
RHEL 10.3. WORKING WITH SYSTEMD TARGETS

それならMac OS 10.1の頃にadmin password忘れて通った道だよ。cmd+sで起動するやつでしょ?

昔話はさておき、ここは想像なんだけど rescue という名前・・・しかし所詮 /dev/sda とかで起動してるからこれってルートパーティションを xfs_repair できないよね?(誰か教えて)
DVDとかpxeで起動する rescue と全然違くない? それ同じ言葉でいいの? 違う言葉あるの?

関係ないけど resque.target と打ってたせいでしばらく全然rescueできなかった。反省typo。

学んだこと

簡単に言うとemergency modeが root partitionをmountできないときにイケるやつ(たぶん /boot とか initramfs だけでなんとか起動するやつ)で、rescue.target は /def/sda で無理やり起動するやつ。だから /etc/fstab で root partition がやばい系だと rescue.target は行けないんじゃないかと思う。/dev/sdb がマウントできないとかならいけそう。(誰か合ってるか間違ってるか教えて)
いや待てよ、initramfsてdiskから読んでるんじゃないのか。あいつどこにいるんだっけ、、。

いい加減記事の本題に入る。

最初にやってコケた話

手元のvirtual boxにあるvmが30GBもdiskあった
とりあえず練習でこれcopyしてみっか、と思ってやったのは・・

どうせ0で埋めるだけだし8GBでよくね?という性格なもので、適当にvirtual boxデフォルト=8GBなdiskをVMに追加して、/dev/sdbにする。パーティション必要だよね、と思ってpartedで/dev/sdb1を作る。やっぱxfs?という、ここらへんはもう手癖でmkfs.xfsする。

ddコマンド叩くとこで、あれ?どこcopyするんだっけ? os起動してるとこ? /dev/sda1と/dev/sda2があって、sda2の下に大事そうなルートパーティション、 /dev/mapper/centos-root でいいの?あれ? 

image.png

これ絶対違うわー、根本から間違ったわー、でもこれも経験と思いながらとりあえず

dd if=/dev/mapper/centos-root of=/dev/sdb1 したら、macがめっちゃ重くなってしばらくしたら突然rebootしたw

うまく行った話

素直に copyしやすい 8GB のdiskで、centos7をinstall。素直。
8GBの別diskをatouchしてrescue.target起動。/dev/sdbに見えることを確認。で、この単純明快コマンド。

dd if=/dev/sda of=/dev/sdb

パーティションの準備とかいらないんです。物理ディスク領域?をまんまいくんです。copyは順調に終わり、いったんshutdown。もとのdiskをVMからdetouch。追加diskだけの状態にして起動。普通にos使える。複数パーティションまとめて全部完璧に複製されたってことです。すげー。これがddですか。すげー。最初の失敗から、何もぐぐらず想像でいけた自分に感謝。

いやー勉強になった。dd めっちゃ便利だな!!

ddの進捗を見る方法

とりあえずまだがんばってるかはiotopで見れる。

yum install -y iotop strace
# -o で稼働中のものだけを表示
iotop -o

こんな漢字↓
image.png

straceだと書き込んでる内容が見える。ただ100GBだと100GB以上の文字列が流れるのでNW越しだとなかなかつらい。tail繋げるといいというのを見かけたが、自分の環境では蕩かなかった

ps aux | grep dd # pidを取得
strace -p 4458    # pidを引数に
strace -p $PID | tail -n 5         # last 5行だけ表示(自分はうまくいかず)
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?