SSD를 비우는 데 권장되는 방법은 무엇입니까?


53

이전 SSD가 죽은 후 새 SSD를 받았습니다. 이 인텔 320 SSD는 TRIM을 지원합니다. 테스트 목적으로 딜러는 Windows를 설치했지만 이것을 제거하고 Kubuntu를 설치하고 싶습니다.

"보안 와이프"일 필요는 없습니다. 가장 건강한 방법으로 디스크를 비워두면됩니다. dd if=/dev/zero of=/dev/sda블록을 0으로 채우고 다른 쓰기를 취 한다고 생각합니다 (잘못되면 정정하십시오).

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다음 최근 Gparted 버전을 사용하여 NTFS 파티션을 삭제하고 동일한 명령으로 다시 확인하십시오. 데이터가 지워지면 0이 표시됩니다.
htorque

1
@htorque : 난 그냥 그것을 테스트했지만 내가 사용했습니다, 작동하지 않는 hexdump -C /sda1hexdump -C /sda1시작 블록을 결정합니다. 그래도 좋은 생각입니다.
Lekensteyn

1
@ Lekensteyn-나는 뺨에 약간 혀가 있음을 의미하고 아래에서 당신에게 적절한 대답을했습니다. 제프의 기사는 그가 고장률 :-)에도 불구하고이를 사용하는 이유입니다,뿐만 아니라 성능에 약간이있다
로리 알솝

3
아직도 왜 지워야하는지 모르겠습니다 ... 왜 Ext4 등으로 다시 포맷 할 수 없습니까?
Nathan Osman 2016 년

답변:


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 보안 지우기 명령을 실행하십시오.

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

노트 :

  • /dev/sdX 지우려는 블록 장치 인 SSD입니다.
  • Eins 이 예에서 선택한 비밀번호입니다.

문제점 해결을 포함한 전체 지시 사항 은 Linux 커널 위키ATA 보안 지우기 기사를 참조하십시오 .


링크 덕분에 BIOS를 지원하는 사람들에게는 좋지만 지원하지 않는 것으로 보입니다. (냉동)
Lekensteyn

만세! 기사를 다시 읽은 후 "시스템을"슬립 "(Clevo M865TU 노트북)에 장착해도 작동합니다. 이렇게하면 다른 드라이브도"고정되지 않음 "으로 재설정 될 수 있습니다." 내 것이 원래 Clevo 출신이지만 ( BTO가 빌드 했으므로) 시도했습니다 . 작동합니다. "정지되지 않음"으로 표시됩니다. ...하지만 명령 앞에 추가하지 않고 시간별로 sudo를 교체했기 때문에 3 단계는 "ERASE_PREPARE : 잘못된 주소"로 실패했습니다 !
Lekensteyn

1
OMG 작동했고 19 초 밖에 걸리지 않았습니다! 무리 감사! 나는 너에게 열 번
투표

위의 허용 된 답변에 깨진 링크가 있다고보고 싶었습니다. 해당 링크가 없으면 꽤 쓸모가 없습니다. 누구나 해당 링크의 내용을 요약하여 게시해야합니까?
Ashimema

@Ashimema : kernel.org가 해킹되어 유지 관리를 위해 다운되어 링크가 현재 끊어졌습니다. 구글 캐시는 비어 있지만이 블로그는 그것을 복사했습니다 : 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 (Solid-State Driver) 및 씬 프로비저닝 스토리지에 유용합니다. fstrim (8)과 달리이 명령은 블록 장치에서 직접 사용됩니다.

기본적으로 blkdiscard는 장치의 모든 블록을 삭제합니다. 아래 설명 된대로 범위 또는 크기에 따라이 동작을 수정하는 옵션을 사용할 수 있습니다.

장치 인수는 블록 장치의 경로 이름입니다.

경고 : 장치에서 버려진 영역의 모든 데이터가 손실됩니다!

이 명령은 Ubuntu 15.04 및 OpenSUSE 13.1 이후에 있습니다 (예 : OpenSUSE는 Ubuntu보다 2 년 앞서 있습니다).


이 오래된 게시물에 정보를 추가하고 askubuntu에 오신 것을 환영합니다.
mondjunge

4월 25일 2013 년에 출시 된 폴더의 유틸리티 - 리눅스 2.23으로 아치 리눅스는 이미이 패키지를 가지고
Lekensteyn

4
환영합니다. 오래된 게시물? 오래되었지만 구식이지는 않지만 Google 검색 결과의 첫 페이지에 팝업이 표시되는 한 여기에 같은 답변을 찾는 새로운 사람들이 항상 있습니다. 나에게 그것은 더 나은 페이지가 첫 번째 Google 검색 결과 페이지에서 그것을 밀어 넣을 때만 구식입니다.
Tankman 六四

3
당신이 차이 궁금해하는 경우 blkdiscardhdparm명령을, 대한 답변 여기에 "당신이 blkdiscard을 사용하면 SSD (A SATA SSD를 가정)이, 주 ATA TRIM 명령을 받게됩니다 반면 hdparm을 --security 지우기 주 ATA 보안 ERASE를 발행합니다 UNIT 명령. 드라이브가 실제로하는 일은 특정 SSD 펌웨어의 구현 세부 사항에 달려 있습니다. "
Lekensteyn

2
실제로 사용하고 싶지 않습니다blkdiscard . 먼저, 드라이브 전체를 닦지 말고 드라이브의 특정 부분을 버릴 있음을 드라이브에 알리 십시오. 드라이브가 실제로 데이터를 지우거나 지울 수 있습니다. 보안 지우기 명령 현재 액세스 할 수없는 드라이브 부분에있는 데이터를 포함하여 모든 데이터를 삭제 해야합니다 . 편집 : 질문을 다시 읽고 지울 필요가 없다는 것을 깨달았지만 여전히 주목할 가치가 있습니다.
psusi

5

안전한 와이프가 필요하지 않은 경우, '전체 디스크 사용'옵션과 '빠른 형식'에 해당하는 옵션을 사용하여 kubuntu를 설치하지 마십시오 (지금 정확한 용어를 기억할 수 없음)

이렇게하면 파일 할당 테이블을 버리고 드라이브를 덮어 쓰기 위해 효과적으로 비 웁니다. 실제로 비울 필요는 없습니다.


2
anandtech.com/show/2865/2를 참조하십시오 . 블록을 삭제하는 것은 블록을 지우고 빈 것으로 표시하는 것과 다릅니다.
Lekensteyn

@Lekensteyn Deleting은 블록 장치를 의미하지 않습니다. 설치 프로그램은 mkfs.ext4를 호출하고 전체 장치를 버립니다. 이는 두 경우 모두 SSD 펌웨어를 신뢰한다는 의미에서 "보안 지우기"만큼 안전합니다.
Tobu

1
@Tobu 맞아, 언젠가는 바뀌었다. 폐기mkfs.ext4(8) : mkfs 시간에 블록을 폐기하려고합니다 (블록을 ​​폐기하는 것은 솔리드 스테이트 장치 및 희소 / 씬 프로비저닝 된 스토리지에서 유용합니다). 장치가 폐기가 데이터를 0으로한다고 광고하면 (폐기 후 및 쓰기 전의 후속 읽기는 0을 리턴 함) 아직 0이 아닌 모든 inode 테이블을 0으로 표시하십시오. 이는 파일 시스템 초기화 속도를 크게 향상시킵니다. 이것이 기본으로 설정되어 있습니다.
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
이 blkdiscard 포스트 에 fstrim이 언급되어 있으며 , 수동으로 호출 할 수도 있습니다 sudo fstrim /( 옵션 /을 지원하는 파일 시스템의 마운트 지점 discard).
Lekensteyn

-4

파티션을 제거하기 만하면 전체 디스크를 지울 필요가 없으며 저장 공간이 필요할 때 오래된 데이터를 덮어 씁니다.

TRIM을 활성화하려면

gksudo gedit /etc/fstab

"ext4 errors = remount-ro 0"을 "ext4 waste, errors = remount-ro 0"으로 변경하십시오. (폐기물 추가)

저장하고 재부팅하면 TRIM이 활성화됩니다.

TRIM이 활성화되어 있는지 확인하십시오.

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

첫 begin_LBA 주소를 사용하십시오.

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

이제 숫자와 문자를 반환해야합니다. 파일을 제거하고 동기화하십시오.

rm tempfile
sync

이제 다음 명령을 다시 실행하십시오. 0을 반환하면 TRIM이 활성화됩니다.

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

2
SSD는 모든 지우기 블록에 쓰기 때문에 더 많은 마모가 발생하고 모든 지우기 블록이 가득 차므로 SSD를 0으로 채우고 싶지 않습니다. 또한 많은 드라이브는 트림 된 섹터를 즉시 제로화하지 않습니다.
psusi

물론 많은 쓰기가 필요하지만 디스크를 손상 시키지는 않습니다. 나는 Corsair F120을 10-11 개월 동안 사용했으며 종종 0으로 채 웠습니다. (모든 벤치 마크 전에 수행) 따라서 30-35 배의 성능은 여전히 ​​동일합니다. (~ 285MB 읽기, 275MB / 쓰기) SMART의 말 : 디스크는 정상입니다
Alex

9
Alex, SSD에 쓸 때마다 약간의 손상이 있습니다. 모든 단일 지우기 블록에 쓰면 모두 사용중인 것으로 표시되어 드라이브의 GC가 제대로 작동하지 않아 성능이 저하됩니다. 당신은 그것을 전체 드라이브 unTRIM으로 생각할 수 있습니다.
psusi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.