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

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

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

新たな年度を迎え、自分に求められていることが、 ぼんやりと見えてきたように思います。そして、 やるべきこともだんだん多くなってきました。

今まで通り的な、末端の技術者としてのお仕事だけでなく、マネージャ的なお仕事も、 不慣れとはいえ、求められるようになってきました。
(ところで、マネジャーなのかマネージャなのか、いまだに悩みます。)

ただ、シングルコアでかつ並列処理が苦手なので、種類が増えてくると、 あれもこれもと思うばかりで、どれも進まなくなってしまいます。

すでに今、やりかけて終わっていないことが、頭の中の FIFO に積まれていて、 どれからやればいいのか混乱しつつあります。

FIFO なんだから、先頭から処理すればよいのでは、 と自分にツッコミを入れたくなるのですが、やっている最中に他のことが気になって、 そっちをやりだしたりしてしまうんですよね。
(CPU性能が低いのに、クオンタムがやけに短いということでしょうか。)

ひとつに集中して、ひとつずつ作業を終わらせていくということを、 いい加減マスターしないといけない、と思う今日この頃です。

そう言いながら、ついさっきまで栗のネタを探していた自分がいますが、 後で反省することにして、今回もはりきってまいります。

今回のお題 - FS-Cache でNFSの読み込みを早くする

NFS でファイルシステムを共有していると、ただただ便利というわけではなく、 問題もそれなりに生じます。

その中でも地味に困るのが、パフォーマンスではないでしょうか。
使えてはいるんだけれど、大きなファイルをやりとりすると、 中途半端に待たないといけない、というケースがあるのではないかと思います。

そんなとき、ネットワーク帯域をよきように広げられるとよいのですが、 そんな恵まれた環境にいらっしゃらない貴兄も多いように思われます。

待っている間、コーヒーを入れたりトイレに行ったりタバコ部屋でほっと一息ついたり、 などの抜本的でない対策ですませられないという貴兄は、 「FS-Cache」というものを使うとよいようです。

というわけで、NFS を使われているところがどのくらいあるのか、 という一抹の不安を抱きつつ、今回は FS-Cache を軽くご紹介いたします。

FS-Cache とは?

FS-Cache は、 ネットワークファイルシステムのデータをキャッシュするためのものです。

Linuxカーネルのページキャッシュでも当然キャッシュされますが、 そのサイズには限度があります。FS-Cache を使うと、 ローカルのディスクにキャッシュされるため、もっとたくさんキャッシュできます。

FS-Cache の機構は、主にカーネル側で実現されますが、 バックエンドとして「cachefilesd」というデーモンも必要になります。

cachefilesd は、たいていのディストリビューションであればパッケージがあります。 ただ、おそらくデフォルトではインストールされないため、いつものごとく、 以下のようにインストールしてください。

  # yum install cachefilesd           (RedHat系の場合)
  $ sudo apt-get install cachefilesd  (Debian系の場合)

詳細については、cachefilesdのソースの howto.txt や、 カーネルソースの Documentation/filesystems/caching/fscache.txt あたりをさらっと見ていただければ、なんとなくわかると思います。
(howto.txt は、パッケージに含まれます。 dpkg -L や rpm -ql でありかをご確認くださいませ。)

cachefilesd を動かします

cachefilesd の設定ファイルは、「/etc/cachefilesd.conf」です。

1行に1つ、コマンド名と設定する値を羅列します。
さしあたって気をつけるべきコマンドが、「dir」です。
キャッシュを保存するパスを、以下のように指定します。

  dir /var/cache/fscache

dir で指定するパスは、既存のファイルシステムでも構いませんし、 高速のストレージにパーティションを用意してもよいです。

いずれにしましても、Ext4などのファイルシステムで、 「user_xattr」という拡張属性が必要になります。user_xattr が指定されるかどうかは、 tune2fs コマンドを実行すればわかります。たとえば、 /dev/sda5 の設定がどうか確認したければ、以下のように実行します。
(Ubuntu などをお使いの方は、sudo コマンド経由で実行してください。以降も、 プロンプトが「#」の場合は同様にお考えください。)

  # tune2fs -l /dev/sda5|grep user_xattr
  Default mount options:    user_xattr acl

こんな感じで、デフォルトのオプションに指定される設定になっているのであれば、 問題ありません。
そうでなければ、tune2fs コマンドで設定します。

  # tune2fs -o user_xattr /dev/sda5

すでにマウント中で、すぐ設定を反映したいなら、以下のようにします。

  # mount -o remount,user_xattr マウントポイント

というわけで、キャッシュするファイルシステムの用意ができましたら、 cachefilesd を実行しましょう。

  # service cachefilesd start

ちなみに、システム起動時に cachefilesd を自動起動させたい場合は、 以下を実行します。

  # chkconfig cachefilesd on               (RedHat系の場合)
  $ sudo update-rc.d cachefilesd defaults  (Debian系の場合)

後者の場合、 /etc/default/cachefilesd の RUN=yes のコメントを外して有効にする必要もあります。

さて、cachefilesd を起動できたら、対象のファイルシステムをマウントします。 いきなり FS-Cache の対象になるわけではなく、 「fsc」というオプションを指定してマウントする必要があります。

  # mount -o fsc NFSサーバ:/マウント元 /マウント先

そして、NFSマウントされた先を参照すると、

  # md5sum /マウント先/ファイル

/var/cache/fscache 以下に、キャッシュされたファイルができます。
(ちなみに、下記のキャッシュされたファイルのMD5値は、 上記のオリジナルのファイルのMD5値と一致しました。)

  # ls /var/cache/fscache/
  cache/     graveyard/
  # ls /var/cache/fscache/cache/@4a/I03nfs/...中略.../
  EA0g00sg0a...後略...

ただ、読み込んだファイルはキャッシュされますが、 書き込んだファイルはキャッシュされないようです。

  # umount /マウント先
  # mount -o fsc NFSサーバ:/マウント元 /マウント先
  # echo test > /マウント先/foo
  # ls /var/cache/fscache/cache/@4a/I03nfs/
  # 

一旦アンマウントしてキャッシュを消した後、 再度マウントしてファイルを作成してみましたが、 キャッシュファイルはありませんでした。

キャッシュの容量を制御できます

cachefilesd.conf に指定できるコマンドは、dir 以外にもあります。
「brun」「bcull」「bstop」「frun」「fcull」「fstop」などのコマンドがあり、 これらは、キャッシュを保存するファイルシステムの容量の制御に使います。 意味は以下の通りで、どれも 0〜100% の値を設定します。

  brun   空き容量がこれ以上なら、通常動作する
  bcull  空き容量がこれ以下なら、キャッシュを間引く(整理する)
  bstop  空き容量がこれ以下なら、新たにキャッシュしない

frun, fcull および fstopは、上記の空き容量をファイル数に置き換えたものです。

ずっとキャッシュし続けると、使用量が増えていき、 ファイルシステムがそのうちパンクしてしまいます。そのため、 ある程度空きがなくなると、古いキャッシュを捨てる処理(cull=間引く?)を行います。

オンラインマニュアル(man cachefilesd.conf)や howto.txt にも書いてありますが、 これらには以下の関係が成り立つ必要があります。

  違う名前で同じ意味を持つカーネルパラメータを探してみましょう。

でした。

歯切れの悪い結論から申しますと、おそらくありません。

カーネルソースの kernel/sysctl.c などを眺めますと、ctl_table構造体で、 パラメータ名やデータ、処理する関数を指定しています。
そして、sysctl コマンドや procfs から参照されたときに、その関数が呼ばれて、 処理するようになっています。

ですので、データや処理関数などが同じであれば、 異なるパラメータ名で同じ処理を行わせることはできます。
ただ、同じかどうか確認する仕組みがカーネルになく、 インタフェースも用意されていないため、地道に探す以外に方法はないと言えます。

ちなみに、前回出てきた net.ipv4.conf.インタフェース名.変数名 は、 net/ipv4/devinet.c あたりにあります。
devinet_init_net() で、all と default を登録しています。
実際の処理は、devinet_conf_proc() で行っていますが、 default のときに他のインタフェースへ反映など行っているようです。

今回の宿題

今回の宿題は、

  NFSマウント中にcachefilesdを停止・起動するとどうなるでしょうか。

です。

ファイルシステムに絡むものは、想定外のことが起こるといろいろ面倒なことになる、 という印象を持っています。

NFS サーバはちゃんと動いているけれど、こちら側の FS-Cache に問題がある場合、 どうなるのか、事前に確認しておく必要があると思い、宿題にしてみました。

あとがき

4月から、某大学のオープンカレッジとやらに、週1で参加しています。

自分で本を読んだりはしているものの、 基本的には技術屋としてゴリゴリやってきましたので、 ビジネスなスキルがすっぽり抜けているよなー、という自覚は、 以前から持っておりました。

それを解消するため、ビジネスな基礎講座的なものを受講しております。

基礎だからか、フレッシュなビジネスマンから、主婦、中間管理職っぽい中年の方、 頑固そうな高年の方まで、参加者は様々です。講義はもちろんですが、 参加者の方々の多彩な視点が見られるといいなあと、毎回楽しみにしているところです。

 

で、3回ほど講義を受けて、気づいたことがあります。

「マーケティング」という言葉も「プレゼンテーション」という言葉も、 今ではものすごく普通に、われわれは使っています。

ですが、講義では、いずれも、これらの意味が何で、 どういう目的があるのかというところから、はじまりました。

まず、講義でこれらの意味を最初に聞かれるのですが、 私も含めてみんな正しく答えられません。ですので、実はわかっていないのだ、 ということに気づかされます。

ごく当たり前のことと思っていたことが、実はそうじゃなかった、という経験は、 わたしにとって非常に新鮮でした。

 

そして、自分に対して、気づいてしまったことがあります。

今まで、興味のあることを、比較的手当たり次第に学ぼうとしては長続きしない、 という負のスパイラルを繰り返してきました。

難しかったとか、忙しいとか、興味がなくなったとか、 言い訳はいろいろ考えられますが、そうではなく、 意味や目的を理解しないまま飛びついていたことが原因だったのでは…ということに、 ようやく気づいたのです。

流行りや興味だけで決めるのではなく、今の自分を確認して、 将来のために必要な知識やスキルが何かを考えた上で、 適切なものだけに絞って学ぶべきだと、心の底から思います。

 

…と書くのは簡単ですが、自分の将来の望ましい姿がわかっていない私としましては、 選択肢をどう減らせばいいかという根本の問題が、 ドーンと目の前に立ちはだかっているところです…。

 

今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、6月2日(日) の未明にお会いしましょう!

 

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

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

「栗日記」- 惰性ではなく、能動的に栗を描きたい、今日この頃です。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)
http://twitter.com/kuriking/ (栗つぶやき)
http://facebook.com/kuriking3 (栗顔本)


[バックナンバーのトップへ] [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

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本