このトピックでは、Alibaba Cloud Linux 2 または Alibaba Cloud Linux 3 を実行している Elastic Compute Service (ECS) インスタンスにネットワーク ファイル システム (NFS) をマウントするときに発生する一般的なエラーと、それらのエラーの対処方法について説明します。
mount.nfs: command not found エラーメッセージが表示される
問題の説明
次の
mount.nfsコマンドの<server_ip>パラメーターを ECS インスタンスのパブリック IP アドレスに置き換え、コマンドを実行してインスタンスに NFS ファイルシステムをマウントします。sudo mount.nfs <server_ip>:/directory /mnt次のエラーメッセージが表示されます。
-bash: mount.nfs: command not found次の
mount -t nfsコマンドの<server_ip>パラメーターを ECS インスタンスのパブリック IP アドレスに置き換え、コマンドを実行してインスタンスに NFS ファイルシステムをマウントします。sudo mount -t nfs <server_ip>:/directory /mnt次のエラーメッセージが表示されます。
mount: /mnt: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.
原因
nfs-utils パッケージが存在しないか、必要な rpcbind コンポーネントがインストールされていません。
解決策
次のコマンドを実行して、
nfs-utilsパッケージとrpcbindコンポーネントをインストールします。sudo yum install -y nfs-utils rpcbind次のコマンドを実行して、
nfs-utilsパッケージとrpcbindコンポーネントがインストールされているかどうかを確認します。sudo yum list installed | grep nfs-utils次のコマンド出力は、
nfs-utilsパッケージとrpcbindコンポーネントがインストールされていることを示しています。
mount: /nfs/testdir: mount point does not exist エラーメッセージが表示される
問題の説明
次のコマンドの <server_ip> パラメーターを ECS インスタンスのパブリック IP アドレスに置き換え、コマンドを実行してインスタンスのマウントポイントに NFS ファイルシステムをマウントします。
sudo mount -t nfs -o vers=3 <server_ip>:/export/fs/dir /nfs/testdir次のエラーメッセージが表示されます。
mount: /nfs/testdir: mount point does not exist.原因
指定されたマウントポイントが ECS インスタンスに存在しません。
解決策
ECS インスタンスにマウントポイントを作成します。この例では、/nfs/testdir マウントポイントが作成されます。
sudo mkdir -p /nfs/testdir権限が不十分であることを示す「Operation not permitted」エラーメッセージが表示される
この問題は NFSv4 以降のファイルシステムでのみ発生する可能性があり、NFSv3 ファイルシステムでは発生しません。
問題の説明
NFS ファイルシステムを ECS インスタンスの root が所有するディレクトリにマウントした後、root としてインスタンスにログインしても、ディレクトリにファイルを作成できず、「Operation not permitted」エラーメッセージが表示されます。この例では、/nfs/testdir ディレクトリが使用されています。
次のコマンドを実行して、ECS インスタンスの
/nfs/testdirディレクトリにあるファイルとサブディレクトリのリストを表示します。cd /nfs/testdir & ls -lh次のコマンド出力が返されます。
total 20K drwxr-xr-x 2 root root 4.0K Sep 5 13:08 subdir drwx------ 2 root root 16K Sep 5 13:07 lost+found次のコマンドを実行して、/nfs/testdir ディレクトリのサブディレクトリに移動し、testfile という名前のファイルを作成します。この例では、subdir という名前のサブディレクトリが使用されています。
cd subdir & touch testfile次のエラーメッセージが表示されます。
touch: cannot touch 'testfile': Permission denied
原因
NFS サーバーの NFS ファイルシステムで no_root_squash オプションが無効になっています。subdir サブディレクトリの所有者とグループは root であり、これは NFS サーバーの root ユーザーを指します。 no_root_squash オプションが無効になっている場合、NFS クライアントの root ユーザーは NFS サーバーの匿名ユーザーにマップされます。その結果、root ユーザーは、NFS サーバーの NFS ファイルシステムで一般ユーザーがアクセスできるファイルのみを管理でき、スーパーユーザー権限が必要な操作を実行できません。 no_root_squash オプションが有効になっている場合、NFS クライアントの root ユーザーには、NFS サーバーの NFS ファイルシステムに対するすべての権限が付与されます。
解決策
次のコマンドを実行して、
/etc/exportsファイルを開きます。sudo vim /etc/exportsIキーを押して挿入モードに入り、次のコンテンツをファイルに追加します。/export/fs/vdc *(rw,no_subtree_check,no_root_squash)Escキーを押し、:wqと入力し、Enterキーを押してファイルを保存して閉じます。次のコマンドを実行して、NFS サーバーの NFS ファイルシステムのエクスポートリストを更新します。
sudo exportfs -r