おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

openSolaris Hot Topic Seminar 2009.12.18

Sun が openSolaris についてありがたーいことに無償で行ってくれる、やや初心者寄りのナイトセミナーと、中級者・実運用者向けのホットトピックセミナー。
今回はホットトピックセミナーということで一瞬躊躇したのですが、Solaris バリバリ運用してるわけじゃないし、分かんないのは当たり前、わかんなかったら質問すればいいや、まいっかということで行ってきました。

「ますます注目の ZFS 第三段 - ZFS 実用編」by Nozaki さん

これまでのセミナーですでに ZFS の何がすごいか、技術的特徴は、などの話はしているので*1、今回は「では ZFS でどういうふうに実際にシステムを構築したらいいか」というテーマで。
おお、それは素敵だ。来てよかった*2

好意でやっていただいてるセミナーをだらだら垂れ流してもしょうがないので要点のみかいつまんで。

そもそもアプライアンス?手作り?
  • Sun Storage 7000 シリーズはヘッドコントローラに openSolaris 採用
    • ZFS で柔軟な運用&SSDを用いた低価格・高性能なストレージ
    • DTrace の情報を Web から参照できるなどステキ機能も
    • Dev から取り込んだ RAID-Z3 なども搭載
      • これでよかったら今すぐ Sun の営業へお電話を! 終了。
  • ではつまらないので、今回はサーバを自分で構築する場合です。
動作 OS
  • その他の OS たち
    • FreeBSD
      • 一応頑張って追いかけてる
    • Mac OS X
      • こないだ Apple から放棄されました
      • あとはコミュニティでどこまで頑張るか*3
    • Linux/FUSE (Filesystem in UserSpace)
    • どっちにしても最新を常に追っかけることができることが重要
      • ZFS の進化はまだまだ続くぜ……
      • ま、結局は Solaris 系がいんじゃね?
サーバ構成要件
  • 当然なんでも「速ければいい」「大きければいい」
  • メモリはごっそり載せると ARC (ディスク用1次キャッシュ) として使われるのでうれしい
  • SSD などの高速フラッシュデバイスも L2ARC、ZIL といったキャッシュに使われるのであるとハッピー
  • ZFS root 推称
    • つかそもそも openSolarisZFS root だけだし
    • ブート環境の snapshot / rollback はおいしすぎる機能
    • UFS と共存するとメモリ食うよ?
ストレージ (総論)
  • H/W RAID は使わない方がいい
  • あとは容量・可用性・速度などの勘案事項で決める
  • 内部か外部かももちろんある
内部ストレージと考えたときのストレージプール
  • 操作は簡単。/etc/ほげほげ 書き換え不要!
  • コマンドはいろんなとこで紹介してるので略
  • プールになることができるデバイス:
    • DAS HDD FC-SAN, iSCSI, HW-RAID
      • 前述のとおり HW-RAID は止めた方がいい
      • 基本は1ドライブ1プール (可用性の問題)
    • Solaris Volume Manager のプール*4
    • ramdisk
    • ファイル
      • お試し用。ただし lofiadm -a*5 すればキャッシュにもなれる
プール内での RAID 構成
  • 当たり前だけど先の要件で決まってくる
  • RAID-0
    • 速いけど可用性を考えると怖いよね
  • RAID-1 (ミラーリング)
    • 同容量のディスクを2本ずつペアにして運用。
    • 高速だが可用性を考えると4本以上は RAID-Z にした方がいい
  • RAID-Z (~= 5、シングルパリティ)
  • RAID-Z2 (~= 6、ダブルパリティ)
  • RAID-Z3 (トリプルパリティ)
    • 当たり前だが RAID-Z シリーズはレベルをあげると
      • 堅牢性+
      • 速度ー*6
      • 容量ー
  • ただしディスクが大容量化するなかでストライプ幅を大きく取りたいとすれば RAIDーZ レベルをあげてエラー率を下げるしかない
  • ZFS の場合はプールに後からディスクを突っ込めるのがうれしいところ
素敵な RAID-Z 構成
  • 大雑把に言えば「ディスクを何本パリティに割けるか」で話が決まってくる
  • ランダムI/Oの多い場合はプールのディスクは少なめの方がいい
    • 1グループに1FSB (File System Block) しか割り当てられないため
Hybrid ストレージプール
  • ARC (メモリ READ キャッシュ) + L2ARC (Flash 二次 READ キャッシュ) + ZIL (Flash 書き込みキャッシュ) を階層化することによる高速化
  • 読み込み:
    • 読み込み時に ARC (-> L2ARC) -> 実デバイスにアクセス
    • その結果を ARC (-> L2ARC) にキャッシュ
  • 書き込み
    • 実デバイスに書き込む
    • 前後して(忘れた)ZILにも書き込む
    • 要はZILはキャッシュというより障害時の「保険」。ちゃんと書き込まれたときにはZILのデータは使われない
  • SSDって壊れたりしないの?
    • しますします。
    • でも L2ARC はキャッシュなのでぶっ壊れたら単なるミスヒットとして動くし、ZIL のデータは普段使われないので、機会を見て交換すればおけ。
  • ARC はメモリから適当に余ってる分を取ってくるのでチューニングの必要はほとんどない。
    • ただし、RDBMS のようにパフォーマンス確保のために一定量のメモリをあらかじめ確保に行くようなアプリがある場合はその分開けておいてあげると効率がいい。
ZFS のプロパティ設定

しまった、ここまでで書きすぎた。あとはさらっと。

  • ZFS に置ける「ファイルシステム」とは「プール内に存在する同じプロパティ(属性)を持った塊」
  • だから ZFS におけるファイルシステム管理とは「どういうプロパティの塊を作るか」に等しい
  • 基本的には「チューニング不要」が目標
    • でもまあいじらなきゃいけないときもある。
  • quota は FS と user/group 両方でかけられる (on Solaris 10 u6? openSolaris 2009.06 ではまだ。openSolarisSolaris10 は次の update?*7
  • recordsize は普通のファイルなら既定値でいいが、RDBMS の場合はブロックサイズと合わせてやるといい
  • 共有ファイルシステムにもいろいろあるけど省略
あとは

いろいろなサンプルシステム・資料紹介と宣伝なので省略。
強いて言えば

  • ZFS は巨大ファイルを一気に転送するのが強いので、仮想化のファイルイメージ管理したり、ストリーミングなんかに威力を発揮する
  • SS7000 のシミュレータは面白いかも。
  • http://www.solarisinternals.com は情報の宝庫だから頑張って読もうね。

ZFS 最新情報 by satokaz さん

実のところこの話の半分は「openSolaris勉強会(びぎなーず)2009.12での話とかぶるんですが、向こうは「だから Dev でバグ出ししようぜ!」という話だったのに対し、こっちは「Dev の変更追いかけてくとこんなことがわかるよ!」という話なのでベクトルがちゃんと違います。一粒で二度おいしい。

ということで今の 2009.06 のビルド番号は 111 なので、112 以降の変更を時系列で追っていくというのが主な内容になりました。
おいしい話を二つだけ紹介。

System Duty Cycle scheduling (b129)
  • 今までは I/O が非常に高負荷になると資源を ZFS 自体が占有してしまってシステムがロックアップしたかのようになってしまうことがあった。
  • そこで SPA (Storage Pool Allocation) 専用 system process を起動して、プールごとにスケジューリング管理の下に入れることで、I/O がすべてを占有するということを防止する
ZFS Deduplication (dedup; ででゅっぷと読もう) のサポート (b128)
  • 非常に待ち望まれていた機能
  • 搭載されたあたりで Apple による ZFS 放棄の知らせが出て Apple ユーザ涙目
  • 共通な内容を持つデータブロックを共有することでディスク使用量の大幅な削減
  • 「共通な内容」かどうかはハッシュ値(デフォルト SHA256、Fletcher4 も入る予定だが大人の事情によりまだ) で判定するので遅くない
    • もともとハッシュ値RAID のために計算してたのでオーバヘッドにならない
  • Dedup は on the fly で実行されるため夜間作業などの必要はない
    • ただし Dedup on にしたプールにそれ以降行われた変更にのみ有効
ZFS Crypto
  • 2010.03 に入ると言われているが依存関係のプロジェクトが遅れているのでまだ Dev 入りしていない

あと PSARC 番号からその機能を調べる方法は直接資料を参照してください。基本的には先日の openSolaris 勉強会びぎなーずと同様の内容です。

三分間クッキング「オフラインで IPS リポジトリを立てる」by 原口さん

今回は時間が押していたので概要説明だけで

  • IPS (Image Packaging System) は Linux でいう rpm/yum や dpkg/APT のような openSolaris のパッケージングシステム
  • でもたとえば apt-cache のようなローカルレポジトリを構築する方法はない……けど一つ方法が。
  • それがリポジトリ ISO イメージの存在!
リポジトリ ISO イメージ
  • ネットワークに接続されていない環境で openSolaris をインストールするための秘密兵器(?)
  • fat package とも呼ばれる
    • x86SPARC 両方のパッケージを含む
    • 場所は osol-repo-0906-full.iso とかで調べるか資料見てね
    • サイズは 7.7GB あるので太い回線で落とそう
    • できれば bittorrent を使ったりするといいかも
さてこいつをどうしますか
  • 7.7GB もあるから単層DVD-Rには焼けないよ
  • USBメモリで持ってくるのがいいかも
  • イメージを lofiadm でマウントしよう

>pfexec lofiadm -a osol-repo-0906-full.iso /dev/lofi/1
>pfexec mount -F hsfs /dev/lofi/i /mnt

得失など

【得】

  • ネットワークから切れていても使える
  • ZONE*8 を作るとき openSolaris は必要なパッケージを取得するのに IPS サーバを参照するのでちょっと時間がかかるが、ローカルにあると作成が一瞬で終わる (これはおいしい)
  • ネットワーク環境下でもミラーサーバとして使える

【失】

  • あくまでもリリース版 (今回の場合は 2009.06) のときのパッケージしか使えないので、最新パッケージとの同期ができない
    • セキュリティ上微妙だけど、ネットワークから閉じた環境ならいいのかなぁ?
ぼく的結論

やっぱり IPS にも apt-cache みたいな仕組み欲しいなあ〜。

SPARCSolaris で実現した TPC-C 世界一」by 大曽根さん

自分のドメインナレッジと乖離してるんで資料の丸写しになりそうなので超簡単に。

TPC-C とは
今回 Sun がチャレンジ
  • 今までずっと IBM が上位独占
  • Sun は「TPC-C では実際の能力は測れない」と距離を置いていた
    • まあ、「IBM を抜け」という声がどこかからあったとかないとか。
  • ということで軽やかにトップ達成!
システムの特徴
  • IBM のシステムよりもずっと軽量
  • TPC-C の値より、レスポンス時間が段違い!
F5100
  • 見た瞬間わらってしまったので特筆
  • 見かけは「すごいいっぱい DIMM が刺さってるメモリユニット」
    • 上のリンクから「Sun Storage F5100フラッシュ・アレイ・ギャラリー」を見てみよう
  • でも実は DIMM に見えるのは全部 SSD ユニット! すご!

終わりに

ということでどっちかというともうサーバとして Solaris 導入してます、とか、導入をマジに検討してます、みたいな人が行くところで、オイラみたいな根っからのデスクトップ屋が行くとこじゃないかなーと思ってたら、意外と楽しめました。
改めまして、このような有益なイベントを手弁当で開催してくださっている Sun の皆様に感謝いたします!

*1:私は聞いてませんが、まあ openSolaris 勉強会の方で勉強してるしね。

*2:私はちょうど NTT-X から HP ML115 をこの日ぽちったところで、openSolaris をベースOSにして仮想環境サーバにする&印刷環境調査マシンにしようと思ってたので非常にタイムリー。いや、スケール全然違うけどさ。

*3:でも元々商用OSだからねえ、コミュニティのちからってどこまで信じられるかしら?

*4:すんません、ぼくもわかんないのでググってください。

*5:ループバックファイルの設定ツール

*6:パリティ計算が重くなるので

*7:コメント欄でご指摘いただきましたので修正。

*8:Solaris 系で OpenVz みたいな(といったら怒られるのかな)OS 内 OS 環境。