freebsdファイルサーバーがあります
root@vstorage:~ # freebsd-version
11.1-RELEASE-p1
以下は、いくつかの追加情報です。
root@vstorage:~ # dmesg | grep CPU:
CPU: AMD Phenom(tm) 9750 Quad-Core Processor (2400.05-MHz K8-class CPU)
root@vstorage:~ # dmesg | grep memory
real memory = 8589934592 (8192 MB)
avail memory = 8001138688 (7630 MB)
Sambaクライアント:MacBook Pro - MacOS Sierra - 5ghz ACワイヤレスネットワークに接続します。ギガビットルーター(Netgear Nighthawk x4 r7500)に接続されたファイルサーバー
以前のUbuntuファイルサーバーを置き換えるためにこのファイルサーバーを構築しました(この問題はありませんでした)。
ハイパーバイザー(うまく機能)にNFS共有を提供し、MacにSamba共有を提供するようにしました。
samba46
ポートコレクションからインストールしました。これは私のsmb4.confです。
root@vstorage:~ # cat /usr/local/etc/smb4.conf
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
netbios name = vstorage
wins support = Yes
security = user
passdb backend = tdbsam
socket options = TCP_NODELAY IPTOS_LOWDELAY
read raw = yes
write raw = yes
[data]
path = /data
valid users = nullmeta
writable = yes
browsable = yes
read only = no
guest ok = no
public = no
create mask = 0775
directory mask = 0775
共有は、data
単一の3TB Western Digital赤ドライブを持つ名前付きZFSプールです。
root@vstorage:~ # zpool status
pool: data
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
ada1 ONLINE 0 0 0
errors: No known data errors
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
ada0p3 ONLINE 0 0 0
質問:
共有にうまく接続できます。しかし、何でも転送しようとすると、すべてのメモリを消費します。 2GBファイルを転送しながら実行してみると、top
メモリ使用量が増えることがわかりますが、制限を超えて470M
空きメモリが残っているようです。
top
3×2GBファイルを転送した後の様子です。
root@vstorage:~ # top
last pid: 23995; load averages: 0.30, 0.28, 0.25 up 0+00:40:35 19:56:12
33 processes: 1 running, 32 sleeping
CPU: 0.0% user, 0.0% nice, 0.1% system, 0.0% interrupt, 99.9% idle
Mem: 59M Active, 23M Inact, 6099M Wired, 1503M Free
ARC: 5674M Total, 17M MFU, 5610M MRU, 35K Anon, 14M Header, 32M Other
5512M Compressed, 5675M Uncompressed, 1.03:1 Ratio
Swap: 2048M Total, 2048M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
1122 root 1 20 0 228M 12544K select 1 0:00 0.07% nmbd
23994 root 1 20 0 20164K 2920K CPU3 3 0:00 0.04% top
338 root 1 20 0 9564K 4844K select 3 0:00 0.02% devd
411 root 1 20 0 10504K 1860K select 1 0:00 0.01% syslogd
734 jeff 1 20 0 85232K 5808K select 2 0:00 0.00% sshd
663 root 1 20 0 20640K 4600K select 1 0:00 0.00% sendmail
561 root 32 52 0 8332K 2112K rpcsvc 3 0:00 0.00% nfsd
1134 root 1 20 0 301M 17524K select 3 1:31 0.00% smbd
558 root 1 20 0 12548K 2760K select 0 0:00 0.00% mountd
786 root 1 20 0 19664K 3348K pause 3 0:00 0.00% csh
631 root 1 20 0 64540K 26268K select 0 0:00 0.00% perl
1128 root 1 20 0 297M 16852K select 2 0:00 0.00% smbd
543 root 1 20 0 10452K 1920K select 0 0:00 0.00% rpcbind
560 root 1 23 0 10380K 2956K select 3 0:00 0.00% nfsd
1130 root 2 20 0 297M 16196K select 3 0:00 0.00% smbd
全然知らないなぜ思い出をかき混ぜているんです。完全に活用すると、転送速度が非常に遅くなります。奇妙なことは、メモリも解放されないことです。共有接続を切断してSambaを再ロードしても効果はありません。メモリを回復する唯一の方法は、サーバーを再起動することです。これは、ストレージがオンラインになるまでハイパーバイザーを一時停止する必要があるため、非常に残念です。
Sambaの問題であることを知って再インストールし、ソケットオプション、読み取り/書き込み/生構成、ロギング無効を設定しました。しかし、これが私の問題ではないようです。転送中にSambaがメモリを占有する根本的な原因が見つからないようです。どんな洞察力でも大変感謝いたします。
編集する: 私はこれがサンバ問題ではなくZFS問題だと考え始めました。追加情報が見つかったら更新します。
ベストアンサー1
問題samba
はまったくありませんZFS arc cache
。
ZFSアークキャッシュは物理メモリを使用し、設定された制限がないため、ZFSはファイルを転送するときにすべてのシステムメモリをキャッシュとして使用します(一部30〜60 GBのファイルを含む一度に約200 GBのファイルを転送します)。この問題を解決するには、arc cache
使用できる最大メモリ量の制限を設定します。
ルートとして好むテキストエディタを使用して編集します。loader.conf
私はを使用します。nano
root@vstorage:~ # nano /boot/loader.conf
arc_max制限を設定するには、次の行を追加してください。
vfs.zfs.arc_max="1G"
これは、ZFSにアークキャッシュに最大1GBを使用するように指示します。
再起動後に問題が解決し、転送速度が一定で、すべてがスムーズに実行されました。