ตอนนี้ไดรฟ์ SSD ขนาด 128 GB ของฉันอายุประมาณหนึ่งปีครึ่งแล้วและตั้งแต่นั้นฉันก็อัพเกรดเป็นไดรฟ์อื่น
ฉันต้องการล้าง SSD เก่าของฉันเป็น ...
คืนประสิทธิภาพให้ใกล้ระดับใหม่
ฟื้นฟูและโดยทั่วไปให้ตรวจสุขภาพ
ฉันจะทำสิ่งนี้ได้อย่างไร
ตอนนี้ไดรฟ์ SSD ขนาด 128 GB ของฉันอายุประมาณหนึ่งปีครึ่งแล้วและตั้งแต่นั้นฉันก็อัพเกรดเป็นไดรฟ์อื่น
ฉันต้องการล้าง SSD เก่าของฉันเป็น ...
คืนประสิทธิภาพให้ใกล้ระดับใหม่
ฟื้นฟูและโดยทั่วไปให้ตรวจสุขภาพ
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
บน Linux เพียงรัน
hdparm --trim-sector-ranges start:count /dev/sda
ผ่านบล็อกช่วงที่คุณต้องการ TRIM แทนstart
และcount
อุปกรณ์ SSD /dev/sda
ในสถานที่ของ มันมีข้อดีของการเป็นแบบเร็วและไม่เขียนเลขศูนย์บนไดรฟ์ แต่จะส่งคำสั่ง TRIM ไปยังคอนโทรลเลอร์ SSD เพื่อแจ้งให้ทราบว่าคุณไม่สนใจข้อมูลในบล็อกเหล่านั้นและสามารถสันนิษฐานได้ว่าพวกเขาไม่ได้ใช้งานในอัลกอริทึมการรวบรวมขยะ
คุณอาจต้องเรียกใช้คำสั่งนี้เป็นรูท เนื่องจากคำสั่งนี้มีอันตรายอย่างยิ่งเนื่องจากอาจทำให้ข้อมูลสูญหายได้ในทันทีคุณจึงต้องส่ง--please-destroy-my-drive
อาร์กิวเมนต์ไปที่hdparm
(ฉันไม่ได้เพิ่มสิ่งนี้ลงในบรรทัดคำสั่งเพื่อป้องกันการสูญหายของข้อมูลโดยไม่ตั้งใจซึ่งเกิดจากการคัดลอกและวาง)
ในบรรทัดคำสั่งด้านบน/dev/sda
ควรถูกแทนที่ด้วยอุปกรณ์ SSD ที่คุณต้องการส่งคำสั่ง TRIM ไป start
คือที่อยู่ของบล็อกแรก (ภาค) ถึง TRIM และcount
เป็นจำนวนบล็อกที่จะทำเครื่องหมายว่าว่างจากที่อยู่เริ่มต้นนั้น คุณสามารถส่งหลายช่วงไปยังคำสั่ง
หลังจากทำแบบส่วนตัวกับ hdparm v9.32 บน Ubuntu 11.04 บนแล็ปท็อปของฉันด้วย 128GB Crucial RealSSD C300 ฉันต้องชี้ปัญหา: ฉันไม่สามารถผ่านจำนวนบล็อกดิสก์ทั้งหมด (0: 250069680) เป็นช่วง . ฉันด้วยตนเอง (โดยทั่วไป "ค้นหาด้วยฐานสอง" ด้วยมือ) พบว่ามีค่ามากพอสำหรับการนับบล็อกที่ทำงานได้ (40000) และสามารถออกคำสั่ง TRIM ในลำดับ 40000 ช่วงเพื่อเพิ่มดิสก์ทั้งหมด เป็นไปได้ที่จะทำด้วยเชลล์สคริปต์แบบง่าย ๆ (ทดสอบบน Ubuntu 11.04 ภายใต้รูท):
# fdisk -lu /dev/sda
Disk /dev/sda: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
...
หากต้องการลบไดรฟ์ทั้งหมดให้ใช้จำนวนเซกเตอร์ทั้งหมดและแทนที่ 250069680 ในบรรทัดต่อไปนี้ด้วยหมายเลขนั้นและรัน (เพิ่ม--please-destroy-my-drive
):
# i=0; while [ $i -lt 250069680 ]; do echo $i:40000; i=$(((i+40000))); done \
| hdparm --trim-sector-ranges-stdin /dev/sda
และคุณทำเสร็จแล้ว! คุณสามารถลองอ่านเนื้อหาดิบของดิสก์ด้วยhexedit /dev/sda
ก่อนและหลังและตรวจสอบว่าไดรฟ์ได้ทิ้งข้อมูลแล้ว
แน่นอนแม้ว่าคุณจะไม่ต้องการใช้ Linux เป็นระบบปฏิบัติการหลักของเครื่องคุณก็สามารถใช้เคล็ดลับนี้ได้ด้วยการบูตซีดีสดและใช้งานบนไดรฟ์
ก่อนอื่นเรามาเริ่มด้วยการทำความเข้าใจว่าอะไรคือสิ่งที่ทำให้ประสิทธิภาพเสื่อมลง หลายคนจะแนะนำวิธีแก้ปัญหาที่ไม่เพียงพอ (อย่างที่ฉันเห็นอยู่แล้ว) ปมของสถานการณ์ทั้งหมดนี้โดยทั่วไปจะลงมาให้ความจริงต่อไปนี้เช่นอ้างจากวิกิพีเดีย จำไว้ว่ามันเป็นสิ่งสำคัญ:
ด้วยหน่วยความจำแฟลช NAND การอ่านและการเขียนโปรแกรมจะต้องดำเนินการพร้อมกันในขณะที่การปลดล็อคและการลบจะต้องเกิดขึ้นในแบบบล็อกบล็อค
SSD นั้นประกอบด้วยแฟลช NAND และแฟลชประกอบด้วย "บล็อก" แต่ละบล็อกมี "หน้า" จำนวนมาก ลองจินตนาการว่าเราเพิ่งซื้อ SSD ใหม่ที่เป็นประกายซึ่งมีหน่วยความจำบล็อคเดียวและบล็อกนั้นประกอบด้วยหน้าเปล่า 4 หน้า
เพื่อความชัดเจนฉันแยกความแตกต่างระหว่างหน้าว่างหน้าใช้และลบหน้าด้วย∅, 1 และ X คีย์ที่สำคัญคือว่ามีความแตกต่างระหว่างมุมมองของตัวควบคุมเหล่านี้! มันไม่ง่ายอย่างที่ 1 และ 0 ดังนั้นในการเริ่มต้นหน้าต่างๆในไดรฟ์ใหม่ของเรามีลักษณะดังนี้:
∅, ∅, ∅, ∅ (ว่างทั้งหมด)
ตอนนี้เราไปเขียนข้อมูลลงในไดรฟ์แล้วมันก็จะถูกเก็บไว้ในหน้าแรกดังนั้น:
1, ∅, ∅, ∅
ต่อไปเราเขียนข้อมูลอีกเล็กน้อยเพียงคราวนี้เพียงพอที่จะต้องมีสองหน้าและท้ายที่สุดจะถูกเก็บไว้ในหน้า 2 และ 3:
1, 1, 1, ∅
เราหมดพื้นที่แล้ว! เราตัดสินใจว่าเราไม่ต้องการข้อมูลเริ่มต้นที่เราเขียนดังนั้นให้ลบออกเพื่อสร้างห้อง:
X, 1, 1, ∅
สุดท้ายเรามีชุดข้อมูลขนาดใหญ่อีกชุดที่เราจำเป็นต้องจัดเก็บซึ่งจะใช้สองหน้าที่เหลือ นี่คือที่ที่มีประสิทธิภาพเยี่ยมชมการใช้งานโดยไม่ต้องตัด !! ไปจากสถานะสุดท้ายของเราถึงสิ่งนี้:
1, 1, 1, 1
... ต้องการงานมากกว่าที่คนส่วนใหญ่รู้ อีกครั้งนี้เกิดจากความจริงที่ว่าแฟลชสามารถลบในรูปแบบบล็อกฉลาดไม่ใช่หน้าฉลาดซึ่งเป็นสิ่งที่การเปลี่ยนแปลงครั้งสุดท้ายข้างต้นเรียกร้องให้ ความแตกต่างระหว่าง TRIM และที่ไม่ใช่ TRIM ของ SSD คือเมื่อทำงานต่อไปนี้!
เนื่องจากเราจำเป็นต้องใช้หน้าว่างและหน้าที่ถูกลบ SSD จึงจำเป็นต้องอ่านเนื้อหาของบล็อกทั้งหมดในหน่วยความจำภายนอก / หน่วยความจำภายนอกก่อนลบบล็อกเดิมปรับเปลี่ยนเนื้อหาแล้วเขียนเนื้อหาเหล่านั้นกลับเข้ามา บล็อก. มันไม่ง่ายเหมือน "เขียน" แต่ตอนนี้กลายเป็น "อ่าน - ลบ - เขียน" นี่เป็นการเปลี่ยนแปลงครั้งใหญ่และเพื่อให้เกิดขึ้นในขณะที่เรากำลังเขียนข้อมูลจำนวนมากอาจเป็นเวลาที่ไม่เหมาะสมที่สุดที่จะเกิดขึ้น สามารถหลีกเลี่ยงได้ทั้งหมดหากหน้า "ลบ" ถูกกู้คืนก่อนเวลาซึ่งเป็นสิ่งที่ TRIM ตั้งใจจะทำ ด้วย TRIM SSD จะกู้คืนหน้าที่ถูกลบของเราทันทีหลังจากการลบหรือในช่วงเวลาที่เหมาะสมอื่น ๆ ที่อัลกอริทึม TRIM เห็นว่าเหมาะสม ส่วนที่สำคัญก็คือเมื่อใช้ TRIM จะไม่เกิดขึ้นเมื่อเราอยู่ในระหว่างการเขียน!
หากปราศจาก TRIM ในที่สุดเราก็ไม่สามารถหลีกเลี่ยงสถานการณ์ข้างต้นเมื่อเราเติมข้อมูลลงในไดรฟ์ โชคดีที่ SSD รุ่นใหม่บางรุ่นก้าวล้ำกว่า TRIM และทำสิ่งเดียวกันกับ TRIM ในพื้นหลังในระดับฮาร์ดแวร์โดยไม่มีคำสั่ง ATA ที่จำเป็น (บางคนเรียกคอลเลกชันขยะนี้) แต่สำหรับพวกเราโชคไม่ดีที่ไม่มีเช่นกันสิ่งสำคัญคือต้องรู้ว่าการเขียนเลขศูนย์ลงในไดรฟ์ทั้งหมดนั้นไม่เพียงพอสำหรับการเรียกคืนประสิทธิภาพดั้งเดิม !!!!! การเขียนค่าศูนย์ทั้งหมดลงในไดรฟ์ไม่ได้ระบุตัวควบคุมว่าหน้าในแฟลชนั้นว่างสำหรับการเขียน วิธีเดียวที่จะทำเช่นนั้นในไดรฟ์ที่ไม่สนับสนุน TRIM คือการเรียกใช้คำสั่งปลอดภัยลบ ATA บนไดรฟ์ของคุณโดยใช้เครื่องมือเช่นHDDErase (ผ่าน Wayback Machine)
ฉันเชื่อว่ามี SSD รุ่นต้นบางตัวที่รองรับเฉพาะ TRIM เมื่อทำการลบพาร์ติชันหรือสิ่งต่าง ๆ เช่น "diskpart clean all" ของ Windows 7 และไม่ใช่การลบแต่ละไฟล์ นี่อาจเป็นเหตุผลว่าทำไมไดรฟ์รุ่นเก่าดูเหมือนจะได้ประสิทธิภาพกลับคืนมาเมื่อดำเนินการคำสั่งนั้น ดูเหมือนว่าจะเป็นเรื่องเล็กน้อยสำหรับฉัน ...
มากของความรู้ของฉันของ SSD และฮาร์ดแวร์ / แกดเจ็ตโดยทั่วไปมาจากanandtech.com ฉันคิดว่าเขามีบทความที่ยอดเยี่ยมอธิบายทั้งหมดนี้ แต่สำหรับชีวิตของฉันฉันไม่สามารถหามัน!
เห็นได้ชัดว่าคำแนะนำมาตรฐานคือการเขียนแบบเต็มไดรฟ์ของศูนย์ทั้งหมด ฉันไม่ได้อย่างสิ้นเชิงแน่ใจว่าทำไมนี้จะช่วย (ไม่ต้องมากของการเขียนในที่สุดก็ฆ่า SSDs?) แต่มันก็ไม่ดูเหมือนจะรับรองโดยฟอรั่มการสนับสนุนผู้ผลิต SSD ที่สำคัญ
ดังนั้นใน Windows:
diskpart
เมื่ออยู่ในยูทิลิตี้คุณจะเห็นDISKPART>
พรอมต์และออกคำสั่งต่อไปนี้:
DISKPART> list disk
DISKPART> select disk x
เห็นได้ชัดว่าทำให้แน่ใจว่าคุณได้เลือก SSD DRIVE ที่ถูกต้องก่อนดำเนินการต่อ!
DISKPART> clean all
DISKPART> create partition primary
DISKPART> format quick fs=NTFS
ความมหัศจรรย์ที่นี่คือclean all
สิ่งที่เขียนเลขศูนย์ทั้งหมดลงในไดรฟ์ :
หากคุณระบุพารามิเตอร์ทั้งหมดทุกภาคส่วนสามารถเป็นศูนย์และข้อมูลทั้งหมดที่มีอยู่ในไดรฟ์สามารถลบได้
หลังจากทำสิ่งนี้ฉันสามารถยืนยันได้ว่าประสิทธิภาพของดิสก์เพิ่มขึ้นอย่างมาก
ฉันยังพบเครื่องมือSSD ชีวิต Pro มันมีข่าวร้ายสำหรับฉัน
สำหรับวิธีการคำนวณนั้นจะใช้ตัวบ่งชี้ SMART SSD เห็นได้ชัดว่ามันพยายามทำนายตามข้อมูล SMART :
นี่เป็นเรื่องยากเพราะมันจำเป็นต้องรู้เมื่อข้อมูลถูกเขียนเพื่อประเมิน แต่นี่คือข้อมูลพื้นฐาน:
01 อ่านอัตราความผิดพลาด 7 09 ชั่วโมงเปิดเครื่องนับ 7085 0C Power Cycle Count 318 B8 Initial Bad Block Count 15 บล็อกโปรแกรมนับความล้มเหลว C3 0 C4 ลบบล็อกความล้มเหลวนับ 0 C5 Read Failure Block Count 0 C6 อ่านภาค 5468243171 C7 ส่วนการเขียน 41640920876 คำสั่งในการอ่าน C8 100482453 คำสั่งการเขียน C9 417315851 CA Error Bits จาก Flash 345270 ภาคการอ่าน CB ที่มีข้อผิดพลาดบิตที่แก้ไขได้ 340001 CC Bad Block ธงเต็ม 0 ข้อมูลจำเพาะการนับ P / E สูงสุดของซีดี 5000 จำนวนลบขั้นต่ำ CE 3774 จำนวนการลบสูงสุดของ CF 65348 การลบค่าเฉลี่ย D0 นับ 4837 D1 ไดรฟ์ที่เหลืออยู่ชีวิต 4
จำนวนที่น่ากลัวนั่นก็คือRemaining Drive Lifeซึ่งก็คือ 4 .. เปอร์เซนต์!
และการคำนวณผลลัพธ์:
รุ่น: CRUCIAL_CT128M225 ขนาด: 128 GB หมายเลขซีเรียล: xxxxxxxxxxxxxxxxxxx6 เฟิร์มแวร์: 2030 ขับเคลื่อนในเวลา: 318 การสนับสนุน TRIM ในไดรฟ์ / OS: เปิดใช้งาน / เปิดใช้งาน เวลาทำงาน: 9 เดือน 16 วัน 5 ชั่วโมง การอ่านข้อมูลทั้งหมด: 2607.46 GB เขียน: 19855.94 GB
สำหรับบันทึกแล้วไดรฟ์นี้ถูกซื้อมาตั้งแต่เดือนตุลาคม 2552 ดังนั้นมันจึงเกินกว่าหนึ่งปีครึ่ง
ฉันพบว่าการเขียนศูนย์ผ่านไดรฟ์ไม่ใช่วิธีที่ดีที่สุด ในขณะที่มันอาจช่วยในระยะสั้นฉันพบว่ามันไม่ได้กู้คืนไดรฟ์ของฉันให้เต็มประสิทธิภาพ (ฉันมี Intel-SSD ที่ไม่รองรับ TRIM) หลังจากการใช้งานค่อนข้างหนักเป็นปีฉันเริ่มใช้งานใน 1-2 วินาทีค้างเมื่อ SSD จะพยายามเขียนไปยังไฟล์ใด ๆแม้ว่าจะเป็นศูนย์ SSD ก็ตาม
สิ่งเดียวที่ฉันได้พบว่าอย่างเต็มที่เรียกคืนประสิทธิภาพการทำงานที่เป็นลบที่เชื่อถือได้hdparm
โดยใช้ ฉันทำให้เป็นนิสัยในการลบ SSD ของฉันอย่างปลอดภัยทุก ๆ 6-12 เดือนเมื่อเริ่มพบอาการสะอึกเล็กน้อย ใครบางคนใน Macrumors ได้ทำแบบฝึกหัดเฉพาะสำหรับ Mac เกี่ยวกับวิธีการทำสำหรับอุปกรณ์ mac *
จากคำกล่าวอ้างทั้งหมดที่ฉันได้เห็นการลบที่ปลอดภัยส่งคำสั่งพิเศษไปยัง SSD ที่ทำให้มันตั้งค่าเซกเตอร์ทั้งหมดให้เป็นศูนย์ในระดับที่ต่ำกว่ามากจากนั้นใช้dd
หรืออะไรซักอย่าง
ใน Mac ตรวจสอบdigilloydTools DiskTester นอกจากนี้ยังมีจุดข้อมูลที่น่าสนใจเพื่อดูผลกระทบของการปรับสภาพใหม่ต่อประสิทธิภาพของไดรฟ์
cat /dev/zero > /tmp/bigfile
คุณสามารถบรรลุบันทึกผลโดยการทำ
ThinkPads มีเมนู BIOS ที่ซ่อนอยู่ (เปิดใช้งานด้วยhttp://www-307.ibm.com/pc/support/site.wss/MIGR-68369.html ) ที่รีเซ็ต SSD ของคุณ
ในการตรวจสอบอายุการใช้งานของ ssd บน (โซลิดสเตทไดร์ฟ) ssd คุณจะต้องติดตั้งแพ็คเกจ smartmontools มันมีสองโปรแกรมยูทิลิตี้ (smartctl และ smartd) เพื่อควบคุมและตรวจสอบระบบจัดเก็บข้อมูลโดยใช้การตรวจสอบตนเองการวิเคราะห์และการรายงานเทคโนโลยีระบบ (SMART) ที่สร้างไว้ในฮาร์ดดิสก์ ATA และ SCSI ที่ทันสมัยที่สุด
สำหรับการแจกแจงแบบ Ubuntu, Mint หรือ Debian
# apt-get install smartmontools
For Fedora, Centos, or Red Hat based distributions
# yum install smartmontools
Media_Wearout_Indicator คือสิ่งที่คุณกำลังมองหา สำหรับ 100 หมายความว่า ssd ของคุณมีชีวิต 100% จำนวนที่ต่ำกว่าหมายถึงชีวิตที่เหลือน้อยลง
# smartctl -a /dev/sda | grep Media_Wearout_Indicator
ส่งออกจากแล็ปท็อปของฉัน
233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0
หากคุณต้องการดูรายละเอียดเพิ่มเติมและคุณสมบัติทั้งหมดจากไดรฟ์ของคุณคุณสามารถเรียกใช้
# smartctl -data -A /dev/sda
ที่มา: namhuy.net/1024/how-to-check-ssd-life-left.html
ตอนนี้มีคำตอบที่ดีกว่าสำหรับระบบ Linux เมื่อเทียบกับคำตอบ @LeakyCode:
sudo fstrim -v / boot
คำสั่ง "fstrim" จาก "util-linx" จะทำงานผ่านระบบไฟล์และออกคำสั่ง TRIM สำหรับพื้นที่ที่ไม่ได้ใช้ทั้งหมด ในการแจกจ่ายเช่น Ubuntu สิ่งนี้จะถูกปิดใช้งานโดยค่าเริ่มต้นยกเว้นรายการที่เลือกของไดรฟ์ "รู้จักปลอดภัย" จาก Intel และ Samsung แต่คำสั่งสามารถเรียกใช้ด้วยตนเองบนพาร์ติชันใด ๆ สำหรับไดรฟ์ใด ๆ