Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

สิ่งที่คุณต้องรู้เกี่ยวกับ Swap Partition บน Linux

สิ่งที่คุณต้องรู้เกี่ยวกับ Swap Partition บน Linux

เมื่อคุณติดตั้ง Linux ขั้นตอนการตั้งค่าจะเพิ่มพาร์ติชั่นสว็อปลงในฮาร์ดดิสก์พร้อมกับพาร์ติชั่นสำหรับลินุกซ์เอง แต่พาร์ติชั่นสว็อปนี้ใช้ทำอะไรและจำเป็นจริง ๆ เหรอ?

สวอปคืออะไร

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

พื้นที่สว็อปจำเป็นจริงหรือ

พื้นที่สว็อปมีความจำเป็นทางเทคนิคหรือไม่? ไม่ Linux สามารถทำงานได้โดยปราศจากมัน และในบางสถานการณ์ เช่น โซลูชันแบบฝัง Linux สามารถทำงานได้โดยไม่ต้องสลับ หากระบบปฏิบัติการอยู่ในสถานการณ์ที่มีหน่วยความจำไม่เพียงพอ ระบบปฏิบัติการจะตื่นตระหนกและหยุดทำงาน หากมี RAM เพียงพอ เครื่องจะทำงานโดยไม่มีปัญหา

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

สิ่งที่คุณต้องรู้เกี่ยวกับ Swap Partition บน Linux

สำหรับเครื่องที่มี RAM จริงไม่เพียงพอสำหรับทุกสิ่งที่จะอยู่ในหน่วยความจำ การใช้พื้นที่สว็อปเป็นสิ่งสำคัญ!

เพื่อความสมบูรณ์ ควรกล่าวไว้ว่า Linux ยังมีระบบย่อยที่เรียกว่า Out-Of-Memory Killer (OOM) ซึ่งแทนที่จะหยุดเคอร์เนลเมื่อหน่วยความจำหมด จะเป็นการเริ่มฆ่ากระบวนการต่างๆ เพื่อให้ทรัพยากรว่าง สามารถกำหนดค่าการกระทำได้

ฉันควรจัดสรรพื้นที่สว็อปเท่าไหร่

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

การเพิ่มการสลับโดยไม่ขยายพาร์ติชั่นการสลับ

มีสองวิธีในการเพิ่มพื้นที่สว็อปให้กับระบบโดยไม่ต้องเปลี่ยนพาร์ติชั่นสว็อปที่มีอยู่ วิธีหนึ่งคือการใช้พาร์ติชั่นสว็อปบนไดรฟ์อื่น อีกวิธีหนึ่งคือการใช้ไฟล์สว็อป

หากต้องการใช้ฮาร์ดไดรฟ์อื่น ให้สร้างพาร์ติชั่นประเภท “Linux swap” (รหัส 82) จากนั้นเรียกใช้ “mkswap ” เพื่อเตรียมพื้นที่สว็อป:

mkswap /dev/sdb2

โดยที่ /dev/sdb2 คือชื่อพาร์ติชั่นที่คุณสร้าง หากต้องการใช้พื้นที่สว็อปทันที ให้ใช้ “swapon ” คำสั่ง:

swapon /dev/sdb2

ใช้ “swapon -s ” เพื่อรับรายการสวอปสเปซที่ใช้อยู่ในปัจจุบัน หากต้องการเพิ่มพื้นที่สว็อปในระบบอย่างถาวร คุณจะต้องแก้ไข /etc/fstab ไฟล์และเพิ่มบรรทัดที่คล้ายกันนี้:

/dev/sdb2       none    swap    sw      0       0

หากระบบของคุณใช้ตัวระบุเฉพาะในการตั้งชื่อดิสก์ ให้ใช้ blkid คำสั่งรับรายการไอดีของอุปกรณ์ บรรทัดสำหรับติดตั้งพื้นที่สว็อปใน /etc/fstab ก็จะมีลักษณะดังนี้:

UUID=036da155-1ea1-4392-b8d4-700f65aa1ead  none  swap  sw  0  0

หากต้องการใช้ไฟล์เพื่อสลับ ให้สร้างไฟล์เปล่าขนาดใหญ่ (โดยใช้ dd ) บนระบบไฟล์ที่คุณต้องการใช้สำหรับสลับ ตัวอย่างเช่น หากต้องการสร้างไฟล์ขนาด 1GB ให้พิมพ์:

dd if=/dev/zero of=/store/swapfile bs=1024 count=1048576

โดยที่ /store/swapfile คือพาธไปยังไฟล์สลับบนระบบไฟล์ที่ต้องการ

เช่นเดียวกับพาร์ติชั่นสว็อปเพิ่มเติม ตอนนี้ไฟล์จะต้องเตรียมด้วย mkswap แล้วใช้กับ swapon . ต้องเพิ่มลงใน /etc/fstab . ด้วย ไฟล์. ขั้นตอนเหมือนกันทุกประการกับด้านบน แต่คุณต้องใช้ /store/swapfile แทนที่จะเป็น /dev/sdb2 เป็นพารามิเตอร์สว็อปสเปซ

การแลกเปลี่ยน

เคอร์เนลลินุกซ์สามารถปรับเปลี่ยนได้เพื่อกำหนดว่าควรพยายามสลับกระบวนการออกจากหน่วยความจำมากน้อยเพียงใด แนวโน้มนี้ถูกควบคุมโดยตัวแปรเคอร์เนลที่เรียกว่า swappiness . swappiness ของ 0 หมายความว่าเคอร์เนลจะหลีกเลี่ยงการสลับให้มากที่สุด ในขณะที่ 100 หมายความว่าเคอร์เนลจะก้าวร้าวในการใช้พื้นที่สว็อป ค่าติดตั้งเริ่มต้นสำหรับลีนุกซ์รุ่นต่างๆ คือ 60 คุณสามารถเปลี่ยนตัวเลขแบบไดนามิกได้โดยใช้คำสั่งนี้:

sudo sysctl vm.swappiness=10

หากต้องการตั้งค่าอย่างถาวร คุณต้องเปลี่ยน (หรือเพิ่มหากไม่มีอยู่) vm.swappiness ตัวแปรใน /etc/sysctl.conf ไฟล์.

แจ้งให้เราทราบหากคุณมีคำถามเกี่ยวกับการแลกเปลี่ยนใน Linux

บทความนี้เผยแพร่ครั้งแรกในเดือนธันวาคม 2013 และได้รับการอัปเดตในเดือนสิงหาคม 2020