짧은 시간에 대용량 파일 만들기


18

0과 임의의 값으로 채워진 ~ 10G의 큰 파일을 만들고 싶습니다. 나는 다음을 사용하려고 시도했다.

dd if=/dev/urandom of=10Gfile bs=5G count=10

약 2Gb의 파일을 작성하고 종료 상태 '0'으로 종료합니다. 왜 그런지 이해하지 못합니까?

또한 다음을 사용하여 파일을 만들려고했습니다.

head -c 10G </dev/urandom >myfile

그것을 만드는 데 약 28-30 분이 걸립니다. 그러나 나는 그것이 더 빨리 생성되기를 원합니다. 누구나 해결책이 있습니까?

또한 비교를 위해 동일한 (의사) 임의 패턴으로 여러 파일을 만들고 싶습니다. 누구든지 그렇게하는 방법을 알고 있습니까?


AskUbuntu에 오신 것을 환영합니다! dd블록 크기로 인해 오류가 발생 했을 수 있습니다 . 이 게시물 stackoverflow.com/questions/6161823 / ... 을보고 싶을 수도 있습니다. 최고의 블록 크기와 일부 사용자 스크립트 / 프로그램 및를 사용하는 다른 제안을 계산하는 방법에 대한 좋은 답변이 dd있습니다.
시간 없음

답변:


12

폴로 케이트 사용은 어떻습니까?이 도구를 사용하면 파일 공간을 미리 할당 할 수 있습니다 (파일 시스템이이 기능을 지원하는 경우). 예를 들어, 5GB의 데이터를 'example'이라는 파일에 할당하면 다음을 수행 할 수 있습니다.

fallocate -l 5G example

이것은 dd보다 훨씬 빠르며 공간을 매우 빠르게 할당합니다.


이 파일에 임의의 데이터가 포함되어 있거나 할당 된 디스크 공간에 발생한 모든 것이 포함되어 있습니까?
cprn

모두 0을 포함합니다. 기본적으로 공간은 미리 할당되며 데이터를 수정하지 않으면 0으로 간주됩니다.
Colin Ian King

그러면 덤프하는 것보다 어떻게 빠를 수 /dev/zero있습니까?
cprn

1
사전 할당을 차단하는 하나의 시스템 호출이기 때문에 매우 빠릅니다 (예 : 공간을 예약하지만 최소한의 I / O를 수행합니다).
Colin Ian King

나는 이것을 위로하고있다. 마지막 질문은 ... truncate과거 에 사용 하고 있었고 실제로 장치에 파일을 할당하지 않고 사용 가능한 공간에 관계없이 액세스 할 때까지 임의의 큰 파일을 생성한다는 것을 알았습니다. 이것이 사실이 fallocate아닙니까? 나는 그것을 확인하지만 모바일에있어 ...
cprn

9

dd0으로 만 구성된 파일을 만드는 데 사용할 수 있습니다 . 예:

dd if=/dev/zero of=zeros.img count=1 bs=1 seek=$((10 * 1024 * 1024 * 1024 - 1))

실제 디스크에는 1 바이트 만 기록되므로 매우 빠릅니다. 그러나 일부 파일 시스템은이를 지원하지 않습니다.

의사 랜덤 컨텐츠를 포함하는 파일을 작성하려면 다음을 실행하십시오.

dd if=/dev/urandom of=random.img count=1024 bs=10M

버퍼 크기 ( bs) 로 10M을 사용하는 것이 좋습니다 . 10M이 너무 크지는 않지만 여전히 좋은 버퍼 크기를 제공하기 때문입니다. 꽤 빠르지 만 항상 디스크 속도와 처리 능력에 달려 있습니다.



1

질문의 첫 부분에 답하기 :

커널이이를 지원하지 않기 때문에 한 번에 5GB의 버퍼를 작성하는 것은 좋은 생각이 아닙니다. 어떤 경우에도 성능 이점을 제공하지 않습니다. 한 번에 1M을 쓰는 것이 좋습니다.


0

이 질문은 5 년 전에 시작되었습니다. 방금이 문제를 우연히 발견하고 결과를 추가하고 싶었습니다.

당신이 단순히 사용하는 경우

dd if=/dev/urandom of=random.img count=1024 bs=10M

xiaodongjie의 설명에 따라 훨씬 빠르게 작동합니다. 그러나, 당신은 더 빨리 사용하여 만들 수 있습니다 eatmydata처럼

eatmydata dd if=/dev/urandom of=random.img count=1024 bs=10M

어떤 eatmydata일은 더 빨리 디스크 쓰기를 만드는 fsync를 비활성화합니다.

https://flamingspork.com/projects/libeatmydata/ 에서 자세한 내용을 확인할 수 있습니다 .


1
내가 보는 방식 dd은 시작하기에 충분히 빠르며, 이유 때문에 libEAT-MY-DATA라고합니다.
karel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.