Wednesday, July 31, 2013

gnupack(emacs-24.x)でw3mを使う

私は Windows 上では長らく Meadow を使っていたのだが、Meadow は emacs-22系であるほか、IME回りでたまに落ちることがあったので、そろそろ乗り換えるか…ということで、最近 emacs-24系ベースの gnupack (11.00) に移行してみた。
(もちろん、Meadow の開発者の皆さまには、とても^2感謝しております!これまでどうもありがとうございました!)
移行作業自体は、ほぼ無問題だったのだが、HTMLメールのレンダリングに使っていた emacs-w3m 関連で微笑^H小な TIP があったのでメモ。

emacs-w3m の最新リリース版は 1.4.4 であり、以下からダウンロードできる。

http://emacs-w3m.namazu.org/#download

しかし、リリース版では emacs のバージョンごとに処理を分けている部分が emacs-21 系までしか対応しておらず、

http://emacs-w3m.namazu.org/ml/msg08719.html

にあるようなエラーが出てしまう。(上記は、なんと2006年の記事だ!)
そして、emacs-24 系の現行 gnupack (11.00)環境で、上記の記事で紹介されている work around で逃げようとすると、今度は emacs lisp に非互換があるらしく、やはりうまくいかないのだった。

さて、どうしようか…と調べていたところ、上記の emacs-w3m ダウンロードページに記載のある CVS リポジトリにある開発最新版では、w3m-e19.el や w3m-e20.el や w3m-e21.el といったファイルが w3m-ems.el という名前で統合されており、emacs-24 系でも問題なく使えそうなことがわかった。

そうすると、後は組み込んで使うだけなのだが、ここで問題が一点。
CVSの開発版でも、ドキュメントには emacs (gnupack) の環境定義ファイル(.emacs)
から

   (require 'w3m-load)

して使うべし…と書いてあるのだが、本記事執筆時点の CVS リポジトリからは w3m-load.el が消えてしまっている!

さて、どうするのが正しいのだろうか...と考えたのだが、この記事

http://d.hatena.ne.jp/minazoko/20110307/1299516952

を参考に、「emacs-w3m のリリース版には w3m-load.el あるから、これをコピってくればいいんじゃね?」と安易に考えてやってみたところ、何の問題もなく動いたのだった(笑)

本来はきちんと追求するべきなのだが、いろいろばたばたしている折でもあり、とりあえずここまでとした。

Wednesday, July 24, 2013

書評: Software Defined Storage with OpenStack Swift


"Software Defined Storage with OpenStack Swift", Joe Arnold

昨今は、なんでもかんでも Software Defined ほげほげな世の中になってしまった。
本書でいう Software Defined な Storage は、Amazon でいうところの S3 に相当する Object Storage のことである。

著者の Joe Arnold 氏は、元CloudScaling所属で、現在は SwiftStack という自分の会社をやっている人である。SwiftStackには、Swift の PTL の John Dickinson も合流し、今、オブジェクトストレージ系では一押しのベンチャーではないかと思う。

この本は、要するに OpenStack Swift を使ってオブジェクトストレージの基盤を構築・運用するにあたり、SwiftStack のコントローラを使うと、うまくSoftware Define Storage のCプレーンの制御を実現できますよ…というストーリーで構成されている。

したがって、(残念ながら)オープンソース版のSwiftを使ってシステムを作って運用するのにあたって、この本の手順の通りに Swift を運用すればよいというわけでは「ない」。 しかし、それでも著者の豊富なSwift案件対応経験に基づいた、非常に示唆に富んだ本である。

本書の構成は以下の通りである。

1. 背景とSwiftの概要
2. Swiftの動産
3. Swiftの使い方
4. Swiftのインストール
5. SwiftStack コントローラによる Software Definrd Storage
6. SwiftStack クラスタの設定
7. SwiftStack クラスタの運用
8. SwiftStackと他コンポーネントのインテグレーション
9. テストとベンチマーク
10. チューニング

タイトルの Software Defined Storage ひ関連するくだりは、5章まで出てこない。しかも SDN について一般的に言われるのと同様に、制御面を分離して、集中制御しましょうと言っているだけである。ここで注意が必要なのは、オープンソースの Swift は制御される側であって、制御面にいるのは SwiftStack 社のコントローラだということだ。

Swift はシンプルで割り切った設計で、動きも理解しやすい。しかし、お客さんのデータを預かって、しかもそれなりな規模で運用するのに必要なノウハウを持つことと、ただ動かすのとは別次元の問題である。これを解決するのが SwiftStack のコントローラ…というわけだ。

Swift について、ring ファイル作成時の留意事項のレベルで理解している読者、具体的には例えば part_power と全体キャパシティの関係を理解している読者は、6章以降から読めば、システムの設計・構築・運用にあたって、充分に有意義な知見、またはヒントを得ることができるだろう。例えば、ストレージノード(account/container/object)のHDD故障の時とノード故障の時の挙動の違いや、留意事項、対処について解説した文献がこれまであっただろうか?その他、運用時に見るべき指標など、なぜこの本に書かれていることがベストプラクティスなのか、考えながら読むと、とても高いレベルまで達することができるように思う。
自分としても、この本を読んではじめて気が付いたことはたくさんあるので、具体的にまとめて公開したいところなのだが、それをやってしまうと「おっと誰か来...」てしまうので、このくらいにしておく。

Swift について学ぶところからはじめる読者は、英文は平易な上に分量もそんなに多くないので、普通に先頭から通読するのを薦めたい。

だいぶ不完全燃焼感があるのだが、このくらいで。