👻

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)
(※以下補足)

    1. Continue : 自動でLinuxシステムを探し/mnt/sysrootにマウントする
       → 修復・バックアップ・設定変更などを行いたいときに最も一般的な選択
       ※「/mnt/sysroot」は、レスキューモード自動的に見つけたシステムを一時的にマウントする場所
    1. Read-only mount : システムを読み取り専用で/mnt/sysrootにマウントする
       → 変更を加えずにファイルを確認したり、安全にバックアップを取りたいときに選択
    1. Skip to shell : 自動マウントをスキップして、直接シェル(bash)に入る
       → 手動でmountコマンドなどを使って作業したいときに選択
    1. Quit (Reboot) : 何もせずに再起動する
       → 間違えた時など、操作をやめたいときに選択

      再度Enterを押すとshellを使えるようになります。

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