Fedora42のOSイメージをバックアップする方法(ddコマンド)
はじめに
osイメージを完全にバックアップする方法を調べてみました。
os : FedoraServer42
disk1 : dev/nvme0n1(OSディスク)
disk2 : dev/nvme0n2(バックアップ先)
環境 : VMwareFusion
disk1にインストールしたosをdisk2にバックアップする工程を備忘録として残しておきます。
※VMwareではスナップショットをとれば簡単にバックアップがとれます。しかし、本記事の内容はオンプレ環境などでも使える方法なので、どんな環境でも流用できるよう、あえて実施したものです。
以下はおおまかな流れ
- レスキューモード起動
- dev/nvme0n2をマウント
- ddコマンドを使用しdev/nvme0n1のosイメージをdev/nvme0n2にバックアップ
※整合性のとれたバックアップを取得するため、レスキューモードで実行
1.レスキューモード起動
起動用のisoファイルから仮想マシンを起動します。
「Troubleshooting -->」を実行。
「Rescue a Fedora System」でレスキューモードを実行。
「3) Skip to Shell」を選択します。(3を入力しEnter)
(※以下補足)
-
- Continue : 自動でLinuxシステムを探し/mnt/sysrootにマウントする
→ 修復・バックアップ・設定変更などを行いたいときに最も一般的な選択
※「/mnt/sysroot」は、レスキューモード自動的に見つけたシステムを一時的にマウントする場所
- Continue : 自動でLinuxシステムを探し/mnt/sysrootにマウントする
-
- Read-only mount : システムを読み取り専用で/mnt/sysrootにマウントする
→ 変更を加えずにファイルを確認したり、安全にバックアップを取りたいときに選択
- Read-only mount : システムを読み取り専用で/mnt/sysrootにマウントする
-
- Skip to shell : 自動マウントをスキップして、直接シェル(bash)に入る
→ 手動でmountコマンドなどを使って作業したいときに選択
- Skip to shell : 自動マウントをスキップして、直接シェル(bash)に入る
-
- Quit (Reboot) : 何もせずに再起動する
→ 間違えた時など、操作をやめたいときに選択
再度Enterを押すとshellを使えるようになります。
- Quit (Reboot) : 何もせずに再起動する
2.sshdの起動(必須ではない)
仮想マシンのコンソールは、使いにくかったり記事を作成する上でコマンドのコピーがとれなかったりするので、レスキューモード中でもPCからsshできるようにしておきます。(バックアップを取る上では必須の操作ではありません。)
sshd設定
bash-5.2# cp -a /etc/ssh/sshd_config.anaconda /etc/ssh/sshd.config
sshd_config.anacondaをsshの設定ファイルとしてコピーします。sshdの起動には設定ファイルが必要です。
bash-5.2# systemctl start sshd
bash-5.2# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf, 50-keep-warm.conf
Active: active (running) since Thu 2025-07-03 10:33:08 UTC; 4min 44s ago
Invocation: f6c48f8ecc3f43068401e9119991041e
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 3004 (sshd)
Tasks: 6 (limit: 4396)
Memory: 6.3M (peak: 7.1M)
CPU: 333ms
CGroup: /system.slice/sshd.service
├─3004 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
├─3014 "sshd-session: root [priv]"
├─3016 "sshd-session: root@pts/6"
├─3017 -bash
├─3069 systemctl status sshd
└─3070 less
IPアドレスの確認
bash-5.2# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.7 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::ce3d:b0d1:e080:7c5b prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:69:ce:b1 txqueuelen 1000 (Ethernet)
RX packets 268 bytes 30161 (29.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 179 bytes 23453 (22.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 54 memory 0x3fe00000-3fe20000
192.168.0.7がプライベートアドレス。環境によって、もしIPアドレスが設定されていない場合はリンクアップしているネットワークインターフェースを探して、IPアドレスを割り当ててあげましょう。
ssh接続
~ % ssh root@192.168.0.7
[anaconda root@fedora ~]#
無事にsshできました。
3.バックアップディスクのマウント
[anaconda root@fedora ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 780M 1 loop /run/rootfsbase
sr0 11:0 1 2.7G 0 rom /run/install/repo
zram0 251:0 0 3.8G 0 disk [SWAP]
nvme0n1 259:0 0 60G 0 disk
|-nvme0n1p1 259:3 0 200M 0 part
|-nvme0n1p2 259:4 0 20G 0 part
|-nvme0n1p3 259:5 0 20G 0 part
`-nvme0n1p4 259:6 0 954M 0 part
nvme0n2 259:1 0 60G 0 disk
`-nvme0n2p1 259:2 0 60G 0 part
今回はこの「/dev/nvme0n2p1」をバックアップの保存先とします。
[anaconda root@fedora ~]# mount /dev/nvme0n2p1 /mnt/
[anaconda root@fedora ~]# cd /mnt/
/mntにマウントし、そこに移動します。
[anaconda root@fedora mnt]# dd if=/dev/nvme0n1 of=/mnt/fedora_os.img bs=1M status=progress
62324211712 bytes (62 GB, 58 GiB) copied, 243 s, 256 MB/s
dd: error writing '/backup/fedora_os.img': No space left on device
60148+0 records in
60147+0 records out
63069499392 bytes (63 GB, 59 GiB) copied, 243.504 s, 259 MB/s
[anaconda root@fedora mnt]# ls
fedora_os.img lost+found
ddコマンド実行でバックアップのイメージファイル(fedora_os.img)の作成が進行します。
完了するまで待てばバックアップの取得は完了です。
さいごに
[anaconda root@fedora mnt]# reboot
rebootコマンドでシステムを再起動します。
取得したバックアップは大切に保管しておきましょう。
Discussion