n
파일과 디렉토리에 길이의 xattrs를 추가하는 데 비용이 발생할 수 있다고 생각합니다 .l
f
d
- 저장
- 경로 확인 시간/액세스 시간?
- 디렉토리 반복? (새(재부팅 후 캐시되지 않은) 파일 시스템을 반복적으로 찾으십니까?)
이 수수료가 얼마인지 알고 싶습니다. 예를 들어, 모든 파일을 표시하면 저장 공간과 성능에 큰 영향을 미치나요? 그 이하에서는 무시할 수 있는 영향을 미치고 그 이상에서는 파일 시스템에 영향을 미치는 임계 값은 무엇입니까?
이러한 분석을 위해서는 xattr의 한계 -> 다른 파일 시스템에 넣을 수 있는 xattr 수와 xattr 비트 수를 고려하는 것이 더 좋습니다.
(편리하다고 생각하시면 ext4 및 btrfs 이외의 다른 파일 시스템에 대한 정보를 포함하실 수 있습니다. 감사합니다)
답변1
ext4(BtrFS에 대해서는 말할 수 없음)를 사용하면 작은 xattrs를 저장하는 것이 inode에 직접 적합하며 경로 확인이나 디렉터리 반복 성능에 영향을 주지 않습니다.
"작은" xattr에 사용할 수 있는 공간의 양은 형식화된 inode 크기에 따라 다릅니다. 최신 ext4 파일 시스템은 512바이트의 기본 inode 크기를 사용하고, 이전 ext4 파일 시스템은 256바이트를 사용하며, inode 자체와 xattr 헤더에 약 192바이트를 사용합니다. 나머지는 확장된 속성에 사용할 수 있지만 일반적으로 SELinux 및 다른 경우에는 이미 확장된 속성이 있습니다(" getfattr -d -m - -e hex /path/to/file
"는 모든 확장된 속성을 inode에 덤프합니다). 이 공간에 맞지 않는 모든 xattr은 외부 블록에 저장됩니다. 또는 4KB보다 크고 새 커널(4.18 이상)이 있는 경우 외부 inode에 저장할 수 있습니다.
작업 부하(예: Samba)에 xattr 성능이 중요한 경우 mke2fs -I <size>
포맷 시 " " 옵션을 사용하여 inode 크기를 변경하여 xattr에 더 많은 공간을 제공할 수 있습니다.