스파스 디스크 이미지를 마운트하는 방법

스파스 디스크 이미지를 마운트하는 방법

내 PC의 mSATA SSD 디스크 이미지가 있습니다. 이 디스크에는 운영 체제가 포함되어 있으며 용량은 512GB입니다.

사용 가능한 저장 공간이 없어서 디스크를 이미지로 복제하고 다음 과 같이 dd압축했습니다.gz이 게시물, 공간을 덜 차지하도록 희박한 내용을 복사했습니다.

이는 올바르게 작동하여 512GB 이미지가 디스크에서 5GB 미만을 차지하게 됩니다.

완료된 작업을 요약하면 다음과 같습니다.

# dd bs=64K if=/dev/sdd conv=sync,noerror status=progress | gzip -c  > /image.img.gz
# gunzip -c /image.img.gz | cp --sparse=always /dev/stdin mini.img
# ls -lhs
4,8G -rw-------  1 balon users 477G ene 13 10:54 mini.img
2,3G -rw-r--r--  1 balon users 2,3G ene 11 08:32 minimal-industrial-pc.img.gz

지금까지는 모든 것이 정확합니다. 이미지를 마운트하려고 할 때 문제가 발생합니다(나 자신을 이미지에 포함시키고 파일 시스템을 일부 변경하고 싶기 때문입니다).

나는 다음을 시도했습니다 :

  1. fdisk
# fdisk -l mini.img
The size mismatch of the primary master boot record (GPT PMBR) (1000215215!= 1000215295) will be corrected by writing.
The backup GPT table is not at the end of the device.
Disk mini.img: 476,94 GiB, 512110231552 bytes, 1000215296 sectors
Units: sectores de 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disc label type: gpt
Disk identifier: 74BC899D-E8BA-4C70-B82D-6F4E8F6343A3

Device    Start   End        Sectors   Size   Type
mini.img1 2048    2203647    2201600   1G     EFI System
mini.img2 2203648 6397951    4194304   2G     Linux file system
mini.img3 6397952 1000212479 993814528 473.9G Linux file system
  1. kpartx
# kpartx -a -v mini.img
GPT:Primary header thinks Alt. header is not at the end of the disk.
GPT:Alternate GPT header not at the end of the disk.
GPT: Use GNU Parted to correct GPT errors.
add map loop1p1 (254:4): 0 2201600 linear 7:1 2048
add map loop1p2 (254:5): 0 4194304 linear 7:1 2203648
add map loop1p3 (254:6): 0 993814528 linear 7:1 6397952

이 경우에는 마운트에 문제가 없을 것 같지만, loop1p1제가 loop1p2알기로는 Ubuntu 루트 시스템에 해당하는 `loop1p3'에 대해서는 방법이 없습니다.

  1. gdisk
# gdisk -l mini.img
GPT fdisk (gdisk) version 1.0.9.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk mini.img: 1000215296 sectors, 476.9 GiB
Sector size (logical): 512 bytes
Disk identifier (GUID): 74BC899D-E8BA-4C70-B82D-6F4E8F6343A3
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1000215182
Partitions will be aligned on 2048-sector boundaries
Total free space is 4717 sectors (2.3 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2203647   1.0 GiB     EF00
   2         2203648         6397951   2.0 GiB     8300
   3         6397952      1000212479   473.9 GiB   8300

내가 뭘 잘못했나요?

답변1

에 사용한 로고로 인해 이미지가 손상될 수 있습니다 dd. 프로세스를 반복할 수 있다면 대신 사용하지 마세요 dd.

gzip </dev/sdd >/.../sdd.img.gz
zcat /.../sdd.img.gz | cp --sparse=always /dev/stdin mini.img

이를 더욱 향상시키려면 실제로 이미지를 압축할 필요가 없다면 디스크에서 직접 희소 복사본을 만드세요.

cp --sparse=always /dev/sdd mini.img

디스크가 /dev/sdd복사되는 동안 사용 중인 경우 복사본의 무결성 검사에 실패할 수 있습니다. 최악의 시나리오는 디스크가 표시되지 않는다는 것입니다.

관련 정보