インストール、再起動などの過程でinodeが持続する必要があるアプリケーションがあります。を
使用してくださいmount -t cifs -o serverino
。 (サーバーがサポートしている場合)しかし、マウントすると、いくつかのランダムなファイルとディレクトリのセットには、クライアントによって生成された順次ID < 2^32があります。
、など、いくつかの組み合わせを試しましたが、-o nounix -o serverino -o mfsymlinks -o noacls
何も物事のランダム性を変えることができないようです。
2 ^ 32以上のinodeを返すたびに、複数のマウント試行(完全には確認されていません)で見た場合、特定のファイル/ディレクトリに対して一貫性があるように見えますが、比率は高いですが、任意のファイルセットには小さい値があります。リスト出力でinodeの数を単調に増加させます。
サーバーはWindows2012R2です。クライアントは最新のカーネルを備えたCentOSとUbuntu Linuxです。 1つは3.10.0、もう1つは4.4.0です。
このようにインストールするときに、UniqueIdまたはFileIDをクライアントにinodeとして返すようにクライアントまたはサーバー側で設定できるものはありますか?
(バージョン1、2.1、および3.0プロトコルで試行されました)
答え1
~によるとmount.cifs(8)
出荷書類ビーチ、このserverino
オプションを渡すと、サーバー側のinode番号付けが有効になりますが、サーバーが「CIFS UNIX拡張」を使用できる場合にのみ適用されます(「INODE NUMBERS」セクションを参照)。
Unix拡張が有効になっている場合、POSIX呼び出しに応答してサーバーによって提供された実際のinode番号がinode番号として使用されます。
Unix拡張が無効になっていて、マウントオプションが有効になっていると、
serverino
サーバーのinode番号を取得できません。クライアントは通常、サーバーによって割り当てられた "UniqueID
"をinode番号にマップします。UniqueIDの値はサーバーのinode番号と同じではありません。 UniqueID値はサーバー全体で一意であり、通常2の32平方より大きいです。この値は通常、大規模ファイルサポート(LFS)なしでコンパイルされたプログラムでglibc EOVERFLOWエラーを引き起こします。これは、ターゲット構造ドメインに合わないためです。
-D_FILE_OFFSET_BITS=64
この問題を回避するには、LFSサポート(たとえばuse)を使用してプログラムをコンパイルすることをお勧めします。 「noserverino」マウントオプションを使用して、クライアントで2未満の32平方を生成するinodeの数を生成することもできます。ただし、ハードリンクを正しく検出できない場合があります。
直接表現しないドキュメントからCONFIG_CIFS_POSIX
ただし、カーネル(カーネルオプション)で「CIFS POSIX拡張」を有効にする必要があるかもしれません。
Windows Server 2012 にはこれらの拡張機能がないため、次のものが必要になる場合があります。代わりにNFSサーバー機能を有効にしてください。そしてそれを使用してください。
しかし、cifs
これがこの動作を表す唯一のファイルシステムではありません。/sys
、/dev
および/proc
ファイルシステムもこの動作を示します。