내 하드 드라이브가 0으로 설정/삭제되었는지 어떻게 확인하나요?

내 하드 드라이브가 0으로 설정/삭제되었는지 어떻게 확인하나요?

한번은 shred외장 하드 드라이브를 지운 적이 있습니다. sudo shred -vz /dev/sdb

또한 디스크에 5개의 불량 섹터가 있다는 점도 추가해야 합니다.

디스크가 0으로 설정되었는지 확인하고 싶습니다.https://superuser.com/questions/1510233/is-there-a-faster-way-to-verify-that-a-drive-has-been-full-zeroed

나는 그것에 대해별로 익숙하지 dd않지만믿다이는 0으로 설정되었음을 나타냅니다.

sudo dd if=/dev/sdb status=progress | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
5000916670976 bytes (5.0 TB, 4.5 TiB) copied, 45754 s, 109 MB/s
9767541167+0 records in
9767541167+0 records out
5000981077504 bytes (5.0 TB, 4.5 TiB) copied, 45756.7 s, 109 MB/s
48c61b35e00
sudo dd if=/dev/sdb status=progress | od | head
5000952267264 bytes (5.0 TB, 4.5 TiB) copied, 45739 s, 109 MB/s
9767541167+0 records in
9767541167+0 records out
5000981077504 bytes (5.0 TB, 4.5 TiB) copied, 45741.1 s, 109 MB/s
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
110614154657000

그러나 simple을 사용하면 cmp예외가 표시됩니다.

sudo cmp /dev/zero /dev/sdb
cmp: EOF on /dev/sdb after byte 5000981077504, in line 1

디스크가 제로화되었나요?

답변1

디스크가 제로화되었나요?

예. 명령의 출력은 dd5000981077504바이트를 썼다는 것을 보여줍니다. 귀하의 cmp명령은 5000981077504바이트 후에 EOF(파일 끝)에 도달한다고 말합니다. 이는 동일합니다.

이는 하드 드라이브에서만 작동합니다. 솔리드 스테이트 장치의 경우 웨어 레벨링 및 오버프로비저닝과 같은 기능으로 인해 일부 데이터가 지워지지 않을 수 있습니다. 또한 드라이브에 손상된 섹터가 없어야 합니다. 섹터는 지워지지 않기 때문입니다.

cmp작업에는 그다지 효율적이지 않습니다. 당신은 더 나아질 것입니다 badblocks:

badblocks -svt 0x00 /dev/sdb

~에서badblocks(8), 이 -t옵션을 사용하여 디스크의 스키마를 확인할 수 있습니다. -w(쓰기) 또는 -n(비파괴 쓰기)를 지정하지 않으면 해당 모드가 이미 존재한다고 가정합니다.

   -t test_pattern
          Specify a test pattern to be read (and written) to disk  blocks.
          The  test_pattern  may  either  be a numeric value between 0 and
          ULONG_MAX-1 inclusive, or the  word  "random",  which  specifies
          that  the block should be filled with a random bit pattern.  For
          read/write (-w) and non-destructive (-n) modes, one or more test
          patterns  may  be specified by specifying the -t option for each
          test pattern desired.  For read-only mode only a single  pattern
          may  be specified and it may not be "random".  Read-only testing
          with a pattern assumes that the specified pattern has previously
          been  written to the disk - if not, large numbers of blocks will
          fail verification.  If multiple patterns are specified then  all
          blocks  will be tested with one pattern before proceeding to the
          next pattern.

또한 dd기본 블록 크기(512)를 사용하는 것은 그리 효율적이지 않습니다. 를 지정하면 속도를 크게 높일 수 있습니다 bs=256k. 이로 인해 512바이트가 아닌 262,144바이트의 청크로 데이터를 전송하게 되어 발생해야 하는 컨텍스트 전환 수가 줄어듭니다. 시스템에 따라 속도를 높일 수도 있습니다.를 사용하여 페이지 캐싱을 우회합니다 iflag=direct. 경우에 따라 이는 블록 장치 읽기 성능을 향상시킬 수 있습니다.


요청하지는 않았지만 shred기본적으로 대상을 덮는 데 세 번의 패스가 사용된다는 점에 유의해야 합니다. 이것은 불필요합니다. 하드 드라이브를 여러 번 덮어쓴다는 신화는 Peter Gutmann의 오래된 조언에서 비롯되었습니다. 구형 MFM 및 RLL 하드 드라이브에서는 이론적 데이터 보존 문제를 방지하려면 특정 덮어쓰기 모드가 필요합니다. 모든 유형의 디스크를 다룰 수 있도록 그는 최소한 35가지 모드를 사용할 것을 권장합니다.하나그 중 일부는 귀하의 디스크에 적합합니다. EPRML 및 NPML과 같은 최신 데이터 인코딩 기술을 사용하는 최신 하드 드라이브에서는 여러 스키마를 사용할 필요가 없습니다. Gutman 자신에 따르면:

실제로 전체 35패스 적용 범위를 수행하는 것은 모든 드라이브에서 의미가 없습니다. 이는 30년 이상 된 MFM 접근 방식의 모든 것을 포괄하는 모든 유형의(일반적으로 사용되는) 인코딩 기술이 포함된 혼합 시나리오를 대상으로 하기 때문입니다(이해하지 못하는 경우). 이 진술을 읽으려면 논문을 다시 읽으십시오). X 인코딩 기술이 적용된 드라이브를 사용하는 경우 35개 패스를 모두 수행하지 않고 X 특정 패스만 수행하면 됩니다.

자신의 입장에서 생각해보면 다음과 같은 것을 추천하고 싶습니다.

dd if=/dev/urandom of=/dev/sdb bs=256k oflag=direct conv=fsync

완료되면 "장치에 남은 공간이 없습니다"라는 메시지가 표시된 후 충분한 바이트가 기록되었는지 확인하세요.

ATA Secure Erase를 사용하여 펌웨어 수준 데이터 삭제를 시작할 수도 있습니다. 표준을 안전하게 구현하기 위해 펌웨어 작성자에게 의존하게 되므로 단독으로 사용하지는 않습니다. 대신, 위 항목에 추가로 사용하여 dd누락된 항목(예: 불량 섹터 및 HPA)이 없는지 확인하세요 . ATA 보안 삭제는 다음 명령을 사용하여 관리할 수 있습니다 hdparm.

hdparm --user-master u --security-set-pass yadayada /dev/sdb
hdparm --user-master u --security-erase yadayada /dev/sdb

모든 장치에서 작동하는 것은 아닙니다. 외장 드라이브가 이를 지원하지 않을 수 있습니다.

답변2

/dev/zero빈 바이트의 무한 스트림입니다. /dev/sdb포함되지끝없는빈 바이트 스트림 cmp이므로 /dev/zero.

cmp차이점을 찾거나 파일 중 하나의 끝에 도달할 때까지 두 파일의 내용을 바이트 단위로 비교합니다. 차이에 도달하면 다음과 같은 내용이 보고됩니다.

/dev/zero /dev/sdb differ: char 1 line 1

상태 1로 종료됩니다. cmp한 파일의 끝에 도달했지만 다른 파일의 끝에 도달하지 않은 경우 파일 크기가 다른 것으로 보고되고 상태 1로 종료됩니다. (일반 파일의 경우 cmp크기를 먼저 확인한 후 크기가 다를 경우 내용 비교 없이 종료됩니다.) cmp두 파일의 끝에 동시에 도달하여 다른 내용이 발견되지 않는 경우에만 파일이 있다고 보고합니다. 동일하며 상태 0(성공) 종료로 끝납니다.

따라서 보고서는 모든 바이트가 0임을 cmp의미합니다 ./dev/sdb

(데이터 삭제에 대한 다른 제안은 다른 답변을 참조하세요. 그러나 여러 패스를 수행해야 하는 필요성은 대체로 신화에 불과하며 이는 오래된 기술에는 일부 진실이 있지만 21세기 미디어와는 전혀 관련이 없습니다. 그것도 마찬가지로 좋을 것입니다. 단순히 0으로 덮어쓰는 대신 shred예약된 섹터를 그대로 두는 대신 디스크 컨트롤러의 정상적인 작동을 우회하여 약간의 노력을 들여 읽을 수 있습니다.디스크의 보안 지우기 기능이 작동하는 경우 해당 기능을 사용하십시오..)

답변3

예, Forest의 답변에 따르면.

디스크 펌웨어에 자체 삭제(보안 삭제)를 지시하여 "벨트 및 버팀대" 작업을 수행할 수 있습니다. 펌웨어의 알 수 없는 세부 정보에 따라 불량 블록을 복구할 수 없게 될 수도 있습니다.

이를 달성하는 방법에 대한 세부정보hdparm 여기

SSD의 경우 이 방법은 기록된 데이터를 dd저장하는 대신 모든 섹터가 비어 있음을 드라이브에 알려주기 때문에 더 우수합니다 . dd펌웨어가 올바르게 작성된 경우 예비 펌웨어도 삭제되어야 합니다.

이 기사PCIe SSD를 지우는 방법을 설명합니다. hdparmSATA 장치가 아니기 때문에 사용할 수 없습니다 . (아직?) 이것을 시도하지 않았습니다.

관련 정보