วิธีการตั้งค่าอุปกรณ์ลูปแบ็คที่เติบโตได้?


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
เนื่องจากไฟล์กระจัดกระจายจึงควรใช้พื้นที่เท่าที่เก็บไว้ในตัวอย่างของคุณ
จอร์แดน

เครื่องมือนี้virt-make-fsอาจมีประโยชน์ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณพยายามทำให้สำเร็จ มันสามารถใช้ในการสร้างภาพ ext2- โดยใช้ไฟล์ tar
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 :)'

การอ้างอิง: บทความวิกิพีเดียไฟล์กระจัดกระจาย


10

@ ความคิดเห็นของ jordanmถูกจับมัน ls -lh disk.imgผมสันนิษฐานว่าขนาดของไฟล์ได้รับการแก้ไขเมื่อผมมองไปที่การส่งออกของ เมื่อฉันใช้คำตอบls -s disk.imgใน@ Stephanขนาดไฟล์จริงจะแสดงให้เห็น จากการทดสอบฉันสร้างไฟล์รูปภาพที่มีขนาดใหญ่กว่าฮาร์ดไดรฟ์ของฉัน:

truncate test.img -s 1000G

และใช้งานได้ดีซึ่งหมายความว่าคำตอบอยู่ในคำถาม :)


Truncate ใช้งานได้ดีมาก btw ฉันแค่คิดว่าฉันจะแสดงคำสั่งทางเลือกเพื่อสร้างไฟล์ sparse และ (ขึ้นอยู่กับการแจกจ่าย linux และชุดเครื่องมือของคุณ) ซึ่งคุณไม่จำเป็นต้องใช้ losetup เหมือนกับ 'mount' ในปัจจุบัน การจุติมาเกิดเป็นเรื่องที่ฉลาดในการตั้งค่าตัวเลือกที่เหมาะสมเมื่อคุณต้องการ
เตฟาน

บิตเกี่ยวกับการเมานต์นั้นน่าสนใจ เพียงแค่ครั้งนี้เพราะฉันยังต้องการ LUKS (cryptsetup luksFormat / dev / loop0) ฉันต้องการ losetup: D
phunehehe

อีกคำสั่ง linux fallocate(1)ที่มีประโยชน์ในการสร้างไฟล์เบาบางคือ
Lloeki

2

คุณสามารถทำได้ด้วยตนเองด้วยการค้นหา dd หรือง่ายกว่าเนื่องจากคุณใช้การตัดทอน:

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.