web-dev-qa-db-ja.com

mount.cifs:マウントエラー(12):メモリを割り当てることができません

カーネルをアップグレードするときに少し前にこの問題が発生しましたが、今までアップグレードを延期しました。

私のシステムでは、カーネル3.7.10を実行しているCIFSを使用してネットワーク共有を楽しくマウントできます。 /etc/init.d/netmount startでそれらをマウントしようとします(私はGentooを実行しています):

# /etc/init.d/netmount restart
* Unmounting network filesystems  ...                                      [ ok ]
* Mounting network filesystems ...
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)   

手動でマウントしようとすると、同じエラーが発生します...

# mount -t cifs //Server/to_mount1 /mnt/network1 -o credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

マウントしようとしているネットワーク共有が3つあるため、エラーが3回発生します。これが/etc/fstabエントリです(カーネルバージョン間でまったく変更されていません)。

# Network drives
//Server/to_mount1/mnt/network1 cifs        credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline 0 0
//Server/to_mount2/another/dir /mnt/network2    cifs        credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline 0 0
//Server/to_mount3  /mnt/network3   cifs        credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline 0 0

周りを検索すると、この問題のかなり古い解決策が見つかりました。これには、変更を加えるためにWindowsサーバーにアクセスする必要があります。これについて詳しく説明します こちら

残念ながらこれは機能しており、Windowsサーバーにアクセスしてこれらの変更が違いを生むかどうかをテストできないだけでなく、onlyも発生しています新しい3.12.6カーネルでは、3.7.10カーネルで再起動でき、ネットワーク共有は問題なくマウントされています。

これにより、新しいカーネルに問題があると思うようになったので、3.7.10カーネル構成の両方でCIFSオプションを調べました。

# grep -i cifs /usr/src/linux-3.7.10-gentoo-r1/.config
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
# CONFIG_CIFS_STATS2 is not set
CONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_CIFS_UPCALL is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
CONFIG_CIFS_ACL=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
# CONFIG_CIFS_FSCACHE is not set

...そして3.12.6構成の下で:

# grep -i cifs /usr/src/linux-3.13.1-gentoo/.config
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
# CONFIG_CIFS_STATS2 is not set
CONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_CIFS_UPCALL is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
CONFIG_CIFS_ACL=y
CONFIG_CIFS_DEBUG=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
# CONFIG_CIFS_FSCACHE is not set

...そしてそれらは同じです(私は何も変更しなかったので、本当の驚きはありません!)。

何か問題が発生した場合に備えてnet-fs/cifs-utilsを再出現させましたが、違いはありませんでした。

提案されたソリューションをテストするためにWindows共有にアクセスせずにこれを回避できる方法はありますか(それが本当に根本的な原因である場合)、または問題を引き起こしている他の何かがありますか?

6
slackline

私は最終的にこれを解決しました。デフォルトの動作が変更されたため、解決策はmount.cifsに '' sec = ntlm ''オプションを追加することでした。から

man mount.cifs
...
The default in mainline kernel versions prior to v3.8 was sec=ntlm. In v3.8, the default was changed to sec=ntlmssp.
...

/ etc/fstabエントリは次のようになります...

# Network drives
//Server/to_mount1/mnt/network1 cifs     credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline, sec=ntlm 0 0
//Server/to_mount2/another/dir /mnt/network2    cifs        credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline,sec=ntlm 0 0
//Server/to_mount3  /mnt/network3   cifs        credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline,sec=ntlm 0 0
2
slackline

これに遭遇したとき、Windows 7で「サーバー」サービスを再起動したところ、マウントが機能しました。

4
Liam

Linux側に回避策があるかどうかはわかりませんが、Windows側の修正は確実に機能します。

Web上のほとんどの投稿では、2つのレジストリキーと再起動について言及しています。実際、Windows 7で必要なレジストリの変更は1つだけで、再起動は必要ありません。サービスの再起動のみ。

Windowsシステム管理者に相談してください。これをコピーしてコマンドプロンプトに貼り付けることができれば、うまくいくはずです。

reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v Size /t REG_DWORD /d 3 /f
sc stop  LanmanServer
sc start LanmanServer
4
mivk

Fstabでsec = ntlmを使用し、WindowsでLanmanServerサービスのSizeパラメーターを変更することの組み合わせにより、この問題が解決されます。

1
Asimov