ファイルシステム内のファイルにアクセスすると、ファイルシステム内のファイルが一定の制限の影響を受け、ファイル操作エラーが発生した場合、マウント対象が応答しなかった場合、およびアクセスが応答しなかった場合があります。 このトピックでは、一般的なファイル操作エラーの発生、ファイル所有者の一貫性の欠如、データの同期が取れず、アクセスが応答しないという問題に対する解決策を提供します。
クロスマウント互換性FAQ
SMBファイルシステムをLinuxにマウントする際の互換性の問題に関するFAQ
ファイルの読み取りと書き込みに関連するその他の問題に関するFAQ
2つのECSインスタンスでファイルをクエリするときに、NASファイルシステムのファイルが異なる所有者に属するのはなぜですか。
複数のプロセスまたはクライアントが同時にログファイルにデータを書き込むときに発生する可能性のある例外を防ぐにはどうすればよいですか?
NFSファイルシステムがマウントされているLinuxクライアントでlsコマンドを実行したときに523エラーが返された場合はどうすればよいですか?
LinuxでSMBファイルシステムにアクセスするときに発生する「Permission denied」エラーを修正するにはどうすればよいですか?
NASファイルシステムのディレクトリ内のファイルにアクセスしたときに次のエラーメッセージが返された場合はどうすればよいですか。NFSv4サーバーでconnをセッションにバインドできませんでしたか?
新しいNASファイルシステムをマウントした後でも、ポッドがマウントされていないNASファイルシステムにデータを書き込むのはなぜですか。
データがファイルシステムに書き込まれたときに「ディスククォータを超えました」というエラーメッセージが返されるのはなぜですか?
複数のクライアントが同時にサーバー上のファイルにアクセスしたときに、サーバーが35秒以内に応答しない場合はどうすればよいですか?
原因: 現在のサーバーメッセージブロック (SMB) プロトコルのカーネルドライバが期待どおりに動作しません。 SMBプロトコルのバージョンが2.1または3.0の場合、サーバーは35秒以内に応答しません。 この場合、クライアントはSMBブレーク確認パケットをサーバーに送信できません。
解決策1: Linux Elastic Compute Service (ECS) インスタンスにファイルシステムをマウントする場合、versパラメーターを2.0に設定します。
解決策2: 次の操作を実行します。
Common Internet File System (CIFS) モジュールが読み込まれている場合は、次のコマンドを実行してoplocks機能を無効にします。
# modprobe cifs enable_oplocks=0
CIFSモジュールが既にロードされている場合は、次のコマンドを実行してoplocks機能を無効にします。
# echo 0 > /sys/module/cifs/parameters/enable_opocks
次のコマンドを実行して、oplocks機能のステータスを確認します。
# cat /sys/module/cifs/parameters/enable_oplocks
コマンド出力では、Yは機能が有効であることを示します。 Nは、機能が無効であることを示します。
説明上記の変更を適用するには、SMBファイルシステムをアンマウントおよび再マウントします。
上記の変更を完全に適用するには、
/etc/modprobe.d/cifs.conf
ファイルを作成し、options cifs enable_oplocks=0
ステートメントをファイルに追加します。
シンボリックリンクを作成できないのはなぜですか?
原因
SMBファイルシステムをLinuxにマウントすると、mfsymlinksオプションが選択されていないか、プロトコルバージョンが2.0になります。
解決策
LinuxにSMBファイルシステムをマウントするときは、2.1または3.0プロトコルバージョンを使用し、mfsymlinksオプションを選択します。 次のサンプルmountコマンドは、mountパラメーターを示しています。 詳細については、「Linux ECSインスタンスへのSMBファイルシステムのマウント」をご参照ください。
sudo mount -t cifs //file-system-id.region.nas.aliyuncs.com/myshare /mnt -o vers=2.1,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576
SMBファイルシステムのマウントターゲットが応答しないのはなぜですか?
原因
Linuxディストリビューションのカーネルバージョンが3.10.0 514以前の場合、複数のクライアントが同時にファイルシステムにアクセスすると、SMBプロトコルのカーネルドライバが応答しないことがあります。 その結果、マウント対象にアクセスすることができなくなる。 カーネルログには次のレコードが含まれています。
...
[<ffffffffc03c9bc1>] cifs_oplock_break+0x1f1/0x270 [cifs]
[<ffffffff810a881a>] process_one_work+0x17a/0x440
[<ffffffff810a8d74>] rescuer_thread+0x294/0x3c0
...
解決策
ファイルシステムを再マウントするには、cacheパラメーターをnoneに設定します。 これは、ファイルシステムの性能に影響を及ぼし得る。
Linux ECSインスタンスのオペレーティングシステムをアップグレードします。
大きなファイルをコピーしたときに「cp: error writing '</path/to/file>': Bad file descriptor」というエラーメッセージが返された場合はどうすればよいですか?
原因
一時的な軽微な障害がネットワークまたはバックエンドで発生します。 SUSEなどの一部のLinuxディストリビューションのSMBクライアントは、機能が限られており、フェールオーバーをサポートしていない場合があります。
解決策
Apsara File Storage NAS (NAS) SMBでサポートされているLinuxバージョンを選択することを推奨します。 次の表に、NAS SMBでサポートされているLinuxバージョンを示します。
オペレーティングシステム | バージョン |
CentOS | CentOS 7.6 64ビット: 3.10.0-957.21.3.el7.x86_64以降 |
Alibaba Cloud Linux | Alibaba Cloud Linux 2.1903 64ビット: 4.19.43-13.2.al7.x86_64以降 |
Debian | Debian 9.10 64ビット: 4.9.0-9-amd64以降 |
Ubuntu | Ubuntu 18.04 64ビット: 4.15.0-52-generic以降 |
openSUSE | openSUSE 42.3 64ビット: 4.4.90-28-デフォルトおよびそれ以降 |
SUSE Linux | SUSE Linux Enterprise Server 12 SP2 64ビット: 4.4.74-92.35-デフォルトおよびそれ以降 |
CoreOS | CoreOS 2079.4.0 64ビット: 4.19.43-coreos以降 |
NASファイルシステムに書き込まれた漢字がクライアントに文字化けしたテキストで表示される場合はどうすればよいですか?
問題
LinuxまたはWindowsクライアント上のNASファイルシステムに漢字 (ファイルの名前またはコンテンツに含まれる) を書き込みます。 別のクライアントを使用してデータを読み取ると、漢字は文字化けしたテキストで表示されます。
原因
Windowsクライアントでは、漢字はデフォルトでGBK文字セットを使用してエンコードおよびデコードされます。 Linuxクライアントでは、漢字はデフォルトでUTF-8文字セットを使用してエンコードおよびデコードされます。 データがNASファイルシステムに書き込まれる前に、データはプラットフォームに対応する文字セットを使用してエンコードされます。 別のプラットフォームでデータを読み取る場合、GBK文字セットとUTF-8文字セットは互換性がないため、データをデコードできません。 その結果、漢字は文字化けテキストで表示されます。
解決策
互換性を確保するために、Windowsクライアントを使用してSMBファイルシステムをマウントし、Linuxクライアントを使用してNetwork file system (NFS) ファイルシステムをマウントすることをお勧めします。
WindowsにNFSファイルシステムをマウントするときに、ファイルを作成または開くのに時間がかかるのはなぜですか?
原因
WindowsにNFSファイルシステムをマウントすると、大文字と大文字と小文字を区別しない文字に関連する互換性の問題が発生する可能性があります。 ファイル作成のパフォーマンスは、ディレクトリの数とともに低下します。 これは、ファイルを作成するたびにディレクトリがトラバースされるためです。 ディレクトリの数が100,000に達すると、1つのディレクトリトラバーサルは10秒以上を必要とします。
解決策
-o casesensitive=yes
フィールドをマウントパラメーターに追加して、ディレクトリトラバーサルを防止します。 次のコマンドを実行して、ファイルシステムをマウントします。
mount -o nolock -o mtype=hard -o timeout=60 -o casesensitive=yes \\file-system-id.region.nas.aliyuncs.com\! Z:
マウント対象file-system-id.region.nas.aliyuncs.com
のドライブ文字Z
とドメイン名を、実際のドライブ文字とドメイン名に置き換える必要があります。
casesensitiveオプションは、Windowsのネイティブセマンティクスと競合します。 NFSディレクトリを使用する場合は、大文字と小文字の区別によって名前の競合が発生しないようにする必要があります。 たとえば、a.txtはA.TXTと競合します。 マウントパラメータを変更すると、不確実な影響が発生する可能性があります。 WindowsでSMBファイルシステムをマウントすることを推奨します。
WindowsクライアントのNFSファイルシステムでファイルの名前を変更したときに無効なデバイス
エラーが返された場合はどうすればよいですか?
ECSインスタンスのサブディレクトリにNFSファイルシステムをマウントすると、ファイルの名前を変更すると無効なデバイス
エラーメッセージが返されます。 このエラーを修正するには、ECSインスタンスのルートディレクトリにファイルシステムをマウントします。 詳細については、「手順2: 汎用NFSファイルシステムのマウント」をご参照ください。
NFSファイルシステムでファイルを作成する際の待ち時間を解決するにはどうすればよいですか?
発行
ECS-1によってabcファイルが作成されECS-2が、abcファイルを読み取るのに時間がかかります。 レイテンシの範囲は1秒から1分です。
原因
この問題は、予想時間Tを満たすルックアップキャッシュによって発生します。たとえば、ECS-2が作成される前にabcファイルにアクセスすると、ECS-1ファイルがECS-2上に存在しないという問題が発生します。 その結果、abcファイルが存在しないことを示すレコードがキャッシュされる。 FileAttrは時間T内に期限切れではありません。したがって、ECS-2が再びファイルにアクセスするとき、ECS-2がファイルにアクセスしたときに最初にキャッシュされたabcファイルが存在しないことを示すレコードにアクセスします。
解決策
ECS-1がファイルを作成した直後にファイルを読み取ることができるようにするには、次のいずれかのソリューションを使用しECS-2。
解決策1: 存在しないファイルがキャッシュされないように、ECS-2のネガティブルックアップキャッシュを無効にします。 この解決策は、最小のオーバーヘッドをもたらす。
ファイルシステムをマウントするときに、lookupcache=positive (デフォルト値: lookupcache=all) フィールドを追加します。 次のコマンドを実行して、ファイルシステムをマウントします。
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,lookupcache=positive file-system-id.region.nas.aliyuncs.com:/ /mnt
解決策2: ECS-2上のすべてのキャッシュを無効にします。 この解決策は、不十分な性能をもたらす。 ビジネス要件に基づいて適切なソリューションを選択します。
ファイルシステムをマウントするときにactimeo=0フィールドを追加します。 次のコマンドを実行して、ファイルシステムをマウントします。
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,actimeo=0 file-system-id.region.nas.aliyuncs.com:/ /mnt
NFSファイルシステムにデータを書き込む際の待ち時間を解決するにはどうすればよいですか?
発行
ECS-1はabcファイルを更新しました。 ただし、ECS-2がファイルをすぐに読み取る場合、ファイルの内容はまだ更新されません。
原因
次の2つの原因が関係しています。
原因1: ECS-1がabcファイルを書き込んだ後、ECS-1はすぐにコンテンツをフラッシュしません。 代わりに、コンテンツをページキャッシュにキャッシュし、アプリケーション層に依存してfsyncまたはclose操作を呼び出します。
原因2: ECS-2にファイルキャッシュが存在します。 したがって、ECS2は、サーバから最新のファイルコンテンツを直ちに取得することはできない。 たとえば、ECS-2はabcファイルを更新するときにデータをキャッシュしECS-1たとします。 その結果、キャッシュされたコンテンツは、ECS-2がファイルを読み取るときにも使用されます。
解決策
ECS-1がファイルを作成した直後にファイルを読み取ることができるようにするには、次のいずれかのソリューションを使用しECS-2。
解決策1: ファイルベースのclose-to-open (CTO) 整合性モデルを適用して、ECS-1またはECS-2の読み取りおよび書き込み操作がCTO整合性に準拠するようにします。 このようにして、ECS-2は間違いなく最新のデータを読むことができます。 具体的には、ECS-1はファイルを更新した後にcloseまたはfsync操作を実行します。 ECS-2は、ファイルを読み取る前にopen操作を実行します。
解決策2: ECS-1とECS-2のすべてのキャッシュを無効にします。 この解決策は、不十分な性能をもたらす。 ビジネス要件に基づいて適切なソリューションを選択します。
ECS-1のキャッシュを無効にします。 ファイルシステムをマウントするときに、noacフィールドを追加して、書き込まれたすべてのデータがすぐにディスクにフラッシュされるようにします。 次のコマンドを実行して、ファイルシステムをマウントします。
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,noac file-system-id.region.nas.aliyuncs.com:/ /mnt
説明ECS-1への書き込み操作が完了した後にfsync操作を呼び出す場合、またはデータを書き込むためにsync操作を呼び出す場合は、上記のコマンドの "noac" を "actimeo=0" に置き換えて、パフォーマンスをわずかに向上させます。
noacは、
actimeo=0
plus syncに相当します。 この場合、すべての書き込み操作はsyncを使用して強制的に実行されます。
ECS-2のキャッシュを無効にします。 ファイルシステムをマウントするときに、actimeo=0フィールドを追加して、すべてのキャッシュを省略します。 次のコマンドを実行して、ファイルシステムをマウントします。
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,actimeo=0 file-system-id.region.nas.aliyuncs.com:/ /mnt
2つのECSインスタンスでファイルをクエリするときに、NASファイルシステムのファイルが異なる所有者に属するのはなぜですか。
NASファイルシステムでは、ユーザーはユーザー名ではなくユーザー識別子 (UID) またはグループ識別子 (GID) によって識別されます。 ECSインスタンスで照会するファイルの所有者名は、UIDから変換されます。 UIDが異なるECSインスタンスで異なるユーザー名に変換された場合、UIDは各ECSインスタンスで異なる所有者として識別されます。
たとえば、ECSインスタンス1にadmin_on_machine1という名前のファイルを作成し、ECSインスタンス2にadmin_on_machine2という名前のファイルをadminユーザーとして作成します。 次の図に示すように、ECSインスタンス1でllコマンドを実行して、作成されたファイルを表示します。 次の図に示すように、ECSインスタンス2でllコマンドを実行して、作成されたファイルを表示します。 2つのECSインスタンスのクエリ結果は、同じファイルの所有者名が異なることを示しています。
2つのECSインスタンスでidコマンドを実行し、管理者ユーザーに関する情報を照会します。 次の図に示すように、ECSインスタンス1のadminユーザーのUIDは505です。 次の図に示すように、ECSインスタンス2の管理者ユーザーのUIDは2915です。 次の図に示すように、stat admin_on_machine1 admin_on_machine2
コマンドを実行します。 結果は、2つのファイルが2つの異なるUIDに属することを示しています。
複数のプロセスまたはクライアントが同時にログファイルにデータを書き込むときに発生する可能性のある例外を防ぐにはどうすればよいですか?
問題
NASでは、複数のクライアントが同じ名前空間内の異なるファイルにデータを書き込むことができます。 ただし、NFSはアトミックアペンドをサポートしません。 複数のプロセスまたはクライアントが同時に同じファイルにデータを書き込むと、上書き、クロスオーバー、およびコンテンツの乱れなどの例外が発生する可能性があります。 これは、各プロセスが独立してコンテキスト情報を保持するためです。 ファイルは、ログファイルとすることができる。 コンテキスト情報は、ファイル記述子および書き込み位置を含む。
解決策
(推奨) 同じファイルシステム内の異なるファイルにデータを書き込むように、異なるプロセスまたはクライアントを設定します。 データを分析または処理するときに、これらのファイルをマージできます。 このソリューションでは、ファイルロックを使用せずに、同時書き込み操作によって発生する問題を解決できます。 このソリューションはシステムパフォーマンスに影響しません。
群れとシーク関数を一緒に使用します。 これにより、書き込み操作の原子性と一貫性が保証されます。 しかし、この解決策は長い時間を要し、システム性能に大きな影響を与える可能性がある。 以下のステップは、この方法を説明する。
群れとシーク関数を一緒に使う
NFSはアトミックアペンドをサポートしません。 複数のクライアントがログなどの同じファイルにデータを追加すると、データエントリが互いに上書きされる可能性があります。 Linuxでは、flock関数とseek関数を一緒に使用して、NFSファイルシステムでアトミックな追加をシミュレートできます。 これにより、複数のプロセスが同時に同じファイルにデータを追加する場合にデータの一貫性が保証されます。
flock関数とseek関数を一緒に使用するには、次の手順を実行します。
fd=open(filename, O_WRONLY | O_APPEND | O_DIRECT) ステートメントを呼び出して、appendメソッドを使用してファイルを開きます。 このステートメントは、書き込みメソッドをO_DIRECTに設定し、ファイル記述子を取得するために使用されます。 O_DIRECTは書き込み専用メソッドを指定します。 この場合、ページキャッシュは使用されません。
flock(fd, LOCK_EX | LOCK_NB) 関数を呼び出してファイルロックを取得します。 関数がファイルロックの取得に失敗した場合、エラーメッセージが返されます。 失敗の原因は、ファイルロックが使用中であることが考えられます。 再試行するか、失敗のトラブルシューティングを行うことができます。
ファイルロックが取得されたら、lseek(fd, 0, SEEK_END) 関数を呼び出して、ファイル記述子の現在のファイルオフセットをファイルの最後に設定します。
ファイルの最後にデータを書き込みます。 ファイルロックは、データエントリが互いに上書きされないようにするために使用されます。
データがファイルに書き込まれたら、flock(fd, LOCK_UN) 関数を呼び出してファイルロックを解除します。
NFSファイルシステムがマウントされているLinuxクライアントでls
コマンドを実行したときに523
エラーが返された場合はどうすればよいですか?
問題
NFSファイルシステムがマウントされているLinuxクライアントでls
コマンドを実行すると、次のエラーメッセージが返されます。
原因
複数の名前変更
操作が同時に実行されたときに、ファイルシステムのディレクトリでls
コマンドを実行すると、523
エラーが発生します。
解決策
しばらくしてからもう一度お試しください。 エラーが解決しない場合は、NASテクニカルサポートにお問い合わせください。
SMB ファイルシステムをマウントできないのはなぜですか。
問題
net useコマンドは、SMBファイルシステムをマウントするために使用されます。 誤ってコマンドを使用してNFSファイルシステムをマウントした場合、コマンドを使用してSMBファイルシステムをマウントできなくなります。
解決策
ファイルシステムのプロトコルが SMB であることを確認してください。 その後、マウント操作を停止し、5分後にファイルシステムを再度マウントします。 問題が解決しない場合は、NASテクニカルサポートにお問い合わせください。
マウントされたSMBディレクトリが管理者だけに表示されるのはなぜですか?
Windowsユーザーアカウントは互いに分離されています。 たとえば、ユーザーAとしてWindowsにログオンした場合、ユーザーBとしてマウントしたディレクトリを表示できません。
複数のユーザーにデータの共有を許可する場合は、共有ディレクトリを作成します。 たとえば、次のコマンドを実行して、Cドライブにmyshareという名前の共有ディレクトリを作成できます。
mklink /D C:\myshare \\xxxxxxx-xxxx.cn-beijing.nas.aliyuncs.com\myshare\
LinuxにマウントされているSMBファイルシステムのパフォーマンスを向上させるにはどうすればよいですか?
SMBファイルシステムのパフォーマンスが要件を満たしていない場合は、次のいずれかの原因に基づいてパフォーマンスを改善できます。
原因1: SMBファイルシステムのスループットは、SMBファイルシステムのストレージ容量によって異なります。 SMBファイルシステムの最大読み取りおよび書き込みスループットは、ファイルシステムの容量と線形関係にあります。
解決策: fioツールを使用して、SMBファイルシステムのパフォーマンスをテストします。 詳細については、「NASファイルシステムのパフォーマンスのテスト」をご参照ください。
原因2: Linux ECSインスタンスの帯域幅が低い。
解決策: 複数のLinux ECSインスタンスを使用して、ファイルシステムが期待されるパフォーマンスを提供できることを確認します。
原因3: SMBクライアントのキャッシュが無効になっています。
解決策: cacheパラメーターがstrictに設定されている場合、キャッシュは有効になります。 cacheパラメーターがnoneに設定されている場合、キャッシュは無効になります。 デフォルトでは、SMBクライアントのキャッシュが有効になっています。
sudo mount | grep cifs
コマンドを実行して、cacheパラメーターの値を確認できます。原因4: SMBクライアントのI/Oサイズがビジネス要件を満たしていない。
解決策: ビジネス要件に基づいて、rsizeおよびwsizeパラメーターを設定します。 2つのパラメーターのデフォルト値は1048576です。
原因5: Linux ECSインスタンスが低仕様のCPUまたはメモリを使用しているか、ほとんどのCPUまたはメモリリソースが他のプロセスによって占有されています。
ソリューション: ビジネス要件に基づいて、Linux ECSインスタンスのCPUとメモリの仕様を指定します。 これにより、ファイルシステムが期待どおりに機能します。
top
コマンドを実行して、CPU使用率とメモリ使用率を確認できます。原因6: atimeパラメーターは、ファイルシステムをマウントするときに設定されます。
解決策: ビジネスで高速ファイルアクセスが必要ない場合は、atimeパラメーターを設定しないでください。
原因7: Linux ECSインスタンス上のApache HTTP serverなどのwebサーバーが、いくつかの書き込み要求を処理します。 これらの要求には、多数の小さなファイルに対する通知と頻繁な読み取り操作が必要です。
解決策: Linux ECSインスタンス上のwebサーバーのキャッシュメカニズムを設定します。 Alibaba Cloudに連絡して、webサーバーのアクセラレーション機能を有効にすることもできます。
Linux上のSMBファイルシステムにアクセスするときに発生するPermission deniedエラーを修正するにはどうすればよいですか?
原因: ファイルシステムをマウントしたときに、uid、gid、file_mode、またはdir_modeパラメーターに無効な値を指定しました。
解決策: uid、gid、file_mode、およびdir_modeパラメーターに指定された値が有効であることを確認します。 詳細については、「SMB ファイルシステムのマウント」をご参照ください。
大文字小文字を変更してSMBファイルシステムのファイルの名前を変更するにはどうすればよいですか?
SMBファイルシステムのファイル名は大文字と小文字を区別しません。 これはWindowsシステムにも当てはまります。 小文字のみを変更して、SMBファイルシステムのファイル名を変更することはできません。
ただし、ファイル名を異なる文字を含む別の名前に変更することはできます。 次に、ファイル名を元の名前に変更し、別の大文字小文字を付けることができます。
ファイルの所有者とファイルまたはディレクトリのアクセスモードを変更できないのはなぜですか?
ファイルシステムをマウントする場合にのみ、ファイルの所有者とファイルシステム内のファイルまたはディレクトリのアクセスモードを指定できます。 詳細については、「SMB ファイルシステムのマウント」をご参照ください。
名前のサフィックスが付いているファイルはどのように. nfs生成されましたか? ファイルを削除するにはどうすればよいですか?
アプリケーションで使用されているファイルを削除すると、名前の末尾が. nfs
が生成されます。 ファイルを使用するプロセスが終了すると、一時ファイルは自動的に削除されます。
NASファイルシステムのディレクトリにあるファイルにアクセスすると、次のエラーメッセージが返された場合はどうすればよいですか。bind conn to session failed on NFSv4 server?
原因
NFSv4.1プロトコルを使用してファイルシステムをマウントしたため、エラーメッセージが返されます。 NASはこのプロトコルをサポートしていません。
解決策
NFSv3.0またはNFSv4.0プロトコルを使用して、ビジネス要件に基づいてファイルシステムを再マウントします。 詳細については、「使用状況のメモ」をご参照ください。
複数のECSインスタンスにNFSファイルシステムをマウントするときにデータが同期されない場合はどうすればよいですか。
問題
複数のクライアントを使用して、複数のマウント対象があるNASファイルシステムのリアルタイム同期を実行すると、高いレイテンシが発生します。
原因
デフォルトでは、オペレーティングシステムのカーネルはファイルとディレクトリのプロパティを保持し、メタデータキャッシュを生成して、NFSPROC_GETATTRリモートプロシージャを呼び出す必要性を減らします。
解決策
次のmountコマンドを実行して、ファイルおよびディレクトリ属性のキャッシュを無効にします。
mount -t nfs4 -o noac file-system-id.region.nas.aliyuncs.com:/ /mnt
上記のコマンドでは、file-system-id.region.nas.aliyuncs.com
はNASファイルシステムのマウントターゲットのドメイン名を指定し、/mnt
は現在のECSインスタンスに存在するローカルディレクトリを指定します。 値を実際の値に置き換える必要があります。
新しいNASファイルシステムをマウントした後でも、ポッドがマウントされていないNASファイルシステムにデータを書き込むのはなぜですか。
原因
ECSインスタンスにNASファイルシステムをマウントし、ローカルボリューム (HostPath) マッピング方法を使用してNASファイルシステムのマウントディレクトリをコンテナーにマッピングすると、コンテナーのマウント情報はECSインスタンスのマウント情報とは無関係になります。 ECSインスタンスからマウントディレクトリをデタッチするか、ECSインスタンスに新しいNASファイルシステムをマウントすると、起動されたコンテナーは起動時にマウントされたNASファイルシステムを使用します。
解決策
ECSインスタンスに新しいNASファイルシステムを再マウントします。 次に、ポッドを再起動します。
サーバーの再起動または停止後にNASファイルシステムのファイルを表示できないのはなぜですか?
ファイルシステムがまだ存在する場合、一般的な原因は、NASファイルシステムの自動マウントがサーバーで構成されていないことです。
この場合は、NASファイルシステムを手動で再度マウントしてください。 詳細については、「使用状況のメモ」をご参照ください。
再起動時にNASファイルシステムの自動マウントを有効にする方法の詳細については、以下のトピックを参照してください。
SMBファイルシステムをLinuxにマウントするとき、ファイルの移行または複製に時間がかかるのはなぜですか?
ファイルシステムのパフォーマンスを確認します。 ファイルシステムのパフォーマンスが要件を満たしている場合、考えられる原因は、ファイルが同時に移行または複製されないことです。 次のオープンソースツールを使用して、ファイルを移行または複製できます。
データがファイルシステムに書き込まれたときに「ディスククォータを超えました」というエラーメッセージが返されるのはなぜですか?
原因
ディレクトリ内のファイルのサイズまたは数が、指定されたユーザークォータを超えています。 その結果、ファイルサイズの増加、ファイルまたはディレクトリの作成、ファイルの別のディレクトリへの移動などの書き込み操作が失敗します。
[ディスククォータを超えた]
エラーメッセージが返されます。解決策
できるだけ早い機会にデータを消去してスペースを解放するか、ディレクトリクォータの容量制限を増やすことをお勧めします。 詳細については、「ユーザーに割り当てられているディレクトリクォータの変更」をご参照ください。
データをクリアした後、クォータで設定されたディレクトリに対してテスト書き込み操作を実行することをお勧めします。たとえば、データの作成とテストファイルへの書き込み、クォータキャッシュの非同期リフレッシュをトリガーします。 次に、テスト書き込み操作が成功した後、サービスを再起動します。
NFSファイルシステムにアクセスする権限がない場合はどうすればよいですか?
次の手順を実行して、AnonymousGIDおよびAnonymousUIDレジストリキーを設定できます。
ファイルシステムがマウントされているECSインスタンスにログインします。
コマンドプロンプトを開き、
regedit
コマンドを実行して [レジストリエディター] ウィンドウを開きます。選択 .
空白領域を右クリックし、 を選択し、次のレジストリキーを作成します。
AnonymousGID: キーの値を0に設定します。
AnonymousUID: キーの値を0に設定します。
ECSインスタンスを再起動します。
次のコマンドを実行して、NFSファイルシステムを再マウントします。
mount -o nolock -o mtype=hard -o timeout=60 \\file-system-id.region.nas.aliyuncs.com\! Z:
ドライブ文字
Z:
とドメイン名file-system-id.region.nas.aliyuncs.com
を実際のドライブ文字とドメイン名に置き換える必要があります。マウント
コマンドを実行して、マウントが成功したかどうかを確認します。コマンド出力が次の情報と同様で、mount=hard、locking=no、timeout=<10以上の値> を含む場合、NFSファイルシステムがマウントされます。 そうしないと、NFSファイルシステムのマウントに失敗します。
chownコマンドを実行して、NASファイルシステムのルートディレクトリの権限を変更できますか?
いいえ。NASファイルシステムのルートディレクトリの権限を変更することはできません。
NASファイルシステムがマウントされているローカルディレクトリの権限を管理するには、サブディレクトリを使用してファイルシステムをマウントします。 たとえば、NASファイルシステムのルートディレクトリをローカルの /data
ディレクトリにマウントする場合、chown
コマンドを実行して /data
ディレクトリの所有者とグループを変更することはできません。 NASファイルシステムのサブディレクトリをローカル /data
ディレクトリにマウントする場合、chown
コマンドを実行して /data
ディレクトリの所有者とグループを変更できます。 事前にサブディレクトリを作成する必要があります。 ファイルシステムのサブディレクトリを作成する前に、NASファイルシステムのルートディレクトリをマウントする必要があります。 NASファイルシステムのサブディレクトリを作成およびマウントする方法の詳細については、LinuxでNASファイルシステムのサブディレクトリを作成してマウントするにはどうすればよいですか?