많은 디스크 공간을 즉시 채우거나 사용하는 방법은 무엇입니까?

많은 디스크 공간을 즉시 채우거나 사용하는 방법은 무엇입니까?

Linux VM에서는 단지 VM을 종료하거나 가상 NIC 연결을 끊는 것보다 더 심층적으로 NAGIOS 모니터링을 테스트하고 싶습니다. 짧은 시간 동안 몇 퍼센트의 여유 공간을 차지하여 "디스크 공간을 강제로" 테스트하고 싶습니다. 경보".

나는 내가 사용할 수 있다는 것을 안다

dd if=/dev/zero of=/tmp/hd-fillup.zeros bs=1G count=50

또는 이와 비슷한 것... 하지만 시간이 걸리고 시스템을 로드하며, rm을 사용하여 테스트 파일을 삭제할 때 다시 발생합니다.

시스템 로드를 줄이거나 많은 시간을 들이지 않고 파티션을 채우는 빠른(거의 즉각적인) 방법이 있습니까? 나는 공간을 할당하지만 그것을 "채우지" 않는 것을 생각하고 있습니다.

답변1

Linux 시스템에서 파일을 생성하는 가장 빠른 방법은 다음을 사용하는 것입니다 fallocate.

fallocate -l 50G file 

남성의 경우:

Fallocate는 파일에 할당된 디스크 공간을 조작하여 할당을 취소하거나 사전 할당하는 데 사용됩니다.
fallocate 시스템 호출을 지원하는 파일 시스템의 경우 데이터 블록에 대한 IO를 요구하지 않고 블록을 할당하고 초기화되지 않은 것으로 표시하여 사전 할당이 신속하게 수행됩니다. 이는 파일을 0으로 채워서 생성하는 것보다 훨씬 빠릅니다.
XFS(Linux 2.6.38부터), ext4(Linux 3.0부터), Btrfs(Linux 3.7부터) 및 tmpfs(Linux 3.5부터)를 지원합니다.

답변2

다른 대안은 다음과 같습니다.

  1. 경고 임계값을 현재 사용량에 가깝거나 낮게 변경합니다.
  2. 제한된 inode, 크기 또는 기타 속성을 사용하여 매우 작은 테스트 파티션을 만듭니다.

루트 유지율(있는 경우) 실행과 같은 항목을 테스트하는 것도 편리할 수 있습니다.

답변3

  1. fallocate -l 50G big_file

  2. truncate -s 50G big_file

  3. dd of=bigfile bs=1 seek=50G count=0

세 가지 방법 모두 파티션을 빠르게 채울 수 있기 때문입니다.

당신이 사용하는 것을 선호하는 경우DD, 일반적으로 다음을 사용해 볼 수 있습니다.찾다. 그냥 설정 seek=file_size_what_you_need하고 설정하세요 count=0. 이는 시스템에 다음이 있음을 알려줍니다.하나의 문서,그리고크기사용자가 설정했지만 시스템이 실제로 생성하지는 않습니다. 이 방법을 사용하면 파티션 크기보다 큰 파일을 만들 수 있습니다.


예를 들어,외부 4사용 가능한 파티션이 3G보다 작습니다. 사용DD메타데이터로 존재하는 5T 파일을 생성합니다. 블록 공간이 거의 필요하지 않습니다.

df -h . ; dd of=biggerfile bs=1 seek=5000G count=0 ; ls -log biggerfile ; df -h .

산출:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9        42G   37G  2.8G  94% /home
0+0 records in
0+0 records out
0 bytes copied, 4.9296e-05 s, 0.0 kB/s
-rw-rw-r-- 1 5368709120000 Jun 29 13:13 biggerfile
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9        42G   37G  2.8G  94% /home

답변4

또한 많은 Linux 기반 시스템에서 지원되는 Stress-ng 도구를 활용할 수도 있습니다.

stress-ng --fallocate 4 --fallocate-bytes 70% --timeout 1m --metrics --verify --times

관련 정보