dd를 사용하여 임의의 데이터를 쓰면 디스크 파티션이 생성되는 이유는 무엇입니까?


11

dd명령 을 실행하기 전에 명령 lsblk은 아래 출력을 리턴했습니다.

NAME              MAJ:MIN  RM   SIZE    RO TYPE  MOUNTPOINT
sda               8:0       0    931.5G  0  disk  

명령 dd if=/dev/urandom of=/dev/sda conv=fsync status=progress이 실행됩니다. 그러나 장치의 전원이 꺼지고 종료됩니다. 전원이 복구되면 명령 lsblk은 다음 출력을 반환합니다.

NAME              MAJ:MIN     RM   SIZE    RO TYPE  MOUNTPOINT
    sda           8:0          0   931.5G  0  disk 
      sda2        8:2          0   487.5G  0  disk

@RuiFRibeiro-유추에 감사하지만 dd특히 명령이 디스크를 지우려는 경우 파티션을 생성 하는 이유 는 확실하지 않습니까?
동기

1
우연의 일치 : 정전과 관련이 없을 것 같습니다. 장치에 임의의 데이터를 씁니다. 이 임의의 데이터 중 일부는 처음 몇 블록으로 갔으며, 여기에서 파티션 테이블이 있습니다. 아마도 파티션을 정의했을 것입니다.
ctrl-alt-delor

당신의 결과를 게시 할 수 있습니다 file /dev/sda*sudo fdisk -l /dev/sda*?
phuclv

@phuclv-프로세스를 시작했지만 출력이 여전히 가치가 있습니까?
동기 부여

1
@Motivated dd디스크를 지우는 목적은 아닙니다. 임의의 데이터를 디스크에 쓰면 임의의 결과가 발생할 수 있습니다.
jjmontes

답변:


20

몇 가지 가능성 :

  • 리눅스는 다양한 파티션 테이블 유형을 지원하는데, 그중 일부는 매직 바이트를 거의 사용하지 않으며, 임의의 데이터 (*)를 잘못 식별하기 쉽다 [따라서 다소 "유효한"파티션 테이블을 무작위로 생성 할 수있다].

  • 일부 파티션 테이블 유형은 디스크 끝에 백업이 있으며 (대부분 GPT) 드라이브 시작이 임의의 가비지로 교체 된 경우 선택할 수 있습니다.

  • 장치가 제대로 작동하지 않고 데이터 쓰기가 끝나기 전에 연결이 끊어 지거나 이전 데이터를 계속 반환하므로 파티션 테이블이 유지됩니다. 때때로 이것은 USB 스틱에서 발생합니다.

  • ...

(*) 임의의 데이터가 포함 된 1000 개의 파일을 만들어 무엇이 나오는지 확인하십시오.

$ truncate -s 8K {0001..1000}
$ shred -n 1 {0001..1000}
$ file -s {0001..1000} | grep -v data
0099: COM executable for DOS
0300: DOS executable (COM)
0302: TTComp archive, binary, 4K dictionary
0389: Dyalog APL component file 64-bit level 1 journaled checksummed version 192.192
0407: COM executable for DOS
0475: PGP\011Secret Sub-key -
....

드라이브를 무작위로 파쇄하는 목적은 오래된 데이터를 없애기위한 것입니다. 드라이브가 빈 상태로 사용되고 사용되지 않은 상태로 유지 될 것이라는 약속은 없습니다.

이를 달성하기 위해 제로 와이프를 수행하는 것이 일반적입니다. LVM을 사용하는 경우 LVM이 생성 한 LV의 처음 몇 개의 섹터를 0으로 만드는 것이 정상입니다.

wipefs파일 시스템 및 파티션 테이블 메타 데이터를 제거하는 데 사용할 수있는 오래된 매직 바이트 서명을 제거 하는 전용 유틸리티 ( )도 있습니다.


장치는 이전에 ATA Secure Erase 명령을 사용하여 지워졌습니다. 나는 이것이 다음과 같은 데이터를 제거한다고 가정한다. 1. 복구 할 수 없다. 2. 파티션 정보가 남아 있지 않다. 이것이 사실이라면, dd명령을 실행할 때 인터럽트 될 때 무작위 데이터가 생성되어 파티션 테이블처럼 보이는 데이터가 생성 될 수 있다는 것을 의미 합니까? 또한 이들은 SATA 하드 디스크 (비 SSD)입니다.
동기

5
임의의 데이터는 무엇이든 보일 수 있습니다. 그것이 무작위라는 의미입니다. 당신은 무한 원숭이 정리에 익숙하십니까? 그것은 충분한 양의 원숭이가 타자기에 무작위로 오랫동안 오랫동안 타이핑하면, 어느 한 시점에서 셰익스피어의 완전한 작품을 만들어냅니다. MBR 파티션 테이블은 실제로 작고 (64 바이트 만), 체크섬이나 확인이없고 매우 조밀 한 형식입니다. 64 바이트의 임의 문자열이 유효한 파티션 테이블을 생성 할 가능성이 높습니다. 다른 파티션 테이블 형식도 비슷합니다.
Jörg W Mittag

예, 파티션 테이블은 64 바이트에 불과하고 (종료) 파티션 유형은 1 바이트에 불과하며 항목은 합법적이거나 순차적이어야합니다. 따라서 MBR에서 첫 번째 클러스터 / 섹터 / 512 바이트를 제로화하는 것이 좋습니다. 또한 예측할 수없는 부팅 동작을 원하지 않지만 위험은 적습니다.
mckenzm

18

여기에서 볼 수 있듯이 MBR (Master Boot Record)은 비교적 간단합니다. https://en.wikipedia.org/wiki/Master_boot_record .

사용할 때 /dev/urandom항상 파티션 테이블처럼 보이는 것을 만들 수 있습니다. 해결책은 파티션 테이블 영역을 0으로 채우고 dev/urandom나머지에 사용 하는 것입니다.

Linux는 또한 잠재적으로 트리거 될 수있는 다른 추가 디스크 형식도 지원하므로 임의 데이터로 채울 때 "유효하지 않은"파티션이 표시됩니다.


13

512 바이트의 콜렉션을 마스터 부트 레코드 로 정의하는 것은 0x55 0xAA끝에 값이 존재한다는 것입니다 . 65,536에서 1,036의 가능성이 /dev/urandom있습니다. 가능성은 높지 않지만 항상 불가능한 일이 발생합니다.

( Apple Partition Map 과 같은 일부 다른 파티션 테이블 은 비슷한 짧은 서명을 가지고 있습니다. 대신 그 중 하나를 생성했을 수도 있습니다.)


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.