いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.050 / 読者数:780名

こんばんは、うすだです。

よく、英語などの教材で、1日15分やるだけでいいんです! などと書いてあることがありますが、それがほんとうに簡単なことなら、 今ごろ英語がペラペラに喋れているように思います。

つまり、先々週購入した、『30日でできる!OS自作入門』を、 今週は全然読めなかったということです。…はい、たんなる言い訳です。
(いまだに、Hello, World の1行が表示されるだけ…静寂を感じます。)

しかし、継続的にナニかをするということは、なかなか難しいですね。
早起きも Oracle も Ruby on Rails も、見事に3日坊主で断念中です。
長期的な目標がなく、いきあたりばったりで行動してるからですね。
わたしももうすぐ36歳ですので、いい加減、目標を定めようと思います。

ひととおり反省したところで、今週も、はりきってまいりましょう!

今週のお題 - NFS でファイル共有する

最初は1台だけだったサーバも、時とともに台数が増えていき、 いつの間にやらサーバがたくさんになっていた、なんてことは、 どこの職場にもある話のように思います。

そのたくさんのマシンを、それぞれ独立して稼働させるのも一興ですが、 できることなら、お互い協調させた方が、システム全体で見たとき、 使い勝手がよりよくなっているんじゃないかと思います。

たとえば、ユーザのホームディレクトリや、お仕事に関するドキュメントなどは、 個々のマシンがそれぞれ別に持つよりも、1箇所にまとめて共有させた方が、 ユーザのみなさまにとっては、なにかと便利ですよね。
(ファイルを変更する度に、いちいち rsync するのは面倒くさいです。)

というわけで、今週は、NFS を使って、あるマシン(NFS サーバ)の、 あるディレクトリ以下を、 他のマシン(NFS クライアント)から参照できるようにしたいと思います。

おっと、その前に、NFS の説明がまだでしたね。

NFS は、Network File System の略で、UNIX 的な OS で一般的に使われている、 ファイル共有システムです。 (あの Sun Microsystems 社が開発しました。 Sun がその技術を公開したため、各社が NFS を実装し、一般的なものとなりました。)

NFS を使うと、別のマシン上にあるディレクトリを、 自分のモノのように扱うことができます。

…とまあ、あまり説明になっていない気もしますが、 百聞は一見にしかずだと思いますので、早速やってみようと思います。
手順は、以下のようになります。

  1. NFS サーバ上で、公開するディレクトリと、その範囲を記述する。
  2. NFS サーバ上で、NFS のデーモンを動かす。
  3. NFS クライアントが、そのディレクトリをマウントする。
  4. 設定の確認や変更を行う。

それぞれの詳細は、以下の通りです。

1. 公開するディレクトリと範囲の記述 (NFS サーバ)

/etc/exports というファイルに、淡々と記述します。
フォーマットは、以下の通りです。

  ディレクトリ名    クライアント名(オプション)...

ディレクトリ名には、公開するディレクトリを指定します。
クライアント名には、マウントを許すクライアントを指定します。 その方法はいくつかあります。ホスト名や IP アドレスによる指定のほか、

  *.in.usupi.org

のように、ワイルドカードを用いた指定や、

  192.168.1.0/255.255.255.0

のように、アドレスとネットマスクによる指定も可能です。 (この場合は、192.168.1.1〜254 が該当します。192.168.1.0/24 でも OK!)
オプションには、以下のようなものがあります。

ro
読み込みのみ許可します。
rw
読み込みだけでなく、書き込みも許可します。
async
即座に変更しません。パフォーマンスはよくなりますが、信頼性は劣ります。 sync を指定した場合は、その都度処理します。
デフォルトは sync ですが、 どちらかを指定しないと Warning が表示される場合があります。 (RedHat9 がそうでした。)
no_root_squash
NFS では、NFS クライアントの root からのアクセスは、 権限の低いユーザ(たいていは nobody)からのアクセスに変更されます。
このオプションを指定すると、root の権限のままになります。

たとえば、以下のように記述したとします。

  /export    ken(ro) joe(rw,no_root_squash)

この場合、/export を、以下のように公開しています。

  • ken に対しては、読み込みのみ許可する。
  • joe に対しては、書き込みも許可し、 さらに root からのアクセスを root のままして処理する。
  • その他のマシンからの要求は、拒否する。

2. NFS デーモンの起動 (NFS サーバ)

Fedora Core, RedHat や Vine などの場合、以下のように実行します。

  # /etc/init.d/nfslock start
  # /etc/init.d/nfs start

Debian 系の場合は、以下のように実行します。

  # /etc/init.d/nfs-common start
  # /etc/init.d/nfs-kernel-server start

nfsd とか rpc.mountd が動作していれば、OK です。

  # ps aux|grep nfsd
  root   11607  0.0  0.0     0    0 ?    SW   Mar17  0:23 [nfsd]
  root   11608  0.0  0.0     0    0 ?    SW   Mar17  0:18 [nfsd]
  ...
  # ps aux|grep mountd
  root   11623  0.0  0.2  1900  824 ?     S   Mar17  0:00 rpc.mountd

これを、OS 起動時に自動的に起動させたい場合は、もう少し作業が必要です。 その方法については、以下を参考にしてください。

Vol.031 - サービスを登録する
http://www.usupi.org/sysad/031.html

3. NFS マウント (NFS クライアント)

NFS サーバとディレクトリを指定して、mount コマンドを実行します。

  # mount サーバ:ディレクトリ  マウント先ディレクトリ

たとえば、condor の /export を /mnt/nfs にマウントする場合、 以下のように実行します。

  # mount condor:/export /mnt/nfs
  # ls /mnt/nfs
  ...

これを、OS 起動時に自動的にマウントしたい場合は…宿題にします。

4. 確認および設定変更 (NFS サーバ)

NFS サーバが許可している設定を確認するには、exportfs コマンドを、 -v オプションつきで実行します。(-v なしだとそっけないです。)

  # exportfs -v
  /export      ken(ro)
  /export      joe(rw,no_root_squash)

また、NFS の各種デーモンを起動してから、/etc/exports を変更した場合は、 exportfs コマンドを、-r オプションつきで実行します。
(でないと、設定が反映されません。)

  # exportfs -r

以上、NFS によるファイル共有の方法を、ご紹介しました。
なんだか、かけ足で走り抜けてしまったようにも思いますが、NFS サーバの設定と、 NFS クライアントからの NFS マウントが、できるようになったはず…です。

いきなりホームディレクトリを共有するぜ…など博打を打たないで、最初は、 ささいなところから試していっていただければと思います。

上記では、必要最小限のことしか触れていませんが、 /etc/exports の設定や exportfs のコマンドの使用方法には、 他にもいろいろあります。
できれば、man 5 exports とか、man exportfs を実行して、 マニュアルに目を通してみてください。

あ、来週も、NFS ネタが続く予定です。

宿題の答え

先週の宿題は、

  メールボックスをバックアップするスクリプトを作ってみましょう

でした。

ユーザ毎に、つまりファイル単位でバックアップするスクリプトの例は、 以下の通りです。

  #!/bin/sh
  MAILBOXDIR=/var/spool/mail  # メールボックスのディレクトリ
  BACKUPDIR=/work/mail        # バックアップ保存先ディレクトリ

  if [ $# -lt 1 ]; then       # 引数は最低1つ必要
      echo Usage $0 user...
      exit 1
  fi

  for user in $*; do          # 引数毎にバックアップを実施
      mailbox=$MAILBOXDIR/$user
      backup="$BACKUPDIR/$user-`date +%Y%m%d`"
      if [ -f $mailbox ]; then          # メールボックスの存在確認
          if [ -f ${backup}.gz ]; then
              rm -f ${backup}.gz        # 同名のバックアップの削除
          fi
          lockfile ${mailbox}.lock      # ロック
          cp -p $mailbox $backup
          rm -f ${mailbox}.lock         # ロック解除
          gzip -9 $backup
      else
          echo "$mailbox: no such file."
      fi
  done

このシェルスクリプトは、引数に指定されたユーザのメールボックスを、 /work/mail/ユーザ名-年月日.gz というファイル名で保存します。

つまり、このスクリプトが backup_mail.sh というファイル名であれば、

  # ./backup_mail.sh root test usu

と実行すると、root, test および usu ユーザのメールボックスが、 以下のようなファイル名でバックアップされます。

  /work/mail/root-20060319.gz
  /work/mail/test-20060319.gz
  /work/mail/usu-20060319.gz

ただし、懸念事項がいくつかあります。

まず、メールボックスの存在のチェックはしていますが、 lockfile〜gzip 間のエラーチェックを怠っています。 (エラーが発生しても、そのまま実行されていってしまいます。)
また、バックアップファイル自体にタイムスタンプが記録されていますので、 find を用いて古いバックアップファイルを消そうとすると、 最新のバックアップファイルも消してしまう恐れがあります。

…など、最後のツメは、各自で行っていただきたいと思います。(^ε^;
(もしリクエストがあれば、ちゃんとした版を作らせていただきます。)

今週の宿題

今週の宿題は、

  OS 起動時に、condor という NFS サーバの /export が、/mnt/export
  に NFS マウントされるよう、設定をしてみましょう

です。

/etc/fstab に、その旨を記述する必要があります。
なんのこっちゃ? と思われた貴兄は、来週までお待ちください。

あとがき

冒頭の続きです。

似たような話で、1日たったコーヒー1杯分というキャッチフレーズがあります。 一見安いように思ってしまいますが、1カ月に換算すると、 結構な値段になりますので、全然安くないと思ったりしています。

携帯の料金だって、1日だと、数百円です。(わたしの場合)
いや、1日数百円払うだけで、いろんなひとと、 場所にほとんど関係なく連絡しあうことができるというのは、 すごいことなのかもしれません。

いろんな料金を、日割で考えると面白いかもしれませんね。

…今週は、もう十分長くなってしまいましたので、 このあたりでおひらきにしたいと思います。(初の300行越えです。)

いや、今週も、2回に分けようかとも思ったのですが、 この内容をさらに分けてしまうと、実践ができないんですね。
しかし、わかりにくいのはよろしくないと思いますので、今後は、 実践を念頭におきつつ、できる限り簡潔に書けるよう、努力したいと思います。

というわけですので、今後とも、よろしくお願いいたします。

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

「いますぐ実践! Linux システム管理」の解除は、以下からどうぞ。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−栗の絵を、一日一枚、365日休まず描いています。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本