จะเติมส่วนที่ไม่ได้ใช้ของอิมเมจระบบไฟล์ btrfs ด้วยศูนย์ได้อย่างไร

Aug 20 2020

สำหรับแขก Linux ภายใต้ VMware Workstation

ฉันลองvmware-toolbox-cmd disk shrink /btrfs ซึ่งติดตั้งเป็นcompress=zstd,noatime,nodiratime,space_cache,ssd,discardไฟล์. อย่างไรก็ตามรูปภาพเพิ่งขยายถึงขนาดสูงสุดและไม่สามารถย่อขนาดได้

ดูเหมือนว่า btrfs ที่บีบอัดจะไม่เขียนไฟล์ศูนย์เป็นศูนย์

ฉันพบว่ามีแพทช์ ioctl อยู่ที่ศูนย์เติมที่ https://lwn.net/ml/linux-btrfs/aed736d257f7e91cf3b0cf4d1fdfc247212d8bf7.1524233244.git.dsterba@suse.com/.

ฉันจะโทรBTRFS_CLEAR_OP_ZERO_NOUNMAPจาก Guest Linux ได้อย่างไร

คำตอบ

1 damian101 Sep 08 2020 at 21:24

เท่าที่ฉันรู้ไม่มีวิธีโดยตรงในการเติมช่องว่างที่ไม่ได้ใช้ของระบบไฟล์ Btrfs ด้วยศูนย์ อย่างไรก็ตามคุณสามารถประสบความสำเร็จในสิ่งเดียวกันโดยเพียงแค่กรอกข้อมูลระบบแฟ้มกับศูนย์ไฟล์เต็มแล้วลบพวกเขา sfill sfill -llz \dev\Xเป็นวิธีหนึ่งที่จะทำว่า: Sfill เป็นส่วนหนึ่งของชุดเครื่องมือลบความปลอดภัย:https://github.com/GIJack/secure_delete.

แต่อย่างที่คุณสังเกตเห็นว่าจะใช้ไม่ได้กับการเปิดใช้งานการบีบอัดระบบไฟล์เนื่องจากไม่มีอะไรที่จะบีบอัดได้ง่ายไปกว่าศูนย์จำนวนมาก คุณต้องติดตั้งระบบไฟล์ใหม่โดยไม่ใช้อ็อพชันการบีบอัด = zstd mount เพื่อให้ทำงาน หรือตั้งค่าแฟล็กไม่มีการบีบอัดเป็นรูทของระบบไฟล์ Btrfs ของคุณด้วยbtrfs property set <object> compression ""หากระบบของคุณอยู่บนโวลุ่มย่อย Btrfs คุณต้องเมานต์รูทระบบไฟล์ก่อน chattr -cธงว่าขณะนี้สามารถลบออกได้ด้วย

อิมเมจ VMWare ไม่ย่อขนาดโดยอัตโนมัติ แต่มีหลายวิธีในการย่อขนาด