"fallocate" 명령은 어떤 종류의 콘텐츠/데이터를 생성합니까?

"fallocate" 명령은 어떤 종류의 콘텐츠/데이터를 생성합니까?

명령어를 실행 하면 sudo fallocate -l 2G /swapfile2GB가 생성되는데, 그 안에는 어떤 내용이나 데이터가 들어있나요? 맞춤 설정할 수 있나요? 그렇다면 어떨까요? 몇 가지 조사를 해봤지만 이에 대한 자세한 내용은 없습니다. 이것 fallocate에 좋은 용도 가 있는지 궁금 합니다 swap file.

예를 들어 sudo dd if=/dev/zero of=/swapfile bs=1024 count=N0으로 채워진 데이터를 생성하는 경우 swap file0으로 채워진 데이터가 필수인지 확실하지 않습니다. swap file이는 자습서에서 언급되지 않습니다.

답변1

스왑 파일이 모두 0일 필요는 없습니다. 커널은 어떤 블록이 사용 중인지 추적합니다.

그러나 다음 man mkswap을 사용하지 말라는 경고가 표시될 수 있습니다 fallocate.

스왑 파일에는 취약점이 포함되어서는 안 됩니다. 파일 생성을 사용하는 것은 cp(1)허용되지 않습니다. 또한 fallocate(1)사전 할당된 파일(예: XFS 또는 ext4) 또는 쓰기 시 복사 파일 시스템(예: btrfs)을 지원하는 파일 시스템에서도 사용할 수 없습니다 . 이러한 경우에는 및 를 사용하는 것이 좋습니다 dd(1). 쓰기 시 복사 파일 시스템에 스왑 파일을 추가하기 전에 설명을 읽어 보십시오 /dev/zero.swapon(8)

(이 내용은 맨페이지의 모든 버전에 포함되어 있지 않을 수도 있습니다)

더 나아가 swapon:

커널의 스왑 파일 구현은 파일 시스템의 도움 없이 파일에 직접 쓸 수 있을 것으로 예상합니다. 이는 fallocate(1)XFS 또는 ext4와 같은 파일 시스템 및 btrfs와 같은 쓰기 중 복사 파일 시스템에서 사전 할당된 파일(예:)에 문제가 있습니다.

매뉴얼 페이지의 다른 버전에서는 다음과 같이 말합니다.

생성된 사전 할당 파일은 fallocate(1)파일 시스템에 따라 취약한 파일로 해석될 수도 있습니다. Linux 4.18부터 XFS는 사전 할당된 스왑 파일을 지원합니다.

따라서 이를 사용 fallocate하여 스왑 파일을 생성할 수 있는지 여부는 커널과 파일 시스템에 따라 크게 달라집니다.

그에 비해 단순한 dd것이 좋습니다.

답변2

바라보다스티븐 해리스의 답변fallocate스왑 파일 생성의 적합성에 대한 추가 정보.

"생성된" 데이터에 관한 fallocate기술적 답변은 사용된 파일 시스템에 따라 다르지만 결과는 항상 fallocate파일 길이를 확장할 때 파일의 새로 할당된 부분을 읽을 때 0이 됩니다(비록 그것이 디스크에 0이 포함되어 있지 않을 수 있습니다). 이 설명되어 있습니다관련 시스템 호출에 대한 문서에서:

지정된 범위 내의 모든 소지역오프셋그리고런던호출 전에 데이터가 없는 항목은 0으로 초기화됩니다.

관련 정보