![Luks の復号化後にパーティションが表示されない](https://rvso.com/image/154773/Luks%20%E3%81%AE%E5%BE%A9%E5%8F%B7%E5%8C%96%E5%BE%8C%E3%81%AB%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84.png)
luks ドライブを復号化するたびに、パーティションが表示されません。
cryptsetup -v luksOpen /dev/md0 md0_crypt
lsblk
sdb 8:16 0 3,7T 0 disk
└─sdb1 8:17 0 3,7T 0 part
└─md0 9:0 0 7,3T 0 raid5
└─md0_crypt 253:11 0 7,3T 0 crypt
sdc 8:32 0 3,7T 0 disk
└─sdc1 8:33 0 3,7T 0 part
└─md0 9:0 0 7,3T 0 raid5
└─md0_crypt 253:11 0 7,3T 0 crypt
sdd 8:48 0 3,7T 0 disk
└─sdd1 8:49 0 3,7T 0 part
└─md0 9:0 0 7,3T 0 raid5
└─md0_crypt 253:11 0 7,3T 0 crypt
partprobeを実行すると
partprobe
lsblk
sdb 8:16 0 3,7T 0 disk
└─sdb1 8:17 0 3,7T 0 part
└─md0 9:0 0 7,3T 0 raid5
└─md0_crypt 253:11 0 7,3T 0 crypt
└─md0_crypt1 253:12 0 7,3T 0 part
sdc 8:32 0 3,7T 0 disk
└─sdc1 8:33 0 3,7T 0 part
└─md0 9:0 0 7,3T 0 raid5
└─md0_crypt 253:11 0 7,3T 0 crypt
└─md0_crypt1 253:12 0 7,3T 0 part
sdd 8:48 0 3,7T 0 disk
└─sdd1 8:49 0 3,7T 0 part
└─md0 9:0 0 7,3T 0 raid5
└─md0_crypt 253:11 0 7,3T 0 crypt
└─md0_crypt1 253:12 0 7,3T 0 part
fdisk:
Disk /dev/mapper/md0_crypt: 7,3 TiB, 8001299677184 bytes, 15627538432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: A599A15F-07DA-B340-ADDC-AA56AE2E9249
Device Start End Sectors Size Type
/dev/mapper/md0_crypt-part1 2048 15627536383 15627534336 7,3T Linux
起動するたびに md0_crypt1 パーティションをマウントしたいのですが、毎回 partprobe を実行せずに済みます。
私は何か見落としてますか?
答え1
LUKS/LVM デバイスをパーティション分割することは珍しいことであり、そのため、ほとんどの標準ツールでは対応していません。実際、デバイス マッパー デバイスでパーティションを非表示にしておくことは機能の 1 つです。これは、論理ボリュームをバッキング デバイスとして使用する仮想マシンは通常、それらのパーティションを分割しますが、そのパーティションがホスト上に表示されないようにするためです。
起動するたびに md0_crypt1 パーティションをマウントしたいのですが、毎回 partprobe を実行せずに済みます。
ほとんどそのままです。そして、それをどこかの init スクリプトに組み込めば、違いに気付くことさえないでしょう... (言い換えれば、自動化するということです)
このポイントより下のものを試す前にバックアップを作成してください。
何もマウントされていない LiveCD からもこれを実行してください。
オプション1)
余分なパーティション テーブルを完全に削除できます (すべてのデータを 2048 ずつシフトします。つまり、最初のパーティションのオフセットです)。非常に危険なdd
コマンド:
dd status=progress bs=1M if=/dev/mapper/md0_crypt1 of=/dev/mapper/md0_crypt
注意: このように dd を実行する場合は、まだ読み取られていないデータを上書きしないようにする必要があります。そのため、逆方向では機能しません。
オプション2)
パーティション テーブルを LVM に変換することも可能かもしれませんが (データの再配置は必要ありません)、LVM は最近、より大きなメタデータ領域を好み、署名をゼロにして消去する傾向があります。そのため、これらを回避するように注意し、最初の PE が 2M やその他のより大きなデフォルトではなく 1M から始まるようにする必要があります。
[ replace /dev/loop0 with /dev/mapper/md0_crypt ]
# vgcreate --dataalignment 1M --metadatasize 128K vgname /dev/loop0
[ this step will wipe GPT signature ]
# pvs -o +pe_start /dev/loop0
PV VG Fmt Attr PSize PFree 1st PE
/dev/loop0 foobar lvm2 a-- 1020.00m 0 1.00m
^^^^^^^
[ 1st PE must be 1.00m (2048s) otherwise abort mission! ]
# lvcreate --wipesignatures n --zero n -l100%FREE -n lvname vgname
# file -sL /dev/vgname/lvname
/dev/vgname/lvname: Linux rev 1.0 ext4 filesystem data [...]
[ if there's no filesystem, something went wrong ]
実行は可能ですが、完全なバックアップなしで実行しないでください。