기존에 채워진 디스크 장치를 QEMU 원시 이미지에 추가

기존에 채워진 디스크 장치를 QEMU 원시 이미지에 추가

원시 QEMU 이미지(vda.raw)가 있고 크기를 조정하고 데이터가 채워진 원시 ext3 파일 시스템(vdb.raw)이 포함된 파일의 데이터를 사용하여 기존 파티션을 추가하고 싶습니다. 두 파일은 다음과 같습니다.

$ file vda.raw
vda.raw: x86 boot sector; partition 1: ID=0x83, active, starthead 0, startsector 16065, 20948760 sectors, code offset 0x63
$ file vdb.raw
vdb.raw: Linux rev 1.0 ext3 filesystem data, UUID=14555b9c-4837-4b43-a8e8-fe4e19194e88, volume name "ephemeral0" (large files)

vdb.raw의 내용이 vda.raw에서 새 디스크 파티션으로 표시되는 두 가지를 결합하여 새 이미지를 생성하는 쉬운 방법이 있습니까? 나는 피하고 싶다:

  1. vda.raw 크기 조정
  2. vda.raw에 새 파티션을 생성합니다.
  3. vda.raw 마운트
  4. vdb.raw 마운트
  5. vdb.raw의 내용을 vda.raw에 복사합니다.

dd로 연결한 다음 이미지에 새 파티션이 있음을 알 수 있도록 파티션 테이블을 수정하는 방법이 있습니까?

답변1

확실한 방법을 시도해 보셨나요? vdb를 vda에 연결하고 새 파티션을 만드세요. 나는 그것을 시도했고 그것은 효과가있는 것 같습니다. 이게 내가 한 일이야...

두 개의 파일로 시작합니다.

# ls -l vd*
-rw-r--r-- 1 root root 104857600 Feb 27 20:31 vda.raw
-rw-r--r-- 1 root root 104857600 Feb 27 20:31 vdb.raw

# file vd[ab].raw
vda.raw: x86 boot sector; partition 1: ID=0x83, starthead 32, startsector 2048, 202752 sectors, extended partition table (last)\011, code offset 0x0
vdb.raw: Linux rev 1.0 ext3 filesystem data, UUID=734fa0ee-0bc8-4428-a13c-3147c9c0866f

이 파일에는 vda.raw단일 파티션(ext3 파일 시스템 포함)이 있는 표준 파티션 맵이 포함되어 있습니다.

# fdisk -l vda.raw 

Disk vda.raw: 104 MB, 104857600 bytes
191 heads, 50 sectors/track, 21 cylinders, total 204800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xad0a5dfe

  Device Boot      Start         End      Blocks   Id  System
vda.raw1            2048      204799      101376   83  Linux

vdb.raw파일 시스템 을 포함합니다 ext3.

먼저 다음 두 파일을 함께 연결합니다.

# cat vda.raw vdb.raw > combined.raw

다음으로 새 데이터를 포함하는 새 파티션을 만듭니다.

# fdisk combined.raw

초기 파티션 테이블은 다음과 같습니다.

Command (m for help): p

Disk combined.raw: 209 MB, 209715200 bytes
191 heads, 50 sectors/track, 42 cylinders, total 409600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xad0a5dfe

       Device Boot      Start         End      Blocks   Id  System
combined.raw1            2048      204799      101376   83  Linux

이제 시작 섹터 및 크기에 대한 기본값을 수락하여 새 섹터를 만듭니다.

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (204800-409599, default 204800): 
Using default value 204800
Last sector, +sectors or +size{K,M,G} (204800-409599, default 409599): 
Using default value 409599

Command (m for help): w
The partition table has been altered!

Syncing disks.

이제 우리가 무엇을 가지고 있는지 살펴보겠습니다:

# kpartx -a combined.raw 
# mkdir /mnt/{1,2}
# mount /dev/mapper/loop1p1 /mnt/1
# mount /dev/mapper/loop1p2 /mnt/2
# ls /mnt/1
lost+found  README.vda
# ls /mnt/2
lost+found  README.vdb
# 

다다!

관련 정보