Disk Defragment ของเก่าจากอดีต ทำไมปัจจุบันเราไม่ต้องใช้แล้ว

หลายวันก่อน นอน ๆ อยู่ก็นึกถึงการใช้เครื่องคอมพิวเตอร์สมัยก่อนขึ้นมา หนึ่งในสิ่งที่คนบอกว่าเป็นวิธีการทำให้เครื่องคอมพิวเตอร์เร็วขึ้นคือการทำ Disk Defragment มันทำให้เครื่องเร็วขึ้นอย่างที่เขาว่าจริงมั้ย แล้วทำไมปัจจุบันมันมีเทคโนโลยีอะไรเข้ามาช่วย ทำให้เราถึงไม่ต้องทำแล้ว

Disk Defragment คืออะไร ?

Disk Defragment เป็นกระบวนการที่เครื่องคอมพิวเตอร์จะย้ายข้อมูลที่กระจัดกระจายอยู่ในอุปกรณ์จัดเก็บข้อมูลของเราให้ไปวางอยู่ในที่ใกล้ ๆ กันอย่างเป็นระเบียบ

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

ดังนั้นเวลา Hard Disk มันจะหาข้อมูล หรือ เขียนข้อมูลลงไปสักที่หนึ่ง มันจะต้องวิ่งหาซะก่อน เมื่อเจอถึงจะเริ่มอ่านขึ้นมาได้ เวลาที่มันใช้หานั้น ภาษาคอมพิวเตอร์เราเรียก Seek Time ซึ่งเรากำลังคุยกันในหลัก 100 ms หรือมากกว่านั้นได้เลยละ แต่ความโชคร้ายที่บางครั้ง ไฟล์ที่ต้องการมันอาจจะโดนบันทึกอยู่ในหลาย ๆ บริเวณของจานแม่เหล็กก็ได้ ทำให้แค่เราจะเรียก 1 ไฟล์ เราอาจจะต้องมีการ Seek หรือหมุนหามากกว่าหนึ่งครั้ง ทำให้ใช้เวลานานมากกว่าจะโหลดอะไรขึ้นมาได้

การทำ Disk Defragment มันคือ การย้ายส่วนต่าง ๆ ของแต่ละไฟล์ที่มันอาจจะอยู่กระจัดกระจายกันเข้ามาไว้ในพื้นที่ต่อ ๆ กัน หรืออยู่ในพื้นที่ใกล้เคียงกัน ทำให้เวลาระบบเรียกไฟล์นั้น แทนที่มันจะต้องไปไล่หาเยอะ ๆ นาน ๆ มันก็จะเร็วขึ้นหน่อย คือมันไม่ได้เพิ่มความเร็วในการอ่านเขียนแต่อย่างใด แต่มันเข้าไปลด Seek Time จึงทำให้มันตอบสนองได้เร็วขึ้นนั่นเอง คนเลยบอกว่า มันทำให้เครื่องเร็วขึ้น แต่จริง ๆ แล้วมันคือ การทำให้การตอบสนองทำได้ดีขึ้นมากกว่า

ทำไมเราจึงไม่ต้องทำ Disk Defragment กันแล้ว ?

สำหรับคำถามนี้ เราว่าหลาย ๆ คนน่าจะพอเดาคำตอบได้แล้วละ เราแบ่งออกเป็น 2 เหตุผลใหญ่ ๆ

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

เหตุผลที่สองคือ ปัจจุบันเรามีวิธีการเขียนข้อมูลลงไปใน HDD โดยลดโอกาสการเกิด Fragment กระจัดกระจายอยู่ใน HDD ให้ได้มากที่สุด ซึ่งถูกนำไป Implement บน File System สมัยใหม่อย่าง NTFS และอื่น ๆ อีกมากมาย

แต่ถามว่า เรายังสามารถทำได้อยู่มั้ย จริง ๆ ได้ เช่นใน Windows Disk Defragment Tool ก็ยังมีอยู่ เราสามารถเข้าไปทำได้ แต่มันจำเป็นแบบสมัยก่อนมั้ย เราก็มองว่า ไม่แล้วละ ไม่ทำก็ไม่เป็นไร ทำก็... อาจจะเร็วขึ้นหน่อยเดียว

File System สมัยใหม่แก้ปัญหาอย่างไร

สำหรับการแก้ปัญหา Fragmentation บน HDD มีการนำหลากหลายวิธีเข้ามาแก้ไขด้วยกัน วันนี้เราจะยกมา 2 วิธีที่คิดว่า เข้าใจง่ายที่สุด และเป็นวิธีที่เราเจอกันในชีวิตประจำวัน

วิธีที่ 1 เรียกว่า Extends วิธีนี้เรียบง่ายมากคือ แทนที่จะเขียนลงไปบนพื้นที่แล้วไม่พอ ทำให้ต้องแตกเป็น Fragment วิธีการนี้บอกว่า เราจะหาพื้นที่ว่างขนาดพอดีกับไฟล์ที่ต้องการเขียนก่อน แล้วค่อยเขียนลงไปตรงนั้น ทำให้มันไม่เกิด Fragment ขึ้นมา วิธีการนี้ถูกนำไป Implement บน File System หลายตัว เช่นที่เราใช้กันใน Windows มานานอย่าง NTFS

และวิธีที่ 2 เรียกว่า Delayed Allocation ตอนอ่านเจอในหนังสือวิชา OS ครั้งแรกคือ ว๊อท ได้เหรอวะ คือ ก่อนที่เราจะเขียนไฟล์ลงไปใน HDD จริง ๆ มันจะทำการ Cache File ทั้งหมดลงไปบน Memory ก่อน เมื่อมันใกล้จะเต็ม มันจะไปสั่ง Allocate หรือเกลี่ยพื้นที่ว่างบน HDD แล้วค่อยเขียน File ที่อยู่บน Memory เรียงลงไปอย่างสวยงาม วิธีนี้เท่าที่เราอ่านมา ใช้ใน Linux File System อย่าง ext4 และอันที่ตกใจมากคือ APFS ของ Apple

การทำ Disk Defragmentation ส่งผลเสียกับ SSD

มีหลายคนที่เชื่อกันว่า การทำ Disk Defragmentation ทำให้เครื่องเร็วขึ้นในทุก ๆ กรณี เลยมีความพยายามแปลก ๆ ที่จะเอาไปทำกับ SSD ซึ่งเราบอกก่อนเลยว่า มันทำให้ SSD เราพังเร็วกว่าเดิมมาก ๆ

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

แต่กลับกัน SSD เขามีวิธีการบางอย่างเช่นกันที่ทำให้ ยืดอายุการใช้งานของมันไปได้ เรียกว่า TRIM สั้น ๆ คือมันจะพยายามกระจาย Cell สำหรับเก้บข้อมูล เพื่อไม่ให้ตัวใดตัวหนึ่งถูกเขียนมากเกินไป ทำให้ความเลื่อมโดยเฉลี่ยของแต่ละส่วนจะมีความใกล้เคียงกันนั่นเอง

สรุป

ด้วยการเปลี่ยนวิธีการอ่านเขียนข้อมูลบน File System สมัยใหม่ ทำให้การ Defragmentation ค่อย ๆ หายไป กลายเป็นเรื่องที่คนโบราณมักจะพูดกัน (ชิท ! กรูนิ) เพราะ วิธีการที่ทำให้ลดโอกาสเกิด Fragment ได้ถูกนำมาใช้เป็นค่าเริ่มต้นกันไปแล้ว ประกอบกับระดับ Consumer ก็ค่อย ๆ ลดการใช้งาน HDD ด้วยเช่นกัน

นอกจากนั้น จริง ๆ ใน File System สมัยใหม่นั้นยังมีอีกหลาย Feature ที่น่าสนใจมาก ๆ เช่นใน APFS เวลาเราคัดลอกไฟล์ จริง ๆ แล้วมันไม่ได้เขียนข้อมูลนั้นลงไปจริง ๆ แต่มันแยกเป็นเงาออกมา แล้วเก็บเฉพาะส่วนที่ต่างเฉย ๆ อะไรพวกนั้น ไว้วันหลังเราจะมาเล่าให้อ่าน ส่วนถ้าใครอยากเรียนรู้เรื่องพวกนี้เพิ่มเติม ลองไปหาอ่านในหนังสือวิชา OS ได้ มีเรื่องสนุก ๆ เยอะมาก