확장 가능한 루프백 장치를 설정하는 방법은 무엇입니까?


23

다음과 같은 루프백 장치를 만들고 사용할 수 있다는 것을 알고 있습니다.

# Create the file
truncate disk.img --size 2G
# Create a filesystem
mkfs.ext4 disk.img
# Mount to use
mount disk.img /mnt
# Clean up
umount /mnt

그러나이 경우 디스크 이미지는 2GB로 고정됩니다. 비었을 때 2GB이고 가득 차면 2GB입니다. 성장하지 않습니다.

크기가 커질 수있는 일종의 루프백 장치가 있습니까? 아니면 저장 공간이 필요한 루프백 장치가 있습니까?


1
파일이 희소하므로 예제에 저장된만큼의 공간 만 사용해야합니다.
jordanm

이 작업으로 수행하려는 작업에 따라이 도구 virt-make-fs가 유용 할 수 있습니다. tar 파일을 사용하여 ext2 이미지를 만드는 데 사용할 수 있습니다.
Kotte

답변:


17

dd를 사용하여 스파 스 파일 장치를 만듭니다.

df -hm # to show where we started
dd of=sparse-file bs=1k seek=102400 count=0 # creates a 100Meg sparsefile
mkfs.ext4 sparse-file
mkdir blah
mount sparse-file blah
cp somefile blah
ls -lahts sparse-file  # The 's' option will report the actual space taken in the first column
ls -lahts blah
df -hm # doublecheck my work
echo 'profit :)'

참고 자료 : wikipedia sparse file article


10

@jordanm의 의견 은 그것을 못 박았습니다. 의 출력을 볼 때 파일 크기가 고정되었다고 가정했습니다 ls -lh disk.img. @Stephan의 답변ls -s disk.img 과 같이 사용 하면 실제 파일 크기가 표시됩니다. 테스트로 하드 드라이브보다 큰 이미지 파일을 만들었습니다.

truncate test.img -s 1000G

그리고 그것은 잘 작동합니다. 즉, 질문에 대한 답이 있음을 의미합니다 :)


Truncate는 잘 작동합니다 .btw, 저 희소 파일을 작성하는 대체 명령을 보여 줄 것이라고 생각했으며 (Linux 배포 및 도구 세트에 따라) 현재의 'mount'로 losetup을 사용할 필요는 없습니다. 화신은 현명한 옵션을 필요할 때 설정하는 것에 대해 매우 영리합니다.
Stephan

마운트에 관한 내용은 흥미 롭습니다. 그것은 그냥 나는 또한 LUKS을 필요로하기 때문에이 시간 (으로 cryptsetup luksFormat는 / dev / loop0에), 나는 losetup을 필요로하는 : D
phunehehe

스파 스 파일을 만드는 또 다른 편리한 리눅스 명령은 fallocate(1)입니다.
Lloeki

2

truncate를 사용하므로 dd seek를 사용하거나 더 쉽게 수동으로 수행 할 수 있습니다.

truncate -s 100M file
mkfs.ext4 -m0 file
#mount, do whatever
umount /mountpoint
#let's grow it to 200 MB
truncate -s 200M file
e2fsck -f file && resize2fs file
#done

그것을 성장시키기위한 2 개의 라이너, 여기서 자동화를 거의 요구하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.