Ext4의 최대 파일 시스템 크기는 1EB이고 최대 파일 크기는 16TB입니다.
그런데 파일 시스템 수준에서 최대 파일 크기를 줄이는 것이 가능합니까? 예를 들어, 지정된 값(예: 1MB)보다 큰 파일 생성을 허용하고 싶지 않습니다. ext4에서 이를 달성하는 방법은 무엇입니까?
ext4가 아닌 경우 다른 최신 파일 시스템이 이러한 기능을 지원합니까?
답변1
ext4
max_dir_size_kb
크기를 제한하는 설치 옵션이 있습니다목차, 그러나 일반 파일에는 유사한 옵션이 없습니다.
setrlimit()
그러나 특정 셸에서 설정한 제한 이나 내장된 제한을 사용하여 ulimit
프로세스가 제한보다 큰 파일을 생성하지 못하도록 할 수 있습니다 . limit
대부분의 시스템에서는 각 사용자에 대해 시스템 전체에 걸쳐 이러한 제한을 설정할 수도 있습니다.
프로세스가 이 제한을 초과하면 SIGXFSZ 신호를 받습니다. 이 신호를 무시하면 파일 크기를 초과하는 작업(예: write()
시스템 truncate()
호출)이 오류와 함께 실패합니다 EFBIG
.
이 제한을 파일 시스템으로 옮기기 위해 사용할 수 있는 한 가지 방법은 다음과 같습니다.퓨즈(사용자 공간의 파일 시스템) 이 제한 사항 세트로 사용자 공간 핸들러가 시작되는 파일 시스템입니다. bindfs
좋은 후보입니다.
실행하는 경우 bindfs dir dir
(즉, 바인딩 dir
자체) bindfs
시작을 다음과 같이 사용합니다( zsh
구문).
(limit filesize 1M; trap '' XFSZ; bindfs dir dir)
그러면 이 디렉터리에 1M보다 큰 파일을 생성하려는 시도는 실패합니다. 파일을 쓰는 프로세스에 오류를 bindfs
전달합니다 .EFBIG
이 제한은 일반 파일에만 적용되며 디렉터리가 제한을 초과하여 커지는 것을 막지는 못합니다(예: 그 안에 많은 수의 파일 생성).
답변2
시스템 수준에서 설정해야 합니다.
우분투 편집의 경우/etc/security/limits.conf
다음과 같은 줄을 추가합니다.
timb hard fsize 10000
와일드카드 문자를 사용할 수도 있습니다.
session required pam_limits.so
AFAIK 에 추가하지 않으면 루트에서는 작동하지 않습니다 /etc/pam.d/common-session
.