【2026年11月8日時点の情報です】
自宅サーバー(AlmaLinux 9 の KVM のホスト)の NVMe の SSD を、新しい PC にそのまま差し替えました(前の記事)。差し替える前に、万一に備えて、SSD の中身を USB の HDD に丸ごと控えました。
控えの形は、「そのまま起動できる形」にしました。SSD が壊れたり、移すのに失敗したりしたときに、HDD をつなぐだけで元のサーバーが起きるようにするためです。そのために、dd で SSD の端から端までを、ビットごと HDD に写しました。組み込みで言えば、ROM の中身をそのまま別の ROM に焼くのと同じです。
この記事では、控えの入れ先を選ぶところから、写すまでと、その控えから本当に起きるかを試したら緊急モードになった件までを書きます。
登場するホスト名などは、セキュリティのため実際とは異なる架空のものに置き換え、写真の中の値はぼかしています。
場面1:控えの入れ先を選ぶ
dd は端から端までを写すので、写し先は写す元と同じか、それより大きい必要があります。少しでも小さいと、最後の部分が切れて起動できません。同じ「500GB」と書かれていても、バイトの数がちがうことがあるので、バイトでくらべました。
手元の外付けの HDD(USB のケースに入れた 2.5インチ)を自宅サーバーにつないで、容量を見ました。読むだけのコマンドです。
lsblk -b -d -o NAME,SIZE,TYPE,MODEL,TRAN- lsblk:
ディスクの一覧 - -b:
容量をバイトで出す - -d:
ディスクだけを出す(中の区切りは出さない) - -o NAME,SIZE,TYPE,MODEL,TRAN:
名前・容量・種類・型番・つなぎ方(usbが外付け)
1台目の HDD では、こうなりました。
NAME SIZE TYPE MODEL TRAN
sda 320072933376 disk ST320LT020-9YG142 usb
sr0 1073741312 rom HL-DT-ST DVDROM DUD0N sata
nvme0n1 500107862016 disk CT500P3SSD8 nvme写し先が 320GB で、写す元の SSD(500GB)より 180GB ほど足りません。別の HDD に替えました。
NAME SIZE TYPE MODEL TRAN
sda 500107862016 disk ST500LM021-1KJ152 usb
sr0 1073741312 rom HL-DT-ST DVDROM DUD0N sata
nvme0n1 500107862016 disk CT500P3SSD8 nvme今度は、バイトの数が SSD とぴったり同じ(500,107,862,016 バイト)でした。余りはありませんが、入ります。
HDD の健康を見る
控えの入れ先なので、写す前に、HDD が傷んでいないかを見ました。
sudo smartctl -d sat -i -H /dev/sda | grep -E 'Model|Serial|Capacity|overall'
sudo smartctl -d sat -A /dev/sda | grep -E 'Reallocated_Sector|Power_On_Hours|Current_Pending|Offline_Uncorrectable|UDMA_CRC'- sudo smartctl -d sat:
ディスクが自分で記録している健康の値(S.M.A.R.T.)を読む。-d satは、USB のケースの向こうの SATA のディスクとして聞く形 - -i -H:
型番などの情報と、健康の判定 - -A:
値の表 - Reallocated_Sector・Current_Pending・Offline_Uncorrectable:
読めなくなって代わりの場所に移した数、移す待ちの数、直せなかった数。右端(RAW_VALUE)が 0 なら傷みなし - Power_On_Hours・UDMA_CRC:
電源が入っていた時間と、ケースとのやり取りの誤りの数
Model Family: Seagate Laptop HDD
Device Model: ST500LM021-1KJ152
Serial Number: xxxxxxxx
User Capacity: 500,107,862,016 bytes [500 GB]
SMART overall-health self-assessment test result: PASSED
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
9 Power_On_Hours 0x0032 065 065 000 Old_age Always - 30722
197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0判定は PASSED、傷みの数は全部 0 でした。電源が入っていた時間は 30,722時間(約3年半ぶん)で、よく使われたディスクですが、ふだんはしまっておく控えなら十分です。
場面2:USB の HDD から起きるための準備
写す前に、起動のいちばん最初に読む部品の束(initramfs)に、USB のディスクの読み方を入れておきました。AlmaLinux 9 の initramfs は「今の機械専用の形」(initramfs を作る道具 dracut の hostonly モード)で作られるので、NVMe の SSD から起きている今は、USB のディスクの読み方が入っていません。そのまま写すと、控えを USB から起こそうとしても、ディスクを読めずに止まります。
控えは今の SSD をそっくり写したものなので、写す前に SSD の中の initramfs を直しておけば、控えにも入ります。
echo 'add_drivers+=" nvme ahci uas usb_storage xhci_pci "' | sudo tee /etc/dracut.conf.d/90-portable-drivers.conf
sudo dracut --force /boot/initramfs-$(uname -r).img $(uname -r)
sudo lsinitrd /boot/initramfs-$(uname -r).img | grep -oE '(uas|usb-storage|ahci|nvme)\.ko[^ ]*' | sort -u- add_drivers+=” … “:
機械専用の形のまま、名前を挙げた読み方を足す設定 - uas・usb_storage:
USB のディスクの読み方(新しい形と古い形) - sudo dracut –force …:
この設定で initramfs を作り直す - sudo lsinitrd … | grep …:
足した読み方が入ったか
ahci.ko.xz
nvme.ko.xz
uas.ko.xz
usb-storage.ko.xz全部入りの形(hostonly="no")にしなかったわけと、xhci_pci が出ないわけは、前の記事の場面2に書いています。
場面3:Clonezilla Live の USB メモリーを作る
動いている SSD をそのまま写すと、書き込みの途中のファイル(仮想マシンのディスクなど)が壊れた写しになります。なので、自宅サーバーを止めて、USB メモリーから別の小さな Linux を起こし、そこから写します。
その小さな Linux には、ディスクを写す専用の Clonezilla Live を使いました。中の端末で dd が使えます。2026年11月7日時点の安定版は 3.3.3-37 でした。
Windows の操作だけで作れる「zip を広げるだけ」の形にしました。
| No. | 操作 | 中身 |
|---|---|---|
| 1 | ダウンロード | 公式のページで「stable」を選び、CPU は amd64、ファイルの形は zip |
| 2 | USB メモリーを消す | エクスプローラーで USB メモリーを右クリック →「フォーマット」→ ファイルシステムを FAT32 に |
| 3 | 中身を写す | zip を開き、中身をそのまま USB メモリーのいちばん上に写す |
| 4 | 確かめ | いちばん上に EFI と live のフォルダと、Clonezilla-Live-Version のファイルがあればよい |
UEFI の Secure Boot が有効な PC では、amd64 の版を使います。
ダウンロードしたファイルが壊れていないかを見る
ダウンロードした zip の指紋(ハッシュ)を、公式のページの「checksums」にある値とくらべました。
Get-FileHash "$env:USERPROFILE\Downloads\clonezilla-live-*-amd64.zip" -Algorithm SHA256 | Format-List- Get-FileHash:
ファイルの指紋を計算する(組み込みで言えば、書き込んだ ROM の CRC の照合) - “$env:USERPROFILE\Downloads\clonezilla-live-*-amd64.zip”:
ダウンロードのフォルダの Clonezilla の zip。*は版の番号の部分 - -Algorithm SHA256:
指紋の計算のやり方 - Format-List:
長い指紋を切らずに出す
Algorithm : SHA256
Hash : BBB02B409708CF37774DEBE00F96C642C59C48EBB216F7349DC2252F705FF10E
Path : C:\Users\xxxx\Downloads\clonezilla-live-3.3.3-37-amd64.zip公式の checksums の SHA256 の欄にある clonezilla-live-3.3.3-37-amd64.zip の値と同じ(大文字と小文字のちがいだけ)だったので、壊れていません。
場面4:dd で写す
自宅サーバーを止めると、仮想マシンの WordPress(ブログ)も止まります。写すあいだの1時間ほどは、ブログが止まる前提で進めました。
sudo virsh list --all
sudo poweroff- sudo virsh list –all:
止める前の仮想マシンの状態 - sudo poweroff:
止める。仮想マシンを先に正しくシャットダウンしてから止まる
止まったら、Clonezilla の USB メモリーと控えの HDD をつなぎ、電源を入れて富士通のロゴで F12 を押し、起動の一覧から USB メモリーを選びました。Clonezilla の最初の画面のあと、言語とキーボードを選び、「Start_Clonezilla」ではなく「Enter_shell」で端末に入りました。
写す元と写し先を型番で確かめる
dd は、写し先を確かめずに上書きします。Clonezilla の中では、ディスクの名前(sda・sdb)が AlmaLinux のときと入れ替わることがあるので、写す前に型番で確かめました。
lsblk -b -d -o NAME,SIZE,MODEL,TRAN- lsblk -b -d -o NAME,SIZE,MODEL,TRAN:
ディスクの名前・容量(バイト)・型番・つなぎ方

| No. | 名前 | 型番 | 役目 |
|---|---|---|---|
| 1 | nvme0n1 | CT500P3SSD8 | 写す元(今の SSD) |
| 2 | sda | ST500LM021-1KJ152 | 写し先(控えの HDD) |
| 3 | sdb | USB DISK 3.2 | Clonezilla の USB メモリー(触らない) |
dd
if=(元)と of=(先)を逆にすると、今の SSD が消えます。Enter を押す前に、2つを見直しました。
sudo dd if=/dev/nvme0n1 of=/dev/sda bs=4M status=progress conv=fsync- if=/dev/nvme0n1:
読む元(input file)。今の SSD - of=/dev/sda:
書く先(output file)。控えの HDD - bs=4M:
一度に 4MB ずつ写す。小さいと遅くなる - status=progress:
写した量と速さを、途中で出し続ける - conv=fsync:
終わる前に、HDD のキャッシュの中身まで書き切る

119235+1 records in
119235+1 records out
500107862016 bytes (500 GB, 466 GiB) copied, 4238.12 s, 118 MB/s500,107,862,016 バイトを、約71分(1秒に 118MB)で写しました。records in と out が同じ数で、エラーの行もありません。
いつもどおり起こす
sudo poweroff で Clonezilla を止め、USB メモリーと控えの HDD を両方とも抜いてから、いつもどおり SSD から起こしました。控えの HDD をつないだまま起こすと、中身がまったく同じなので、同じ LVM が2つ見えて混乱します。
lsblk -d -o NAME,SIZE,MODEL,TRAN
sudo pvs
sudo virsh list --all- lsblk -d -o NAME,SIZE,MODEL,TRAN:
控えの HDD が抜けているか - sudo pvs:
LVM の土台のディスク。SSD の区切りの1行だけで、「duplicate」(同じものが2つ)の警告が出なければよい - sudo virsh list –all:
仮想マシンが自動で起きたか
NAME SIZE MODEL TRAN
sr0 1024M HL-DT-ST DVDROM DUD0N sata
nvme0n1 465.8G CT500P3SSD8 nvme
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p3 almalinux lvm2 a-- 464.17g 0
Id 名前 状態
-------------------------------------
1 myserver 実行中ブラウザでブログが開くのも確かめて、写す作業は終わりです。
場面5:控えから起こしたら緊急モード
控えは、本当に起きるかを試すまでは安心できません。SSD を新しい PC に移したあと、空になった前の PC(Q558)で、控えの HDD から起こしてみました。
試すときに気をつけたことが2つあります。
| No. | 気をつけたこと | わけ |
|---|---|---|
| 1 | 前の PC に LAN をつながない | 控えの中身は自宅サーバーそのもの。LAN をつなぐと、同じ IP アドレスで起きて、今動いている自宅サーバーやブログとぶつかる |
| 2 | 控えの HDD を新しい PC にはつながない | 新しい PC には同じ中身の SSD が入っている。同じ LVM が2つ見えて混乱する |
USB のケースに入れた控えの HDD をつなぎ、富士通のロゴで F12 を押して HDD を選ぶと、起動は進みましたが、途中で止まって root のパスワードを聞かれました。
You are in emergency mode. After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" or "exit"
to boot into default mode.emergency mode(緊急モード) は、起動の途中で何かのつなぎ込み(マウント)などに失敗して、そこで止まった状態です。画面の日本語は文字が出せず、四角(■)になっていました。
root のパスワードで入り、原因を見ました。
export LANG=C
systemctl --failed
journalctl -xb -p err --no-pager | tail -n 20
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS- export LANG=C:
表示を英語にする(■を出さないため) - systemctl –failed:
起動で失敗したものの一覧 - journalctl -xb -p err –no-pager | tail -n 20:
今回の起動のエラーの最後の20行。-xは説明の文も足す - lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS:
ディスクの中の区切りと、どこにつながったか

Nov 07 15:54:02 kvmhost systemd[1]: Timed out waiting for device /dev/mapper/almalinux-home.
-- The job identifier is 165 and the job result is timeout.
NAME SIZE FSTYPE MOUNTPOINTS
sda 465.8G
|-sda1 600M vfat /boot/efi
|-sda2 1G xfs /boot
`-sda3 464.2G LVM2_member
|-almalinux-root 406.4G xfs /
`-almalinux-swap 7.8G swap [SWAP]/boot/efi・/boot・/・スワップは HDD からつながっていましたが、/home(almalinux-home)だけが出てこず、待ち時間切れで止まっていました。控えの中身が壊れているのではなく、LVM が /home の部分を使える状態にしていなかったのです。
場面6:LVM の「使ってよいディスクの一覧」
AlmaLinux 9 の LVM には、使ってよいディスクの一覧(devices file、/etc/lvm/devices/system.devices)があります。LVM は、この一覧に書かれたディスクしか相手にしません。
cat /etc/lvm/devices/system.devices- cat /etc/lvm/devices/system.devices:
使ってよいディスクの一覧の中身
# LVM uses devices listed in this file.
# Created by LVM command lvmdevices pid 3733 at Sat Jun 6 03:50:12 2026
# HASH=xxxxxxxxxx
PRODUCT_UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
VERSION=1.1.4
IDTYPE=sys_wwid IDNAME=nvme.xxxx-xxxxxxxx… DEVNAME=/dev/nvme0n1p3 PVID=xxxxxxxx…一覧にあったのは、NVMe の SSD の ID(製造番号から作られたもの)の1行だけでした。控えの HDD は中身がそっくり同じでも、ID がちがうので「知らないディスク」として相手にされず、/home が出てこなかったのです。
/ とスワップだけ出たのは、起動のいちばん最初(initramfs)で、カーネルに渡す指定(rd.lvm.lv=almalinux/root など)でこの2つを名前で出していたためと見ています。/home はそのあと、一覧を見て出す流れだったので、出ませんでした。組み込みで言えば、ブートローダは ROM の場所を直に指定して読めたが、OS が起動後に「登録済みの ID だけ許可する」表で照合して、別の ID の基板を弾いたような状態です。
一覧に HDD を足す
控えの HDD の中の一覧に、HDD を足しました。この変更は控えの中だけで、今動いている自宅サーバーには関係しません。
lvmdevices --adddev /dev/sda3- lvmdevices –adddev /dev/sda3:
控えの HDD の LVM の区切り(sda3)を、一覧に足す
すると、「この HDD の LVM の印(PVID)は、一覧にある NVMe のものと同じだが、足してよいか」と聞かれました。
WARNING: adding device /dev/sda3 with PVID xxxxxxxx… which is already used for …
Add device with duplicate PV to devices file?そっくり写したので同じ印になっているだけで、この PC に NVMe はつながっていないので、ぶつかりません。y で足しました。一覧には NVMe の行も残るので、この控えを将来 SSD に戻して使うときも、そのまま起きます。
続けて、LVM の中の部分を全部使える状態にして、/home をつなぎました。
vgchange -ay almalinux
lvs
mount -a
findmnt /home- vgchange -ay almalinux:
LVM の中の部分(root・swap・home)を全部使える状態にする。-a yは activate(有効にする) - lvs:
LVM の中の部分の一覧 - mount -a:
/etc/fstabに書かれたもののうち、まだつながっていない/homeをつなぐ - findmnt /home:
/homeがつながったか

3 logical volume(s) in volume group "almalinux" now active
LV VG Attr LSize
home almalinux -wi-a----- 50.00g
root almalinux -wi-ao---- 406.41g
swap almalinux -wi-ao---- 7.76g
[ 603.398137] XFS (dm-2): Ending clean mount
TARGET SOURCE FSTYPE OPTIONS
/home /dev/mapper/almalinux-home xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota/home がつながり、Ending clean mount で中身も正常でした。
起こし直す
systemctl reboot で起こし直し、もう一度 F12 で控えの HDD を選ぶと、今度は緊急モードにならず、ログインの画面まで来ました。ログインして止め、HDD を抜いてしまいました。
まとめ
SSD を USB の HDD に dd で丸ごと写すと、そのまま起動できる控えになります。ただし AlmaLinux 9 では、写しただけでは LVM の「使ってよいディスクの一覧」に HDD が入っておらず、控えから起こすと /home が出ずに緊急モードになりました。一覧に足すと起きました。
| No. | すること | わけ | 場面 |
|---|---|---|---|
| 1 | 写し先はバイトで同じか大きいものにする | dd は端から端までを写す。小さいと最後が切れる | 場面1 |
| 2 | 写す前に initramfs に USB のディスクの読み方を足す | 機械専用の形のままだと、USB から起きられない | 場面2 |
| 3 | 止めてから、別の Linux(Clonezilla Live)で写す | 動いたまま写すと、書き込み中のファイルが壊れた写しになる | 場面3・4 |
| 4 | dd の前に、写す元と写し先を型番で確かめる | 名前(sda など)は入れ替わることがある。逆にすると元が消える | 場面4 |
| 5 | 控えを試すときは LAN をつながず、同じ中身の SSD とも一緒につながない | 同じ IP、同じ LVM がぶつかる | 場面5 |
| 6 | 控えから起こしたら lvmdevices --adddev で一覧に足す | 一覧にない ID のディスクは、LVM が相手にしない | 場面6 |
控えは、作っただけでなく、実際に起こしてみて初めて「使える控え」になります。今回も、試さなければ、本当に要るときに緊急モードで慌てるところでした。



コメント