Network File System(NFS)およびSMB/CIFSのファイル命名規則とファイル名の最大長は何ですか?
環境
- ONTAP 9
- CIFS\NFS
- ファイルパス\名前の最大長
回答
- ファイル名が切り捨てられる
- エラーメッセージ:
File not found
- 長いファイル名のファイルは開けません
- SMB経由でWindowsクライアントマシンから参照すると、ファイル名が8.3形式で表示される。
- UNIXユーザはNFSマウントポイント経由でファイルを保存。WindowsクライアントマシンからCIFS経由で参照する場合、ファイル名は8.3形式で表示される。
- NFSとCIFSの両方で使用されるファイルの命名規則
- ファイルの命名規則は、クライアントのオペレーティングシステムとファイル共有プロトコルの両方に依存します。たとえば、UNIXオペレーティングシステムを実行しているクライアントではファイル名は大文字と小文字が区別され、Windowsオペレーティングシステムを実行しているクライアントでは大文字と小文字が区別されません。
- ファイル名の最大長
- ストレージシステム上で、NFSクライアントおよびPCの長いファイル名形式をサポートするCIFSクライアントの場合、ファイル名の最大長は255文字です。
注: これは、最大ファイルパス長(CIFSの場合は32727、NFSの場合は4096)とは別です。
- MS-DOSクライアントやWindows 3.xクライアントなど、一部のCIFSクライアントは、8.3形式(ファイル名が8文字、ファイル名拡張子が3文字)のファイル名のみをサポートします。CIFSクライアントからアクセスされるディレクトリでは、ストレージシステムが元のロングネームと8.3形式の追加のショートネームという2つの名前を作成し、維持します。ストレージシステムは、次のように8.3形式の名前を生成します。
- ファイル名は6文字に切り詰められます。
tilde (~)
と数字または文字が名前に付加されます。類似した名前が多すぎて文字と数字が足りなくなった場合、元のファイル名とは関係のない一意のファイル名が作成されます。- ファイルの拡張子が3文字に短縮されます。
注: 短い名前に数字または文字を追加することで、ファイル名が一意になります。ファイルの作成順序を示すものではありません。
- たとえば、NFSクライアントが
specifications.html
という名前のファイルを作成した場合、storage systemによって作成される短縮名はspecif~0.htm
です。この短縮名がすでに存在する場合、storage systemはファイル名の末尾に別の番号を使用します。たとえば、UNIXクライアントが別のspecifications_new.html
という名前のファイルを作成した場合、specifications_new.html
の短縮バージョンはspecif~1.htm
です。 - 短縮名は8.3形式のみをサポートするクライアントに表示されます。短縮名はNFSクライアントには表示されません。Windows 95およびWindows NTクライアントでは、File Propertiesを使用して短縮名または長い名前を表示することができます。
注: 状況によっては、8.3形式の名前を使用するクライアントで実行されているアプリケーションが、ファイルの元の長い形式の名前をlose
取得できることがあります。これは、アプリケーションが編集したファイルを保存する方法の結果として発生することがあります。一部のアプリケーションは、元のファイルの名前を変更し、編集したファイルを新しく作成されたかのように保存します。その後、ファイラーは元のファイルを削除し、新しいファイルを作成するように指示を受け取ります。クライアントが8.3形式の名前のみをサポートしている場合、この新しい名前には長い形式での対応がなくなります。
- NetAppのDOSエミュレーションはWindows XPとは異なることに注意してください。NetAppの
dir/x
cmdは制限に達すると名前をランダム化しますが、XPディレクトリでは最初の2文字が残ります。制限は、8.3命名方式の最初の8文字に重複する文字セットを持つファイルまたはディレクトリが5つまでです。XPとNetAppの両方で、命名方式の~1
部分に関して最終更新日順にファイルに名前が付けられますが、NetAppでは5つの制限に達すると番号付けが削除されます。- Windows XP Professional(SP2)で表示:
C:test dir /x
のディレクトリ
04/24/2008 10:41 AM <DIR> .
04/24/2008 10:41 AM <DIR> ..
04/24/2008 10:41 AM <DIR> MS57C1~1 MSSDK_4_01
04/24/2008 10:41 AM <DIR> MS67C1~1 MSSDK_4_02
04/24/2008 10:41 AM <DIR> MS77C1~1 MSSDK_4_03
04/24/2008 10:41 AM <DIR> MSSDK_~4 MSSDK_4_04
04/24/2008 10:41 AM <DIR> MSSDK_~3 MSSDK_4_05
04/24/2008 10:41 AM <DIR> MSSDK_~2 MSSDK_4_06
04/24/2008 10:41 AM <DIR> MSSDK_~1 MSSDK_4_07
0 File(s) 0 bytes
9 Dir(s) 37,710,434,304 bytes free
- 同じことですが、NetApp上で:
Z:test dir /x
のディレクトリ
04/24/2008 10:39 AM <DIR> .
04/24/2008 10:38 AM <DIR> ..
04/24/2008 10:39 AM <DIR> MSSDK_~1 MSSDK_4_01
04/24/2008 10:39 AM <DIR> MSSDK_~2 MSSDK_4_02
04/24/2008 10:39 AM <DIR> MSSDK_~3 MSSDK_4_03
04/24/2008 10:39 AM <DIR> MSSDK_~4 MSSDK_4_04
04/24/2008 10:39 AM <DIR> MSSDK_~5 MSSDK_4_05
04/24/2008 10:39 AM <DIR> U9ORL00~ MSSDK_4_06
04/24/2008 10:39 AM <DIR> V9ORL00~ MSSDK_4_07
0 File(s) 0 bytes
9 Dir(s) 2,967,848,583,168 bytes free
- 不正な文字の代替表示の構成
- NFSで作成されたファイルに不正な文字が含まれている場合、文字マッピング を使用して変換テーブルを設定し、そのような文字をCIFSクライアントに別の表示で提示できます。クライアントには、見た目は異なりますが、完全な長いファイル名が表示されます。
注:ファイル名で使用されている、または使用されることが想定されている文字に不正な文字をマッピングしないことが重要です。たとえば、コロンをa-umlaut
にマッピングすると、CIFSクライアントによって生成されたファイル名のa-umlauts
がNFSクライアント用にはコロンに変換されます。
- 各ボリュームで異なる変換テーブルを使用でき、必要に応じて各ボリュームに設定する必要があります。このテーブルは、CIFSで使用できない文字のみを対象としています。
- 大文字小文字の衝突:
- 前述のように、Windowsシステムは大文字と小文字を区別しません。したがって、UNIXシステムは
test.txt
とTEST.txt
という2つのファイルを作成できますが、Windowsではそれらを区別できません。それを踏まえて、Filerは2番目以降の衝突するファイルにチルダ表記を作成します。それはtext.txt
とtext~1.txt
として表示されるはずです。
- 前述のように、Windowsシステムは大文字と小文字を区別しません。したがって、UNIXシステムは
注: Apple OS X 10.4 以前では、AFP を使用すると、Windows 共有、日本語文字、ファイル名の32文字制限にも制約が発生します。
- ONTAP で短縮名の検索を有効にする。
- デフォルトでは、CIFS SVM(vserver)はONTAP(cDOT、Clustered Data ONTAP)上で実行されている場合、8.3短縮名を検索する機能がありません。
- SVMでも短縮名を検索する必要がある場合は有効にできますが、パフォーマンスに影響を与える可能性もあります。 レガシーアプリケーションで必要な場合にのみ有効にしてください。
- 短縮名の検索を有効にするには、advanced権限レベルで次のコマンドを実行します。
::*> vserver cifs options modify -vserver <SVM name> -is-search-short-names-enabled true.