대용량 파일을 분할하지 않고 두 개의 디스크에 저장하는 방법은 무엇입니까?

대용량 파일을 분할하지 않고 두 개의 디스크에 저장하는 방법은 무엇입니까?

100GB 파일과 72GB 디스크 2개가 있는 서버가 있습니다.

서버는 디스크에 ext4가 있고 LVM이 없는 Ubuntu Linux를 실행하고 있습니다.

72+72GB 디스크가 있는 서버에 100GB 파일을 저장하는 방법은 무엇입니까?

파일 시스템을 변경할 수 없으며 파일을 분할할 수도 없습니다. 파일은 읽을 수 있어야 합니다.

답변1

각 디스크에 하나씩, 각각 약 50GB의 파일 두 개를 생성할 수 있습니다. 그런 다음 losetup이를 루프 장치에 매핑하는 데 사용합니다 . 이제 mdraid raid0과 같은 두 개의 루프 장치를 결합할 수 있습니다. 이제 해당 어레이에 파일 시스템을 생성하고 마지막으로 해당 어레이에 파일을 넣을 수 있습니다.

약간 복잡하지만 올바른 방법은 두 디스크 모두에서 LVM 및/또는 mdraid를 사용하는 것입니다(두 디스크를 하나의 디스크로 처리하려는 경우).

예를 들어, 더 작은 이미지를 사용하는 경우(분명히 여기서는 나처럼 합리적인 경로를 사용해야 합니다 /tmp. 그리고 아마도 "test"보다 더 나은 배열 이름일 것입니다):

root@Zia:/tmp# dd if=/dev/zero of=/tmp/img1 bs=1024k count=1024
root@Zia:/tmp# dd if=/dev/zero of=/tmp/img2 bs=1024k count=1024
root@Zia:/tmp# losetup --show -f /tmp/img1
/dev/loop0
root@Zia:/tmp# losetup -f /tmp/img2
/dev/loop1
root@Zia:/tmp# mdadm -C /dev/md/test -l 0 -n 2 /dev/loop0 /dev/loop1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/test started.
root@Zia:/tmp# mkfs.ext4 -Tlargefile4 /dev/md/test 
root@Zia:/tmp# mount /dev/md/test /mnt/tmp
root@Zia:/tmp# df -h /mnt/tmp/
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126      2.0G  3.0M  1.9G   1% /mnt/tmp

그리고 시작할 때 다시 정리하려면 다음과 같이 하십시오(물론 스크립트를 작성해야 합니다).

root@Zia:/tmp# losetup --show -f /tmp/img1 
/dev/loop0
root@Zia:/tmp# losetup --show -f /tmp/img2
/dev/loop1
root@Zia:/tmp# mdadm --assemble /dev/loop0 /dev/loop1
mdadm: device /dev/loop0 exists but is not an md array.
root@Zia:/tmp# mdadm --assemble /dev/md/test /dev/loop0 /dev/loop1
mdadm: /dev/md/test has been started with 2 drives.
root@Zia:/tmp# mount /dev/md/test /mnt/tmp

다시 시작/종료하기 전에 제거하면 효과가 있을 수 있지만 2 주기 umount장치 에서는 제거 할 수 있습니다.mdadm --stop /dev/md/testlosetup -d

관련 정보