하드 드라이브의 마지막 1MB 지우기

하드 드라이브의 마지막 1MB 지우기

하드 드라이브의 마지막 1MB를 0으로 만드는 데 사용할 수 있는 간단한 명령이 있습니까?

운전을 시작하려면 dd if=/dev/zero of=/dev/sdx bs=1M count=1. dd의 옵션은 seek유망해 보이지만, 내가 얼마나 멀리 봐야 하는지 쉽게 결정할 수 있는 방법이 있는 사람이 있습니까?

드라이브 끝에 일부 RAID 구성을 저장하는 하드웨어 RAID 장치가 있습니다. 드라이브를 구성되지 않은 것으로 처리하려면 RAID 장치가 필요하므로 드라이브를 완전히 지우는 데 시간을 들이지 않고 RAID 구성을 제거하고 싶습니다. 2TB 드라이브가 12개 있는데 모두 지우려면 시간이 오래 걸립니다.

답변1

Linux에서 디스크 크기를 얻는 가장 쉬운 방법은 다음과 같습니다 blockdev --getsz.

sudo -s
dd bs=512 if=/dev/zero of=/dev/sdx count=2048 seek=$((`blockdev --getsz /dev/sdx` - 2048))

답변2

각 파티션의 크기는 /proc/partitions. 다음 명령은 크기를 sdxkB 단위로 표시합니다.

awk '$4 == "sdx" {print $3}' </proc/partitions

그러므로:

dd if=/dev/zero of=/dev/sdx bs=1k count=1024 \
   seek=$(($(awk '$4 == "sdx" {print $3}' </proc/partitions) - 1024))

답변3

탐색을 사용하여 드라이브 끝까지 도달하는 것은 매우 효과적입니다. 예:

탐색=$(( blockdev --getsz /dev/sda- 2048))

하지만 이 기능을 사용할 때에는 카운트 값이 올바른지 알고 있거나 아예 사용하지 않는 것이 좋습니다. 내가 이렇게 말하는 이유는 드라이브가 512바이트 섹터 또는 4k 섹터를 가질 수 있고 4k 섹터가 있는 드라이브에 이 솔루션을 사용하는 경우 드라이브 끝까지 도달하는 데 해당 카운트 값을 사용하지 않고 마지막 섹터를 놓칠 수 있기 때문입니다. RAID 정보(이것을 발견했습니다).

답변4

dd다음과 같은 방법으로 장치 크기를 사용하고 가져올 수 있습니다 fdisk.

dd if=/dev/zero of=/dev/sda bs=1k \
   seek=$(( (`fdisk -l /dev/sda | grep 'Disk /' | cut -d' ' -f 5` -1024*1024)/1024  )) count=1024

반올림 오류를 피하기 위해 1m의 블록 크기를 사용하지 않습니다.

또는 1mb의 음수 오프셋으로 함수를 호출 lseek한 다음 .SEEK_ENDwrite

관련 정보