ทำไม Linux จึงใช้ swap partition แทนไฟล์


32

สำหรับผมแล้วไฟล์ swap นั้นมีความยืดหยุ่นมากกว่า


1
คุณสามารถใช้ไฟล์สลับใน Linux ฉันกำลังทำเช่นนั้นในหลายเครื่อง ฉันไม่ได้ใช้อะไรเป็นพิเศษ แต่แค่ ext4 หรือ ext4 กับ LVM ไม่มีการเข้ารหัสหรืออะไรที่ซับซ้อน การหยุดชั่วคราวและจำศีลทำงานได้ดีสำหรับฉันแม้บนเครื่อง NVMe ของฉัน
Cory T

คำตอบ:


32

ไฟล์ swap มีความยืดหยุ่นมากขึ้น แต่ยังสามารถใช้งานได้มากกว่าพาร์ทิชัน swap ข้อผิดพลาดของระบบไฟล์อาจทำให้ไฟล์ swap เสียหายได้ ไฟล์สลับอาจเป็นปัญหาสำหรับผู้ดูแลระบบเนื่องจากไม่สามารถย้ายหรือลบไฟล์ได้ ไม่สามารถใช้ไฟล์ swap สำหรับการจำศีล ไฟล์สวอปนั้นช้าลงเล็กน้อยในอดีตแม้ว่าความแตกต่างจะเล็กน้อยในทุกวันนี้

ข้อดีของไฟล์ swap คือไม่ต้องตัดสินใจขนาดล่วงหน้า อย่างไรก็ตามภายใต้ Linux คุณยังไม่สามารถปรับขนาดไฟล์สลับออนไลน์ได้: คุณต้องยกเลิกการลงทะเบียนปรับขนาดแล้วลงทะเบียนใหม่ (หรือสร้างไฟล์อื่นและลบไฟล์เก่า) ดังนั้นจึงไม่มีประโยชน์อย่างมากสำหรับไฟล์ swap ใน Linux เมื่อเปรียบเทียบกับพาร์ติชั่น swap มันมีประโยชน์เป็นหลักเมื่อคุณต้องการหน่วยความจำเสมือนเพิ่มเติมชั่วคราวมากกว่าเป็นอุปกรณ์ติดตั้งถาวร


4
ในอดีตยังมีประโยชน์การแสดง แต่ฉันคิดว่ามันจบลงเมื่อ 2.6 ออกมา
xenoterracide

ดูเหมือนว่านี่จะไม่ตอบคำถามจริงๆ หรือว่าฉันขาดอะไรไป? คำตอบพูดถึงเฉพาะเรื่องไฟล์สลับและไม่ได้กล่าวถึงพาร์ทิชันเลย @Gilles เป็นความตั้งใจนั้นหรือคุณเพิ่งพิมพ์ผิด?
เกบ

1
@gabe: ฉันกำลังพูดถึงการแลกเปลี่ยนไฟล์ในการเปรียบเทียบกับพาร์ทิชัน หวังว่านี่จะชัดเจนขึ้นแล้ว
Gilles 'SO- หยุดความชั่วร้าย'

1
ฉันชี้ที่นี่ความคิดเห็นของฉันในคำตอบ Penz fs การรับรู้การสูญเสียประสิทธิภาพที่เกิดจากการแลกเปลี่ยนไฟล์เป็น moot
ata

2
ตาม Ubuntu ชุมชนช่วยเหลือวิกิพีเดียhelp.ubuntu.com/community/SwapFaqพาร์ทิชัน swap เป็นสิ่งจำเป็นสำหรับการจำศีล อ้างอิง: "ไม่สามารถใช้ไฟล์สลับบนระบบไฟล์ที่ใช้งานอยู่" และเกี่ยวกับประสิทธิภาพดูเหมือนว่าจะไม่มีความแตกต่างนอกจากว่าไฟล์กระจัดกระจาย serverfault.com/questions/25653/…
Erik Sjölund

28

สามารถเลือกพาร์ติชัน swap ได้เนื่องจากจะหลีกเลี่ยงการพึ่งพาระบบไฟล์เมื่อสิ่งที่คุณต้องการคือพูลหน่วยความจำที่กำหนดแอดเดรสได้

แต่ไม่มีอะไรป้องกันคุณจากการใช้ไฟล์สลับแทนการสลับพาร์ติชันหรือนอกเหนือจากการแลกเปลี่ยนพาร์ติชัน

  • สร้างไฟล์:

    dd if=/dev/zero of=/extraswap bs=1M count=512
    
  • เริ่มต้นเนื้อหาของไฟล์:

    mkswap /extraswap
    
  • ใช้มัน:

    swapon /extraswap
    
  • ดูว่ามันทำงาน:

    free -m
    

เพื่อเริ่มใช้ swapfile ทุกครั้งที่บูตให้แก้ไข / etc / fstab และเพิ่ม

/extraswap           swap          swap    defaults    0 0

[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html


5
นามแฝงที่มีประโยชน์ที่ฉันใช้ตลอดไปเพื่อให้ฉันพิมพ์moreswapในเทอร์มินัลถ้าจู่ๆฉันต้องการพื้นที่สว็อปพิเศษ:alias moreswap='swapfile=`mktemp /tmp/swapXXXX` && sudo touch $swapfile && sudo dd bs=512 count=1M if=/dev/zero | tee $swapfile | pv -s 512M && sudo mkswap $swapfile && sudo swapon $swapfile'
Michael Mrozek

นี่เป็นข้อมูลที่ดี แต่ไม่ตอบคำถาม
lesmana

6
นอกจากนี้ค่าใช้จ่ายบิตในระบบไฟล์ไม่ถูกต้อง ตรงกันข้ามกับความเชื่อทั่วไปไม่มีค่าใช้จ่ายในการใช้ swapfiles แอนดรูมอร์ตันให้คำอธิบายง่ายๆที่นี่ นั่นเป็นหนึ่งในเหตุผลที่ใช้ตัวจัดการการแลกเปลี่ยนไฟล์แบบไดนามิกเช่นswapspace daemonเป็นทางออกที่ดีหากกำหนดค่าไว้อย่างดี
ata

มาเพิ่มที่วิธีการแลกเปลี่ยนไฟล์เป็นตัวเลือกเดียวของคุณเมื่อคุณทำงานในคลาวด์
sorin

1

บางทีเหตุผลหลักคือเคอร์เนลหลักหยุดการทำงานกับดิสก์ไม่ทำงานกับไฟล์สลับ ตัวอย่างเช่นคำแนะนำของวิกิพีเดีย Debianคือการติดตั้งuswsuspหากคุณต้องการสิ่งนี้

เมื่อเร็ว ๆ นี้ไฟล์สลับจะไม่ทำงานหากระบบไฟล์อยู่btrfsดังนั้นจึงเป็นการง่ายที่สุดสำหรับการแจกแจงเพื่อสร้าง swap เป็นพาร์ติชันเสมอ

มีการกล่าวถึงอย่างคลุมเครือว่าการใช้ไฟล์สำหรับการแลกเปลี่ยนมีประสิทธิภาพต่ำกว่าพาร์ติชันก่อนหน้าเคอร์เนลเวอร์ชัน 2.6 https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15


1

เพื่อความสมบูรณ์ฉันจะเพิ่มคำตอบของฉันเอง:

ตามที่กล่าวโดย @Gilles ไฟล์ swap ไม่สามารถใช้สำหรับการจำศีล เมื่อใช้ไฟล์ swap ระบบจะต้องค้นหาส่วนหัวของไฟล์ swap แต่ในการทำเช่นนี้ระบบไฟล์ที่มีไฟล์ swap จะต้องติดตั้งและระบบไฟล์ที่ถูกเจอร์นัล - เช่น ext3, ext4 และโดยทั่วไประบบไฟล์ทั้งหมดที่ใช้โดย Linux - ไม่สามารถเมานต์ระหว่างดำเนินการต่อจากดิสก์ (ในความเป็นจริงมีวิธีการทำเช่นนั้น แต่ค่อนข้างยุ่งยาก)

ที่มา: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt


0

ฉันคิดว่าส่วนใหญ่เป็นเพราะเวลาในการเข้าถึงข้อมูลที่อยู่ในพาร์ติชันลดลง จุดประสงค์ของไฟล์ swap นั้นช่วยให้ผู้ดูแลระบบ sys ทำงานเมื่อเขาไม่ได้ใช้ RAM จริงๆและจำเป็นต้องมีการใช้งานจำนวนมากซึ่งอาจจะทำให้ระบบของเขาพัง ในกรณีนี้เขาจะสร้างไฟล์สลับเป็นระยะเมื่อต้องการ

แต่อย่างไรก็ตามคุณสามารถมีได้ทั้งคู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.