FreeBSD:サンバはメモリを食べる

FreeBSD:サンバはメモリを食べる

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空きメモリが残っているようです。

top3×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を使用するように指示します。

再起動後に問題が解決し、転送速度が一定で、すべてがスムーズに実行されました。

おすすめ記事