Home > 自宅サーバー

自宅サーバー Archive

ASUS P5B-VM+CentOS5 環境にNICドライバ(Realtek)をインストール

Shuttle X27にNICドライバをインストールしたときもそうですが、NICって確実に必要な割に、標準のドライバじゃ認識してくれないことが結構ありますよね。ということで、今度は少し古いマザーボード ASUS P5B-VMですが、最近CentOSの検証機に使ったときに、また若干いじらんと正常にインストールできないというケースがあったので、メモ書き・同じNIC使ってる人向けに書いておきます。

参考にしたのはほとんどこちら:パソコンいろいろ:ASUS P5B-VMのNIC(r1000)ドライバのlinux用インストールについて。

症状としては、READMEでは公式サイトから落としてきた(またはドライバCDの)Linux用NICドライバをmakeするのですが、コンパイルエラーが出てmakeできない、というものです。環境はCentOS5、パッケージはX無しで開発関係と開発ライブラリなど最低限のものが入っている程度なので、一般的な環境であれば大抵問題ないと思います。

1.本家からNICの最新ドライバをマウントできるデバイスにDLしておく
2.マウントして適当な場所に置いて解凍
3.解凍したディレクトリ内の src/r1000_n.c をエディタで開く
4.MODULE_PARMを先頭から検索し、MODULE_PARM_DESCに書き換える
5.あとはREADME通りに make clean modules → make install → depmod -a して再起動
6.NICが認識されているのを確認したら、必要なネットワーク設定を。

あとAtom機のNICでも起きてるみたいですが、カーネルいじる系のNICドライバは、yumなどで新しいカーネルにアップデートされるとインストール前の状態に戻ってしまうことがあります(だっていじってないカーネルに変わったわけだし)。そういう場合はカーネルを入れ替える度にインストールが必要になる場合があります。

基本ですが、こういう場合(でなくてもmake removeとかmake uninstallする場合などに必要だけど)に備えて、インストールが終わった後のファイルは消さずにそのまま置いておきましょう。/homeや/tmp以下にディレクトリを作ってもいいですが、自分は先輩に倣ってなんとなく/usr/local/src以下にインストールソースを置いておくようにしています。

CentOS 5 + Xenによる仮想化

Akismetプラグイン(SPAMコメントをキャッチしてくれる)のアップデート後挙動がおかしいので、とりあえず無効化しつつ、一部承認制にしてあります。コメントやTBがすぐに表示されないかも知れませんが、ご了承ください。

さて、余ってたPCがもったいないのでXenによる仮想化の検証環境に。

環境:
ASUS P5B-VM(※標準でCentOS5ではNIC認識してくれなかったので要ドライバ)
Intel Core 2 Duo E6300

RAM 2GB(DDR2 800 Dual-Channel)
HDD 250GB HDD * 2 (7200rpm)

OS(ホスト、ゲスト共)CentOS5.2
Xen3.3

・Intel VTかAMD-V対応CPUでないと動作しません。
・ホストOSは、CentOS4.5以降が今回の手順をサポートしているようです。
CentOS4.5より前のバージョンでは、別途ZopeInterface、Twisted、TwistedWebのインストールが必要など、手順が異なります。

◆ホストOSインストール
CentOSを通常インストールします。パッケージは開発ツールのみ選択して、他はすべてチェックを外してOK。

インストールが完了したら、yum update でパッケージ類を最新に。ついでにリソースの無駄になる不要なサービスを停止しておきます。「Linux 不要 サービス 停止」などで検索すると、参考になるサイトがたくさん出てきます。
◆ホストOS設定
必要なパッケージをインストール。

# yum groupinstall Virtualization

Xenカーネルを読み込むように一部設定を変更。

# vi /etc/modprobe.conf
(中略)
alias scsi_hostadapter xenblk ←この行を追加

# vi /etc/sysconfig/kernel
#DEFAULTKERNEL=kernel ←この行をコメントアウトか消して…
DEFAULTKERNEL=kernel-xen ←この行を追加

# vi /boot/grub/menu.lst
#default=1 ←この行をコメントアウトか消して…
default=0 ←読み込むカーネルを指定。ここまで手順通りにしていれば0かと

再起動して有効化。

# shutdown -r now

起動したら、

# uname -r

でカーネルにxenがついていればXenカーネルが読み込まれています。また、

# xm list

でDomain-0(ホストOS)がリスティングされているのを確認できます。
これらの結果がうまくいかない場合は設定の見直しを。

以降、ゲストOSの管理や複製、状況確認など、多くの操作をxmコマンドで行っていくことになります。

◆ゲストOSインストール

# virt-install

で対話式にゲストOSの設定等を聞かれます。聞かれる順番は、
ゲストOS名→最高割り当てメモリ(MB単位)→ゲストOSイメージ保存場所指定→ゲストOSのディスク容量(GB)→グラフィカルインストールするか(noで)→インストールイメージの場所
となっています。

めんどくさければ

# virt-install -n guestosname -r 512 -f /xen/test -s 16 –nographics -l ftp://ftp.riken.go.jp/Linux/centos/5/os/i386

と一気に引数で指定も可。

ちなみにインストールイメージの場所ですが、ツリー以下に images/xen/initrd.img と images/xen/vmlinux がないと正常にインストールが進行しません(つまり、これらがないOSも今回の手順ではインストールできません)。移動されている場合などもあるので、指定先にファイルがあるかどうか、先にブラウザなどで確認しておくといいかと思います。

後はターミナル上で通常のCentOSテキストインストール画面と同様の画面が出ますので、手順どおりインストールしていけばOKです。起動やコンソールの切替えはxmコマンドで行います(長くなるので今回は割愛します…)。ちなみにホストOSに戻るときは Ctrl+] です。

Shuttle X27+CentOS5にNICドライバをインストール

ひとつ前で書きましたように、Shuttle X27にCentOS 5.1をインストールしただけではNICを認識してくれなかったので、自分でドライバを導入する必要があります。参考にさせて頂いたのはMarvell Yukon 88E8056にCentOSを入れる際の注意点

1.とりあえずはネットにつながっているマシンで、Marvellのサイトからドライバを落としてくる。
http://www.marvell.com/drivers/search.do

2.で、USBメモリなり、ドライブを積んでいる場合はCD-Rなどに焼くなりして、X27でマウント。尚、自分は開発系ライブラリなどをインストールしていたので特に何もしませんでしたが、上記サイトによるとkernel-develとkernel-headersが必要とのこと。入れていない場合はこれらも落としておいて、一緒にコピーしておきましょう。

3.解凍後(入れていなかった場合は先にkernel-xxxを入れてから)、解凍先ディレクトリにinstall.shが入っているので、実行すれば自動的にドライバを組み込んでくれます。選択肢が出ます…が、忘れました。どっちでも問題なかった気が。

4.あとはコマンドラインで echo “alias eth0 sky98lin” >> /etc/modprobe.conf (eth0は対応するほう…まあ普通にインストールしていればこのままでOKですが)としてモジュールを登録。

5.再起動すれば認識されてます。ネットワーク設定をしてとっとと接続しちゃいましょう。

ちなみに、yumなどで新しいカーネルになると再設定する必要があります。このあとネットワークに接続できればyum updateする人が多いかと思いますが、というか自分も2回やる羽目に。

Shuttle X27(Intel Atom 230搭載ベアボーン)サーバー化

静音サーバー構築を検討中…で、静かな実家でしばらく過ごし、帰ってきたらサーバーがうるさく感じて寝られなくなったので、一時的にXREAにコンテンツを退避した…と書きましたが、思ったより早く自宅サーバー環境に戻すことができました(最近XREA重い?しかもこないだ落ちてたし)。

今の部屋は基本的にワンルーム。入り口と洗面所にドアはありますが、洗面所にサーバーなんぞ置けるワケもないし、玄関にタワーサーバーは邪魔すぎる。色々とATXサイズ用静音パーツや小型ファンレスPCサーバーを調べてみましたが、ATXタワーをひととおり自作するのはコストがかかるし、小型ファンレスPCも結構出てるけど、価格の割に性能がイマイチなものが多かったり。そもそも、小型PCって小型を追求しすぎて放熱が犠牲になってるものが結構多い。小型マザーをそこそこ余裕のあるキューブとかに積んでくれればいいんだけどなぁ…

と思ってたところでAtom機のShuttle X27を見つけました。販売価格は2万前後、2.5インチHDDとDDR2メモリだけ買えばとりあえず動作。ホントはノートPCなど向けのスリムドライブが積めるんだけど、スリムドライブは本体並みに高い。放熱の妨げにもなるので、稼働中のPCから電源供給されてるドライブのSATAケーブルだけ抜いてOSインストールに使いました。

同等の大きさだとVIAのマザーを積んだものが多いですが、ATOM230はHT搭載で、1.6GHzのデュアルコア認識。しかもTDPは4W。まあ一世代前のRAMしか積めないけど、他の小型PCサーバーと比較すればかなり高性能かつ低温。小型なくせにVGAとDVI両方がついてるので、最近のディスプレイを接続して気軽にインストール作業ができます。

もったいない点としては、せっかくCPUが低放熱なのに、チップセットが熱い。ヒートシンクもチップセット用のほうがデカイ上に、チップセットに4cmファン付。しかもこれが結構うるさい…。ケース両サイドがメッシュ上になっているので音はモロに漏れます(その代わり1ファンでチップとCPU両方を効率的に冷やしてくれますが…)。
あと、ケースが小型だから仕方ないのですが、HDDの振動が結構モロに響いてしまう。SSDも積めるようですが(未確認)、やはりこの値段のマシンに積むのはちょっとなぁ…(ケース自体のつくりもまあ、値段相応って感じで甘めです。あまり開け閉めするとゆがみそう…)。

そこで、とりあえずケーブルの取り回しだけ工夫して、マシンを玄関の棚の上に設置。タワーじゃでかすぎて出来ません。ファンがうるさいといっても所詮4cm一機、ドアを閉めれば聞こえないレベル。これで長期稼動に問題がなければ、かなりいいんじゃないかなーと思います。

CentOS5インストール時、初期設定ではNICを認識してくれないのでドライバのインストール(付属CDにはWin用しかない)が必要なのですが、長くなるのでまた次回。

rsyncでディスク容量を節約しながら擬似的にフルバックアップをとる

基本的にバックアップはDARで取っていますが、とあるサーバーで、個々のファイルサイズは小さいが、ディレクトリ・ファイル数がかなり多く、全体の容量もかなりあるものをDARで圧縮すると、ファイルサイズが倍以上に増えてしまう・時間が異常に掛かるので、cronでファイルをフェッチするまでにアーカイブが終わらないという問題が。

仕方ないのでrsyncでそのまま転送することにしましたが、さすがに毎回すべてを転送していては容量の無駄。そこで、実際は更新されたファイルだけ転送し、変更のないファイルはハードリンクにすることで、擬似フルバックアップをとることに。

まず初回は普通にrsyncで対象データをすべて転送、2度目以降は以下のコマンドを実行。

# rsync -az –delete –link-dest=../fullbackupdir root@192.168.x.x:/datadir /path/to/incrementalbackupdir

-a ファイル情報を保持
-z データを圧縮して転送
–delete 削除されているファイルを転送先でも削除する
–link-dest 変更のないファイルは指定ディレクトリ内データのハードリンクに置き換える

古いrsyncでは–link-destオプションがなかったので、代わりにcp -alでハードリンクを作成後に同期を行う方法がとられていたようですが、このオプションができたおかげで1コマンドで処理できるようになったとのこと。

注意事項としては、–link-destで指定するフルバックアップのパスは、新規転送先ディレクトリからの相対パスでなければいけないらしい(フルパスがダメかどうか自信なし)。また、/があるとディレクトリ以下のファイルすべてを転送しますが、/なしの場合はディレクトリごと転送するという違いがあるので、指定する際には気をつける必要があります。

転送終了後、新規差分ディレクトリ内の変更のないファイルがあるディレクトリでls -liを実行してiノード数が増えていたら、ちゃんとハードリンクになっています。同じファイルなのにiノードの指しているブロックが異なっていた
ら、更新されたファイルか、そうでなければパス指定が間違っていると思われますので確認を。

※尚、当然ながらディレクトリはハードリンクされません。

静音サーバー構築を検討中…

体調が微妙だったので、連休につなげて有給をとって実家でゆっくりしてました。

さて、5日振りに戻ってきてサーバーと同じ部屋で寝てましたところ、なんかうるさくて寝られない。実家が静かな場所にあるので、どうも静かな環境に慣れちゃったようで、コレは今日の仕事に響くと3時ごろに起き出して、XREAにコンテンツをコピーしてサーバーの電源を落としました(んー、騒音が原因で眠りが浅かったのか?今まで…)。

ウチは重要なサービスのサイトとかではないですが、(まあそれでも検索履歴→見られないとか迷惑だし)出来ればDNSを切り替えればOKな状態にしておくのが安全ですね(WordPressはじめCMS系はパスが変わると正常に動作しなくなるものが結構あるので注意ですが、DBのダンプだけでも移しておくとか)。

さて、そんなワケで現在は静かな環境なのですが、やはり自由にシステムをいじれるのが自宅サーバーの醍醐味。ブログはとりあえず公開してみるために書いてましたが、それだけならそこらのレンサバやブログサービスでいいワケですよね。なので、出来ればファンレスサーバーでも置けないかな?と色々企んでいます。

最近はCPUのTDPも下がって放熱も楽になってきたので、大量に余計なパーツを積まなければ、ヒートシンクと適度にエアフローのいいケースで十分いけそう(というか爆熱Pen4も巨大ヒートシンクで動かしてましたし)。マザーボードもサーバー用なので余計なものがついてないものを。となると問題は電源ユニット
以前ならあきらめの対象でしたが、最近はファンレス・熱いときだけファンが回るセミファンレス・電源容量は少ないけど完全ファンレスなACアダプタ式のものなどが出ているので、以前よりかなり選択の余地がありそうです。

ファンレスは容量も350~500Wのものがあるので特に問題ありません。それにファン系が一切ないと、生活の場に置くにはかえってホコリやそれによる火災などの心配が少ないかもですね(構造によりますが)。
セミファンレスはPC用途でもオフィススィートやネットくらいだとほぼ回らない、とのことで、こちらも夏場の保険にファンがついてるほうが安心、などといった買い方もありかもです。
ACアダプタは電源容量が少ない・対応マザーが限られる(変換できるようですが)とはいえ、VIAのEPIAなどを載せるのであれば(CPUも標準で完全ファンレスだし)良いかも知れません。問題があるとすれば、処理能力が非力なのと、メジャーなチップセットほど安定して動くかなー程度のことでしょうか。

処理能力と手軽さ、どちらを取るか、でしょうかねぇ…。EPIA系のMBは小型なので、ITX系のケースも狭くできていて、結構熱がこもるという話も聞いたことがありますが…。あと、それ系のARTIGOとかBe SilentとかSizkaとか、スペック比で考えちゃうとかなり高いんですよね…そのあたりにどこまで出せるかかなぁ。

あとは、Windows Home Server用のマシンで、まさに家庭や部屋内に気軽に置けるマシンが出てくるんじゃないかなーと期待したりしています。…って、WHSって現バージョンではRAID非対応だし、そもそもHome Serverがそんなに売れるのか?という疑問もあったりするのですが…。

# どうせそこそこするなら、EeePCとかでいいんじゃね?という気も…Ubuntu動いてるし…

Webminが意外と使えるようになっていた

FirefoxにしてからGoogleツールバーを使ってなかったので気づいてなかったのですが、いつの間にかGoogle PageRankが2になっていた模様。投稿数でブログポータルとかからの被リンクふえた?とりあえず嬉しいですが、PageRank2くらいって割と個人で簡単にとれちゃうんですよね。何であがったのかはちょっと気になるところですが、とりあえず良い意味であまり気にせず更新していこうかなぁと。

閑話休題。

すごーく昔、自分で空いてるPCにLinuxを入れて遊んでいた頃には「…ダサいし大味で使いにくいな」と思っていたWebmin。今も仕事柄、基本的なことはすべてシェルでやってしまうのですが、社内教育用サーバーにWebminを入れてみたところ、なんだかすごくパワーアップしていた。…うーん。設定が苦手なものもあるから、最低限の設定はコレでやってしまって、細かい部分だけ書き換えるのも楽そうだな…内部向けサーバーなんかでは。(と、いいつつすでにシェルに慣れてGUI設定に戻れない)

正直、(ぺーぺーの自分が言うのもナニですが)サーバーについてあれこれ覚えるにはWebminは使わないほうがいいと思います。サーバーのどこに何があるのかとか、実際にどのコマンドが使われているのかとかが全部ブラックボックスになっちゃうので。分かっていないところを自動でやっちゃうと、色々覚える機会が減るのはもちろん、穴があっても気づけないし、トラブルがあっても原因がわからなくなると思うので。でも、最低限分かってる上でなら、複数サーバーを一箇所のWebminから管理できる機能なんかもついてきているようなので、手間の軽減に使うのはいいかもしんない。

色んな人がモジュールを開発して機能が追加されていくOSSならではだなぁ、としみじみ。

CPANモジュールインストールがコケたときの対策

昨日書いたCPANモジュールのインストールがやたらコケる件ですが。

基本的にmake testでコケてることがほとんど(依存関係で足りないモノがある場合は入れればいいだけですが)。実際に個々のモジュールをmakeした後testせずにmake installしてしまうとアッサリインストール出来ることがほとんどのようです。また、cpanコマンドからinstallしてコケた場合、/作業ユーザのホームディレクトリ/.cpan/build/ 以下に、モジュールを落としてきてビルドしようとしたところまでのファイルが残っています。というワケで、個々のモジュールのディレクトリに入って、大抵は

# perl Makefile.PL
# make
# make install

してしまえば(make testを飛ばせば)、大抵ちゃんとインストールできてしまいます。依存関係にあるモジュールが足りない場合も、そのままcpanコマンドからインストールして通ればよし、コケてもそこにまたモジュールのディレクトリができるので、そのまま先にインストールしてしまうもよし。コレであっさり必要なモジュールが揃ってしまいました。

ま、どのみちCatalystなんかは膨大なモジュール群なので、相互の依存関係でループしまくるし、ログがざーっと流れちゃってどのモジュールが足りていないのかも分かりにくいし、インストールできそうではあるものの、そこまで必要性にも迫られていないのであんまりやろうという気になりません…。それよりもっとコード書いてたほうがタメになるだろうしなぁ。

Perl(CPAN)、Catalyst…なんであんなにコケるんだ orz

Yahoo! APIで遊んでたときの参考サイト。主にPerl。
Geekなぺーじ:Yahoo!APIでプログラミング

さて、会社はPHPメインなのですが自分はPerl書き、かつプログラマでもないのですが、上司に「やっぱPerlよりPHP書けたほうが何かと便利ですかね?」と聞いたら「Perlでおk」だった。まあ、無理にゼロに戻らんでも得意な方面伸ばして補完してやれということでしょうね。まあ、そもそもサーバー屋なんだからPHPよりはPerl書けたほうがよっぽど役に立つんだケド。

まあでも、ちょっとしたスクリプト書きとかはするのですが、個人で大規模開発なんかするわきゃないので、一度MVCフレームワークとか使っておきたいよねー的好奇心で、自鯖にCatalystを入れようとゴリゴリやってたワケなのですが、マジで勘弁してほしい程エラーが出ます。CPANからなんか入れようとすると結構エラー吐いて失敗することが多いです。今日はなんか無限ループしてたし。(Aが足りないから入れるよ?→失敗した→Bが足りないから入れるよ?失敗した→Aが(略)

上でちょこっと書いたYahoo! APIのXMLをパースするのにXML::Simple入れようとしたらそれだけでエラーて。色々ワケがわからないエラーが多いんだぁなぁ、PerlっていうかCPANモジュール…。較べても意味ないですが、仕事でサーバー環境構築してるときにEthnaとかPEARはサクッと入るだけに、結構凹みます。

とりあえず詰まってんのにあんまり意味ないですが、なんとなくCPANモジュールが古い場合の更新ネタを。ガリガリやってる間に見つけておいたProject MultiBurstさん:古いCPANモジュール(Perlモジュール)のアップデート方法
インスコされているモジュールの中で、現行リリースより古いものを洗い出すのがこちら。

# perl -MCPAN -e ‘CPAN::Shell->r’

で、これらをアップデートする場合はこちら。

# perl -MCPAN -e ‘CPAN::Shell->install(CPAN::Shell->r)’

凄くラクでいいんだけど案の定すんなりコケてくれやがるとこらへんがもうマジ勘弁してくださいって感じです。あーもうサーバー内のPerl周り環境グダグダになってそうだけど大丈夫だろか…。

サーバ/インフラを支える技術…

ふはー。色々ゴタゴタしてたら今度は身体壊したりしてて全然更新できてませんでした。幸いしがない個人ブログなので、どーということはないと思うのですが…やっぱり自宅のサーバーでやってんだから放置しとくのは勿体無い。

というワケで最近特別ナニという新しいネタもなかったのですが(これ以上事故米問題とか書くとサーバーネタ密度が…)、とりあえずコレはいんじゃね?という本をご紹介しときます。

[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ) (WEB+DB PRESSプラスシリーズ)

[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ) (WEB+DB PRESSプラスシリーズ)
著:安井 真伸 , 他
参考価格:2,919
価格:2,919
OFF : ()

↑最近知人がハマっているので、なんとなくAmazonアソシエイトをはってみた。

内容は実際にはてなの伊藤氏とかKLabとか、その道では有名どころの人たちが、まさにそこでどうやって運用してきたのか、という経緯やノウハウを惜しげもなく公開してたりしまして、正直、タイトルとか表紙で気を引きさえすれば、もっと売れるんじゃね?wとか余計な心配をしてしまうほど、業界の人は「あー」って言っちゃったり、自分みたいなぺーぺーには勉強になったりします。

はてななんかはネットをそれなりに使っていて知らない人はいないと思いますが、小規模から利用者がガンガン増えてきて、スケールアウトにも限界が!台数が増えて管理が!etc、事業を拡大していく中で絶対にあるよなぁという山を乗り越えてこられた軌跡なんかが載ってます。たとえばオープンソース系で有名な技術…memcacheはまあmixiとかニコニコ動画とか有名どころも使っているのでまだアレですが、NagiosとかPuppetとか、工夫して使えば商用の何百万というソリューションがなくても何とかなってしまうような機能を秘めているんだけど、聞いたことないとみんな「やっぱりこれ以上は金かけてロードバランサとか管理ソリューションとか買わないとダメなのか…」とかなっちゃう。

まーミッションクリティカルな分野だとそうじゃないとダメなんでしょうけど、そうでないならばこういう方法もあったんだなぁ、と思わされてしまうことが結構たくさん書かれています。自分は大企業に入ったことがないのでわかりませんが、やはり大手にいた先輩に聞くと「あーそういうときはとりあえず金だして解決ってなっちゃう」ケースが多いみたいですね。

企業がでっかくなっていくにつれて、単純な役割ごとのサーバーだけという構成から、スレーブへの負荷分散していったりするんだけども、やはりそれだけだと限界がある。サーバー倍に増やしたら、倍のアクセスをさばけるワケではまったくないし、やっぱりどこかで何かやり方を変えないといけない。そこでキャッシュサーバを挟んだり、LVSで負荷分散させたりなどなどといったことをしていく必要が絶対に出てくるんですね、どこの成功した企業の歴史を見てても。そういうトコで技術に貪欲になって糸口を見つけたところが成功してるんだろうなあ、やっぱり。ン千万のロードバランサ買ったけどペイできませんでした…じゃ笑えないですしね。

※んと、言うまでもないことですが、あくまで組み合わせでこういう解決の方法もあるよ、といってるだけであって、保守なり安定性なり付加機能なりを持ったロードバランサーとか、商用製品を否定する意図は一切ありません。ミッションクリティカルな分野ではそうでないと困りますし、ウチの会社だって商用Linux使ったりしてますしね。ただ、はてなやmixiがそういうもので構成されていたら実現できたかというと…いろんな選択肢を適材適所に使うことが大事ってことですよね。そうでなければ生まれなかったものってネット上にたくさんあるでしょうし。

ホーム > 自宅サーバー

Search
Link
Feeds
Meta

Return to page top