squashfs
LUKS暗号化Ubuntuインストールのフルブートドライブのファイルバックアップを作成しました。
バックアップはストリーム圧縮を使用して実行されます。ダミーファイル、フルドライブイメージを含む圧縮ファイルを作成します。
mksquashfs empty-dir nvme_backup.img.squashfs -p 'nvme.img f 444 root root dd if=/dev/nvme0n1 bs=4M'
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdj 8:144 0 119.2G 0 disk
+-sdj1 8:145 0 119.2G 0 part
nvme0n1 259:0 0 223.6G 0 disk
+-nvme0n1p1 259:1 0 487M 0 part /boot
+-nvme0n1p2 259:2 0 1K 0 part
+-nvme0n1p5 259:3 0 118.8G 0 part
+-sdb5_crypt 253:0 0 118.8G 0 crypt
+-ubuntu--nvme--vg-root 253:1 0 110.8G 0 lvm /
+-ubuntu--nvme--vg-swap_1 253:2 0 8G 0 lvm
+-cryptswap1 253:3 0 8G 0 crypt [SWAP]
sudo mount /dev/sdj1 /media/backup
sudo mount nvme_backup.img.squashfs /media/backup/mountpoint/ # mount the squashfs
cd mountpoint
sudo kpartx -va nvme.img # find the partitions and loop-mount them
add map loop1p1 (253:10): 0 997376 linear 7:1 2048
add map loop1p2 (253:11): 0 2 linear 7:1 1001470
add map loop1p5 (253:12): 0 249067520 linear 7:1 1001472
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 111.4G 0 loop /media/backup/mountpoint
loop1 7:1 0 119.2G 1 loop
+-loop1p1 253:10 0 487M 1 part
+-loop1p2 253:11 0 1K 1 part
+-loop1p5 253:12 0 118.8G 1 part
sdj 8:144 0 119.2G 0 disk
+-sdj1 8:145 0 119.2G 0 part /media/backup
nvme0n1 259:0 0 223.6G 0 disk
+-nvme0n1p1 259:1 0 487M 0 part /boot
+-nvme0n1p2 259:2 0 1K 0 part
+-nvme0n1p5 259:3 0 118.8G 0 part
+-sdb5_crypt 253:0 0 118.8G 0 crypt
+-ubuntu--nvme--vg-root 253:1 0 110.8G 0 lvm /
+-ubuntu--nvme--vg-swap_1 253:2 0 8G 0 lvm
+-cryptswap1 253:3 0 8G 0 crypt [SWAP]
sudo cryptsetup luksOpen /dev/mapper/loop1p5 root
Enter passphrase for /dev/mapper/loop1p5:
sudo lvscan
WARNING: Not using device /dev/gpt-auto-root for PV xCIFJX-luFH-kOpr-9HvF-fz5E-PeTf-c8YZyo.
WARNING: PV xCIFJX-luFH-kOpr-9HvF-fz5E-PeTf-c8YZyo prefers device /dev/mapper/sdb5_crypt because device is used by LV.
ACTIVE '/dev/ubuntu-nvme-vg/root' [110.75 GiB] inherit
ACTIVE '/dev/ubuntu-nvme-vg/swap_1' [<7.99 GiB] inherit
lsblk -o name,mountpoint,size,type,ro,label,uuid | grep CIF
+-root 118.8G crypt 1 xCIFJX-luFH-kOpr-9HvF-fz5E-PeTf-c8YZyo
+-sdb5_crypt 118.8G crypt 0 xCIFJX-luFH-kOpr-9HvF-fz5E-PeTf-c8YZyo
/dev/mapper/sdb5_crypt
したがって、LVMとPVのUUIDは/dev/mapper/root
同じであるため、LVMをマウントできません。これはレプリカなので意味があります。
LVMをマウントしてファイルをインポートするにはどうすればよいですか? LVMはすべて読み取り専用ループマウントsquashfsにあるため、UUIDや名前だけを変更することはできないことに留意してください。
答え1
これを処理するための3つのオプションがあります(btrfsが関連していないと、UUIDの競合に関連する他の問題が発生する可能性があります)。
(ドッカー)コンテナ
/dev/mapper/loop1p5
LVM コンテンツが他のデバイスを表示できないように、コンテナ内でのみ作成されます。
mknod /dev/mapper/loop1p5 b 253 12 # major and minor ID of the host device
dmsetup(LVMを無視)
LVMツールを使用しないでください。デバイスマッパー デバイスを手動で作成します。出力調整(つまり、基本デバイスをsdb5_crypt
()から()に253:0
変更する必要があります)root
253:?
dmsetup table ubuntu--nvme--vg-root
これをdmsetup create
新しいデバイス名への入力として使用します。
スナップショットの作成とUUIDとVGの名前の変更(dmsetup)
これは見苦しく見え、ほとんどの人を気絶させることができます。ここでは多くのステップを探す必要があり、おそらく使用されないので、すべてのステップを提供するわけではありません。何をすべきか説明しましょう。
小さな(いくつかのMiB)ブロックデバイスを作成します。
/dev/mapper/root
たとえば、「複製デバイス」を作成します。dmsetup table root | dmsetup create root_copy
load(
dmsetup load
)はスナップショット設定をに入れますroot
。これには、「コピーデバイス」およびCoW(記録中のコピー)デバイスへの参照が含まれています。新しい設定を有効にする
dmsetup suspend root ; dmsetup resume root
これで、「読み取り専用」データを少し変更できます。変更は CoW デバイスにのみ記録されます。