วิธีที่แนะนำในการทำให้ SSD ว่างเปล่าคืออะไร?


53

ฉันเพิ่งได้รับ SSD ใหม่ของฉันตั้งแต่เก่าเสียชีวิต Intel 320 SSD นี้รองรับ TRIM สำหรับจุดประสงค์ในการทดสอบตัวแทนจำหน่ายของฉันติดตั้ง Windows ไว้ แต่ฉันต้องการกำจัดสิ่งนี้และติดตั้ง Kubuntu ลงไป

มันไม่จำเป็นต้องเป็น "การลบที่ปลอดภัย" ฉันแค่ต้องการให้ดิสก์ว่างเปล่าเพื่อสุขภาพที่ดีที่สุด ฉันเชื่อว่าdd if=/dev/zero of=/dev/sdaเพียงเติมบล็อกด้วยศูนย์และดังนั้นจึงเขียนอีกครั้ง (แก้ไขฉันถ้าฉันผิด)

ฉันเห็นคำตอบวิธีเปิดใช้งาน TRIMแต่ดูเหมือนว่าจะเหมาะสำหรับการล้างบล็อคว่างเปล่าไม่ใช่การเช็ดดิสก์

hdparmดูเหมือนจะเป็นโปรแกรมที่ต้องทำ แต่ฉันไม่แน่ใจว่ามันล้างดิสก์หรือล้างบล็อคว่างเปล่า จากหน้าคู่มือ:

  --trim-sector-ranges
          For  Solid State Drives (SSDs).  EXCEPTIONALLY DANGEROUS. DO NOT
          USE THIS OPTION!!  Tells the drive firmware to discard  unneeded
          data  sectors,  destroying  any  data that may have been present
          within them.  This makes those sectors available  for  immediate
          use  by  the firmware's garbage collection mechanism, to improve
          scheduling for wear-leveling of the flash  media.   This  option
          expects  one  or  more  sector range pairs immediately after the
          option: an LBA starting address, a colon, and  a  sector  count,
          with no intervening spaces.  EXCEPTIONALLY DANGEROUS. DO NOT USE
          THIS OPTION!!
          E.g.  hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz

ฉันจะทำให้บล็อกทั้งหมดปรากฏว่าว่างเปล่าโดยใช้ TRIM ได้อย่างไร


เป็นคำถามที่ดีอาจจะเพียงพอที่จะลบระบบไฟล์ NTFS หรือไม่
htorque

1
ดังนั้นมันเป็นเพียงความคิดเห็น ;) อย่างไรก็ตามก่อนอื่นคุณสามารถตรวจสอบบางเซกเตอร์ในพาร์ติชั่sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -Cนนั้นจากนั้นลบพาร์ติชั่น NTFS โดยใช้ Gparted version ล่าสุดและตรวจสอบอีกครั้งด้วยคำสั่งเดียวกัน - ถ้าข้อมูลถูกลบคุณจะเห็นเลขศูนย์
htorque

1
@htorque: ฉันเพิ่งทดสอบ แต่มันใช้งานไม่ได้ฉันใช้hexdump -C /sda1แล้วhexdump -C /sda1เพื่อกำหนดจุดเริ่มต้น ความคิดที่ดีแม้ว่า
Lekensteyn

1
@Lekensteyn - ฉันหมายถึงแก้มเล็กน้อยในแก้มและแตกคำตอบที่เหมาะสมสำหรับคุณด้านล่าง บทความของ Jeff มีผลงานเล็กน้อยเช่นกันซึ่งเป็นเหตุผลว่าทำไมเขาถึงใช้มันแม้ว่าจะมีอัตราความล้มเหลว :-)
Rory Alsop

3
ฉันยังไม่เห็นว่าทำไมคุณต้องลบมัน ... ทำไมคุณไม่สามารถฟอร์แมตใหม่ด้วย Ext4 หรืออะไรก็ได้
Nathan Osman

คำตอบ:


52

การลบที่ปลอดภัยของ ATA

คุณควรใช้คุณสมบัติการลบความปลอดภัยของไดรฟ์

  1. ตรวจสอบให้แน่ใจความปลอดภัยไดรฟ์ไม่แช่แข็ง หากเป็นเช่นนั้นอาจช่วยในการระงับและดำเนินการต่อคอมพิวเตอร์

    $ sudo hdparm -I /dev/sdX | grep frozen
           not     frozen 
    

    เอาต์พุตคำสั่ง (กรอง) หมายความว่าไดรฟ์นี้“ ไม่หยุด” และคุณสามารถดำเนินการต่อได้

  2. ตั้งค่ารหัสผ่านผู้ใช้ (รหัสผ่านนี้จะถูกล้างด้วยตัวเลือกที่แน่นอนไม่สำคัญ)

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. ออกคำสั่ง ATA Secure Erase

    sudo hdparm --user-master u --security-erase Eins /dev/sdX
    

บันทึก:

  • /dev/sdX เป็น SSD เป็นอุปกรณ์บล็อกที่คุณต้องการลบ
  • Eins เป็นรหัสผ่านที่เลือกในตัวอย่างนี้

ดูบทความการลบความปลอดภัย ATAใน Linux kernel wikiสำหรับคำแนะนำทั้งหมดรวมถึงการแก้ไขปัญหา


ขอบคุณสำหรับการเชื่อมโยงมันดูดีสำหรับผู้ที่มีไบออสที่รองรับ แต่ฉันไม่ปรากฏว่าจะสนับสนุน (แช่แข็ง)
Lekensteyn

เย่! หลังจากอ่านบทความอีกครั้งฉันอ่าน "การวางระบบของฉันเป็น" sleep "(สมุดบันทึก Clevo M865TU) ทำงานเกินไป --- และนี่อาจรีเซ็ตไดรฟ์อื่นเป็น" ไม่ตรึง "เช่นกัน และทดลองใช้ตั้งแต่ของฉันมาจาก Clevo เช่นกัน (แต่BTOสร้างมันขึ้นมา) มันใช้งานได้ฉันเห็น "ไม่แข็ง" ตอนนี้ ... แต่ขั้นตอนที่ 3 ล้มเหลวด้วย "ERASE_PREPARE: ที่อยู่ไม่ถูกต้อง" เพราะฉันแทนที่ sudo ตามเวลาแทนที่จะเป็นการเพิ่มคำสั่ง!
Lekensteyn

1
OMG ใช้งานได้และใช้เวลาเพียง 19 วินาทีเท่านั้น! ขอบคุณมัด! ฉันหวังว่าฉันจะสามารถโหวตคุณได้สิบครั้ง: D
Lekensteyn

ฉันแค่ต้องการรายงานว่าคำตอบที่ยอมรับด้านบนมีลิงก์ที่ใช้งานไม่ได้ มันไม่มีประโยชน์อะไรเลยหากไม่มีลิงก์ดังกล่าวใคร ๆ ก็อยากโพสต์สรุปว่าลิงค์นั้นพูดว่าอะไร?
Ashimema

@Ashimema: ลิงก์เสียในขณะนี้เนื่องจาก kernel.org ถูกแฮ็กและไม่สามารถทำการบำรุงรักษาได้ Google Cache ว่างเปล่า แต่บล็อกนี้คัดลอกมา: peter.membrey.hk/2011/09/11/…
Lekensteyn

30

util-linux 2.23 ข้อเสนอblkdiscardที่ทิ้งข้อมูลโดยไม่ต้องเช็ดให้ปลอดภัย ฉันทดสอบ: ทำงานได้กับ SATA และ mmcblk แต่ไม่ใช่ USB

ข้อความที่ตัดตอนมาจากหน้าคู่มือของblkdiscard(8):

ชื่อ

blkdiscard - ยกเลิกเซกเตอร์บนอุปกรณ์

สรุป

blkdiscard [-o offset] [-l length] [-s] [-v] device

รายละเอียด

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

โดยค่าเริ่มต้น blkdiscard จะยกเลิกการบล็อกทั้งหมดบนอุปกรณ์ ตัวเลือกอาจถูกใช้เพื่อปรับเปลี่ยนพฤติกรรมนี้ตามช่วงหรือขนาดตามที่อธิบายไว้ด้านล่าง

อาร์กิวเมนต์อุปกรณ์คือชื่อพา ธ ของอุปกรณ์บล็อก

คำเตือน: ข้อมูลทั้งหมดในพื้นที่ที่ถูกทิ้งในอุปกรณ์จะหายไป!

คำสั่งอยู่ที่นั่นตั้งแต่ Ubuntu 15.04 และ OpenSUSE 13.1 (ใช่ OpenSUSE มีไว้ล่วงหน้า 2 ปีของ Ubuntu)


ขอบคุณสำหรับการเพิ่มข้อมูลในโพสต์ที่ล้าสมัยนี้และยินดีต้อนรับสู่ askubuntu
จันทร์ที่

Arch Linux มีแพคเกจนี้อยู่แล้วเนื่องจาก util-linux 2.23 เปิดตัวเมื่อวันที่ 25 เมษายน 2556
Lekensteyn

4
ขอบคุณสำหรับการต้อนรับ โพสต์ที่ล้าสมัย? เก่า แต่ไม่ล้าสมัยตราบใดที่ปรากฏในหน้าแรกของผลการค้นหาของ Google มีคนใหม่ ๆ ที่มองหาคำตอบเดียวกันที่มาที่นี่เสมอ สำหรับฉันมันล้าสมัยเมื่อหน้าดีกว่าผลักมันออกมาจากหน้าผลการค้นหา google ครั้งที่ 1
Tankman 六四

3
หากคุณสงสัยในความแตกต่างระหว่างคำสั่งblkdiscardกับhdparmคำสั่งจะมีคำตอบที่นี่ : "เมื่อคุณใช้ blkdiscard SSD (สมมติว่า SATA SSD) จะได้รับคำสั่ง ATA TRIM ในขณะที่ hdparm - ความปลอดภัยลบจะออก ATA SECURITY ERASE คำสั่ง UNIT สิ่งที่ไดรฟ์ทำขึ้นอยู่กับรายละเอียดการนำไปใช้ของเฟิร์มแวร์ของ SSD นั้น "
Lekensteyn

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

5

หากคุณไม่ต้องการการลบที่ปลอดภัยทำไมคุณไม่ติดตั้ง kubuntu โดยใช้ตัวเลือก 'ใช้ทั้งดิสก์' และเทียบเท่ากับ 'ฟอร์แมตแบบรวดเร็ว' (จำคำศัพท์ไม่ได้ในตอนนี้)

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


2
ดูanandtech.com/show/2865/2 การลบบล็อกนั้นไม่เหมือนกับการลบและทำเครื่องหมายว่าว่างเปล่า
Lekensteyn

@Lekensteyn การลบไม่ได้มีความหมายอะไรเลยสำหรับอุปกรณ์บล็อก โปรแกรมติดตั้งจะโทร mkfs.ext4 และทิ้งอุปกรณ์ทั้งหมด นี่คือความปลอดภัยเท่ากับ "การลบที่ปลอดภัย" ในแง่ที่ว่าทั้งสองกรณีคุณเชื่อถือเฟิร์มแวร์ SSD
Tobu

1
@Tobu ถูกต้องที่มีการเปลี่ยนแปลงในบางจุด mkfs.ext4(8)พูดว่า: ทิ้ง - ความพยายามที่จะทิ้งบล็อกในเวลา mkfs (บล็อกการทิ้งในตอนแรกมีประโยชน์ในอุปกรณ์โซลิดสเตตและที่เก็บข้อมูลแบบกระจาย / แบบบาง) เมื่ออุปกรณ์โฆษณาที่ทิ้งข้อมูลเป็นศูนย์ด้วยเช่นกัน (การอ่านใด ๆ ที่ตามมาหลังจากการละทิ้งและก่อนการเขียนจะส่งกลับค่าศูนย์) จากนั้นทำเครื่องหมายตาราง inode ทั้งหมดที่ยังไม่ได้ศูนย์เป็นศูนย์ สิ่งนี้ช่วยเร่งความเร็วการเริ่มต้นระบบไฟล์อย่างมีนัยสำคัญ สิ่งนี้ถูกตั้งค่าเป็นค่าเริ่มต้น
Lekensteyn

@Tobu สำหรับกรณีการใช้งานของฉัน "การลบที่ปลอดภัย" ไม่จำเป็นต้องลบข้อมูลออกจากชิปแฟลชของมันจริง ๆ ควรมั่นใจว่าไม่มีผลกระทบด้านลบจากการใช้บล็อก
Lekensteyn

1

หากไดรฟ์มีไฟล์ข้อความ Linux คุณสามารถใช้งานfstrimได้ โดยค่าเริ่มต้น Ubuntu ล่าสุดทำงานfstrimบนไดรฟ์จากผู้ขายต่อไปนี้:

    if [ -z "$NO_MODEL_CHECK" ]; then
        if ! contains "$HDPARM" "Intel" && \
           ! contains "$HDPARM" "INTEL" && \
           ! contains "$HDPARM" "Samsung" && \
           ! contains "$HDPARM" "SAMSUNG" && \
           ! contains "$HDPARM" "OCZ" && \
           ! contains "$HDPARM" "SanDisk" && \
           ! contains "$HDPARM" "Patriot"; then
            #echo "device $DEV is not a drive that is known-safe for trimming"
            continue

สัปดาห์ละครั้ง.

ดังนั้นหนึ่งคำตอบสำหรับคำถามของคุณคือการบูทระบบและรอหนึ่งสัปดาห์!


1
fstrim ถูกกล่าวถึงในblkdiscard นี้โพสต์คุณยังสามารถเรียกมันด้วยตนเองsudo fstrim /(ซึ่ง/เป็นจุดเชื่อมต่อของระบบแฟ้มที่สนับสนุนการเป็นdiscardตัวเลือก)
Lekensteyn

-4

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

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

gksudo gedit /etc/fstab

เปลี่ยน "ข้อผิดพลาด ext4 = remount-ro 0" เป็น "ทิ้งส่วนขยาย ext4 ข้อผิดพลาด = remount-ro 0" (เพิ่มทิ้ง)

บันทึกและรีบูตตอนนี้ควรเปิดใช้งาน TRIM

ตรวจสอบว่าเปิดใช้งาน TRIM หรือไม่:

sudo -i
dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
hdparm --fibmap tempfile

ใช้ที่อยู่ start_LBA แรก

hdparm --read-sector [begin_LBA] /dev/sda

ตอนนี้มันควรจะกลับตัวเลขและตัวละคร ลบไฟล์และซิงค์

rm tempfile
sync

ตอนนี้ให้รันคำสั่งต่อไปนี้อีกครั้ง ถ้ามันคืนค่าศูนย์ TRIM ถูกเปิดใช้งาน

hdparm --read-sector [begin_LBA] /dev/sda

2
คุณไม่ต้องการเติม SSD ด้วยศูนย์เนื่องจากมันจะเขียนไปยังบล็อกลบทุกอันทำให้เกิดการสึกหรอมากขึ้นและปล่อยให้บล็อกลบเต็ม ไดรฟ์จำนวนมากไม่ได้ตัดส่วนที่เป็นศูนย์ทันที
psusi

แน่นอนว่ามันต้องการการเขียนจำนวนมาก แต่ไม่ทำให้ดิสก์เสียหาย ตอนนี้ฉันใช้ Corsair F120 นาน 10-11 เดือนแล้วและเติมมันด้วยเลขศูนย์บ่อยๆ (ทำก่อนเกณฑ์มาตรฐานทุกครั้ง) ดังนั้นหลังจาก 30-35 ครั้งประสิทธิภาพการทำงานยังคงเหมือนเดิม (~ 285MB อ่าน 275MB / เขียน) สมาร์ทพูดว่า: ดิสก์มีสุขภาพดี
อเล็กซ์

9
อเล็กซ์ทุก ๆ การเขียนไปยัง SSD สร้างความเสียหายเล็กน้อย การเขียนบล็อกลบทุกบล็อกจะทำให้พวกเขาทั้งหมดถูกใช้งานซึ่งจะป้องกันไม่ให้ GC ของไดรฟ์ทำงานได้อย่างถูกต้องและประสิทธิภาพจะลดลง คุณสามารถคิดว่ามันเป็น unTRIM ทั้งไดรฟ์
psusi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.