Hardware
น้องๆ หลายคนอาจจะคุ้นเคยกับการ Defragment Hard Disk Drive (HDD) กันดีใช่มั้ย? สมัยผมทำร้านเน็ตเมื่อ 20 กว่าปีก่อนเนี่ย ต้อง Defrag HDD กันแทบทุกอาทิตย์ ไม่งั้นเครื่องอืดเป็นเรือเกลือ แต่พอมาเป็นยุค SSD (Solid State Drive) เรื่องมันเปลี่ยนไปเยอะเลย
คำถามคือ Defragment SSD ทำได้ไหม? ตอบคือ "ทำได้" แต่คำถามที่สำคัญกว่าคือ "ควรทำรึเปล่า?" นี่แหละ
ลองนึกภาพว่าข้อมูลใน HDD เหมือนหนังสือที่เราวางกระจัดกระจายไปทั่วห้องสมุด เวลาคอมพิวเตอร์ต้องการอ่านข้อมูล มันก็ต้องวิ่งวุ่นไปหาแต่ละหน้า ทำให้เสียเวลา Defragment ก็เหมือนการจัดหนังสือให้เข้าที่เข้าทาง ทำให้คอมพิวเตอร์อ่านข้อมูลได้เร็วขึ้นนั่นเอง
สมัย HDD ข้อมูลจะถูกเขียนลงบนจานหมุนเป็น Sector ต่างๆ ถ้าไฟล์ถูกเขียนแบบไม่ต่อเนื่อง (Fragmented) หัวอ่านก็ต้องกระโดดไปมา ทำให้ช้าลง การ Defragment จะช่วยจัดเรียงไฟล์ให้ต่อเนื่องกัน เพื่อให้หัวอ่านอ่านข้อมูลได้รวดเดียวจบ
SSD ไม่ได้ใช้จานหมุนแบบ HDD แต่ใช้ Flash Memory ในการเก็บข้อมูล ซึ่งการอ่านเขียนข้อมูลบน Flash Memory เนี่ย มันเร็วกว่า HDD มากๆ แถมยังไม่ต้องเสียเวลา "กระโดด" ไปหาข้อมูลเหมือน HDD อีกด้วย
ที่สำคัญคือ SSD มีจำนวนรอบในการเขียนข้อมูลที่จำกัด (Write Cycle) การ Defragment จะทำให้ SSD ต้องเขียนข้อมูลใหม่ซ้ำๆ ซึ่งจะทำให้ SSD เสื่อมสภาพเร็วกว่าที่ควรจะเป็น
ถึงแม้ว่าการ Defragment SSD อาจจะช่วยเพิ่มความเร็วในการอ่านเขียนข้อมูลได้บ้าง (นิดหน่อยจริงๆ) แต่ผลเสียที่ตามมามันไม่คุ้มค่ากันเลย
ผลดี:
ผลเสีย:
| คุณสมบัติ | HDD | SSD |
|---|---|---|
| หลักการทำงาน | จานหมุนและหัวอ่าน | Flash Memory |
| ความเร็ว | ช้ากว่า | เร็วกว่า |
| ผลกระทบจากการ Fragment | มาก | น้อยมาก |
| Defragment: จำเป็นหรือไม่ | จำเป็น | ไม่จำเป็น (และไม่แนะนำ) |
| อายุการใช้งาน | ไม่ค่อยมีผล | ลดลง |
ถ้าใครยังอยากลอง Defragment SSD ดู (ทั้งๆ ที่ผมไม่แนะนำนะ) ก็สามารถทำได้ง่ายๆ โดยใช้เครื่องมือที่มาพร้อมกับ Windows
คำเตือน: อย่างที่บอกไปว่าการ Defragment SSD ไม่ได้ช่วยอะไรมาก แถมยังทำให้ SSD เสื่อมสภาพเร็วขึ้นด้วย เพราะฉะนั้นคิดให้ดีก่อนทำนะน้องๆ
แทนที่จะ Defragment SSD สิ่งที่ควรทำมากกว่าคือการเปิดใช้งาน TRIM Function TRIM เป็นฟังก์ชันที่ช่วยให้ SSD จัดการกับ Block ของข้อมูลที่ไม่ใช้งานแล้วได้อย่างมีประสิทธิภาพ ช่วยให้ SSD ทำงานได้เร็วขึ้นและมีอายุการใช้งานยาวนานขึ้น
โดยปกติแล้ว TRIM จะถูกเปิดใช้งานโดยอัตโนมัติบน Windows รุ่นใหม่ๆ แต่ถ้าอยากเช็คให้ชัวร์ ก็สามารถทำได้โดยใช้ Command Prompt
fsutil behavior query DisableDeleteNotify
ถ้าผลลัพธ์คือ "DisableDeleteNotify = 0" แสดงว่า TRIM ถูกเปิดใช้งานอยู่แล้ว แต่ถ้าเป็น "DisableDeleteNotify = 1" แสดงว่า TRIM ถูกปิดใช้งาน ให้เปิดใช้งานโดยใช้คำสั่ง:
fsutil behavior set DisableDeleteNotify 0
หลังจากเปิดใช้งาน TRIM แล้ว ไม่ต้องทำอะไรเพิ่ม Windows จะจัดการให้เอง
จากประสบการณ์ที่คลุกคลีกับคอมพิวเตอร์มา 20 กว่าปี ผมขอยืนยันอีกครั้งว่าการ Defragment SSD ไม่คุ้มค่าที่จะทำ เพราะแทบไม่เห็นผลเรื่องความเร็ว แถมยังทำให้ SSD เสื่อมสภาพเร็วขึ้นอีกด้วย
สิ่งที่ควรทำมากกว่าคือการดูแล SSD ให้ดี เช่น
ถ้าอยากรู้เรื่องคอมพิวเตอร์และ IT เพิ่มเติม แวะมาอ่านบทความอื่นๆ ได้ที่ SiamCafe Blog นะครับ
Q: โปรแกรม Defragment อัตโนมัติของ Windows จะ Defragment SSD เองไหม?
A: Windows ฉลาดพอที่จะรู้ว่า Drive ไหนเป็น SSD และจะไม่ทำการ Defragment ให้อย่างแน่นอน แต่จะทำการ "Optimize" แทน ซึ่งเป็นการทำงานแบบ TRIM
Q: มีโปรแกรม Defragment Third-Party ที่บอกว่า Defragment SSD ได้ดีกว่า จริงไหม?
A: ส่วนใหญ่แล้วเป็นเรื่องหลอกลวง อย่าไปเชื่อมาก โปรแกรมเหล่านี้อาจจะทำให้ SSD เสื่อมสภาพเร็วกว่าเดิมด้วยซ้ำ
Q: แล้วถ้า SSD เริ่มช้า ควรทำยังไง?
A: ลองเช็คดูว่า TRIM ทำงานปกติไหม, มีพื้นที่ว่างใน SSD เพียงพอหรือไม่, และ Firmware ของ SSD เป็นเวอร์ชั่นล่าสุดหรือไม่ ถ้าทำทุกอย่างแล้วยังช้าอยู่ อาจจะต้องพิจารณาเปลี่ยน SSD ใหม่แล้วล่ะครับ
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะครับ ถ้ามีคำถามอะไรเพิ่มเติม ถามมาได้เลย ยินดีตอบเสมอ และอย่าลืมแวะไปอ่านบทความอื่นๆ ที่ SiamCafe Blog ด้วยนะครับ
ดูวิดีโอเพิ่มเติมเกี่ยวกับDefragment SSD ทำได้ไหม ควรทำห:
สมัยผมทำร้านเน็ต Over-provisioning นี่แทบจะเป็นคัมภีร์เลยน้อง! มันคือการกันพื้นที่ SSD ส่วนหนึ่งไว้ให้ controller เอาไปใช้จัดการข้อมูล ทำ garbage collection หรือ wear leveling พูดง่ายๆ คือเหมือนเรามี buffer ให้ SSD หายใจคล่องขึ้น ไม่ต้องเค้นประสิทธิภาพจนเกินไป
SSD ส่วนใหญ่จะมี OP มาให้จากโรงงานอยู่แล้ว แต่เราสามารถเพิ่มเองได้ในระดับ OS (แต่ยุ่งยากหน่อย) หรือใช้ utility ของผู้ผลิต SSD เองก็ได้ ถ้า SSD ลูกไหนใช้งานหนักๆ พื้นที่เหลือน้อย ผมแนะนำให้เพิ่ม OP ไปเลย ช่วยยืดอายุการใช้งานได้เยอะ
Wear leveling คือกลไกที่ SSD พยายามกระจายการเขียนข้อมูลไปทั่วทุก cell อย่างสม่ำเสมอ เพื่อป้องกันไม่ให้ cell ไหน cell หนึ่งตายก่อนเพื่อน (เพราะ cell SSD มีจำนวนครั้งในการเขียนที่จำกัด) Algorithm นี้ซับซ้อนมาก ขึ้นอยู่กับผู้ผลิตแต่ละราย แต่ใจความสำคัญคือ พยายามเขียนข้อมูลใหม่ลงใน cell ที่ว่างอยู่ หรือ cell ที่มีการใช้งานน้อยที่สุด
สมัยก่อนตอน SSD เพิ่งออกมาใหม่ๆ Algorithm พวกนี้ยังไม่ฉลาดเท่าไหร่ ทำให้บางทีเขียนวนๆ อยู่แค่บางพื้นที่ แต่เดี๋ยวนี้พัฒนาไปเยอะแล้ว แต่ก็ยังควรระวังการใช้งานหนักๆ ต่อเนื่องนานๆ อยู่ดี
TRIM command นี่เป็นพระเอกขี่ม้าขาวเลยน้อง! เวลาเราลบไฟล์ในระบบปฏิบัติการ (OS) ปกติ OS จะแค่บอกว่า "พื้นที่ตรงนี้ว่างแล้วนะ" แต่ไม่ได้ไปล้างข้อมูลจริงๆ ใน SSD TRIM command จะสั่งให้ SSD ล้างข้อมูลใน cell นั้นจริงๆ ทำให้ SSD สามารถเขียนข้อมูลใหม่ลงไปได้ทันที โดยไม่ต้องเสียเวลาลบก่อน
ถ้าไม่มี TRIM command SSD จะทำงานช้าลงเรื่อยๆ เพราะต้องเสียเวลาลบข้อมูลเก่าก่อนเขียนข้อมูลใหม่เสมอ TRIM command จะทำงานอัตโนมัติใน OS รุ่นใหม่ๆ (เช่น Windows 7 ขึ้นไป, macOS, Linux) แต่ก็ควรตรวจสอบให้แน่ใจว่าเปิดใช้งานอยู่ และ SSD ของเรารองรับ TRIM command ด้วย
HDD หรือ Hard Disk Drive เป็นจานหมุนๆ อ่านเขียนข้อมูลด้วยหัวอ่านที่เคลื่อนที่ไปมา ทำให้เสียเวลาในการเข้าถึงข้อมูล ส่วน SSD หรือ Solid State Drive เป็น memory chip ล้วนๆ เหมือน flash drive ไม่มีการเคลื่อนที่ทางกล ทำให้เข้าถึงข้อมูลได้เร็วกว่ามากๆ
จริงครับ Cell SSD มีจำนวนครั้งในการเขียนที่จำกัด (เขียนได้กี่ครั้งก็ตาย) แต่สมัยนี้ SSD ทั่วไปก็ทนทานมากแล้ว ถ้าใช้งานทั่วไปไม่ได้เขียนข้อมูลหนักๆ ตลอดเวลา ก็ใช้ได้หลายปีสบายๆ ยิ่งถ้าทำ Over-provisioning ด้วย ยิ่งยืดอายุการใช้งานไปอีก
อย่างน้อยๆ ควรมีพื้นที่ว่างเหลือ 20-25% ครับ เพราะ SSD ต้องการพื้นที่ว่างในการทำ garbage collection, wear leveling และ over-provisioning ถ้าพื้นที่เต็มตลอดเวลา SSD จะทำงานได้ไม่เต็มประสิทธิภาพ และอายุการใช้งานจะสั้นลง
Defrag HDD คือการจัดเรียงข้อมูลที่กระจัดกระจายให้มาอยู่ใกล้ๆ กัน เพื่อให้หัวอ่านเข้าถึงข้อมูลได้เร็วขึ้น ส่วน Defrag SSD ไม่จำเป็น (และไม่ควรทำ) เพราะ SSD เข้าถึงข้อมูลได้เร็วอยู่แล้ว ไม่ว่าจะอยู่ตรงไหนก็ตาม แถมการ Defrag ยังเป็นการเขียนข้อมูลซ้ำๆ ซึ่งจะทำให้อายุการใช้งาน SSD สั้นลง iCafeForex สมัยผมทำร้านเน็ตจะเน้นบำรุงรักษา SSD ด้วยการ monitor health เป็นประจำ
Defragment SSD ไม่ได้ช่วยให้เร็วขึ้น แถมยังอาจทำให้อายุการใช้งานสั้นลงด้วย ซื้อ SSD มาแล้วก็ใช้งานไปตามปกติ ปล่อยให้ระบบจัดการเองดีกว่า แต่ถ้าอยากดูแลเป็นพิเศษ ก็ลองศึกษาเรื่อง Over-provisioning, TRIM command และหมั่นตรวจสอบ health ของ SSD บ้างก็ดีครับ SiamCafe Blog มีบทความเกี่ยวกับ IT อีกเยอะ ลองเข้าไปอ่านดูได้น้อง