TIM Labs

mountしたNFSv4上のファイルに対してchownをした際の挙動

私は基本的にプログラマでインフラは専門ではありませんが、開発環境の構築など必要に応じてLinux/UNIXを触ることがあります。今回はその開発環境構築の際にはまったことを書いてみたいと思います。

構築内容は
  • Solaris10 が NFSv4のサーバとして、/export/home をexport
  • Debian6.0 がNFSv4クライアントとして、SolarisからexportされたディレクトリをNFSv4でマウント
という比較的シンプルなものです。
Solaris10とDebianの混成とちょっと変わっていますが、今までお客様の環境はSolaris10のみで構成されていたものを、今回一部Debianに置き換えるためにこのような構成に変更となりました。つまりこの構成は未検証というものです。

NFSは以前少しだけサーバ/クライアントともにCentOS5.xで構築したことがあり、最低限動かすだけならばそんなに難しいものではないと思っていました。ただ、今回は
  • サーバとクライアントでOSが異なる
  • そもそもDebianおよびSolaris、特にSolarisに不慣れ
  • /etc/passwd, /etc/shadow, /etc/group がLDAPを参照している
という点で不安要素がありました。

さて、実際にNFSのexport/mount を行ってみたところ問題が発生しました。
普通にNFSクライアントであるDebianから、Solarisのファイルの参照は問題なくできます。中身も見ることができます。が、なんとchownがうまくいかない現象に遭遇しました。今回環境移行とともに、既存のSolaris10で動いてた一部ツールをDebianに引越しますが、その中でchwonを実行している箇所があるため、これは問題です。ちなみにchwonを実行した際にエラー内容は

Invalid argument
です。このエラー内容には頭の中に「?」が浮かびました。実行したコマンドは

# chown [username]/[groupname] filename

で、LDAP経由で参照しているpasswd, group には存在しています。さて何が悪いのでしょうか?
この問題を解決してくれたのは同僚でした。ユーザ名、グループ名を引きに行く際、NFSv3とNFSv4とではプロトコルレイヤーで解決方法がことなることが原因ということでした。(参考のURLは失念してしまいました。すいません。)
ちなみに、そこのページにはNFSv4の仕様について記述があるのですが、「NFSは後方互換性はないよ!(超意訳)」とはっきり書かれていました。

では結局どうしたかというと、あえてNFSv4を使う必要がないためDebianでNFSをマウントする際に明示的にNFSv3のプロトコルを指定するようにしました。NFSv4とNFSv3で完全な互換性はないものの、NFSv4の実装はNFSv3の実装も持っているので大抵はこれで回避できます。
暫定ではありますがこれで問題解決。めでたしめでたし。

トラックバック(1)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/232

TY world (PukiWiki/TrackBack 0.4) - TopPage/Linux/NFS on OpenLDAP (2013年8月28日 12:00)

概要的な話 参考文献 環境 LDAPサーバ側準備 スキーマとldifファイルの準備 余談 /etc/openldap/sla... 続きを読む

コメントする

このブログ記事について

このページは、SHIMANE, Yoshikazuが2012年2月27日 10:26に書いたブログ記事です。

ひとつ前のブログ記事は「シンタックスハイライトを実装する(Ruby & Parslet 編)」です。

次のブログ記事は「Windows XP SP3 + .Net Framework 4.0の組み合わせではSHA256が使えない」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。