하나 복사했어요레딧 게시물이것은 내 질문을 요청했지만 아직 답변이 없습니다.
저는 지난 몇 주 동안 ZFS 사용량과 통계를 모니터링하기 위한 도구를 사용해 왔습니다. 그것이 나에게 말하는 내용을 이해했을 때 ZFS에 대해 더 많이 배우도록 격려했습니다. 나는 거의 모든 작업을 수행했으며 내가 수행하는 작업과 이유를 이해한 후에만 조정을 수행했습니다.
저를 당황하게 만든 것 중 하나는 dnode_size가 arc_dnode_limit*0.9보다 커서는 안 된다는 경고입니다.
$ grep dnode /proc/spl/kstat/zfs/arcstats
dnode_size 4 334416720
arc_dnode_limit 4 307463731
그럼 334416720! > 276717357.9 ....어... 이런! 나는 이 조언보다 훨씬 뛰어납니다...
특히 dnode에 대한 좋은 정보를 많이 찾았습니다.ZFS 문서 열기풍부한 콘텐츠. 그러나 나는 dnode_size가 arc_dnode_limit보다 훨씬 높다는 것이 무엇을 의미하는지에 대한 좋은 정보를 찾지 못했습니다. 이에 대해 어떻게 해야 하는지는 말할 것도 없습니다.
이 경고가 나에게 무엇을 말하려는지 설명해줄 수 있는 사람이 있나요? 이것이 실제로 문제입니까, 아니면 단지 "좋은 팁" 중 하나입니까?
답변1
TL,DR: 그러니 더 높은 한도를 설정하세요.
그것이 실제로 문제가 된다면 귀하의 질문에 답할 수 없지만, 사용량이 한도를 초과하는 것이 걱정된다면 한도를 인위적으로 낮추었는지, 사용 사례에서는 단순히 더 높은 한도를 요구하는지 고려해 볼 수 있습니다.
이것은 FreeBSD에 있으므로 줄과 YMMV 사이를 읽어야 하지만 16GB RAM과 460GB의 단일 장치 비중복 VDEV를 갖춘 내 FreeBSD 14 노트북에는 적용 범위가 없습니다. 현재 FreeBSD 기본 제한은 1,594,027,212입니다. 크기/제한 비율은 0.0008입니다.
(No dnode setting overrides in /etc/sysctl.conf:)
$ grep dnode /etc/sysctl.conf
$ sysctl -a | egrep 'dnode_(size|limit)'
vfs.zfs.arc.dnode_limit_percent: 10
vfs.zfs.arc.dnode_limit: 0
kstat.zfs.misc.arcstats.arc_dnode_limit: 1594027212
kstat.zfs.misc.arcstats.dnode_size: 1362288
$ bc <<< "scale=4; $(sysctl -n kstat.zfs.misc.arcstats.dnode_size) / $(sysctl -n kstat.zfs.misc.arcstats.arc_dnode_limit)"
.0008
인위적으로 하한(예: 2^20)을 설정하고 다시 시작하면 예, 비율이 "권장"보다 높습니다.
$ grep dnode /etc/sysctl.conf
vfs.zfs.arc.dnode_limit=1048576
$ sysctl -a | egrep 'dnode_(size|limit)'
vfs.zfs.arc.dnode_limit_percent: 10
vfs.zfs.arc.dnode_limit: 1048576
kstat.zfs.misc.arcstats.arc_dnode_limit: 1048576
kstat.zfs.misc.arcstats.dnode_size: 1358248
$ bc <<< "scale=4; $(sysctl -n kstat.zfs.misc.arcstats.dnode_size) / $(sysctl -n kstat.zfs.misc.arcstats.arc_dnode_limit)"
1.2960
마찬가지로 운영 체제에서 선택한 기본 제한이 너무 낮다고 생각되면 더 낮은 비율인 0.0006을 달성하기 위해 더 큰 제한을 설정할 수 있습니다.
$ grep dnode /etc/sysctl.conf
vfs.zfs.arc.dnode_limit=2147483648
$ sysctl -a | egrep 'dnode_(size|limit)'
vfs.zfs.arc.dnode_limit_percent: 10
vfs.zfs.arc.dnode_limit: 2147483648
kstat.zfs.misc.arcstats.arc_dnode_limit: 2147483648
kstat.zfs.misc.arcstats.dnode_size: 1376024
$ bc <<< "scale=4; $(sysctl -n kstat.zfs.misc.arcstats.dnode_size) / $(sysctl -n kstat.zfs.misc.arcstats.arc_dnode_limit)"
.0006
내 ZFS 사용 사례의 대부분은 FreeBSD에 있지만 OpenZFS 설명서에서는 다음을 권장합니다.
어떤 경우에는 커널 모듈이 로드되기 전에 매개변수를 설정해야 하거나 부팅 시 매개변수를 자동으로 설정하려는 경우가 있습니다. 많은 배포판의 경우 다음 형식을 사용하여 각 모듈 매개변수에 대한 텍스트 줄이 포함된 /etc/modprobe.d/zfs.conf라는 파일을 생성하여 이를 수행할 수 있습니다.
# change PARAMETER for workload XZY to solve problem PROBLEM_DESCRIPTION
# changed by YOUR_NAME on DATE
options zfs PARAMETER=VALUE
dnode 제한을 늘리고 재부팅하여 사용/제한 비율이 향상되는지 확인하세요.