답변:
막으려 고하는 것은 다음 고객이 이전 고객의 데이터를보기 위해 디스크를 읽는 것으로 가정하면 0을 모두 쓰면 실제로 작동합니다. 섹터 'n'에 0을 쓰면 섹터 'n'을 읽을 때 모든 0을 반환합니다. 사실, 실제 실제 데이터는 여전히 플래시 칩에있을 수 있지만 정상적인 읽기 작업을 수행 할 수 없으므로 상황에 문제가되지 않습니다.
누군가가 실제로 디스크를 잡고 디스크를 분리 할 수 있다면 (플래시 칩을 직접 읽을 수 있기 때문에) 문제가되지만 SATA 버스 만 액세스 할 수있는 경우 전체에 0을 쓰는 것이 문제입니다 디스크가 잘 작동합니다.
SSD를 절대로 채우지 마십시오. 최소한 이것은 SSD의 쓰기 수명 중 일부를 거의 또는 전혀 사용하지 않고 마모시킵니다. 최악의 시나리오에서는 SSD 컨트롤러를 일시적으로 성능 저하 상태 로 전환 할 수 있습니다 .
에서 이 소스 :
여러 번 반복하여 전체 디스크를 반복해서 덮어 쓰면 데이터가 성공적으로 파괴 될 수 있지만 펌웨어 변환 계층 (FTL)으로 인해 기존 하드 디스크 드라이브보다 훨씬 복잡하고 시간이 많이 걸립니다. 그들의 결과에 따르면, 그것은 매력없는 옵션입니다
최선의 옵션, 전체 디스크 암호화를 통한 안전한 지우기 :
일부 최신 SSD는 전체 디스크 암호화를 사용할 수 있습니다. 예를 들면 인텔의 새로운 320 드라이브와 일부 Sandforce 2200 시리즈 드라이브가 있습니다. 이러한 드라이브는 드라이브 마모없이 간단하고 빠른 방법으로 안전하게 지울 수 있습니다. 드라이브는 기록 된 모든 데이터에 대해 AES 암호화를 사용하므로 보안 지우기는 단순히 기존 AES 키를 삭제하고 새 키로 바꾸는 것을 의미합니다. 이렇게하면 드라이브의 모든 '이전'데이터를 복구 할 수 없게됩니다.
그러나 인텔의 보안 지우기는 자동화하기 쉽지 않습니다. AFAIK는 Intel의 Windows GUI 앱에서 수행해야하며 비어있는 비 부팅 드라이브에서만 실행할 수 있습니다. Intel 문서에서 21 페이지 이상을 참조 하십시오.
다른 옵션 인 ATA 보안 지우기 :
다른 옵션은 Linux에서 fx HDPARM을 통해 ATA 보안 지우기 명령 을 실행하는 것입니다. 이것은 스크립팅을 통해 훨씬 쉽게 자동화 할 수 있습니다.
드라이브가 '좋은'방식으로 ATA 보안 지우기를 구현하는 경우 최소한 "플래시 변환 계층"(FTL)을 삭제해야합니다. FTL 테이블은 논리 섹터 (운영 체제가 '본다')와 드라이브 자체에있는 NVRAM의 물리적 페이지 간의 매핑을 유지합니다. 이 매핑 테이블이 파괴되면 드라이브에서 데이터를 복구하는 것이 매우 어렵지만 불가능하지는 않습니다.
그러나 ATA Secure Erase가 모든 제조업체 드라이브에서 일관되고 잘 구현되었다는 연구 결과를 알지 못하므로 항상 작동한다고 말하고 싶습니다. 제조업체 기술 문서를 읽어야합니다.
단일 파티션의 경우 :
다른 답변에 대한 의견을 읽으면 OP는 단일 파티션 만 안전하게 지우고 싶어합니다. 이를 수행하는 좋은 방법 중 하나는 LUKS 또는 TrueCrypt를 사용하여 암호화 된 볼륨 (fx) 만 작성하는 것 입니다 . 이렇게하면 온 드라이브 전체 디스크 암호화 구성표와 유사한 암호화 키를 제거하여 볼륨을 안전하게 지울 수 있습니다.
결론:
정말로 알고 싶다면 Sophos의 블로그에서 링크 된 문서 를 읽고 보안 지우기에 관한 드라이브 제조업체 기술 노트를 읽으십시오. 그러나 '좋은'보안 지우기를 원한다면 전체 디스크 암호화 및 암호화 키의 안전한 삭제 및 교체가 가능한 SSD가 최선의 선택 일 것입니다. 또는 운영 체제 수준 암호화를 사용하고 데이터를 안전하게 지울 때 키를 버립니다.
웨어 레벨링은 데이터 제로 아웃과 관련이 없습니다.
다른 사람 / 응용 프로그램이 해당 데이터를 읽지 못하게하려면 데이터를 제로화합니다. SSD는 쓰기가 SSD에 대한 '손상'으로 인해 더 오래 사용할 수 있도록 데이터를 '마모 수준'으로 유지합니다. 또한 디스크는 일반적으로 사용량이 많지 않을 때이 작업을 수행합니다. 서버 상황에서 조용한 시간을 항상 사용할 수있는 것은 아니므로이 작업은 종종 수행되지 않습니다.
IO 운영에 대해 고객에게 비용을 청구합니까? 그렇지 않다면 기본적으로 항상 지속적으로 작성하여 몇 시간 / 일 동안 SSD의 일부를 죽이는가? SSD는 대부분의 사람들이 생각하는 것보다 , 특히 쓰기가 많은 환경에서 죽이기가 훨씬 쉽습니다 .
if (time < 9am) chriss_try_again()
dd
데이터를 제로 아웃하는 데 사용 하거나 임의의 데이터를 디스크에 쓰는 다른 방법 과 같은 기존의 SSD 지우기 방법을 사용하고 싶지는 않습니다 . 이러한 방법은 플래터 기반 디스크에 더 적합합니다. SSD를 지우는 데 효과적이지만 SSD의 제한된 쓰기 작업을 불필요하게 많이 사용하므로 SSD의 예상 수명이 단축됩니다. 그것은 빨리 비싸 질 것입니다. 또한 시간이 지남에 따라 SSD의 성능을 저하시킬 수 있습니다.
SSD는 보안 지우기 방법이 다릅니다. IDE 에뮬레이션을 수행 할 수있는 특정 유형의 SATA 컨트롤러가 필요하고 절차가 복잡 할 수 있기 때문에 수행하기가 매우 번거로운 것 같습니다. 일부 제조업체는 자체 SSD를 안전하게 지울 수있는 도구를 제공하지만 Linux의 경우 hdparm ( https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase)으로도 가능 합니다. 그러나 계속 진행하기 전에 해당 지침에서 드라이브가 "고정되지"않았는지 확인해야합니다. 시스템을 부팅하는 동안 드라이브를 "고정 해제"할 수있는 마더 보드 및 SATA 컨트롤러를 찾아야하기 때문에 이는 가장 어려운 단계 중 하나입니다. 일반적으로 SATA 케이블에서 플러그를 뽑았다가 다시 연결해야합니다.
어쨌든, 내 권장 사항은 연구를 수행하고 편리한 시스템에서 사용할 수있는 보안 지우기 유틸리티가 포함 된 SSD를 선택하는 것입니다.
dd bs=1M
하면 마모가 최소화됩니다.
한 가지 대답이 이미 받아 들여졌지만 blkdiscard /dev/sdX
여기서 언급 할 가치가 있다고 생각합니다 .
Arch Wiki : SSD 에 따르면 이 blkdiscard
명령은 모든 블록 을 버리고 모든 데이터가 손실됩니다. "SSD를 판매하려면"전에 사용하는 것이 좋습니다.
TRIM의 작동 방식에 익숙하지 않으므로 데이터가 지워질 것이라는 보장이 없습니다. 그러나 나는 아무것도하지 않는 것보다 낫다고 생각합니다.
BTW, 나는이 명령이 단일 파티션이 아닌 전체 장치에서만 작동하는 것을 두려워합니다.
도움이 되었기를 바랍니다. :)
hdparm -I /dev/theSSD
포함 Deterministic read ZEROs after TRIM
, blkdiscard
빨리해야 보장 제로 나중에 읽을. 그렇지 않으면 보안 지우기 가 더 나은 솔루션처럼 보입니다. 그러나 고객 보안에 대한 질문이 있다면 Secure Erase 는 이러한 사용 사례에 맞게 설계된 것이므로 더 나은 솔루션 일 수 있습니다.
가상 머신 이미지에서 데이터를 지우는 가장 좋은 방법은 TRIM 기능을 사용하는 것입니다. 많은 최신 운영 체제가이를 지원합니다. 거의 모든 현재 SSD도 지원합니다.
또한이 옵션을 더욱 향상시키는 것은 모든 SAN이 SCSI 이름 UNMAP 아래에서이 기능을 지원 한다는 것 입니다. 스파 스 프로비저닝을 구현하는 SAN에는 훌륭한 명령이며, 특히 블록 중복 제거와 결합 될 때 가상 머신에 뛰어난 기능입니다.
TRIM 명령이 SSD에 제공되면 펌웨어는 해당 블록을 재사용 할 수 있도록 즉시 표시합니다. 일부 SSD는 TRIM'd 블록에 대해 항상 0을 반환합니다 . 다른 드라이브는 구현 정의 (예 : 임의) 데이터를 반환합니다.
TRIM을 지원하는 운영 체제에서 파일을 간단히 삭제하면 TRIM 블록이 표시됩니다. 실제 TRIM 작업은 즉시 수행되거나 나중에 수행하기 위해 일괄 처리 될 수 있습니다. 때로는 파일을 강제로 트리밍하거나 파티션에서 사용하지 않는 모든 블록을 검사하는 도구가 있습니다.
Linux의 TRIM 성능은 여전히 반점이므로 사용하는 경우 옵션을 조사해야합니다. Windows에서는 꽤 견고합니다.
"SSD 보안 지우기 유틸리티"가 필요합니다. dd
마모 레벨링 과 같은 것을 사용 하면 여전히 오래된 고객 데이터가 포함 된 예비 섹터가 생길 수 있습니다. 보안 지우기 유틸리티는 장치의 모든 섹터 (OS에 디스크로 표시되는 섹터뿐만 아니라)를 지 웁니다.
이러한 유틸리티 중 일부는 특정 제조업체에 따라 다르므로 드라이브 제조업체에 권장 사항을 문의하십시오.
0을 쓰면 다른 고객이 디스크를 읽지 못하게하는 데 도움이 될 것이라고 생각하지 않습니다.
SSD에서 무언가를 작성할 때 프로세스는 일반 하드 디스크와 매우 다릅니다.
다음 상황을 상상해보십시오. SSD 드라이브의 "빈"메모리 셀은 모두 1로 채워집니다. 당신이 그것에 무언가를 쓸 때, 그것은 0을 기록하고 1을 변경하지 않은 채로 둡니다.
다른 항목을 저장하려는 경우 이전 내용과 새로운 내용을 비교합니다. 만약 0을 써서 이전 것이 새로운 것이 될 수 있다면 좋습니다. 그렇게 할 수 없으면 다른 메모리 셀이 사용됩니다.
"clear": 11111111 1 차 저장 : 11011011
새로운 데이터 : 00110011 11011011을 00110011로 만들 수있는 방법이 없습니다 (1을 1에서 1로 돌릴 필요가 있으며 SSD에서는 불가능하다는 점에 유의하십시오). 따라서 다른 메모리 셀이 사용됩니다.
드라이브를 트리밍하면 사용되지 않은 모든 메모리 셀이 1로 재설정됩니다. 따라서 다시 사용할 수 있습니다. 그리고 저장된 데이터가 유지됩니다.
원하는 작업을 수행하려면 먼저 파일을 삭제 (삭제)하십시오. 해당 파일의 메모리 셀은 사용 가능한 것으로 표시됩니다. 그런 다음 TRIM을 수행하십시오. 모든 메모리 셀은 데이터 표시없이 1이됩니다.
쉬운 대답 : Linux를 사용하여 파티션을 EXT4로 다시 포맷하면 파티션의 모든 섹터에서 트리밍을 수행하는 것처럼 SSD에 모든 블록을 지울 준비가되었음을 알 수 있습니다. 부작용은 적은 수의 쓰기 (EXT4 구조)입니다.
무작위로 잊어 버리면 SSD 수명이 많이 줄어 듭니다. 일부 SSD는 지능적이며 쓰지 않는 0으로 채워진 전체 섹터를 보면 지우는 것으로 표시합니다.
펌웨어의 내부를 알 수 없으므로 가장 좋은 방법은 현대 리눅스 커널에서 파티션을 ext4로 포맷하는 것입니다 (전체 포맷을 바꾸지 않고 빠른 것만, 구조 만). 전체 파티션을 다듬습니다. 포맷하기 전에.
보안 지우기, 즉 전체 SSD에 대해 한 번에 이야기하는 모든 사람들을 혼란에 빠뜨리십시오. 단 하나의 SSD 파티션과 SSD에 저장된 나머지 정보 (SSD 레벨이 아닌 파티션 레벨)를 잃지 않고 묻습니다.
결론 : Ext4로 다시 포맷 한 다음 다른 포맷이 필요한 경우 다른 포맷으로 다시 포맷하십시오.