여러 img 파일을 단일 루프 장치로 마운트

여러 img 파일을 단일 루프 장치로 마운트

디스크 img 파일을 여러 부분으로 분할하여 단일 루프 장치로 마운트하는 방법이 있습니까?

답변1

내부에서 이 작업을 수행할 수는 없을 것 같지만 공간이 충분하다면 다음과 같이 하면 됩니다.

# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k

# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01

# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1

# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>

# Mount the new filesystem
mount /dev/md0 /mnt

RAID 디스크에는 디스크 수, RAID 레벨 등과 같은 정보를 저장하는 특정 헤더가 있기 때문에 단순히 원시 파일에서 RAID 어레이를 생성할 수 없습니다. 이렇게 하면 원본 파일의 일부를 덮어쓰게 됩니다.

를 사용하여 메타데이터 없이 배열을 생성 할 수 있지만 mdadm --build먼저 백업을 만들어야 합니다. 또는 읽기 전용 마운트로 충분한 경우:

losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt

왜 이런 짓을하는? 파일 시스템이 4GB가 넘는 파일을 처리할 수 없는 경우 일반 파일 시스템으로 전환해야 합니다.

답변2

분할 디스크 이미지(또는 파티션 이미지)를 설치하려면 affuse현재 여기에서 유지 관리되는 afftools를 사용해야 합니다.https://github.com/sshock/AFFLIBv3

따라서 파일이 있는 경우 여러 하위 파일로 분할하세요.test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009

그런 다음 가상으로 참여할 수 있습니다.affuse

# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw

(이렇게 하면 파일 000부터 시작하여 001, 002 등 모든 파일이 함께 그룹화됩니다.)

그런 다음 이미지를 마운트하십시오.

mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test

사용법이 설명되어 있습니다.여기그리고 몇 가지 예여기. 컴파일 및 설치 후에 맨페이지를 사용할 수도 있습니다.여기.

추신: 나에게 이것은 affuse분할 파일의 크기가 512바이트의 배수인 경우에만 작동합니다.

답변3

자신만의 블록 저장 장치 확장(퓨즈와 같은 확장)을 작성하고 주소를 기반으로 조회를 수행할 수 있습니다.

여기에서 퓨즈 사용 방법의 예를 찾을 수 있습니다. https://github.com/libfuse/python-fuse/blob/master/example/hello.py

답변4

BSD에서는 통합 옵션을 사용하여 마운트할 수 있습니다. Linux에서는 UnionFS를 사용해 볼 수 있습니다.

관련 정보