mount.cifs: erro de montagem (12): Não é possível alocar memória

5

Eu encontrei este problema há um tempo atrás quando atualizei meu kernel mas adiei a atualização até agora.

No meu sistema, posso montar facilmente compartilhamentos de rede usando o CIFS executando o kernel 3.7.10, no entanto, quando experimentei novos kernels (atualmente tentando com o 3.13.1, mas tenho tentado desde 3.12.6), recebo o seguinte erros quando tento montá-los com /etc/init.d/netmount start (estou executando o 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)   

A tentativa de montar manualmente resulta no mesmo erro ...

# 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)

O erro ocorre três vezes, já que tenho três compartilhamentos de rede que estou tentando montar, aqui estão minhas /etc/fstab entradas (que são completamente inalteradas entre as versões do kernel):

# 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

Pesquisando por aí, encontrei uma solução bastante antiga para este problema, que requer acesso ao servidor Windows para fazer algumas modificações, isso é detalhado aqui .

Infelizmente isso está funcionando e não só eu não tenho acesso ao servidor Windows para testar se essas mudanças farão alguma diferença, mas também o seu somente acontecendo com o kernel 3.12.6 mais novo, Eu posso reiniciar no kernel 3.7.10 e os compartilhamentos de rede são montados sem nenhum problema.

Isso me leva a pensar que há um problema com o kernel mais novo, então eu olhei as opções do CIFS sob a configuração do kernel 3.7.10:

# 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

... e sob a configuração 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

... e eles são os mesmos (não há uma surpresa real desde que eu não mudei nada!).

Eu ressurgi net-fs/cifs-utils apenas no caso de haver algo errado lá, mas não fez diferença.

Existe uma maneira de contornar isso sem ter acesso ao compartilhamento do Windows para testar a solução sugerida (se essa é realmente a causa subjacente) ou há algo mais que esteja causando o problema?

    
por slackline 02.01.2014 / 12:35

4 respostas

2

Eu finalmente resolvi isso, a solução foi adicionar a opção '' sec = ntlm '' para mount.cifs porque o comportamento padrão foi alterado. De

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.
...

Então, minhas entradas do / etc / fstab agora se parecem com ...

# 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
    
por 20.05.2014 / 16:52
4

Não tenho certeza se há uma solução alternativa no lado do Linux, mas a correção no lado do Windows definitivamente funciona.

A maioria das postagens na web menciona 2 chaves de registro e uma reinicialização. Na verdade, apenas uma alteração no registro é necessária no Windows 7 e não há reinicialização. Apenas uma reinicialização de serviço.

Fale com o seu administrador de sistema do Windows. Se você conseguir que ele copie / cole isso em um prompt de comando, isso deve funcionar:

reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v Size /t REG_DWORD /d 3 /f
sc stop  LanmanServer
sc start LanmanServer
    
por 01.02.2014 / 19:39
4

Quando eu encontrei isso, eu apenas reiniciei o serviço 'Server' no Windows 7 e, em seguida, a montagem funcionou.

    
por 04.02.2014 / 16:42
2

Uma combinação de usar sec = ntlm no fstab e alterar o parâmetro Size do serviço LanmanServer no Windows resolve esse problema.

    
por 01.01.2017 / 16:10