2012年09月03日
_ [review] Dell PowerEdge R210II、Si R&D静音ラック
先月頭に導入したものではあるけどようやくまとめ。写真撮影しておけばよかったな。
猛暑が近づきまた節電の叫ばれる中で、社内サーバルームの蒸し風呂化が危機的状況になることが予想されるため、今後のサーバ・ストレージの管理も見据えてラックおよびラックマウント型マシンでサーバルームをリプレースすることにした。
何分小規模企業なのでそんなに予算が潤沢でも専用の冷房付きサーバルームがあるわけでもありませんて。
サーバとして導入したのはサイズと手頃なスペック、あとは価格で、DELLのR210II。
http://www.dell.com/jp/business/p/poweredge-r210-2/pd
Xeon E31230、8GBメモリ、2TB SATAx2にカスタマイズ。奥行き394.3mmというのはラックに余裕ができて素敵だ。前と後ろ両方にアナログRGB端子があるのもモニタリングによい(もうDVIでもいいんじゃないの…という気もするが)。PCI情報は下記。
http://kmuto.jp/debian/hcl/DELL/PowerEdge+R210+II/
Debian(当然)のインストールでは、NICのBroadcom BCM5716にファームウェアが必要なので、d-iの普通のインストール手順のとおりUSBで途中追加した以外はとりたてて特別なところがない。
ただ2ディスクの起動順序がちょっと謎で、sdaではなくsdbから起動しようとしてしまい、ハマった。BIOSのメニューで一応設定はできるのだが表示されるHDD IDが同じなのであまり役に立たない。一時的に起動してからsda→sdbに/bootをコピーし、sdbのMBRにGRUBをインストールして、以降は定期同期するようにしておいた。
CPUは強力で、今までCeleron 1個でヒーコラしていたのとは雲泥の差。メモリもそこそこあるので、仮想化もぼこぼこ入れられる……。と思っていたのだが、カーネル(3.2)のバグなのかCPU仮想化支援のバグなのか、VirtualBoxのWindows環境が親のCPU Soft Lockupを引き起こしてカーネルクラッシュさせてしまうようになってしまった。
VirtualBoxと仮想Windowsはセットアップのかなり初期の段階で入れて問題はなかったのに、いろいろサービスを追加していくうちに何かがトリガしてしまったのか、Windows起動30秒ほどで全クラッシュしてしまう。ディスクのログには何も残っておらず、高速でLockupメッセージが流れるのであまりはっきりした見当もついていない状況。シリアルコンソールでもつなげないとダメだな。今後より新しいカーネルのテストやwatchdogまわりのチェックもしてみるつもり。
VirtualBoxのほうはおそらくソフト側の問題なのでともかくとして、ハード的に残念なのは下記2点。
- eSATAポートはPMP(ポートマルチプライヤ)に対応していない
- Expressカードスロットは飾り
eSATAについてはあまり期待はしていなかったものの、Intel C200 AHCI自体はPMP対応なので一縷の望みをかけていた。結局ディスクは1つしか見えずじまい。最近のカーネルでもAHCI PMPまわりを改良したという話はないし、このポートに期待するのは無駄そう。もしかしたらケース内の3や4につなげると……ということはあるかもしれないので、そのうち試す。
むしろ問題なのはExpressカードスロットのほうで、クロシコのSIL24チップや、別のSIL24チップを刺してみたものの、完全にBIOSからも内蔵のハードウェア検証ツールからも無視される(普通のPCではどちらのカードも問題ない)。Expressカードはライザー経由で差し込むのでライザーを外して試そうとしたものの、ライザーが刺さっていないと通電させてくれない仕様で壁にぶち当たってしまった。
どうせダメだろうなとDELLサポートにメールしたものの、「eSATAをBIOSで有効にしてください(それはわかっていてPMPに対応しているのかと聞いたのに……)」「Expressカードスロットの動作についてはこちらからは提供できません(別途電話がかかってきて話したときも、「1Uなのでここに何か刺すことを想定していない」ということを言われたのだが……)」という予想範囲内ではあるが残念な回答。
どっちにしろPMP自体はパフォーマンスに問題あるし内蔵ディスクでも当面困ってないので、いいっちゃいいのだけども、少々DELLさんの対応には失望した。
素材自体は良いし、パフォーマンスも満足いくものなので、DELL特有の「余計なことをして欠点作っちゃってる」というパターンがまたしても、という感がある。
(追記)むつみさんから「sil24だと余計なものが挟まってしまうので、何かPCIeネイティブなものを試してみよ」という連絡が。なるほど。しかし実験素材がないな(笑)。社内で誰かから借りてみるか。
ラックはSi R&D社の静音19"ラックSYSTEM4.5。一度説明に来てもらい、収納物が決まったところで見積もり、配送。中にどのようなものを入れるかによって風の流れの計算あるいは特殊加工をするとのことで、今回は結果的にはPMP使えずで不要になっちゃったけど「なんちゃってRAIDボックス」を綺麗に納めるためのアクリルプレートが取り付けられた。
さて、値段は張るけど、このラックは本当に良い。R210 IIもそれなりな風切り音を出すのだが、ラックの蓋を閉めると、コピー機のアイドル状態よりも音がしない。
強力なファンで前蓋の上部から空気を吸い込み、後蓋の下部から同様に強制排出する。 まだラック内の台数が少ないというせいもあるが、サーバルームが室温と同期している(つまり人のいない時間はほぼ外気温+α)という状況で、R210IIのセンサー観測では、ケースが常時30度、CPUが40〜50度、HDDが常時40度と安定した冷却ができてる。
社内にもやっぱサーバないとやっぱり困るよね、という場面でこのラックはオススメ。
さて、R210 IIを次に止められるのはいつかな……。
2012年09月08日
_ [computer] PDFの前付用ページラベルを(Acrobatなしで)設定する
GitHub https://github.com/kmuto/roman-nmbl にて公開。
常々困っていたところ、iTextのメソッドを見ていたらできそうな香りを感じ、さっそく作成。Javaのコーディングは正直もう辛いので、エラーハンドリングなどもかなりおざなり。
たとえば、前付がローマ数字ノンブル(いわゆるページ番号)、以降の本文などは1から始まるアラビア数字ノンブル、という構成の分割されているPDFをpdftkで合体すると、PDFのページ情報としてはローマ数字だったところは無視されてPDFの1ページ目がアラビア数字1から始まるようになってしまう。紙面内のじゃなくて、リーダのボックスに表示されるほうね。
これを直すにはAcrobatで調整するしかないというのが定説で、スイスアーミーナイフであるpdftkも、update_infoで一見いじれるように見えながら書き込むコードは実装されていないっぽいという罠。
で、update_infoの情報からlabelとLowercaseRomanをキーワードに探していくと、JavaからのPDF生成でよく使われるiTextライブラリにsetPageLabels()という何やら「ピキーン!」とニュータイプ音がしそうなメソッドを発見。
使い方を最初勘違いしていて変なラベルがついたりクラッシュしたりしてしまったのだけど、ともかく前付部はローマ数字、以降は1リセットしてアラビア数字、という希望の出力ができるようになった。
pdftkで合体してさらにこのツールを使ってというのもだるい感じはあるのでiTextで合体も実装してしまえばいいとは思うんだけど、Javaでオプションを解析したりエラーハンドリングしたりというのを考えるとそれはそれで面倒なので、ひとまずここまで。
iTextのメソッドを見ているとほかにもいろいろ面白げなものがあるので、そのうちまた何か作るかも。
2012年09月12日
_ [indesign] 索引をスクリプトからなんとかして埋め込む
弊社の作業では(さまざまな事故が起き得ることから)InDesignのデータの中に索引を入れるということはまずない(別ファイルで管理)のだけれども、まれに入れざるを得ない案件もある。
手作業で選択→ヨミ入力→選択→ヨミ入力 とやっているとアホになる。スクリプトプログラマとしてはそんなの自動化だろということで、kakasiなりYahoo!なりを使って形態素解析するわけだ。
さてここまではたいして難しい話ではなく、pageReferences.addを使ってめでたく索引埋め込みスクリプトは動作するわけだが、どうも奇妙な現象にぶつかることになるだろう。
というのも、表が途中に存在すると、登録しようとした位置からその行数の累積の文字数分、実際に配置される索引位置がずれるのだ。これはひどい。表が実装されたCS2以来、CS6でも未だ直ってない。表の実装はややこしく、いくらでも不具合はある(たとえば未だに脚注ができずにだまって消えるとか…)のだが、ともかくこのままだと表が登場するたびにどんどんずれていって使い物にならないし、ドキュメント末尾にさしかかると今度はドキュメント先頭やら表の中やらおもしろすぎる場所に索引が入るというオマケ付きだ。
1つの作戦としては表が登場するたびに行数を数えて処理するという手があるが、これは検査が面倒で時間がかかりすぎる。
そこで、前置きが長くなったが、「コピペ」作戦である(正確にはカット&ペーストだが)。「スクリプトだとどうにもだめなのに手作業だとなぜかできる」という処理がInDesignにはよくある。今回も手作業をエミュレートすると、バグを回避して索引を埋め込めた。
埋め込み処理のメソッド実装は次のとおり。
function embedIndex(document, sel, ins, item1, yomi1, item2, yomi2) { var tf = document.pages[0].textFrames.add(); // ダミーのテキストフレーム tf.geometricBounds = [0, 0, 30, 30]; tf.contents = "♦"; if (item2 != "") { var topic1 = document.indexes[0].topics.add(item2, yomi2); var topic2 = topic1.topics.add(item1, yomi1); topic2.pageReferences.add(tf.characters[-1], PageReferenceType.CURRENT_PAGE); } else { var topic = document.indexes[0].topics.add(item1, yomi1); topic.pageReferences.add(tf.characters[-1], PageReferenceType.CURRENT_PAGE); } tf.characters[0].select(); app.cut(); ins[-1].select(); app.paste(); tf.remove(); }
selが索引用選択中のテキスト系オブジェクト、insがsel.InsertionPoints(ということはinsは実はリファクタリングできるな…)。item1/yomi1がレベル1索引のペア、item2/yomi2がレベル2索引のペアの文字列。
ポイントとしては、ダミーのテキストフレームをかなり適当に作り、索引をまずそちらに貼り付けるというところ。それをカットして、あるべき箇所にペーストし、ダミーは削除する。
この時点では索引参照ページを見ると空になっているので、すべての索引登録作業を終えたら索引ウィンドウで「プレビューを更新」をすればよい。
あ、topics.addについて重複検査とかしていない(笑)。まぁ基本はできたので、もうちょっとマジメに直そう。
2012年09月18日
_ [review] OpenBlocks AX3
8月初旬にぷらっとホームさんからOpenBlocks AX3 ( http://openblocks.plathome.co.jp/products/ax3/ ) を評価用にお借りしている。
本当はいろいろと実験してみたかったのだが、最近十分な時間が取れないのと、レンタルという性質から実働投入もしがたい、ということで、極めて表層的な評価となる。
お借りしたのはOBSAX3/4/DPJ7。4ポートギガビットEther、Java SE for Embeded、16GBのSSD、メモリは本来1GBだが最大の3GBまで増設した状態。
幅101x奥行142.1x高41 と非常にコンパクト(CDケースと比較した画像を参照)。ファンレスで表面が放熱シンクになっており、背面にAC差し込み口。ケースはかなり頑丈。
AC以外の口はすべて前面にまとめられている。コンソール(シリアルコンソール)とRS-232CもRJ45を流用しているので、イーサネット4つと合わせてRJ45の口が6つ並ぶという圧巻。
USBは2口、eSATAまで用意されている。eSATAがポートマルチプライヤに対応しているか確認しようと思ったのだが、あいにく擬似RAID箱を今取り出せない状態のため調べられなかった。
中まで開けてみようとしたがちょっと固くて、ドライバなどを使うと傷つけてしまいそうだったので断念。ぷらっとホームの技術掲載情報から引用。
CPU/アーキテクチャにはARMが採用されており(Armada XP Dual-Core 1.33GHz)、armelアーキテクチャ対応のOSのほか、ハードウェア浮動小数点演算を利用するarmhfアーキテクチャで利用すれば(映像系などで)より良好なパフォーマンスが得られる。
現在のOBSAのプリインストールOSはDebian GNU/Linux 6.0でarmelアーキテクチャを採用している。armhfはDebian GNU/Linux 7.0に向けてまだ開発が継続しているというくらいの段階なので、当面はarmelが最適解となるだろう。
コンシューマ向けの製品ではないため、ソフトウェアのほうはユーザインタラクションについての作り込みはさほどなく、むしろdebootstrapで作ったシンプルなDebian環境に近い。デフォルトのネットワーク設定も、DHCPでつながるわけではなく、シリアルコンソールでログインして調整するか、またはOBSAの初期設定に合わせたネットワークブロック(eth0かeth1を利用)に接続機を合わせてsshでログインして調整することになる。rootユーザアカウントがぽつんとあるだけなので、パスワードの設定、アカウントの追加などはすべて手動となる。玄人向けではあるが、DebianのCUI操作に慣れているならとまどうことは少ないだろう。無論、apt-getでいくらでもDebianらしく拡張可能だ。VNCやXDMCPなどを使えば、リモートからGUIデスクトップを扱うこともできるだろう。
機構としては、フラッシュROMから展開される124MB程度のRAMディスクにSSDをunionfsでかぶせるという手法になっており、/etc/network/interfacesの変更後など必要に応じてflashcfgコマンドでフラッシュROMを更新する必要がある。
root@obsax3:~# df -m Filesystem 1M-blocks Used Available Use% Mounted on /dev/ram0 124 97 22 82% / udev 10 1 10 2% /dev tmpfs 64 1 64 1% /dev/shm /dev/sda1 14091 498 12878 4% /.rw unionfs 14091 498 12878 4% /etc unionfs 14091 498 12878 4% /bin unionfs 14091 498 12878 4% /home unionfs 14091 498 12878 4% /lib unionfs 14091 498 12878 4% /sbin unionfs 14091 498 12878 4% /usr unionfs 14091 498 12878 4% /var unionfs 14091 498 12878 4% /root unionfs 14091 498 12878 4% /opt unionfs 14091 498 12878 4% /srv unionfs 14091 498 12878 4% /media
いくつかパッケージをインストールし、コンパイルなども実行してみた限りでは、CPUおよびメモリに十分なパワーがあることもあり、使い慣れたx86と何ら遜色はない。コンパクトかつファンレスでOSの自由度の高いサーバ/ルータ/ファイアウォールとして、Debianに慣れたネットワーク管理者には非常に魅力的な製品だ。Debian armelの開発環境としてもハイスペックで、Debian armhfのデファクトなリファレンスになりそうな雰囲気もあり、Debianで組み込み開発を進めている人にも重宝されるだろう。
1点気になるところとしては、その発熱の大きさだ。放置していても上面の放熱フィンが触われないくらい熱くなるので、sensorsを入れてCPU温度を計測してみたところ、外気温28℃の状態で、アイドルで80℃、少しストレスをかけると容易に90℃をオーバーする。ケース側は触れた感覚では50℃前後だろうか。料理温度計で計ろうとしたが形状的にうまく計れなかった。←追記しましたが、発熱は初期不良でした。
本体自体は熱への強さをぷらっとホームさん自身が謳っているので問題なさそうとは言え、紙やビニール系(たとえばACアダプタのケーブルなど)のものが接触しないよう注意が必要だと感じた。ぷらっとホームさんの回答では、CPUの消費電力で発熱はするものの、内部コンデンサへの110℃/140℃品の採用や、匡体放熱で動作に影響はないとのことだ。ケーブル類が整理された環境であれば問題になることは少ないが、家庭やごちゃごちゃしたオフィスで使うときにはちょっと周辺環境を気に留めたほうがよさそうである。
オフィスでは現在もぷらっとホームのOpen Micro Server( http://openblocks.plathome.co.jp/products/oms400/price.html 、mipselアーキテクチャ)+Debianが現役でルーティングに活躍している。当初はカーネルに起因する障害でぷらっとホームさんといろいろ検証作業をすることになったが、今ではとても安定化しており、信頼性の高い高機能ルータとなっている。 とはいえ、Open Micro Serverはすでに販売終了しており、OpenBlocks 600ファミリではイーサ3ポート以上というオフィス利用での要件を満たすことができず、万が一故障・復旧不能になったときの代案は頭の痛いところであった。 ギガビット4ポートを選択できる本機は、Open Micro Serverの正当なる後継者として大いに期待が持てる。
#とはいえ、OMSがまだ丈夫で壊れておらず、AX3がなかなかお高いことは確かなので、調達は悩ましいところではあるのです……。Bフレッツニューファミリ程度だとOMSでさほどの速度低下はないし。
追記
記事に書いた高温発熱や、ファイルシステムを作成するだけで奇妙なカーネルクラッシュが発生するなど、どうも本体の不良が懸念されたため、2013年3月にサポートに連絡した。3月24日に交換品が届き、室温状態でアイドル55.9度で安定するようになっている。ほんのり程度の暖かさとなり、これなら確かにまったく利用に問題ない。