Archive for December, 2008
Ext4, ついに安定版リリース
12/24にLinux kernel 2.6.28がリリースされました。このリリースの目玉としてExt4実装があります。Ext4はExt3と互換性を保ちながらも多くの改良がなされたものになっているようです。kernelnewbies.orgに記載されているNew featureを意訳してまとめてみました。
互換性
既存のExt3ファイルシステムはExt4にリフォーマットすることなく移行可能。具体的には該当ボリュームをReadOnlyでマウントしていくつかコマンド叩くだけでOK。
より大きなファイルシステムサイズ、ファイルサイズのサポート
Ext3からExt4ではそれぞれの制限は以下の通り。
ファイルシステムサイズ:16TB -> 1EB (エクサバイト)
ファイルサイズ:2TB -> 16TB
ちなみにEBとは、 (1 EB = 1024 PB, 1 PB = 1024 TB, 1 TB = 1024 GB)なぐらい大きい。
無制限のサブディレクトリ数
Ext3からExt4でのサブディレクトリ制限は以下の通り。
320000 -> 無制限
エクステントによる大きなファイル操作の効率化
これまでは「ファイル」のデータはディスクという円盤のいろんなところに「ブロック」としてバラバラと格納されていたが、このような大きなファイルを物理的に連続したブロック(これがエクステント)として格納するこで、特にdelete等の操作を効率化する。
マルチブロックアロケーションによる内部ブロック割当処理の効率化
これまでは連続してデータを書き込む際、ディスク上の空いているブロックを1ブロックずつ探してきて割り当てる、という処理になっていたがこれをブロックアロケータ自身に必要合計ブロック数を認識させることで、単一コールで複数ブロックを割り当てれるようになりオーバヘッドが緩和される。
遅延アロケーションによる性能改善
これまではデータが書き込まれるやいなやブロック割当てを実行していたが、これをしばらく遅らせることで連続データ書き込み時のブロック割当て処理をまとめて行えるようになりその分オーバヘッドが軽減できると同時にフラグメンテーションも抑えることができる。これは前述のエクステント、マルチブロックアロケーションと連携して相乗効果を発揮する仕組みになっている。
Fast fsck
fsckが対象とするinodeを全inodeから使用したinodeのみに絞り込むことでfsckにかかる所要時間を大幅に短縮する(環境によって1/2〜1/20程度に)。ただしinodeを使用したか未使用かを判断するにはfsckをその前後で走らせる必要があることに注意。
Journal checksum
ジャーナルの完全性を高めるためにチェックサム機構を取り入れた。これによって信頼性だけでなく、既存Ext3の2フェーズコミットをシングルコミットとすることができ性能の改善も期待できる(環境によっては20%程度向上の可能性も)。
オンライン・デフラグメンテーション
今回のkernelリリース(2.6.28)ではまだ実装していないが、将来のリリースではこのオンラインでのデフラグ機構が盛り込まれる予定。e4defragと呼ばれるツールで実装する。
inode関連の変更
ディレクトリ作成時にあらかじめinodeを作成しておくことにより、ファイル作成時のinode作成処理にかかるオーバヘッドを軽減する。
タイムスタンプを秒 -> ナノ秒に拡張。
上記にともないinodeのサイズを128バイトから256バイトに変更。
先行ディスク領域割当
アプリケーションがあらかじめ使用予定の領域を確保しておける仕組み。3つの利点があり、1つ目はアプリケーションが独自にこれを行おうとすると、あらかじめ領域を0で埋め尽くさなければ行けないがこれを回避できる。2つ目として、領域をあらかじめ一括して確保できるのでフラグメンテーションを抑制できる。3つ目として、必要な領域がなくなってしまうということがなくなることが挙げられる。
バリア機能がデフォルト有効に
ハードウェアが内部write-cacheをもって独自のキャッシュフラッシュ処理(順番入れ替え)を行うような場合でもジャーナルが確実にデータコミット前にディスクに書き込まれるように制御する。性能を若干犠牲にしてデータの完全性を高めるための選択。ただしマウント時に”mount -o barrier=0″とすることでこのバリアを無効にできる。
フーム、Ext4ではエクステント、マルチブロックアロケーション、遅延割当等を連携させて論理的に連続するデータを物理的にも連続させて管理やI/Oの効率化を計るところにかなり注力しているようです。素晴らしいー。
RHEL4.xまたはOEL4.xのゲストOSで/dev/sd*が認識できない問題
RHEL4.xまたはOEL4.xのゲストOSに対して、/dev/sd*のような形で仮想ディスクを認識させたい場合、つまり、
disk = [ 'file:/OVS/running_pool/OEL4U7i386/system.img,xvda,w', 'file:/OVS/running_pool/OEL4U7i386/vd1.img,sda,w', ]
な形でディスクを認識させようとしても、起動後にls /devしてみるとsdaはどこにも見あたりません。/var/log/messegesを見てみるとこんなメッセージが出ているはずです。
Dec 19 10:30:53 localhost kernel: register_blkdev: cannot get major 8 for sd Dec 19 10:30:53 localhost kernel: xen_blk: can't get major 8 with name sd
これは本来使わなくていいはずのscsiカーネルモジュールをロードしてしまっているのが原因です。これを回避するためにはscsiモジュールを取り除いた形でinitrdをリビルドします。まず現状のinitrdにscsiモジュールが含まれてしまっていることを確認するには以下のようにコマンドを実行します。
[root@~]# zcat /boot/initrd-2.6.9-67.0.15.0.1.ELxenU.img | cpio -it | grep ko | grep -i scsi lib/scsi_mod.ko
scsiモジュールが入っています。これを取り除いた形で新しいinitrdを生成します。
[root@~]# cd /boot/ mkinitrd --omit-scsi-modules --with=xennet --with=xenblk /boot/initrd-2.6.9-78.0.0.0.1.ELxenU.img.scsifix 2.6.9-78.0.0.0.1.ELxenU [root@~]# ls | grep initrd initrd-2.6.9-78.0.0.0.1.ELxenU.img initrd-2.6.9-78.0.0.0.1.ELxenU.img.scsifix
下が新しく作ったinitrdです。scsiモジュールが取り除かれているか確認します。
[root@~]# zcat /boot/initrd-2.6.9-67.0.15.0.1.ELxenU.img.scsifix | cpio -it | grep ko | grep -i scsi (scsi_mod.koが表示されなければOK
ブートローダの設定ファイルを編集してこの新しいinitrdを使ってブートするようにします。
[root@~]# vi /boot/grub/menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/xvda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Enterprise (2.6.9-78.0.0.0.1.ELxenU)
root (hd0,0)
kernel /vmlinuz-2.6.9-78.0.0.0.1.ELxenU ro root=/dev/VolGroup00/LogVol00 console=xvc0 rhgb quiet
initrd /initrd-2.6.9-78.0.0.0.1.ELxenU.img.scsifix
これで完了です。リブートすれば/dev/sd*も認識できるようになっているはずです。
追記
このscsiモジュール無しのinitrdで起動している場合、VBDを/dev/sd*と認識することはできますが、そのかわりにiSCSIで直接ストレージに接続することができなくなっちゃいます。VBDの場合はxenblkドライバを使えばいいものの、iSCSI直接続の場合は本来のscsiドライバが必要になるからですね。まぁ、併用しなければいけないというような要件はなさげだしいいか。
Func Package Controller v1.1
最新のfunc-0.23では仕様が少し変わって後方互換性がなくなってる部分があったので、fpcを最新バージョンに合わせてアップデートしました。
ダウンロードはこちら:fpc-1.1.zip
Oracle DatabaseとphpでOPAL環境を構築する
昨日はOracle Database XEの紹介とインストール手順を解説しました。
今日はそのXEを使ってOPAL環境を構築したいと思います。OPALとはかなりマイナーな略式名称ですが、Oracle Database, PHP, Apache, Linuxで構成するWeb+DBのスタックのことです。いわゆるアレです、LAMP(Linux, Apache, MySQL, PHP)みたいなもんです。というか平たく言えばパクリでしょう。*ちなみに「P」はPHP,Python,Perlのどれか。
昨日まででLinuxとOracle Databaseのインストールは済んでいるという前提で、その同じマシンにApacheとPHPをインストール/セットアップしていきましょう。それぞれ今日現在で最新のhttpd-2.2.10とphp-5.2.8を使用します。
まずはApacheですがこれは簡単、というかとくにOPALだからといって特別な手順やオプションはありません。普通にコンパイルしてインストールします。
# tar xvfj httpd-2.2.10.tar.bz2 # cd httpd-2.2.10/ # ./configure ¥ --prefix=/srv/httpd ¥ #適当に置き換えてください --enable-so #多分デフォルト有効なのでいらないと思われますが一応 # make # make install
終了ーー。では次にphpのインストールへ。
# tar xvfj php-5.2.8.tar.bz2 # cd php-5.2.8/
次のコンフィグが結構ミソです。phpからOracleに接続するにはOCI (Oracle Call Interface) を使うのが一般的かつ、性能面、機能面で最適な方法と言われています。ただしこれにも2種類あって、PDO_OCIと普通のOCI8というのがあります。実際、よりup-to-dateなドライバはOCI8になります。PDO_OCIの方はMySQLやPostgreSQLに接続する際でも統一されたインターフェースを提供してくれるいわゆる抽象化ドライバです。なので一見こいつをつかっといた方が後でDBを切り替えることがあった際に便利なのですが、残念ながら最近このPDO_OCIはメンテナンスされておらず、OCI8で実装されているBugFixや機能拡張などが反映されていません。なのでOracle一筋な方は迷わずOCI8を選択してください。そしてこのOCI8を使用するにはコンフィグ時に--with-oci8オプションを指定しておく必要があります。ちなみにPDO_OCIの方は--with-pdo-ociとします。一応こいつも入れておいてやろう。
# ./configure ¥ --prefix=/srv/php ¥ #適当に置き換えてください --with-apxs2=/srv/httpd/bin/apxs ¥ #Apacheをインストールした場所によって置き換えてください --with-oci8=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server ¥ # $ORACLE_HOMEを指定します。 --with-pdo-oci=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server ¥ # 同じく$ORACLE_HOMEを指定します。 --with-gd ¥ --with-gettext ¥ --disable-short-tags ¥ --enable-pdo ¥ --enable-mbstring ¥ --enable-exif ¥ --enable-sigchild
これでOK。ビルドしていきます。
# make # make install
これでバイナリがインストールされました。次に設定ファイルを作成します。テンプレートがあるのでそれをコピーして少しだけ編集(追記)します。
# cp php.ini-recommended /srv/php/lib/php.ini # vi /srv/php/lib/php.ini extension_dir=/srv/php/lib/php/extensions/no-debug-non-zts-20060613 extension=oci8.so
あと、httpd.confにも少し手を入れます。以下を最後の方にでも追記してください。
# vi /srv/httpd/conf/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddType application/x-httpd-php-source .phps
これでOKです。なお、今更ですがSE Linuxとかが有効になっているとphpのモジュールをロードする際にエラーになっていまうので/etc/selinux/configでSELINUX=disabledにしておいてください。もうこれで使える状態にあるのですが、実はこのphpのソースにバンドルされているOCI8は結構古かったりします。気持ち悪いので最新版にアップデートしておきたいところです。というわけでPECLから最新のソースをとってきます。
# wget http://pecl.php.net/get/oci8-1.3.4.tgz # tar xvfz oci8-1.3.4.tgz # cd oci8-1.3.4/ # /srv/php/bin/phpize # ./configure --with-oci8=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server # make # make install
これでばっちりです。最新のモジュールが/srv/php/lib/php/extensions/no-debug-non-zts-2006061にインストールされました。あとはapachectl startするだけです。ちなみに一応ちゃんとOCI8がインストールされているか確認するためにphpinfo()を活用しましょう。Apacheのドキュメントルートに以下の様にファイルを作成します。
# vi /srv/httpd/htdocs/phpinfo.php <?php phpinfo(); ?>
そしてこのサーバにアクセスしましょう。
http://あなたのIPアドレス/phpinfo.php
するとこんな画面が出てくるはずです。

下の方にスクロールしていき・・・

ありましたね。よかったよかった。ひとまずこれでセットアップは完了です。
ちなみに今回のようなOPAL環境の構築について、佐藤さんがいち早く良いドキュメントを紹介されています。
http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf
英語にはなってしまうのですがこれははっきり言ってかなりの良書です。Oracle好きだけどJavaはちょっと、という僕のような人にはたまらない感じです。
Oracle Database XEをインストールする
Oracle Databaseにも実はフリーエディションがあります。日本では全く露出していないのであんまり知られていません。その名もOracle Database Express Edition、略してXEです。
ライセンス料が発生するStandard Edition, Enterprise Editionと比べるといくつか制限があります。
- プラットフォームはLinuxかWindowsの32bit
- データは4GByteまで
- メモリは1Gbyteまで
- CPUは1ソケットまで
しかしながら開発環境はもちろん、ある程度の環境であれば十分使えるデータベースです。なにせデータベースそのものは上位のエディションとまったく同じコードベースですから。それではインストールしましょう。
OSはOracle Enterprise Linux 5 – i386でいきます。ちなみにswapが1024MByte確保されてないとインストーラにはじかれてしまいますのでご注意を。あと、事前に名前解決だけご注意を。hostnameコマンドをうって、そのホスト名が/etc/hostsとかで正しいIPに解決されることを確認しておいてください。さてインストーラですが、コマーシャル版はOUI (Oracle Universal Installer)でインストールするのが定石ですが、XEはRPMで提供されるためrpmコマンド一発でインストールできます。
[root@local]# rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm Preparing... ########################################### [100%] 1:oracle-xe-univ ########################################### [100%] Executing Post-install steps... You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.
うーむ、こういうシンプルさ、好きです。
そしてマネージャやリスナーのポート設定、アカウント設定等の初期設定をするために上記メッセージ通りにoracle-xe configureを実行します。
[root@local]# /etc/init.d/oracle-xe configure Oracle Database 10g Express Edition Configuration ------------------------------------------------- This will configure on-boot properties of Oracle Database 10g Express Edition. The following questions will determine whether the database should be starting upon system boot, the ports it will use, and the passwords that will be used for database accounts. Press <Enter> to accept the defaults. Ctrl-C will abort. Specify the HTTP port that will be used for Oracle Application Express [8080]: Specify a port that will be used for the database listener [1521]: Specify a password to be used for database accounts. Note that the same password will be used for SYS and SYSTEM. Oracle recommends the use of different passwords for each database account. This can be done after initial configuration: Confirm the password: Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:yStarting Oracle Net Listener...Done Configuring Database...Done Starting Oracle Database 10g Express Edition Instance...Done Installation Completed Successfully. To access the Database Home Page go to "http://127.0.0.1:8080/apex"おぉ。これでインストール終わりですか。
ちなみにこのメッセージ、みたことある人もいらっしゃるかも。実はOracleVM ManagerはデータストアとしてこのXEを使っているのです。なのでOracleVM Managerをインストールするときに同じようなメッセージが表示されます。さて、インストールが済んだら管理画面を開いてみよう。これはXEをインストールしたホスト上のブラウザで以下のURLを参照することでアクセスできます。
http://127.0.0.1:8080/apexデフォルトではローカルホスト上からしかアクセスできないことに注意。これは簡単にリモートからも操作可能に設定できます。
参考までにテーブルを作る画面。
このようにXEではApplication ExpressというEnterprise Managerとは別の管理プログラムがついてきます。これもでもなかなか使えますよ。
あと、$ORACLE_HOME/binにoracle_env.shというのがあります。こいつはOracle固有の環境変数を設定してくれるスクリプトになっています。
. $ORACLE_HOME/bin/oracle_env.shとしておくもよし、.bash_profileに適当に書き写しておくもよし、です。
func-0.23をセットアップする
以前にいきなりfuncのモジュールをリリースしましたが、久しぶりに見てみたらバージョンが大分上がってインストール手順も少し変わっているようなのでそのあたりをご紹介しておこうと思います。
そもそもfuncとはFedora Unified Network Controllerの略で、大量のサーバ群を一元管理するためのツールです。
サーバが死ぬほどたくさんあってそれぞれに同じような操作を行わなければいけないようなケース、例えば、パッケージの追加やアップデート、パッチ適用、設定ファイルの編集などを全サーバに施す必要が出てきた場合、うんざりしながらもしょうがないのでパワープレイで一台づつSSHでログインして・・ということをやってしまいがちだが、こういったことはfuncがあれば一回の操作でカタがつく。
funcでは一括して命令を行うcertmasterと呼ばれるコンポーネントと、そしてその命令の対象となるminionと呼ばれるコンポーネントで構成されています。
能書きはそれくらいにしてインストール、いってみよう。
まずは必要なモジュールをインストールする。EPELのレポジトリをすでに登録している粋な人は
[root@~]# yum install funcとするだけでOKだ。依存するモジュールも自動的にインストールしてくれる。しかしそんな人はあんまりいないので個別にダウンロードしてインストールする方法も紹介しておきたい。必要なのは多分以下のモジュール。
- func
- pyOpenSSL
- certmaster
- python-simplejson
funcのバージョンは今回0.23を想定しています。必要なモジュールは環境によっては他にもあるかもしれないけど、大抵はこのくらい集めればOKだと思われます。ダメだったらrpmのエラーを見て対応。ダウンロードしたら全部
[root@~]# rpm -ivh *みたいな感じでインストールします。これらのモジュールはcertmaster, minionともに同様にインストールしておきます。
次にminion上で設定ファイルを編集し、minionにcertmasterの場所(IP)を教えてあげる。
[root@~]# vi /etc/certmaster/minion.conf # configuration for minions [main] certmaster = 192.168.0.1 #certmasterのIPアドレスを指定 log_level = DEBUG cert_dir = /etc/pki/certmasterこれでOK。デーモンの起動に移ろう。まずはcertmasterから。
[root@~]# service certmaster start次にminion。
service funcd startこの状態でプロセスの起動まで完了。現状ではminionがcertmasterに対して自身の登録依頼を出した状態になっている。これをcertmasterで認可してやる必要がある。まずは認可待ちになっているminionを確認してみる。
[root@~]# certmaster-ca --list minion01フムフム。来とる来とる。で、認可します。
[root@~]# certmaster-ca --sign minion01 /var/lib/certmaster/certmaster/csrs/minion01.csr signed - cert located at /var/lib/certmaster/certmaster/certs/minion.cert完了。確認しておきましょうか。
[root@~]# certmaster-ca --list-signed minion01オッケーィ。正常に登録されました。それでは軽く命令の発行の仕方だけ最後に確認しておきましょう。基本的にはcertmaster上で以下のような書式で命令します。
[root@~]# func 対象minion 命令命令の部分はさらにいくつかのパートに分かれますが、最初に文法コンプリートするのもナンなので例文を紹介しておくにとどめます。例えば、minion01に再起動を命じる場合、以下のように命令します。
[root@~]# func minion01 call reboot rebootそしてこれだけであれば「オイオイ、sshした方が早かろうて」ということになりますが、funcの特徴の一つは対象minionのところにワイルドカードが指定できることです。例えばminion01の他に、minion02, minion03がいたとします。3台ともに再起動を命じる場合、以下のように命令します。
[root@~]# func "minion*" call reboot rebootまたはこのケースであれば”minion*”を単純に”*”に置き換えてもいいでしょう。このようなホストの命名規則がある程度しっかりしていればワイルドカードで簡単に複数台を指定できます。もし、ホスト名はめちゃくちゃランダムです、という場合であれば、事前に設定ファイルにてグループを定義することもできます。グループの設定ファイルはcertmaster上の/etc/func/groupsですがデフォルトだと作成されていないので↓な感じで作ります。
[グループ名] host = minion名をカンマ区切りで指定サンプル
[WebServers] host = web01,web02,ap01,ap02そして命令文の中では「@グループ名」として指定します。
[root@~]# func @WebServers call reboot rebootサブグループを作ったりもできますので気になる方は調べてみてください。
Oracle VMってどんなの?
OracleVMはORACLEが提供している仮想化ソフトウェア。OracleVMはHyperviosr型でそのエンジンにはXenを採用しています。OracleVMの特徴を要約すると、
Xen + 独自拡張(GUI, H/A Cluster, QoS等々) + ORACLEのサポート
な感じです。
OracleVMにはVM ServerとVM managerという2つのコンポーネントが存在します。VM Serverは仮想マシン(ゲストOS)を稼動させるコンポーネントで、I/Aサーバ機に直接インストールします。このVM Serverはそれ単体でもコマンドラインから仮想マシンを作成したり、起動/停止することができますが、それらの操作はGUI上でも行うことができます。その機能を提供するのがVM Managerです。VM ManagerはRedhat Enterprise LinuxまたはOracle Enterprise Linux上で動作するソフトウェアで、Webアプリとして動作します。なのでVM Managerへのアクセス、操作はブラウザ経由で行います。VM Serverが複数台あってもコイツがあれば一元管理が可能ってわけです。このVM Managerを使えば以下のような一般的な管理作業はすべてGUIベースで行うことができます。*ちなみにバージョンは2.1.2
- 仮想マシンの新規作成
- 仮想マシンの起動/停止
- 仮想マシンのテンプレート化
- テンプレートから仮想マシンを作成
- 既存の仮想マシンの複製(複製台数を指定可能!)
- H/Wリソースの調整(CPUコア数、メモリ容量、ディスク、NIC、ディスクI/O優先度、ネットワーク帯域幅制限)
画面はこんな↓です。
ログイン画面
ログイン後のトップ画面。仮想マシンのリストが表示されます。
任意の仮想マシンをクリックして詳細情報を表示。
H/Wリソースの調整もここから行えます。
やっぱりGUIでポチポチ操作ができるとマニュアル読まなくても使えちゃうので便利ですね。
なのでXenを使いたいんだけどコマンド操作ってちょっと億劫、なんて人には便利です。これ、完全に無料で使えるので。フフフ。
PythonでOracle Databaseに接続する(cx_Oracleで)
何か半年前くらいに下書きしてたエントリを発見したのでPublishしてみることに。多分途中で切れてる気がしますがまたあとで修正すればいいや。それが気楽な個人ブログ。
pythonスクリプトからOracle Databaseに接続するための実装(モジュール)はいくつかあるようですが、検索した感じでいわゆるデファクトっぽかったのがcx_Oracleというモジュール。ドキュメント、ダウンロード先等は下記を参照ください。
僕はソースをとってきてインストールすることにしました。OSはOracle Enterprise Linux 5.1。Redhat EnterpriseLinux 5.1等でも変わらないと思います。コンパイルにはソフトウェア要件としてpython-develとOracle Databaseのクライアントライブラリがインストールされている必要があります。そしてそのライブラリがLD_LIBRARY_PATHに含まれていることが必要です。
# set | grep LD_LIBRARY_PATH等として確認し、入っていいなければ追加しておきます。
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/PATH/TO/LIBまずtarボールを/opt等に保存して展開。
# tar xvfz cx_Oracle-4.4.tar.gz # cd cx_Oracle-4.4/そしてビルド&インストール。
# python setup.py build # python setup.py installこれだけでOK。
あとはpythonスクリプトの中で、
import cx_Oracleとすればcx_Oracleのモジュールがロードできるはずです。
func package controller v1.0
突然何の脈絡もないですが、func package controllerなるものを作成しました。
ダウンロードはこちらから:fpc-1.0.zip
これはfunc (Fedora Unified Network Controller)というサーバ管理フレームワークを使っているシンプルなPythonスクリプトで、以下のようなことができます。
・大量のサーバに一括してRPMをインストールする。
・大量のサーバから一括してRPMをアンインストールする。
・大量のサーバの任意、または全てのパッケージをアップデートする。
・大量のサーバの内、任意のRPMがインストールされているサーバをしらべる。
・大量のサーバの内、任意のRPMがインストールされていないサーバをしらべる。
つまりは大量のサーバのパッケージ管理がワンライナーでできますよ、というツールです。
インストール方法や使い方などは付属のREADMEを参照下さい。こいつのインストール自体は簡単極まりないですが、そもそもfuncが使える環境でないと動かないでのBe careful.
funcがどんなものかとか全然説明してないですが、詳しくは発売中の日経Linuxのサーバ管理最強テクニックという連載の第4回、第5回(もうちょっとしたら発売)にあり。またこのサイトでも後日詳細を書こうと思います。
MacBook Air
1月中、帰省中に実家でみたMacBook AirのTV CMがずっと頭から離れませんでした(あの歌が)。2週間ほど前に現物がみてみたくて仕事帰りに渋谷のAppleストアに立ち寄ったところブツが店頭に置いてありました。30分ほど持ち上げたり意味なく文字列を打ち込んだりして感触を確かめていましたが、ふと店員さんが近くに来たので「WebのAppleストアでは納期2〜3週間となっているけど、実際どのくらい?」と聞いてみたところ、「・・・1.6Ghzのモデルですか?」と店員。「はいそうです。」と僕。「・・・今、確認してきますが、実はごくわずかだけ在庫があったと思います。多分1台だけ・・ 押さえましょうか?」と店員。「あ、そうなんですか。」としらじらしく応答。そんな夫婦ザイマンみたいなことをしつつあえなく購入。いうまでもなく在庫はまだあったでしょうな。
さておき、このMacBook、なんとなく気になってたもののスペックからすると結構高いし、コレをどうしても買わなきゃいけない理由があまり見当たらなかったものの、最後は衝動BUYしました。で、実際買ってみてどうかというと、・・・イイです。あくまで個人的な意見ですが、かなりイイ。某所でも同じことがいわれていましたが、買ってみるとスペック等まったく気になりません。というのも実際動作速度に不満を覚えることもないし、それよりもコイツをいろんなところに持ち歩いてなにげにパカッと開いて作業を始めるのがとてつもなく満足な気分になるから。23万というのはスペックを基準につけられた価格ではないことがよく理解できます。こいつと一緒にウロウロしてそこら中でパカパカ開いて使うと何故か妙に満足できます。僕は社会人になってからずっとThinkpad Xシリーズを使い込んでおり、サイズ、重さ、キータッチ、トラックポインタすべてがもはやノートPCとして完成型だと思っていました。しかしこのMacBook Airはそんな価値観を転換させるほど魅力的。それはハードウェアとしての美しさと機能性、そしてLeopardというOSがそうさせるんでしょうなぁ。Thinkpadにはなかった新しいノートPCとしての魅力がこのAirにはあるようです。ここまで書いて何がそんなにいいのかを整理するほどの気力がなくなってきたのと百聞は何とか、ということで一枚の写真を皆様に。






