ฉันไม่สามารถจินตนาการได้ว่าทำไมไฟล์ swap ต้องมีขนาดคงที่ ทำไมไม่ให้มันปรับขนาดแบบไดนามิกเช่นไฟล์ภาพฮาร์ดไดรฟ์สำหรับกล่องเสมือน?
ฉันไม่สามารถจินตนาการได้ว่าทำไมไฟล์ swap ต้องมีขนาดคงที่ ทำไมไม่ให้มันปรับขนาดแบบไดนามิกเช่นไฟล์ภาพฮาร์ดไดรฟ์สำหรับกล่องเสมือน?
คำตอบ:
ดูเหมือนว่า Linux ไม่รองรับขนาดการแลกเปลี่ยนไฟล์แบบไดนามิก (ไม่ว่าในกรณีใดฉันไม่สามารถตรวจสอบได้ว่าไฟล์ swap มีการเปลี่ยนแปลงขนาดโดยไม่มีswapoff
/ swapon
)
สันนิษฐานว่าเป็นการง่ายกว่าที่จะสันนิษฐานว่าไฟล์สวอปไม่เปลี่ยนขนาดไฟล์แบบไดนามิกเมื่อเขียนโค้ดเพื่อสนับสนุน ฉันไม่เห็นการใช้งานที่ยอดเยี่ยมสำหรับมันเช่นกัน เนื่องจากคุณสามารถใช้ไฟล์สลับหลายไฟล์ได้จึงไม่มีอะไรทำให้คุณสามารถสร้างไฟล์สลับได้มากขึ้นตามต้องการ
นอกจากนี้ยังทราบวรรคนี้จากmanpage :swapon
The swap file implementation in the kernel expects to be able to write
to the file directly, without the assistance of the filesystem. This
is a problem on preallocated files (e.g. fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.
ฉันคิดว่าปัญหาเดียวกันนี้จะใช้กับไฟล์ swap ที่มีขนาดแบบไดนามิก
SwapSpaceเป็นยูทิลิตี้ที่จะช่วยให้คุณทำการสลับขนาดแบบไดนามิกหากนั่นคือสิ่งที่คุณกำลังมองหา ฉันเชื่อว่ามันมีอยู่ใน Ubuntu
ฉันรู้ว่ามันสาย แต่ฉันคิดว่าทางออกที่ดีที่สุดสำหรับ dynamic swap คือ:
sudo apt install dphys-swapfile
sudo update-rc.d dphys-swapfile enable
แล้วตั้งค่าCONF_SWAPFACTOR=2
ใน/etc/dphys-swapfile
และในที่สุด
sudo service dphys-swapfile start
พื้นที่สวอปสามารถเพิ่มลงในระบบที่กำลังรันได้โดยใช้swapon
คำสั่ง ต้องการ swapfile / partition ที่มีอยู่ (ไม่ได้ใช้) เมื่อต้องการสร้างให้ใช้dd
คำสั่งเพื่อจัดสรรไฟล์ที่อยู่ติดกันจากนั้นmkswap
เพิ่มข้อมูลการควบคุมที่ถูกต้องให้กับไฟล์ / พาร์ติชัน
ในการลบ swapfile ให้ใช้swapoff
; ไฟล์สามารถลบได้
ฉันสงสัยว่าเป็นสิ่งที่SwapSpace
dæmonที่ @ user231695 พูดถึงทำ
โปรดทราบว่า swapoff อาจเป็นการทำงานที่ช้าหากใช้ swapfile อยู่ ข้อมูลทั้งหมดจะต้องถูกถ่ายโอนไปยังพื้นที่สลับอื่น