โฮมเพจ » ทำอย่างไร » Ubuntu ไม่ใช่ TRIM SSDs โดยค่าเริ่มต้นทำไมไม่และวิธีการเปิดใช้งานด้วยตัวคุณเอง

    Ubuntu ไม่ใช่ TRIM SSDs โดยค่าเริ่มต้นทำไมไม่และวิธีการเปิดใช้งานด้วยตัวคุณเอง

    Ubuntu ต้องการเปิดใช้งาน TRIM สำหรับ SSD ตามค่าเริ่มต้นใน Ubuntu 14.04 กล่าวอีกอย่างคืออูบุนตูยังไม่ได้ใช้ TRIM ดังนั้น SSD ของคุณจึงช้าลงตามกาลเวลา แต่ทำไม Ubuntu ถึงไม่ใช้ TRIM?

    ข่าวนี้น่าประหลาดใจสำหรับหลาย ๆ คนที่คิดว่า Ubuntu และลีนุกซ์รุ่นอื่น ๆ ใช้ TRIM อยู่แล้ว TRIM ป้องกัน SSD จากการชะลอตัวเมื่อเวลาผ่านไปและเป็นส่วนที่จำเป็นของการบำรุงรักษา SSD.

    ทำไม TRIM จึงสำคัญ

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

    โซลิดสเตทไดรฟ์ (SSD) ทำงานแตกต่างกัน เมื่อใดก็ตามที่คุณเขียนไฟล์ไปยัง SSD คอมพิวเตอร์จะต้องลบข้อมูลใด ๆ ในภาคที่กำลังเขียนข้อมูลไปก่อน ไม่เพียงแค่ "เขียนทับ" ส่วนต่าง ๆ ในการดำเนินการเดียว - ก่อนอื่นคุณต้องล้างข้อมูลเหล่านั้นแล้วเขียนไปยังส่วนที่ว่างเปล่า.

    ซึ่งหมายความว่า SSD จะช้าลงเมื่อเวลาผ่านไป การเขียนไปยังภาคส่วนของ SSD จะรวดเร็วในครั้งแรก หลังจากคุณลบไฟล์บางไฟล์แล้วลองเขียนมันอีกครั้งมันจะใช้เวลานานกว่า นี่เป็นส่วนใหญ่ของเหตุผลที่ Nexus 7 ดั้งเดิมของ Google ชะลอตัวลงมากเมื่อเวลาผ่านไป Google แก้ไขสิ่งนี้โดยใช้ TRIM ใน Android 4.3 (Android ยังใช้เคอร์เนล Linux ด้วย)

    เมื่อเปิดใช้งาน TRIM ระบบปฏิบัติการจะแจ้ง SSD ทุกครั้งที่ลบไฟล์ ไดรฟ์สามารถลบเซ็กเตอร์ที่มีเนื้อหาของไฟล์ดังนั้นการเขียนไปยังเซกเตอร์จะเป็นไปอย่างรวดเร็วในอนาคต.

    กล่าวอีกนัยหนึ่งถ้าคุณไม่ใช้ TRIM SSD ของคุณจะช้าลงเมื่อเวลาผ่านไป นั่นเป็นเหตุผลที่ระบบปฏิบัติการสมัยใหม่รวมถึง Windows 7+, Mac OS X 10.6.8+ และ Android 4.3+ ใช้ TRIM TRIM ถูกนำมาใช้ใน Linux ในเดือนธันวาคม 2008 แต่ Ubuntu ไม่ได้ใช้งานเป็นค่าเริ่มต้น.

    ทำไมจึงไม่ Ubuntu TRIM โดยค่าเริ่มต้น?

    เหตุผลที่แท้จริง Ubuntu ไม่ใช่ TRIM SSDs โดยค่าเริ่มต้นเนื่องจากการใช้งาน TRIM ของเคอร์เนลของ Linux ช้าและทำให้ประสิทธิภาพในการใช้งานปกติไม่ดี.

    บน Windows 7 และ 8 Windows จะส่งคำสั่ง TRIM ทุกครั้งที่ลบไฟล์โดยบอกให้ไดรฟ์ลบบิตของไฟล์ทันที Linux รองรับสิ่งนี้เมื่อติดตั้งระบบไฟล์ด้วยตัวเลือก "ทิ้ง" อย่างไรก็ตาม Ubuntu และการกระจายอื่น ๆ - อย่าทำสิ่งนี้โดยค่าเริ่มต้นด้วยเหตุผลด้านประสิทธิภาพ.

    วิกิของ OpenSUSE มีข้อมูลโดยละเอียดจากนักพัฒนาที่คุ้นเคยกับเคอร์เนลลินุกซ์มากกว่าที่เราเป็น มันค่อนข้างเก่า แต่ก็ยังคงเป็นจริงเมื่อพูดถึงการแสดง:

    “ การปรับใช้เคอร์เนลของการตัดแบบเรียลไทม์ใน 11.2, 11.3 และ 11.4 นั้นไม่ได้รับการปรับปรุง สเป็ค เรียกใช้สำหรับการตัดแต่งที่สนับสนุนรายการ vectorized ของช่วงการตัดแต่ง แต่ในขณะที่เคอร์เนล 3.0 การตัดแต่งถูกเรียกใช้โดยเคอร์เนลที่มีช่วงการละทิ้ง / การตัดเดี่ยวและด้วยช่วงกลางปี ​​2554 SSD นี้ได้พิสูจน์แล้วว่า มีเหตุผลบางอย่างที่จะใช้การสนับสนุนเรียลไทม์ยกเลิกเมล็ดด้วยเมล็ด 3.1 ก่อน ไม่ทราบว่าเมื่อใดที่ฟังก์ชั่นการทิ้งเมล็ดจะได้รับการปรับให้ทำงานอย่างเป็นประโยชน์กับ SSD รุ่นปัจจุบัน” [แหล่งที่มา]

    กล่าวอีกนัยหนึ่งเคอร์เนล Linux จัดการคำสั่ง TRIM แบบเรียลไทม์ดังกล่าวในวิธีที่ช้าและไม่ได้เพิ่มประสิทธิภาพ การเปิดใช้งาน TRIM คล้ายกับวิธีที่ Windows ใช้ - นั่นคือการใช้ตัวเลือก "ทิ้ง" - ส่งผลให้ระบบช้าลงจริง ๆ ถ้าไม่ได้ใช้ TRIM เลย Ubuntu และ Linux รุ่นอื่น ๆ ไม่ได้เปิดใช้งาน "ทิ้ง" โดยค่าเริ่มต้นสำหรับระบบไฟล์ของคุณและคุณไม่ควรทำเช่นนั้น.

    มีวิธีอื่น

    เนื่องจากการดำเนินการ TRIM แบบเรียลไทม์ "ยกเลิก" ของเคอร์เนล Linux ทำงานได้ไม่ดีการกระจาย Linux ส่วนใหญ่ - รวมถึง Ubuntu - ห้ามใช้ TRIM โดยอัตโนมัติ Android ยังไม่ได้ใช้ TRIM จนกว่า Android 4.3.

    แต่มีวิธีการใช้ TRIM อีกวิธีหนึ่ง แทนที่จะใช้คำสั่ง TRIM ในแต่ละครั้งที่ไฟล์ถูกลบคุณลักษณะ FITRIM สามารถใช้ได้ สิ่งนี้เกิดขึ้นผ่านคำสั่ง fstrim โดยพื้นฐานแล้วคำสั่ง fstrim จะวิเคราะห์ระบบไฟล์และแจ้งให้ทราบถึงไดรฟ์ที่ไม่จำเป็นต้องใช้บล็อกอีกต่อไปดังนั้นไดรฟ์สามารถยกเลิกได้ สิ่งนี้เปลี่ยน TRIM จากการดำเนินการตามเวลาจริงเป็นงานที่กำหนดเวลาไว้ กล่าวอีกนัยหนึ่ง fstrim สามารถทำงาน TRIM เป็นงาน cron ได้ ไม่มีเหตุผลที่จะไม่ทำเช่นนี้ มันจะไม่ทำให้อะไรช้าลง มันเป็นเพียงภารกิจการทำความสะอาดอื่นที่ระบบต้องดำเนินการตามกำหนดเวลา.

    อันที่จริงนี่เป็นวิธีการที่ Google ใช้กับ Android 4.3 Android รันงาน fstrim เป็นครั้งคราวเพื่อตัดระบบไฟล์แก้ไขปัญหาที่ชะลอตัว Nexus 7 รุ่นเดิมทั้งหมด.

    Ubuntu ยังมองหาการเปิดใช้งาน TRIM โดยอัตโนมัติด้วยการให้ระบบรัน fstrim อย่างสม่ำเสมอ หวังว่านี่จะเป็นส่วนหนึ่งของ Ubuntu 14.04 ดังนั้นผู้ใช้ Ubuntu จะไม่ถูกบังคับให้จัดการกับการเสื่อมประสิทธิภาพของ SSD หรือรัน fstrim ด้วยตนเอง.

    วิธีเปิดใช้งาน TRIM

    เราไม่แนะนำให้ติดตั้งระบบไฟล์ของคุณด้วยการดำเนินการ "ทิ้ง" เนื่องจากอาจทำให้ประสิทธิภาพในการใช้งานปกติช้าลง อย่างไรก็ตามคุณสามารถใช้ TRIM ได้ด้วยการเรียกใช้คำสั่ง fstrim หรือสร้าง cronjob ของคุณเองที่รัน fstrim ตามกำหนดเวลา.

    ในการตัด SSD ของคุณบน Ubuntu เพียงแค่เปิดเทอร์มินัลแล้วเรียกใช้คำสั่งต่อไปนี้:

    sudo fstrim -v /

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

    หากคุณต้องการเรียกใช้ TRIM เป็นประจำคุณสามารถสร้าง cronjob ที่รันคำสั่ง fstrim สำหรับคุณ ต่อไปนี้เป็นวิธีสร้างงาน cron เปล่าที่จะทำสิ่งนี้โดยอัตโนมัติ.

    ก่อนอื่นให้เรียกใช้คำสั่งต่อไปนี้เพื่อเปิดตัวแก้ไขข้อความนาโนที่มีสิทธิ์ใช้งานรูท:

    sudo nano /etc/cron.daily/fstrim

    พิมพ์รหัสต่อไปนี้ลงในไฟล์:

    #! / bin / ดวลจุดโทษ

    fstrim /

    บันทึกไฟล์โดยกด Ctrl + O แล้วกด Enter เพื่อยืนยัน กด Ctrl + X เพื่อปิด nano หลังจากบันทึกไฟล์.

    สุดท้ายให้เรียกใช้คำสั่งต่อไปนี้เพื่อให้สคริปต์ทำงานได้:

    sudo chmod + x /etc/cron.daily/fstrim

    ตอนนี้ Ubuntu จะเรียกใช้ fstrim ตามกำหนดเวลาเช่นเดียวกับการทำงานบำรุงรักษาระบบอื่น ๆ.


    โปรดทราบว่า TRIM ได้รับการสนับสนุนเฉพาะกับระบบไฟล์ที่ทันสมัยดังนั้นคุณต้องมีสิ่งที่ต้องการ ext4 และไม่ใช่ ext3 หรือ ext2 หากคุณไม่ทราบว่าระบบไฟล์ใดที่คุณใช้อยู่ไม่ต้องกังวล ext4 จะถูกเลือกตามค่าเริ่มต้น.

    คำแนะนำนี้ส่วนใหญ่ยังใช้กับการกระจาย Linux อื่น ๆ ในขณะที่ Linux ใช้การสนับสนุน TRIM ในเคอร์เนลนานมาแล้วการรองรับ TRIM ดูเหมือนจะไม่เคยเปิดใช้งานโดยค่าเริ่มต้นสำหรับผู้ใช้ทั่วไปในการแจกแจง Linux.

    เครดิตรูปภาพ: Mace Ojala on Flickr (เกรียน)