2010年8月29日日曜日

gnupack + NTEmacs23 のdot.emacs


このエントリーをはてなブックマークに追加


今日のところはこんな感じで落ち着いた。



gnupack + NTEmacs23 で SBCL/SLIME


このエントリーをはてなブックマークに追加


今まで単品のNTEmacs上で構築していたSBCL + SLIME + HyperSpec(emacs-w3m)環境を、gnupack上へ移行してみる。

必要なもの
SBCL
SLIME
cygwin用w3m
emacs-w3m

gnupackはC:直下にC:\gnupackとして配置されていることを前提とした手順は以下


2010年8月28日土曜日

RHEL KVM Windows用 virtioドライバ


このエントリーをはてなブックマークに追加


Windows用の準仮想化ドライバ。ディスクやネットワークI/Oを高速化できる。

http://www.windowsservercatalog.com/results.aspx?text=Red+Hat&bCatID=1282&avc=10&ava=0&OR=5&=Go&chtext=&cstext=&csttext=&chbtext=

@追記
 準仮想化ドライバはVMwareにおけるVmware tools やVirtualBoxにおけるGuestAdditionalsみたいなもので、I/O部分を準仮想化にすることでI/O性能を向上させるのが目的。

 便利な半面、運用が面倒臭くなる面もあり、準仮想化ドライバはカーネルやドライバ、ハイパーバイザ(KVM/QEMU】と密接に結合されているため、どれかをバージョンアップ等すると、引きずられて全てのVerUPを行う必要がある。

 なので開発環境や検証環境等の性能が要求されなく、かつ大量の仮想マシンを動かす場合なんかは、あえて準仮想化ドライバを使わない方が運用面での利便性が向上するので、ドライバの適用は性能・運用のバランス見て行うのが良いだろう。


KVM徹底入門

KVM徹底入門

価格:3,444円(税込、送料別)



バッチやシェルスクリプトには安全装置を


このエントリーをはてなブックマークに追加


インフラ関連の作業をしていると、バッチやシェルスクリプトを山ほど作ると思う。
運用のためだったり、構築段階での効率化を目的としたもの、データ移行を目的としたものやそれこそ様々な用途で活用されている(はず

作業を自動化する上で非常に便利なバッチ・シェルスクリプトだが他人の作ったものを見ていると、Windowsであればダブルクリックするだけで即実行されてしまうものがかなりある。
これは非常に危険で、慣れない顧客環境や、狭くて窮屈なコンソール環境なんかで作業していると、間違って実行してしまったりと危険極まりない。

またバッチからバッチを読んでいるような処理で、呼び先のバッチの中で環境変数をチェックしてない場合も多く、これも危険。
例えば元バッチAで
APPTEMP=/opt/app/tmp とかしてしていて、

呼び先Bで
rm -rf $APPTEMP/data

とかしていると、呼び先バッチBを直接実行されると変数がセットされていないため、これは
rm -rf /data として実行されてしまう。

基本的な事なんだけど、こういった問題を回避して安全に運用するためのTIPSをメモっておく。



Common Lisp関係書籍


このエントリーをはてなブックマークに追加


最近購入&読んだLISP関係書籍まとめ。

実用Common Lisp

実用Common Lisp

価格:9,660円(税込、送料別)


On Lisp

On Lisp

価格:3,990円(税込、送料別)


Let Over Lambda

Let Over Lambda

価格:3,360円(税込、送料別)


初めての人のためのLISP増補改訂版

初めての人のためのLISP増補改訂版

価格:3,129円(税込、送料別)



RHEL KVM ksmctlでメモリの効率化


このエントリーをはてなブックマークに追加


KVMにはKSMという仮想マシンのメモリ最適化の仕組みが搭載されている。
デフォルトはOFF。

KSMは Kernel Samepage Merging(またはkernel sharepage merging)の略で、カーネルがユーザプロセスのメモリをスキャンし、同じ内容があればマージしてメモリを節約する機能。
同一OSを複数起動する仮想環境ではかなり効果がある。

こんな感じで使う。設定は簡単。

■現在の状態を確認(実行されているか、いないか)
# ksmctl info

■ksmを開始する。
# ksmctl start npages sleep
npages 一回の走査でスキャンするページ数
sleep スキャンの間隔(ミリ秒??)

■ksmを停止する。
# ksmctl stop

という形で指定する。
使ってみた感じは以下。



2010年8月27日金曜日

RHEL I/Oスケジューラの変更


このエントリーをはてなブックマークに追加


RHELのI/Oスケジューラの変更方法。
環境によっては結構差が出てくるので、何がベストとは言い難い。
簡単にテストできるので環境に合わせて最適なスケジューラを設定しよう。

KVMではdeadlineスケジューラが推奨されている。



2010年8月23日月曜日

gnupack + NTEmacs23 でメール(Wanderlust)


このエントリーをはてなブックマークに追加


ダウンロードして解凍するだけでWindows側の環境変数とか気にしなくて使える。超便利。
これを使ってWanderlustのメール環境を構築してみる。

gnupack_devel をC:\直下へ展開したという前提で作業を進める。配置するディレクトリに空白や日本語を含むとトラブルの元なので気をつけよう。

■必要なものは以下、各ソフトの内容はリンク先で詳細確認してください。
APEL
LIMIT(FLIM)
SEMI
wanderlust

上記のソフトの導入方法は以下。


2010年8月22日日曜日

HHK Pro2 JP を買ってみた。


このエントリーをはてなブックマークに追加




ヨドバシで衝動買い。ポイント含めてもAmazonのほうが安かったのはちょっとショック。

久々に使った見たけど、さすがのタッチ感。軽快にキー入力がすすむ君。
WindowsだとFnキーを覚えないとやや使いづらい感じ。Unix系で使うなら全く問題なし。

ただ、使ってて最初ものすごい違和感があったのが、Z列が全体的に少し左にズレていること。
写真を見るとわかるんだけど、普通のキーはAとSキーの中間にZキーがあるのに、HHK Pro2 JPは中間より左側にZがあるのがわかると思う。
ほんのちょっとの差なんだけど、慣れるまでは違和感あった(なれたらあまり気にならないけど)

HHK搭載のノートPCがほしい。。。


2010年8月14日土曜日

Solaris10でファイルの暗号化


このエントリーをはてなブックマークに追加


cryptコマンドが標準で使える。
このコマンドは標準入力されたファイルが未暗号化であれば暗号化し、暗号化済みであれば復号化して標準出力へ出力してくれる。

■ファイル暗号化
root@sol10-u24 00:50:00>crypt < core > core.enc
Enter key:xxxxxx ← 暗号化キーの入力

■ファイルの復号化
root@sol10-u24 00:50:00>crypt < core.enc > core.unenc
Enter key:xxxxxx ← 暗号化キーの入力

■復号化の確認
root@sol10-u24 00:50:54>digest -a md5 core*
(core) = 95bbbc79383584b01b0df14e9d2b0fed
(core.enc) = c2c7f94902deff9661a8147527a99c24
(core.unenc) = 95bbbc79383584b01b0df14e9d2b0fed

暗号化強度はそれほど高くない模様。しかもキーの確認を行わないからパスワード間違えたら終わり。元ファイルを消す場合、必ず復号化できることを確認しよう。

*追記:かなり巨大なファイルも暗号/復号化できるみたい。x64 Sol10 で 22GBの暗号化と復号化でも問題なし。

参考>> SunOS リファレンスマニュアル 1 : ユーザーコマンド crypt(1)


Solaris10でMD5の計算


このエントリーをはてなブックマークに追加


Solarisにはmd5sumコマンドがないが、代わりにdigest コマンドが標準でインストールされている。
使い方は以下

■サポートされるダイジェストのタイプ
root@sol10-u24 00:51:05>digest -l
sha1
md5
sha256
sha384
sha512

■MD5ダイジェストを出力
root@sol10-u24 00:50:54>digest -a md5 core*
(core) = 95bbbc79383584b01b0df14e9d2b0fed
(core.enc) = c2c7f94902deff9661a8147527a99c24
(core.unenc) = 95bbbc79383584b01b0df14e9d2b0fed


2010年8月12日木曜日

Hadoop (6) NameNodeをRHCS/GFSでクラスタ化する A


このエントリーをはてなブックマークに追加


現在のHadoopにおけるHDFSはNameNodeが単一障害点となり、ダウンした場合一切の作業ができなくなってしまう。

Secondary Name Node はPrimaryのバックアップではなく、ジャーナル書き込み等を支援するノードのなるので注意。

そこで、Name ServerをRedHat標準のクラスタソフトであるRedHat Cluster Suiteと、Global File Systemを用いて可用性を保持させてみる。

GFSを使うメリットは全てのノードから等価にファイルシステムへアクセスできるため、RHCSで仮想IPの制御さえしてやれば、どのノードでもPrimary Name Nodeを起動できるようになる事。これはNFSでも実現できるが、細かなブロックアクセスが多い、Name NodeではGFSの方が性能を担保しやすい(と思う

■今回の環境は以下
RHEL5.5 クラスタ管理 192.168.1.101
・RHEL5.5 Primary Name Node 192.168.1.102
・RHEL5.5 Backup Name Node 192.168.1.103
・RHEL5.5 Secondary Name Node 192.168.1.104
・Solaris10 共有ストレージ(iSCSI)、192.168.1.10
・NameNodeの仮想アドレス 192.168.1.105
・NameNodeの仮想アドレス 192.168.1.106
・NameNodeの仮想アドレス 192.168.1.107

*このクラスタ構成はCentOSでも使える。が、RHCSは他のクラスタソフトに比べ、様々な障害に対して対応できるように設計されているため、構造がやや複雑なので、本番で使う場合は正規のサブスクリプションのあるRHEL APを推奨。
*ここでは動かすことに注力するので、細かな障害対応設定は省いているので注意。
*本当はネットワークはクラスタ通信用と分離した方が良いが、今回は全て同居させている。



RHEL Device Mapper と LVM


このエントリーをはてなブックマークに追加


RHELのFC/iSCSIのマルチパスで使用するDevice Mapper Multipath の Device Mapper って実は結構、深い機能を提供している。

 参考>> RedHat における iSCSI 設定とマルチパス
 参考>> マルチパスI/Oの設定(RedHat)

LinuxのLVMも、Device Mapperのラッパーとして実装されている。そんなDevice Mapperについての話。



2010年8月10日火曜日

RHEL KVM (3) コマンドラインからの操作 libvirt


このエントリーをはてなブックマークに追加


KVMのコマンド操作はvirshを経由して行う。
■KVM関連の設定ファイル
/etc/libvirt
/var/lib/libvart

■作成した仮想マシンの定義ファイルは以下のディレクトリに格納される(XMLファイル)
/etc/libvirt/qemu/

■仮想マシン(ドメイン)を起動
[root@ml115g5-2 ~]# virsh create /etc/libvirt/qemu/rhcs-master.xml
ドメイン rhcs-master が /etc/libvirt/qemu/rhcs-master.xml から作成されました

■起動している仮想マシン(ドメイン)を表示
[root@ml115g5-2 ~]# virsh list

 Id 名前               状態
----------------------------------
  6 rhcs-master          実行中

■仮想マシンのコンソールへ接続(事前設定必要)
[root@ml115g5-2 ~]# virsh console rhcs-master
>>参考 RHEL KVM (2) コンソール接続

■仮想マシン(ドメイン)へ停止信号を送信(OS側がPowerOffシグナルを受ける)
[root@ml115g5-2 ~]# virsh shutdown rhcs-master

■仮想マシン(ドメイン)を即座に停止
[root@ml115g5-2 ~]# virsh destroy rhcs-master

KVM徹底入門

KVM徹底入門

価格:3,444円(税込、送料別)



2010年8月8日日曜日

RHEL KVM (2) コンソール接続


このエントリーをはてなブックマークに追加


KVMでLinuxを使ってるとコンソール接続できると何かと便利。インストール後にゲストOSで下記設定をすることで使用可能になる。

RHEL5系(Scientific5, CentOS5含む)は下記の設定、6系はこちら

太字部分を追記
# vim /etc/inittab
-----------------------------------
# Run gettys in standard runlevels
S0:12345:respawn:/sbin/agetty ttyS0 115200
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
-----------------------------------

# vim /etc/grub.conf
-----------------------------------
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 console=ttyS0,115200n8
        initrd /initrd-2.6.18-194.el5.img
-----------------------------------
設定後はゲストを再起動し、
 # virsh console guest_name

で接続可能。コンソールを抜けるには "Ctl - ]"

KVM徹底入門

KVM徹底入門

価格:3,444円(税込、送料別)



スナップショットからリストアする時はディスク負荷に注意


このエントリーをはてなブックマークに追加


 NASとかによくあるスナップショット機能。ちっちゃいファイルを戻すには便利だけど、巨大なファイルや大量のファイルをリストアする場合は注意が必要。

 書き込み負荷 = 1
 読み込み負荷 = 1
 スナップショット維持コスト = 1

の場合、普通に使うだけなら常に負荷1~2なのであんまり問題ない。

 しかし、スナップショット領域から、元の領域へ巨大なファイルを戻そうとすると。

 スナップショットを読み込む・・・1
 それを元の領域に書き込む・・・1
 書き込みによって生じるスナップショット維持コスト・・・1

となり、合計負荷が3になる。小さいファイルなら問題ないあが、巨大なファイルでは顕著にリストア時間に差が出てくる。100MB/sでReadできるNASでも、この方法だと、単純計算でも33MB/sまで落ちることになるが、実際はもっと落ちる。この3つのアクションは完全に単一ボリュームへのランダムアクセスになるので転送速度は1/5~1/20まで落ちると考えた方が良い。VMwareやKVM等の巨大な領域をリストアする場合はリストアスケジュールを事前に考えておこう。

 こういう状態を回避するために、NAS製品では良くスナップショットを実ボリュームと入れ替えてしまうオプションがある場合もある。もし使えるなら有効活用しよう。

結論を言うと、ZFSのスナップショット最強ってことで。



RHEL KVM (1) 導入


このエントリーをはてなブックマークに追加


 今まで検証用に、Solaris10 + VirtualBoxという仮想環境を利用してきたが、ホストのSolaris10がCIFS/NFSサーバや、PXEブート時のインストールイメージの提供等を兼ねているため、仮想マシンを4~5台動かすと、リソースが枯渇して、予期せぬエラーが出て検証がストップしてしまうケースが多くなってきた。

 なので、Solaris10にはZFSでのファイル共有を主に担当してもらい、今回新たにHP ML115G5を購入したので、そちらにRHELをインストールし、KVMを利用して検証環境を構築することに挑戦してみる。



RHEL のマウントオプション _netdev


このエントリーをはてなブックマークに追加


 RHELやCentOSでネットワーク経由のデバイスを起動時にマウントさせたい場合、オプションに _netdev をつけておくのを忘れないように。このオプションを指定されたレコードはネットワークが開始されるまで、マウントを待ってくれる。

 iscsiデバイスや、NFSは当然ながらネットワークが有効でないとアクセスできないので、このオプションを付けないと、面倒なことになりますのでご注意を。

例)
/dev/iscsi01-01 /mnt/iscsi01-01 ext3 _netdev 0 0
host:/nfs01 /mnt/nfs01 nfs _netdev 0 0



2010年8月3日火曜日

Kindle DXg 純正横開きケースを使ってみた


このエントリーをはてなブックマークに追加


Kindleの新製品発表&日本語対応も正式に発表されたし、日本語ハックだと苦労せずに済むのはうれしい限り。

んで、前回残念な事になったケースに懲りず、また新しいケースを買ってみた。今度は実質的にAmazon純正のケース。まだAmazon.comでしか買えないみたい。

http://www.amazon.com/Kindle-Leather-Display-Latest-Generation/dp/B002Y27P6Y/ref=sr_1_1?ie=UTF8&s=electronics&qid=1280840662&sr=8-1
*Amazon.comへの商品リンクの方法が分からなかったので、アドレスのみ。

注文から3日で到着。海外からなのにAmazonさん早すぎだろ。。。

しかし、なかなかの高級感


2010年8月1日日曜日

Solaris10 に最新版のSBCL1.0.40をインストール(未遂)


このエントリーをはてなブックマークに追加


http://www.sbcl.org/ で公開されている現時点の最新版はsbcl1.0.40。
配布されているSolaris版のsbclは1.0.23とちょっと古い。
せっかくなので最新版を入れてみることにする。



Solaris10 のWebConsole を外部ホストから使うには


このエントリーをはてなブックマークに追加


Solaris10にはZFSをWebから管理するためのサービスがデフォルトで起動する。
root@sol10-u24 22:17:07>svcs -a|grep webconsole
online          1:35:43 svc:/system/webconsole:console
しかし、初期状態では、ローカルホスト以外からの接続を禁止している。
これを外部ホストから接続できるようにするには以下のコマンドでOK

# svccfg -s svc:/system/webconsole setprop options/tcp_listen = true
# smcwebserver restart

これで、 https://hostname:6789/ へブラウザへアクセスすればよい。HTTPSしかうけつけないので注意。


参考 >> Solaris のシステム管理 (基本編) - Java Web Console へのリモートアクセスを使用可能にする


Solaris10 IPMPで送信パケット負荷分散


このエントリーをはてなブックマークに追加


Solarisには標準でNICを二重化する機能としてIPMPがあるが、
この機能は二重化だけでなく、送信パケットの負荷分散機能も備えている。

これとは別に上位のスイッチと連動することで、送受信の負荷分散な可能なリンクアグリゲーションも設定できるが、 通常のWEBサーバ等であればサーバからみてパケット送信が圧倒的に多いので、用途によっては設定が簡単で、リンクアグリゲーション対応のスイッチが不要なIPMPの方が有効なケースもある。
負荷分散は接続元のIPをベースにラウンドロビンで分散されるので、複数ホストからの接続を受け付けるケースで特に有効。


■設定方法
設定方法は極めてシンプル。