Cách được đề xuất để làm trống SSD là gì?


53

Tôi vừa nhận được ổ SSD mới kể từ khi cái cũ chết. Intel 320 SSD này hỗ trợ TRIM. Đối với mục đích thử nghiệm, đại lý của tôi đã đặt Windows lên nó, nhưng tôi muốn loại bỏ điều này và cài đặt Kubfox lên nó.

Nó không phải là một "lau an toàn", tôi chỉ cần làm trống đĩa theo cách lành mạnh nhất. Tôi tin rằng dd if=/dev/zero of=/dev/sdachỉ cần điền vào các khối bằng số 0 và do đó viết một chữ khác (sửa tôi nếu tôi sai).

Tôi đã thấy câu trả lời Cách bật TRIM , nhưng có vẻ như nó phù hợp để xóa các khối trống, không xóa đĩa.

hdparmdường như là chương trình để làm điều đó, nhưng tôi không chắc liệu nó có xóa đĩa HOẶC xóa các khối trống không. Từ trang hướng dẫn của nó:

  --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

Làm cách nào tôi có thể làm cho tất cả các khối xuất hiện dưới dạng trống bằng TRIM?


Câu hỏi hay, có lẽ chỉ cần xóa hệ thống tập tin NTFS là đủ?
htorque

1
Do đó, nó chỉ là một nhận xét. ;) Tuy nhiên, trước tiên bạn có thể kiểm tra một số cung trên phân vùng sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -Cđó, sau đó xóa phân vùng NTFS bằng phiên bản Gparted gần đây và kiểm tra lại bằng cùng một lệnh - nếu dữ liệu bị xóa, bạn sẽ chỉ thấy các số không.
htorque

1
@htorque: Tôi mới thử nó nhưng nó không hoạt động, tôi đã sử dụng hexdump -C /sda1hexdump -C /sda1để xác định khối khởi đầu. Ý tưởng tốt đẹp mặc dù.
Lekensteyn

1
@Lekensteyn - Tôi có nghĩa là nó hơi tặc lưỡi và bật ra một câu trả lời thích hợp cho bạn dưới đây. Bài viết của Jeff cũng có một chút về hiệu suất, đó là lý do tại sao anh ta sử dụng chúng mặc dù tỷ lệ thất bại :-)
Rory Alsop

3
Tôi vẫn không thấy lý do tại sao bạn cần xóa nó ... tại sao bạn không thể định dạng lại nó bằng Ext4 hoặc bất cứ điều gì?
Nathan Osman

Câu trả lời:


52

Xóa an toàn ATA

Bạn nên sử dụng tính năng xóa bảo mật của ổ đĩa .

  1. Đảm bảo ổ đĩa không bị đóng băng . Nếu có, nó có thể giúp đình chỉ và tiếp tục máy tính.

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

    Đầu ra lệnh (được lọc) có nghĩa là ổ đĩa này không bị đóng băng và bạn có thể tiếp tục.

  2. Đặt mật khẩu người dùng (mật khẩu này cũng bị xóa, lựa chọn chính xác không thành vấn đề).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. Ban hành lệnh Xóa an toàn ATA

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

Ghi chú:

  • /dev/sdX là SSD như một thiết bị khối mà bạn muốn xóa.
  • Eins là mật khẩu được chọn trong ví dụ này.

Xem bài viết Xóa an toàn ATA trong wiki nhân Linux để biết hướng dẫn đầy đủ bao gồm khắc phục sự cố.


Cảm ơn vì liên kết, nó có vẻ tốt cho những người có BIOS hỗ trợ nó, nhưng tôi dường như không hỗ trợ nó. (đóng băng)
Lekensteyn

Tiếng hoan hô! Sau khi đọc bài viết một lần nữa, tôi đọc "Đặt hệ thống của tôi vào" ngủ "(máy tính xách tay Clevo M865TU) cũng hoạt động --- và điều này cũng có thể đặt lại các ổ đĩa khác thành" không bị đóng băng "." và đã thử nó vì tôi cũng có nguồn gốc từ Clevo (nhưng BTO xây dựng nó). Nó hoạt động, tôi thấy "không bị đóng băng" bây giờ. ... nhưng bước 3 đã thất bại với "ERASE_PREPARE: Địa chỉ xấu" vì tôi đã thay thế sudo theo thời gian thay vì trả trước lệnh!
Lekensteyn

1
OMG nó hoạt động và chỉ mất 19 giây! Cảm ơn nhiều! Tôi ước tôi có thể nâng cao bạn mười lần: D
Lekensteyn

Tôi chỉ muốn báo cáo rằng câu trả lời được chấp nhận ở trên có một liên kết bị hỏng. Nó khá vô dụng nếu không có liên kết nói, có ai quan tâm để đăng một bản tóm tắt về những gì liên kết đó nói không?
Ashimema

@Ashimema: Liên kết hiện bị hỏng do kernel.org đã bị hack và do đó không được bảo trì. Google Cache trống, nhưng blog này đã sao chép nó: peter.membrey.hk/2011/09/11/ trên
Lekensteyn

30

produc-linux 2.23 cung cấp blkdiscardloại bỏ dữ liệu mà không xóa sạch chúng. Tôi đã thử nghiệm: hoạt động trên SATA và mmcblk nhưng không phải USB.

Một đoạn trích từ trang hướng dẫn của blkdiscard(8):

TÊN

blkdiscard - loại bỏ các lĩnh vực trên một thiết bị

TÓM TẮC

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

SỰ MIÊU TẢ

blkdiscard được sử dụng để loại bỏ các lĩnh vực thiết bị. Điều này hữu ích cho trình điều khiển trạng thái rắn (SSD) và lưu trữ được cung cấp mỏng. Không giống như fstrim (8) lệnh này được sử dụng trực tiếp trên thiết bị khối.

Theo mặc định, blkdiscard sẽ loại bỏ tất cả các khối trên thiết bị. Tùy chọn có thể được sử dụng để sửa đổi hành vi này dựa trên phạm vi hoặc kích thước, như được giải thích dưới đây.

Đối số thiết bị là tên đường dẫn của thiết bị khối.

CẢNH BÁO: Tất cả dữ liệu trong vùng bị loại bỏ trên thiết bị sẽ bị mất!

Lệnh có ở đây kể từ Ubuntu 15.04 và OpenSUSE 13.1 (vâng OpenSUSE có trước 2 năm so với Ubuntu).


thx để thêm thông tin vào bài viết đã lỗi thời này và chào mừng bạn đến hỏi Ubuntu.
mondjunge

Arch Linux đã có gói này khi linux
-23

4
Cảm ơn đã chào đón. Bài viết đã lỗi thời? Cũ, nhưng không lỗi thời, miễn là nó xuất hiện trong trang 1 của kết quả tìm kiếm Google, luôn có những người mới tìm kiếm câu trả lời tương tự ở đây. Đối với tôi nó chỉ lỗi thời khi các trang tốt hơn đẩy nó ra khỏi trang kết quả google thứ 1.
Tankman

3
Nếu bạn đang tự hỏi sự khác biệt giữa blkdiscardhdparmlệnh, thì câu trả lời ở đây : "Khi bạn sử dụng blkdiscard, SSD (giả sử SSD SSD) sẽ nhận được lệnh ATA TRIM, trong khi hdparm --securance-erase sẽ phát hành ATA AN NINH Lệnh UNIT. Những gì ổ đĩa thực sự làm phụ thuộc vào chi tiết triển khai của phần sụn cụ thể của SSD đó. "
Lekensteyn

2
Bạn thực sự không muốn sử dụng blkdiscard. Đầu tiên, nó được dự định để thông báo cho ổ đĩa rằng các bộ phận cụ thể của nó thể bị ném ra ngoài, không phải để xóa toàn bộ. Ổ đĩa có thể hoặc không thực sự xóa dữ liệu. Lệnh xóa an toàn phải xóa tất cả dữ liệu, bao gồm mọi dữ liệu nằm trong các phần của ổ đĩa hiện không thể truy cập được. Chỉnh sửa: chỉ cần đọc lại câu hỏi và nhận ra nó không yêu cầu xóa, nhưng nó vẫn đáng chú ý.
psusi

5

Nếu bạn không cần xóa an toàn, tại sao bạn không cài đặt kubfox bằng các tùy chọn để 'sử dụng toàn bộ đĩa' và tương đương với 'định dạng nhanh' (không thể nhớ thuật ngữ chính xác ngay bây giờ)

Bằng cách đó, bạn bỏ bảng phân bổ tệp và ổ đĩa được dọn sạch một cách hiệu quả để ghi đè. Bạn thực sự không cần phải làm trống nó.


2
Xem anandtech.com/show/2865/2 . Xóa khối không giống như xóa nó và đánh dấu nó là trống.
Lekensteyn

@Lekensteyn Xóa không có nghĩa gì với thiết bị khối. Trình cài đặt sẽ gọi mkfs.ext4 và loại bỏ toàn bộ thiết bị; điều này an toàn như một "xóa an toàn", theo nghĩa là trong cả hai trường hợp, bạn đều tin tưởng vào phần sụn SSD.
Tobu

1
@Tobu Phải, điều đó đã thay đổi tại một số điểm. mkfs.ext4(8)nói: loại bỏ - Cố gắng loại bỏ các khối tại thời điểm mkfs (loại bỏ các khối ban đầu rất hữu ích trên các thiết bị trạng thái rắn và lưu trữ được cung cấp thưa thớt / mỏng). Khi thiết bị quảng cáo loại bỏ dữ liệu đó cũng không thay đổi dữ liệu (mọi lần đọc tiếp theo sau khi loại bỏ và trước khi ghi trả về 0), sau đó đánh dấu tất cả các bảng inode chưa có giá trị là 0. Điều này tăng tốc đáng kể khởi tạo hệ thống tập tin. Điều này được đặt làm mặc định.
Lekensteyn

@Tobu Đối với trường hợp sử dụng của tôi, "Xóa an toàn" không phải thực sự xóa sạch dữ liệu khỏi chip flash của nó, nó chỉ cần đảm bảo rằng không có hiệu ứng hiệu suất tiêu cực do sử dụng một số khối.
Lekensteyn

1

Nếu ổ đĩa có tệp Linux trên đó, bạn có thể sử dụng fstrim. Theo mặc định, Ubuntu gần đây chạy fstrimtrên các ổ đĩa từ các nhà cung cấp sau:

    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

Mỗi tuần một lần.

Vì vậy, một câu trả lời cho câu hỏi của bạn là khởi động hệ thống và chờ một tuần!


1
fstrim được đề cập trong bài đăng blkdiscard này , bạn cũng có thể gọi nó bằng tay sudo fstrim /(trong đó /là một điểm gắn kết của một hệ thống tập tin hỗ trợ discardtùy chọn).
Lekensteyn

-4

Chỉ cần xóa phân vùng, bạn không phải xóa toàn bộ đĩa, dữ liệu cũ sẽ bị ghi đè khi cần bộ nhớ cho thứ khác.

Để bật TRIM:

gksudo gedit /etc/fstab

Thay đổi "ext4 lỗi = remount-ro 0" thành "ext4 loại bỏ, lỗi = remount-ro 0". (Thêm loại bỏ)

Lưu và khởi động lại, TRIM sẽ được kích hoạt.

Kiểm tra xem TRIM có được bật không:

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

Sử dụng địa chỉ Begin_LBA đầu tiên.

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

Bây giờ nó sẽ trả về số và ký tự. Xóa tệp và đồng bộ hóa.

rm tempfile
sync

Bây giờ, chạy lại lệnh sau. Nếu nó trả về số không TRIM được bật.

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

2
Bạn KHÔNG muốn lấp đầy một ổ SSD bằng số không vì nó sẽ ghi vào mọi khối xóa, gây ra hao mòn nhiều hơn và để lại mọi khối xóa. Ngoài ra nhiều ổ đĩa KHÔNG ngay lập tức cắt không ngành.
psusi

Chắc chắn, nó đòi hỏi nhiều ghi, nhưng nó không làm hỏng đĩa. Tôi đã sử dụng một chiếc Corsair F120 được 10-11 tháng nay và thường xuyên lấp đầy nó bằng số không. (Làm điều đó trước mỗi điểm chuẩn) Vì vậy, sau 30 - 35 lần hiệu suất vẫn như cũ. (~ 285 MB đọc, 275 MB / ghi) SMART nói: Đĩa vẫn khỏe
Alex

9
Alex, mỗi lần ghi vào ổ SSD đều làm hỏng nó một chút. Viết cho mỗi khối xóa duy nhất làm cho tất cả chúng được đánh dấu trong quá trình sử dụng, điều này sẽ ngăn không cho GC của ổ đĩa hoạt động đúng và hiệu suất sẽ bị ảnh hưởng. Bạn có thể nghĩ về nó như là một ổ đĩa toàn bộ.
psusi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.