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
이를 처리하기 위한 세 가지 옵션이 있습니다(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 장치에만 기록됩니다.