Como montar uma unidade NTFS como utf8 sobre NFS

7

Pergunta

Como montar um compartilhamento nfs (sistema de arquivos formatado em NTFS) como utf8 in CentOS 6.5 ?

O que eu tentei

mount -o iocharset=utf8  
mount -o nfs=utf8  
mount -o utf8=1
mount -o utf8

Problema:

Quando eu crio um arquivo na minha unidade unix contendo umlauts (äöü) e exporto esse arquivo para o meu compartilhamento NFS, vejo caracteres quebrados no Windows (por exemplo, ). o nome do arquivo - não no conteúdo.

É possível que as configurações de localidade estejam incorretas?
LC_* = "en_US.UTF-8"
Tentei também de_DE.UTF-8

Quando eu crio um arquivo no windows no compartilhamento com umlauts, ele é exibido como ? no unix. Eu acho que há um problema com as configurações de localidade.

Configurações de LC padrão

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

locale -a | grep de_DE

de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8

Tentei tudo - sem melhora.

    
por Lucas 15.12.2013 / 08:21

2 respostas

5

Solução

mount 192.168.1.1:/SHARE share -o nolock,nfsvers=4.1

Meu Windows Server permite que todos os protocolos NFS sejam , o CentOS não selecionou 4.1. O NFS 4.1 não tem mais problemas com o umlauts como parece.

    
por 15.12.2013 / 10:01
4

Montar o sistema de arquivos NTFS usando o NFS versão 4.1, na resposta do @Lucas , pode parecer mágica, então aqui está por que isso resolveu esse problema específico. Se você olhar através do RFC do IETF intitulado: Protocolo do Sistema de Arquivo de Rede (NFS) Versão 4 Versão Menor 1 , especificamente seção 14.4, Recursos UTF-8 :

trecho

14.4.  UTF-8 Capabilities

   const FSCHARSET_CAP4_CONTAINS_NON_UTF8  = 0x1;
   const FSCHARSET_CAP4_ALLOWS_ONLY_UTF8   = 0x2;

   typedef uint32_t        fs_charset_cap4;

   Because some operating environments and file systems do not enforce
   character set encodings, NFSv4.1 supports the fs_charset_cap
   attribute (Section 5.8.2.11) that indicates to the client a file
   system's UTF-8 capabilities.  The attribute is an integer containing
   a pair of flags.  The first flag is FSCHARSET_CAP4_CONTAINS_NON_UTF8,
   which, if set to one, tells the client that the file system contains
   non-UTF-8 characters, and the server will not convert non-UTF
   characters to UTF-8 if the client reads a symlink or directory,
   neither will operations with component names or pathnames in the
   arguments convert the strings to UTF-8.  The second flag is
   FSCHARSET_CAP4_ALLOWS_ONLY_UTF8, which, if set to one, indicates that
   the server will accept (and generate) only UTF-8 characters on the
   file system.  If FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 is set to one,
   FSCHARSET_CAP4_CONTAINS_NON_UTF8 MUST be set to zero.
   FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 SHOULD always be set to one.

Isso foi adicionado em 4.1 e não existia antes. Pelo menos de acordo com a minha pesquisa desta questão.

Para aqueles que estão gerenciando servidores NFS e usam o 4.0, parece que você é incentivado a usar o 4.1, supondo que queira:

NFS version 4 minor version 1 has no dependencies on NFS version 4 minor version 0, and it is considered a separate protocol. Thus, this document neither updates nor obsoletes RFC 3530. NFS minor version 1 is deemed superior to NFS minor version 0 with no loss of functionality, and its use is preferred over version 0. Both NFS minor versions 0 and 1 can be used simultaneously on the same network, between the same client and server.

    
por 15.12.2013 / 15:18