今開発しているサービで、約100台位のサーバに対し/usrマウントを提供しているのNFSサーバがあります。参照専用とはいえ、100台位になってくるとそこそこのパフォーマンスが要求されますし、/usrという重要なポイントをマウントしているため冗長化も重要です、また台数が日に日に増えているためとスケールアウトも出来なくてはなりません。そこで、スケーラブルで障害に強い参照用NFSサーバを構築してみました。
(続きを読む…)
‘OS’ カテゴリーのアーカイブ
スケーラブルで堅牢な参照用NFSサーバのつくりかた
2011 年 11 月 10 日 by tumf — Cent, Linux, ネットワーク
OpenSSHのauthorized_keys2はもう古い
2010 年 12 月 8 日 by hnw — Linux, UNIX, ssh
お久しぶりです。ずいぶん記事を書くのをサボっていてごめんなさい。ディノでもAdvent Calendarやろうよ、なんて話もあったんですが、タイミングを逸した感がありますね。毎日とは言わなくても、またボチボチ書いていきたいと思います。
さて、今日は社内での雑談の話題から、「~/.ssh/authorized_keys2」ファイルはobsolete(古い、時代遅れ)だよ、という話題です。
SSH1とSSH2が混在していたころの習慣だと思うのですが、~/.ssh/authorized_keysにはSSH1の公開鍵を、~/.ssh/authorized_keys2にはSSH2の鍵を置くきまりだと聞いたことがあります。しかし、これはもはや正しくないようです。
OpenSSH3.0のリリースノートには下記のような記述があります。
2) The files
/etc/ssh_known_hosts2
~/.ssh/known_hosts2
~/.ssh/authorized_keys2
are now obsolete, you can use
/etc/ssh_known_hosts
~/.ssh/known_hosts
~/.ssh/authorized_keys
このように、~/.ssh/authorized_keysで一本化されています。
OpenSSH3.0は2001年にリリースされたようなので、なんと9年前からobsoleteなんですね。9年経った今でも使えるということは、今後も当分は利用可能ということかもしれません。
私も長いことauthorized_keys2を使っていましたが、最近少しずつリネームしています。そこまで頑張って直すような性質のものではないと思いますが、私のように知らずに使い続けている人もいるかと思って紹介してみました。
autotest で Symfony + Lime を自動テストする
2010 年 5 月 13 日 by sou — Mac OS X, PHP, 開発環境

ruby 界隈でよく使われている自動テストツール autotest の Symfony + Lime 用スタイルを書いて公開しました。
プロジェクトのローカルルールに合わせてあるのですが、軽く手を入れれば他のプロジェクトでも、また Symfony や PHP 以外でも使えると思います。
- TDD で書いていないと不安が高じて動悸と息切れが始まる
- red-green-refactoring を唱えなさいとじっちゃに言われた
- growl の red を見ないとコードが先に進まない
よくある話だと思います。
まずテストが無いと何も始まらない!書いたテストはがんがん自動実行して使い倒したい!
となるとやはり、自動テストの出番ですね。
続・$HOME/.ssh/configを活用していますか?
2009 年 5 月 28 日 by hnw — Linux, UNIX, ssh
以前の記事「$HOME/.ssh/configを活用していますか?」では、設定ファイルを少し頑張って書けば普段のSSHライフが随分変わりますよ、と紹介しました。今日はその続編です。前回よりマニアックな設定を紹介します。
lgrepコマンドで再帰的に日本語をファイル検索する
2009 年 5 月 18 日 by hnw — Linux, Mac OS X, UNIX, 文字エンコーディング
lgrepコマンドをご存知でしょうか。日本語対応ページャlvの付属品で、対象ファイルの文字コードを推定して日本語文字列をうまく見つけてくれるという、優れもののgrepです。
古いプロジェクトだと、プログラムはEUCだけど静的ファイルはSJIS、なんてことがあると思います。そんなときに大活躍です。
grepした結果の文字コード変換も勝手にやってくれるので、grep結果をnkfする必要もありません。至れり尽くせりですね。
そんなlgrepコマンドにも弱点があります。grepで言う-r(再帰的にファイルを検索)オプションが無いのです。どこに書いてあるかわからないエラーメッセージを探す、なんてときに-rは必須ですよね。無いなら作ってしまえ、ということで作ってみました。
alias lgrep-r="find . -type d -name .svn -prune -o -type f -print | xargs lgrep"
上記を.bashrcなり.zshrcなりに書けばlgrep-rコマンド(というかエイリアス)の出来上がりです。私は普段の便利さのために.svnディレクトリを無視するようにしてみましたが、環境に合わせて工夫してみてください。
思いつきで作ったんですが、これは便利!最近UTF-8のプロジェクトオンリーの恵まれた人はともかく、そうでない人にはオススメですよ。
cronでは「毎月第1月曜日に実行」ができない
2009 年 4 月 7 日 by hnw — Linux, UNIX, cron
社内の技術メモに「cronでは第1月曜日に実行などはできないので、実行されるスクリプト側で条件判定しないとダメ」というような記述がありました。一体どういうことでしょうか。
crontabの書式は「分 時 日 月 曜日 コマンド」です。また、数字はハイフンで範囲指定ができます。下記のように指定すれば毎月第1月曜日の午前3時にコマンドを実行できそうな気がします。
0 3 1-7 * 1 /path/to/command/execute-only-1st-monday
しかし、これは期待通りには動きません。「1日から7日までの期間の唯一の月曜日」を指定したつもりが、実際には「1日から7日のすべて、または日付に関係なく月曜日」と解釈されます。マニュアルにも書いてあるのですが、「日」と「曜日」が両方指定された場合、OR条件になるのです。
ネット上を探すと、これでハマって試行錯誤した人が複数いるようです。testコマンドとdateコマンドを使ってcrontabのコマンド指定部分で条件判定している人を見つけましたが、それは頑張り過ぎな気がします。趣味の問題ですけど、crontabはシンプルに保って呼び出される側で条件判定した方がいいんじゃないでしょうか。
cronでエラーメールの送り先を指定する方法
2009 年 3 月 30 日 by hnw — Linux, UNIX, cron
cronは良く使うツールの一つだと思いますが、何故かトラブルの思い出がつきまとうのは僕だけでしょうか。今日はそんなcronの便利な機能を一つ紹介します。
講習会「シェルスクリプト入門」を開催しました
2008 年 12 月 1 日 by hnw — Linux, UNIX, shell, workshop
「シェルスクリプト入門」というタイトルで社内勉強会を開催しました。社内でアンケートを取ってみたところ、シェルスクリプトに苦手意識を持っている人がいるようです。「いやいや、普段のコマンドラインと大差ないよ」ということを伝えたくて、簡単な講習をしてみました。これで苦手意識が無くなってくれればいいんですが。
まとめ
- if文がわかればシェルスクリプトは完璧(?)
- 条件式の評価には[コマンド(又はtestコマンド)
- 変数展開はクオーティングに注意
- 比較するときは”x$hogehoge”を使えば万全
- exit codeで他のコマンドと連携
- 0は正常終了、1〜255は異常終了
端末がグチャグチャになったときのためのコマンドjclearを作りました
2008 年 11 月 25 日 by hnw — Linux, Mac OS X, Perl, UNIX, shell
みなさん、もちろん端末エミュレータは大好きですよね。PuTTYとかTeraTermとか、MacならTerminal.appとかitermとか、生活の5割は端末エミュレータが相手ですよね(残りの5割はエディタが相手でしょう、きっと)。
ところで、たまに端末に変な文字をペーストしたり、何を血迷ったか「cat *」とかしてしまって、端末の画面制御が壊れてしまうことがありませんか?派手に壊れるときと、微妙に壊れるときと差はありますけど、何にせよこのまま作業し続けたらストレスがたまるぞ、という状態になってしまうことがあると思います。
中でも、X11のktermが特に壊れやすい気がします。ちょっと試してみたところ、バッチリ壊れてくれました。
姉妹サイト「ディノオープンディレクトリ」を公開しました。
2008 年 11 月 5 日 by arasho — Linux, ネットワーク
こんにちわ。サーバ・インフラ管理担当のarashoです。
この度姉妹サイト「ディノオープンディレクトリ」を公開しました。
(続きを読む…)
