LUKS ディスクを退役・廃棄する手順
LUKS で暗号化したディスクを廃棄するときは、ファイルを削除するだけでは不十分です。必要なデータを別媒体から復元できることを確認し、LUKS マッピングを閉じ、cryptsetup erase ですべての active key slot を消去します。その後、過去の LUKS ヘッダーバックアップや専用 keyfile も復元経路として処理し、媒体を物理廃棄へ回します。
cryptsetup erase は暗号化済みデータ領域を上書きするコマンドではありません。LUKS の active key slot をすべて消し、ボリュームキーを通常の解除手段から取得できない状態にします。LUKS ヘッダーの形式情報は残るため、実行後も cryptsetup isLuks が成功する場合があります。LUKS シグネチャ自体も消したい場合は、key slot の消去を確認した後で wipefs を使います。
暗号化媒体の退役判断では、媒体の故障状態だけでなく、代替コピーと復元可能性を先に確認します[1]。LUKS は物理媒体、LUKS ヘッダー、mapper デバイス、ファイルシステムを別の層として扱うため、退役時もこの順序を崩さず閉じます[2]。
対象とする構成
この記事では、Linux 上でデータ用またはバックアップ用として使っている LUKS1 または LUKS2 デバイスを対象にします。LUKS デバイスはディスク全体でもパーティションでも構いません。以降の DEVICE には、crypto_LUKS が記録されている正確なブロックデバイスを指定します。
次の構成は個別の離脱手順が必要になるため、この記事の手順をそのまま適用しません。
- 起動用 root デバイス
- swap
- RAID または LVM の構成員
- detached header
- TPM2、FIDO2、PKCS#11、LUKS2 token を使う構成
- LUKS2 と HW OPAL を組み合わせた自己暗号化ドライブ
- SSD 固有の sanitize や secure erase を必要とする構成
古い LUKS1 媒体と現在の LUKS2 媒体では表示形式が異なりますが、退役時に必要なのは、媒体の役割、解除経路、ヘッダーバックアップ、keyfile を把握したうえで復元経路を終了させることです[3]。通常運用時の open、mount、umount、close と、ヘッダーや key slot の確認方法は既稿にまとめています[4]。
2014 年頃の既稿では、LUKS1 と AES-CBC-ESSIV を使った暗号化 LVM や可搬媒体の作成手順を扱いました[5][6]。現在もそのような旧媒体を保有している場合は、新規作成時の推奨値へ書き換えるのではなく、実際の luksDump の結果を基準に退役します。
破壊的操作へ進む前の中止条件
次のいずれかに該当する場合は、cryptsetup erase を実行しません。
- 必要なデータを別媒体から読み出せることを確認していない
- モデル、シリアル番号、容量、LUKS UUID が想定と一致しない
- LUKS デバイスがマウント中である
- mapper デバイスを閉じられない
- RAID、LVM、起動処理などとの関係を確認できない
- LUKS ヘッダーバックアップの所在が分からない
- keyfile が別の LUKS デバイスと共有されている可能性がある
cryptsetup erase は既存のパスフレーズを要求せず、active key slot をすべて削除できる不可逆操作です[7]。対象を確定できない状態で試してよい確認コマンドではありません。
必要なデータを別媒体から確認する
退役対象にしか存在しないデータがないことを確認します。「コピー処理が終了した」ことと、「別媒体から必要なデータを読み出せる」ことは同じではありません。
最低限、次を確認します。
- 代替媒体またはバックアップから代表的なファイルを開ける
- 必要なディレクトリとファイル数が想定と一致する
- チェックサムを管理している場合は照合結果が一致する
- 退役対象を外しても復元手順を実行できる
- 最新世代だけでなく、必要な過去世代も別媒体に残っている
LUKS + ext4 の性能問題は、暗号化処理、ファイルシステム、USB 接続、HDD の媒体性能を分けて調査する必要があります[8]。一方、すでに退役を決定した媒体では、性能試験を続けることより、代替コピーを確認して破壊的操作へ進める状態を作ることを優先します。
/dev/sdX ではなく対象媒体を固定する
/dev/sda、/dev/sdb、/dev/sde などの名前は、接続順や再起動によって変わります。破壊的操作では、モデル、シリアル番号、容量、LUKS UUID を確認し、/dev/disk/by-id の永続的なパスを使います。
最初に現在の構成を表示します。
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL,UUID
対象候補の実体と、その親デバイスを確認します。
CANDIDATE=/dev/sde
REAL_DEVICE=$(readlink -f "$CANDIDATE")
lsblk -s \
-o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL,UUID \
"$REAL_DEVICE"
CANDIDATE は確認用です。ここではまだ破壊的操作に使いません。
次に、シリアル番号に対応する by-id を探します。
ls -l /dev/disk/by-id/
LUKS がディスク全体に作成されている場合はディスクの by-id、パーティションに作成されている場合は -part1 などが付いたパーティションの by-id を選びます。
以降で使う変数を設定します。
DEVICE=/dev/disk/by-id/確認済みのデバイスID
MAPPER=確認済みのmapper名
MOUNTPOINT=/確認済みのマウントポイント
変数が指す対象を再確認します。
REAL_DEVICE=$(readlink -f "$DEVICE")
printf 'DEVICE=%s\n' "$DEVICE"
printf 'REAL_DEVICE=%s\n' "$REAL_DEVICE"
lsblk -s \
-o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL,UUID \
"$REAL_DEVICE"
sudo blkid "$DEVICE"
sudo cryptsetup isLuks "$DEVICE"
sudo cryptsetup luksUUID "$DEVICE"
作業を続ける条件は次のとおりです。
| 確認項目 | 続行条件 |
|---|---|
readlink -f |
想定したブロックデバイスを指している |
| 容量 | 退役対象の台帳または記録と一致する |
| モデルとシリアル番号 | 退役対象の物理媒体と一致する |
FSTYPE または blkid の TYPE
|
crypto_LUKS |
| LUKS UUID | 想定した UUID と一致する |
| マウント状態 | 操作対象とマウントポイントの関係を説明できる |
通常運用中の key slot 変更でも、/dev/sdX を直接信用せず、LUKS UUID と永続的なパスで対象を固定する必要があります[9]。全 key slot を消去する退役操作では、同じ確認をより厳格に行います。
ファイルシステムをアンマウントする
対象のマウント状態を確認します。
findmnt "$MOUNTPOINT"
lsblk -o NAME,PATH,TYPE,FSTYPE,MOUNTPOINTS "$REAL_DEVICE"
書き込み処理が残っていないことを確認し、アンマウントします。
sync
sudo umount "$MOUNTPOINT"
アンマウント後に表示されないことを確認します。
if findmnt "$MOUNTPOINT" >/dev/null; then
printf '%s\n' 'still mounted' >&2
exit 1
fi
printf '%s\n' 'unmounted'
別の場所にもマウントされている場合があるため、lsblk の MOUNTPOINTS も空になっていることを確認します。
cryptsetup close で mapper を閉じる
LUKS を開いている間は、カーネルがボリュームキーを保持し、/dev/mapper の復号済みブロックデバイスを利用できます。ディスク上の key slot を消去する前に、そのマッピングを終了します。
現在の状態を確認します。
sudo cryptsetup status "$MAPPER"
対象の mapper 名、元デバイス、暗号方式が想定と一致することを確認してから閉じます。
sudo cryptsetup close "$MAPPER"
終了後は mapper デバイスが存在しないことを確認します。
if test -e "/dev/mapper/$MAPPER"; then
printf '%s\n' 'mapper still exists' >&2
exit 1
fi
printf '%s\n' 'mapper closed'
cryptsetup status が inactive を返すことも確認します。
sudo cryptsetup status "$MAPPER" || true
消去前の LUKS ヘッダーと key slot を確認する
対象が LUKS デバイスであることを、破壊直前にもう一度確認します。
sudo cryptsetup isLuks "$DEVICE"
printf 'isLuks exit status: %s\n' "$?"
sudo cryptsetup luksDump "$DEVICE"
isLuks の終了状態が 0 であり、luksDump に表示された UUID が事前確認した値と一致することを確認します。
LUKS1 では、次のように各 slot の状態が表示されます。
Key Slot 0: ENABLED
Key Slot 1: DISABLED
LUKS2 では、Keyslots: の下に有効な slot 番号と KDF などが表示されます。
Keyslots:
0: luks2
1: luks2
通常の key slot 整理では、解除手段を追加・試験してから不要な slot だけを削除します[9]。退役ではその逆に、復元不要であることを確認してから、すべての active key slot をまとめて消去します。
既存の LUKS ヘッダーバックアップを特定する
LUKS ヘッダーバックアップには、取得時点のヘッダーと key slot 領域が含まれます。媒体上の active key slot を消しても、古いヘッダーバックアップを復元し、その時点で有効だったパスフレーズまたは keyfile を使えば、暗号化データへ再び到達できる可能性があります。
cryptsetup erase の直前に新しいヘッダーバックアップを作成してはいけません。退役対象について過去に取得したバックアップを、台帳、ファイル名、LUKS UUID、保管先から特定します。
確認対象は次のとおりです。
- 初期作成直後のヘッダーバックアップ
- keyfile 追加後のヘッダーバックアップ
- パスフレーズ変更前後のヘッダーバックアップ
- key slot 削除前のヘッダーバックアップ
- 移行作業前のヘッダーバックアップ
- オフライン媒体や遠隔地へ複製したバックアップ
- バックアップソフトウェア内の過去世代
ヘッダーバックアップが残る限り、媒体上の key slot だけを消しても復元経路は完全には終了しません[3][4]。
cryptsetup erase ですべての key slot を消去する
対象を最後に表示します。
printf 'DEVICE=%s\n' "$DEVICE"
printf 'REAL_DEVICE=%s\n' "$(readlink -f "$DEVICE")"
lsblk -s \
-o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL,UUID \
"$(readlink -f "$DEVICE")"
sudo cryptsetup luksUUID "$DEVICE"
表示内容が一致した場合だけ実行します。
sudo cryptsetup erase "$DEVICE"
luksErase は同じ操作の別名です。
sudo cryptsetup luksErase "$DEVICE"
記事内では erase に統一します。確認を省略する --batch-mode は付けません。
cryptsetup 2.8.7 の公式マニュアルでは、erase はすべての key slot を消去し、ヘッダーバックアップがなければ古い暗号化データを取得不能にする操作とされています[7]。このコマンドは暗号化済みデータ領域をゼロで埋めるものではなく、active key slot を削除する暗号学的消去です。
active key slot が残っていないことを確認する
実行後に luksDump を再度確認します。
sudo cryptsetup luksDump "$DEVICE"
LUKS1 では、すべての slot が DISABLED であることを確認します。
Key Slot 0: DISABLED
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
LUKS2 では、Keyslots: の下に active な slot が残っていないことを確認します。
Keyslots:
Tokens:
cryptsetup isLuks も確認します。
sudo cryptsetup isLuks "$DEVICE"
printf 'isLuks exit status: %s\n' "$?"
ここで終了状態が 0 でも、erase の失敗とは限りません。erase は key slot を消しますが、LUKS ヘッダーの形式情報や UUID まで削除する操作ではないためです。消去成否は isLuks ではなく、luksDump に active key slot が残っていないことで判断します。
ヘッダーバックアップと専用 keyfile を処理する
媒体上の key slot を消した後、先に特定した LUKS ヘッダーバックアップを処理します。
バックアップファイルを削除する場合は、対象と LUKS UUID の対応を台帳で確認してから実行します。
rm -- /確認済みの/LUKSヘッダーバックアップ
rm はファイルシステム上の名前を削除する操作であり、保存媒体上の全コピーを物理的に上書きする保証はありません。スナップショット、複製先、遠隔地媒体、バックアップソフトウェアの過去世代も同じ復元経路として処理します。
退役対象専用の keyfile がある場合は、ほかの LUKS デバイスと共有していないことを確認します。共有の可能性がある場合は削除しません。
KEYFILE=/確認済みの/退役対象専用.key
sudo stat "$KEYFILE"
sudo grep -R -nF "$KEYFILE" \
/etc/crypttab \
/etc/systemd/system \
/etc/cron.d \
2>/dev/null
退役対象にしか使われていないことを確認できた場合だけ削除します。
sudo rm -- "$KEYFILE"
パスフレーズをパスワード管理システムや紙の台帳に記録している場合も、対象の LUKS UUID と対応する記録を退役済みに変更します。
自動解除・マウント・監視設定から外す
LUKS UUID、mapper 名、by-id の参照を検索します。
LUKS_UUID=$(sudo cryptsetup luksUUID "$DEVICE")
sudo grep -R -n \
-e "$LUKS_UUID" \
-e "$MAPPER" \
-e "$DEVICE" \
/etc/crypttab \
/etc/fstab \
/etc/systemd/system \
/etc/cron.d \
2>/dev/null
該当する設定を削除または無効化します。変更後、同じ検索を再実行して不要な参照が残っていないことを確認します。
バックアップスクリプト、監視設定、媒体台帳にも、次の状態を記録します。
- 退役日
- モデルとシリアル番号
- LUKS UUID
-
cryptsetup eraseの実行結果 - ヘッダーバックアップの処理結果
- 専用 keyfile の処理結果
- 物理廃棄の引き渡し先または完了日
必要な場合だけ LUKS シグネチャを削除する
cryptsetup erase 後も、LUKS ヘッダーの形式情報は残ります。物理廃棄前に crypto_LUKS として認識されない状態へ変更したい場合は、まず削除対象のシグネチャを確認します。
sudo wipefs --no-act "$DEVICE"
確認後、LUKS シグネチャを削除します。
sudo wipefs --all "$DEVICE"
結果を確認します。
sudo wipefs --no-act "$DEVICE"
sudo cryptsetup isLuks "$DEVICE"
printf 'isLuks exit status: %s\n' "$?"
wipefs はファイルシステムやパーティション形式を識別するシグネチャを削除するコマンドです。暗号化済みデータ領域全体を上書きする処理ではありません。機密性を終了させる中心操作は、先に実施した cryptsetup erase と、ヘッダーバックアップなど媒体外の復元経路の処理です。
媒体を取り外して物理廃棄へ渡す
設定から外した後、ホストを停止して媒体を取り外します。
sudo poweroff
取り外した媒体には、再利用されないように退役情報を表示します。
RETIRED / FAILED
モデル:
シリアル番号:
退役日:
cryptsetup erase: completed
DO NOT REUSE
読み取り不良が発生した HDD では、全領域上書きが完走することを前提にできません。LUKS の key slot と外部の復元経路を処理したうえで、媒体の物理破壊を行う事業者へ引き渡します。
LUKS の作成手順を扱った既稿では、暗号化領域を開いて mapper を生成し、ファイルシステムをマウントして利用を開始しました[5][6]。退役では、その運用経路を閉じた後、key slot、ヘッダーバックアップ、keyfile、設定参照を順に終了させます。
退役・廃棄チェックリスト
- 必要なデータを別媒体から読み出せる
- モデル、シリアル番号、容量が退役対象と一致する
- LUKS UUID が記録と一致する
-
DEVICEは確認済みの/dev/disk/by-idを指している - ファイルシステムをアンマウントした
-
mapper デバイスを
cryptsetup closeで閉じた - 既存の LUKS ヘッダーバックアップを特定した
-
cryptsetup eraseを確認済みのDEVICEに実行した -
luksDumpで active key slot が 0 個であることを確認した - ヘッダーバックアップの全コピーを処理した
- 退役対象専用の keyfile を処理した
-
crypttab、fstab、自動処理、監視設定から外した -
必要な場合は
wipefsで LUKS シグネチャを削除した - 媒体を取り外し、再利用禁止を表示した
- 物理廃棄の完了を台帳へ記録した
LUKS ディスクの退役は、ディスクを外した時点では完了しません。cryptsetup erase で媒体上の解除入口を消し、過去の LUKS ヘッダーバックアップと専用 keyfile を処理し、システム設定から参照を外して、物理媒体を再利用不能な廃棄工程へ渡した時点で完了します。
参考文献
- id774, バックアップ・リカバリー戦略における物理媒体管理(2026-05-10). https://blog.id774.net/entry/2026/05/10/4743/
- id774, LUKS 暗号化の手順と運用(2026-05-11). https://blog.id774.net/entry/2026/05/11/4746/
- id774, 暗号化ディスクを長期運用するための設計(2026-05-30). https://blog.id774.net/entry/2026/05/30/4818/
- id774, 暗号化ディスク運用手順を整理する(2026-05-31). https://blog.id774.net/entry/2026/05/31/4829/
- id774, データの安全性について考える (1)(2014-06-05). https://qiita.com/ynakayama/items/74096212b8177234be8a/
- id774, 可搬性の必要なデータの保全(2014-06-06). https://qiita.com/ynakayama/items/a65a6e8069b6b02bdaaa/
- cryptsetup project, cryptsetup-erase(8)(2026-07-21). https://gitlab.com/cryptsetup/cryptsetup/-/blob/v2.8.7/man/cryptsetup-erase.8.adoc
- id774, LUKS + ext4 が遅い原因を cryptsetup benchmark と rsync で切り分ける(2026-07-27). https://qiita.com/ynakayama/items/d1f24dbdb3b1df60fca8/
- id774, cryptsetup で LUKS2 の key slot を安全に追加・確認・削除する(2026-07-19). https://qiita.com/ynakayama/items/f7094d990a098bf41aa8/