Linux로 디스크를 포맷하는 가장 빠른 방법은 무엇입니까?


0

bash / 쉘 스크립트 용입니다. 기본적으로 USB (또는 SD) 저장 장치를 포맷하거나 지우고 싶습니다. 하나의 명령 행으로

사용하려고 fdisk했지만 자동화를 원할 때 사용자 상호 작용이 필요합니다.

그래서 나는 그것을 밖으로 제로로 해보기로 결정했다 :
dd if=/dev/zero of=/dev/<target disk>;
2.0GB의 공백 또는 사용되지 않은 디스크 공간 만 제로 (0)로 보입니다.


root@linux:~# dd if=/dev/zero of=/dev/mmcblk0
dd: writing to '/dev/mmcblk0': No space left on device
3842249+0 records in
3842249+0 records out
1967230976 bytes (2.0 GB, 1.8 GiB) copied, 2.9054 s, 677 MB/s

이상적으로 말하자면, 나는 이동식 저장 장치를 다시 포맷하거나 .iso이미지 파일 (via dd)을 사용하여 이미지화 할 준비를하는 것 입니다.

재 형식화는 항상 필요한 것은 아니지만 데이터도 지 웁니다. 어쨌든 저장된 데이터의 장치를 지우는 것은 어쩌면 이런 종류의 일에 대한 기본 동작 / 표준 절차 일 것입니다.


1
"모든 섹터를 제로"로 포맷 하시겠습니까, 아니면 "빈 파일 시스템을 생성 하시겠습니까?"와 같이 포맷 하시겠습니까? 아니 그 이미 모든 것을 덮어 DD를 통해 이미지를 쓰기 때문에, 전혀 필요 어쨌든 ...
grawity은

@ grawity 정말? 나는 그것을 몰랐다. 이미징 전에 디스크를 깨끗이 닦아야한다고 생각했습니다. 그러나 귀하의 질문에 대답; 나는 옵션을 사용자에게 제공하고 케이스별로 결정하도록했다. 다른 말로 대답은 다음과 같습니다. 둘 다 . 나는 정말로 감사 할 것이다, 환호.
tjt263 '09.12.15

예, 그렇습니다. 전체 드라이브가 아니라 ISO 자체만큼 많은 데이터 만 사용합니다. 그러나 관계없이 /dev/sdb파티션 테이블, 부트 로더, 파티션 및 파일 시스템 등을 완전히 덮어 버리면됩니다. 8GB 플래시 드라이브는 예를 들어 700MB 파티션 하나 (ISO 자체가 가지고 있던 것)과 OS가 보지 않는 7.3GB의 "파티션되지 않은 공간"을 갖습니다.
grawity 9

@grawity 정확히 어떻게 또는 왜인지는 모르겠지만 문자 그대로 SD 카드를 녹였다.
tjt263

버그 같은데.
grawity

답변:


2

그래서, 이것은에 달려 있습니다.

  1. 드라이브를 포맷하는 '정의';
  2. 그 드라이브의 타입.

"형식"은 소비자 기술에서 가장 혼란스러운 용어 중 하나 일 수 있습니다. 심지어 귀하의 게시물은 이미 두세 가지 다른 행동을 혼란스럽게합니다 ...

일반적으로 그것은 3 가지 레벨을 포함합니다 :

  1. 미디어 자체 준비 (예 : 섹터 마커를 HDD에 기록) - 현재는 일반적으로 공장에서 수행하지만 적어도 IBM PC 일 경우 PC 자체에서 수행 할 수 있습니다. 이를 종종 "하위 수준 서식 지정"이라고합니다.

  2. 디스크의 처음 몇 섹터에 파티션 테이블 (공백 또는 일부 파티션)을 쓰는 것 - 이것이 무엇입니까 fdisk.

  3. 각 파티션에 빈 파일 시스템을 쓰는 것 - 이것은 무엇을 format c:하거나하는 mkfs것입니다. 이것은 "높은 수준의 형식"이라고 불리곤했습니다.

일부 사람들을 제외하고 더 이상 # 1이 없다는 2 번 단계 "낮은 수준의 형식"을 호출하십시오. 그리고 때로는 사람들 은 거기에 실제 형식이있는 것은 쓰지 않지만 전체 디스크의 "포맷팅"을 지우라고합니다 . 때로는 사람들이 모든 파일을 그대로 놔두더라도 Windows "포맷팅"을 다시 설치하라고 요청합니다.


어쨌든 나머지 답변은 원하는 결과에 따라 다릅니다 .

  • 디스크를 완전히 비워 두려는 경우 (예 : 데이터 복구 응용 프로그램에서 찾을 수있는 것이 아무것도 없음) 두 가지 옵션, 즉 삭제 또는 수동 삭제가 있습니다.

    "discard"기능은 SSD에서 TRIM이라고 부르며 SD 카드에서도 지원됩니다.이 기능은 디스크 자체에 모든 데이터를 버리라고 알려줍니다. Linux에서는이 blkdiscard도구를 사용하여 장치를 지정하고 비어있는 장치를 몇 초 내에 지정할 수 있습니다. (tools 같은 도구 mkfs.ext4는 새로운 파일 시스템을 쓰기 전에 파티션의 내용을 자동으로 버립니다.)

    디스크가 discard를 지원하지 않는 경우 (예 : 자기 HDD 인 경우) 또는 Mass Storage 인터페이스 가이 명령을 인식 하지 못하는 USB 플래시 드라이브 인 경우 - 수동으로 채우기 만하면 각 섹터를 수동으로 비울 수 있습니다 와 그것이 /dev/zero당신이 이미 완료했습니다있다.

    폐기는 보통 몇 초 정도 걸립니다하지만, 수동 제로 충전은 (결국, 당신은 쓰기를 받아 들일 수있는 빠른 디스크 자체보다 갈 수 있습니다 많은 양의 데이터를 기록).

  • 잔여 데이터에 신경 쓰지 않고 OS 가 빈 디스크를 보게 하려는 경우 파티션 테이블이 있는 영역을 비워 둘 수 있습니다. MBR의 경우 항상 섹터 0이지만 많은 디스크가 GPT 파티션 테이블을 사용한다는 것을 잊지 마십시오.

    기껏해야 몇 킬로바이트 만 지워야하기 때문에 이것은 매우 빠른 방법입니다. Linux wipefs에서이 명령은 디스크 내용을 더 이상 OS에서 인식 할 수 없게 만듭니다. (기본적으로 도구 지울 내용 만 인쇄 --all합니다. 실제로 옵션 을 사용하면 지울 수 있습니다.)

Eitehr 방식으로 이제는 운영 체제가 비어 있다고 생각하는 디스크가 있습니다.

  • 지워진 디스크에 파티션 이 필요하면 fdisk 나 parted 같은 파티션 도구를 사용하십시오. 일반 fdisk를 대화 형이지만, 거기에 많은 쉽게 스크립팅 할 수있는 도구 - sfdisk, sgdisk, parted몇 가지 예입니다. Windows가 diskpart있습니다.

  • 파티션에 파일 시스템 을 갖기 원한다면, mkfs.ext4또는 mkfs.vfat(Windows와 동등한) 도구를 사용하십시오 format.


마지막으로, 위의 설명에서 언급했듯이 : 이미지 (.iso 파일)를 디스크에 작성하려는 경우, 준비 작업을 전혀 수행 할 필요가 없습니다 .

이러한 이미지 쓰기는 섹터 0에서 시작되므로 이전에 디스크에 있었던 모든 내용이 삭제됩니다 (이미지의 크기까지). 파티션과 파일이 있거나 공백인지 여부는 중요하지 않습니다. 단순히 이미지 자체의 파티션으로 덮어 쓰게됩니다 .

이미지의 크기를 초과 하는 것은 그대로 남아 있지만 이미지의 파티션 테이블에 파티션이 없다고 OS가 신경 쓰지 않습니다. 물론 디스크를 버리거나 비우는 것은 다른 사람에게 주기만하면 여전히 좋은 생각입니다.


예, 저는 이전 데이터를 모두 파쇄하려고합니다. 내가있는 기능이 포함되어 있습니다 read&을 if, then, else, 또는 case진술. 그렇게하면 사용자가 결정할 수 있습니다.
tjt263
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.