web-dev-qa-db-ja.com

NTFSドライブをNFS経由でutf8としてマウントする方法

質問

NFS共有(NTFS形式のファイルシステム)をutf8としてCentOS 6.5にマウントする方法

私が試したこと

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

問題:

Umlauts(äöü)を含むUNIXドライブにファイルを作成し、そのファイルをNFS共有にエクスポートすると、Windowsにbroken文字が表示されます(例:)壊れた文字は、ファイル名-コンテンツにはありません。

ロケール設定が間違っている可能性はありますか?
LC_* = "en_US.UTF-8"
また試しましたde_DE.UTF-8

ウムラウトのある共有のウィンドウでファイルを作成すると、UNIXでは?と表示されます。ロケール設定に問題があると思います。

デフォルトLC設定

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=

ロケール-a | grep de_DE

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

すべて試しました-改善なし。

7
Lucas

解決

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

私のWindowsサーバーはall NFSプロトコルを許可しますが、CentOSは4.1を選択しませんでした。 NFS 4.1では、ウムラウトの問題は解消されました。

5
Lucas

NFSバージョン4.1を使用してNTFSファイルシステムをマウントする @ Lucasの回答 は魔法のように思えるかもしれません。これが、この特定の問題を解決した理由です。 Network File System(NFS)Version 4 Minor Version 1 Protocol 、具体的には セクション14.4、UTF-8機能 と題されたIETF RFCに目を通した場合:

抜粋

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.

これは4.1で追加され、以前には存在していませんでした。少なくとも私がこの問題を研究しているところによると。

NFSサーバーを管理していて4.0を使用している場合、次のことを想定して4.1を使用することをお勧めします。

NFSバージョン4のマイナーバージョン1はNFSバージョン4のマイナーバージョン0に依存せず、別個のプロトコルと見なされます。したがって、このドキュメントは更新も廃止もありません RFC 35 。 NFSマイナーバージョン1は、機能を失うことなく、NFSマイナーバージョン0よりも優れていると見なされており、バージョン0よりも優先的に使用されます。NFSマイナーバージョン0と1は、同じクライアントとサーバー間の同じネットワークで同時に使用できます。

4
slm