PLEX 서버 역할을 하는 raid Z1에는 약 90TB의 ZFS 풀이 있습니다. 현재 여유 공간이 약 300GB 정도 있습니다. 평균적으로 대부분의 파일은 각각 70-80GB입니다.
더 작은 파일(~10GB)을 복사하면 문제가 없습니다. 전송이 성공했으며 Inode 소비에 영향을 미치지 않습니다.
대용량 파일(~70GB)을 복사하면 Inode 소비가 1%에서 100%로 점프하는데, 이는 단일 파일 범위에서는 불가능합니다. 파일을 삭제하면 소비량이 다시 1%로 떨어집니다. 단순한 대용량 파일이 아니라 대용량 파일이면 동일한 문제가 발생합니다.
wget(원격 FTP)을 사용하거나 NFS 마운트로 직접 파일을 복사했으며 소비 동작은 동일합니다.
다음과 같은이 가이드, 기본 레코드 크기가 128KB이므로 inode를 소비하는 파일 크기로 인해 inode가 매우 빠르게 소비되는 것으로 보입니다.
맞습니까? 1MB의 레코드 크기로 이 문제가 해결됩니까?
풀 상태
root@pve:~# zpool status pool
pool: pool
state: ONLINE
scan: scrub in progress since Thu Jul 27 18:40:26 2023
25.0T scanned at 478M/s, 23.6T issued at 450M/s, 76.1T total
0B repaired, 30.99% done, 1 days 10:00:10 to go
config:
NAME STATE READ WRITE CKSUM
pool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-ST6000VN001-2BB186_XXXXXXXX ONLINE 0 0 0
ata-ST6000VN001-2BB186_XXXXXXXX ONLINE 0 0 0
ata-ST6000VN001-2BB186_XXXXXXXX ONLINE 0 0 0
raidz1-1 ONLINE 0 0 0
ata-ST6000VN001-2BB186_XXXXXXXX ONLINE 0 0 0
ata-ST6000VN001-2BB186_XXXXXXXX ONLINE 0 0 0
ata-ST6000VN001-2BB186_XXXXXXXX ONLINE 0 0 0
raidz1-2 ONLINE 0 0 0
ata-ST8000VN004-2M2101_XXXXXXXX ONLINE 0 0 0
ata-ST8000VN004-2M2101_XXXXXXXX ONLINE 0 0 0
ata-ST8000VN004-2M2101_XXXXXXXX ONLINE 0 0 0
raidz1-3 ONLINE 0 0 0
ata-ST8000VN004-2M2101_XXXXXXXX ONLINE 0 0 0
ata-ST8000VN004-2M2101_XXXXXXXX ONLINE 0 0 0
ata-ST8000VN004-2M2101_XXXXXXXX ONLINE 0 0 0
errors: No known data errors
root@pve:~# zfs get all pool
NAME PROPERTY VALUE SOURCE
pool recordsize 128K default
Inode 소비(파일 전 복사)
공유 디렉터리는 PLEX 파일이 저장되는 곳입니다.
root@pve:\~# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
pool 87M 17 87M 1% /pool
pool/share 87M 36K 87M 1% /pool/share
pool/main 87M 12 87M 1% /pool/main
Inode 소비(파일 복사 후)
root@pve:~# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
pool 17 17 0 100% /pool
pool/share 36K 36K 0 100% /pool/share
pool/main 12 12 0 100% /pool/main
답변1
statvfs()
시스템 호출 ( df
이면에서 사용되는 것) 에 의해 보고된 Inode 사용량은 ZFS에 그다지 유용하지 않습니다.
전통적으로 파일 시스템에는 고정된 수의 inode가 있었기 때문에 총 수와 여유 수를 보고하기가 쉬웠습니다. ZFS는 필요에 따라 더 많은 inode(실제로는 ZFS 관련 개념과 유사한 "dnode")를 할당합니다.
보고되는 "여유" 숫자 statvfs()
는 ZFS가 풀의 나머지 공간(또는 설정된 경우 데이터 세트 할당량)에서 할당할 수 있는 dnode 수입니다. 그러면 총 금액은 무료 + 사용됨입니다. (원천)
따라서 여기서 "무료 inode"에 무슨 일이 일어나고 있는지 이해하려면 풀의 전체 공간 사용량을 살펴보는 것이 좋습니다. 사본이 남은 공간을 채우나요?
일반적으로 말하면, zpool list
이는 zfs list
귀하의 공간이 어디로 가는지에 대한 더 나은 아이디어를 제공할 것입니다. 이것이 항상 쉬운 것은 아닙니다. ZFS 공간 예측은 풀 구축 방법, 풀 및 데이터 세트 구성 방법, 실제로 사용 가능한 공간의 양에 따라 공간을 사용하거나 사용하지 않는 전략이 많기 때문에 부정확한 경향이 있습니다.
마지막으로, 레코드 크기는 사용되는 dnode 수에 영향을 미치지 않지만 블록 크기가 커지면 위에서 언급한 것처럼 비디오 등의 데이터가 잘 압축되지 않거나 압축이 꺼진 경우 더 많은 공간이 낭비된다는 의미로 변경되었습니다. "자유 inode"에 대한 추측 계산.
그러나 결론은: 명백한 inode 사용을 제외하고 모든 것이 괜찮아 보인다면 df
걱정하지 마십시오. 실제로는 의미가 없습니다.