7.3でataraid, gmirror/gstripeおよびZFSによるRAIDの書き込み性能を比べてみました。
上記環境でddによる/dev/zeroからの1GB連続書き込み
# dd if=/dev/zero of=/mnt/xxx/t.img bs=1024000 count=1024
を10回試行したときの最大/最小値を比較。ad, ar, gm/gsではパーティションは切らずに、
# newfs /dev/ad8 # mount /dev/ad8 /mnt/xxx
のようにディスク全体をnewfsして直接マウントした。
[border]
device\type | 2台stripe | 3台stripe | 4台stripe | raid01 | raidz1 | raidz2 |
---|---|---|---|---|---|---|
ad(HDD単体) | [tright]71.1 / 67.9MB/sec | |||||
ar | 82.1 / 74.8 | 101.4 / 93.4 | 120.4 / 110.1 | 82.3 / 75.8 | × | × |
gm/gs | 104.9 / 96.8 | 136.1 / 128.4 | 159.3 / 145.6 | 106.6 / 97.8 | × | × |
zfs(6G) | 307.7 / 189.9 | 380.2 / 217.0 | 402.9 / 289.3 | 295.8 / 187.8 | 223.5 / 132.5 | 151.7 / 94.9 |
zfs(2G) | - | - | 219.1 / 118.7 | 128.7 / 121.4 | 102.7 / 95.7 | 67.9 / 59.7 |
というわけで、スコアだけ見ればZFSが圧勝で、4台のraid6でも他のデバイスでの同じ台数のstripeに匹敵するほどでした。これはちょっと意外。ただしZFSは以下の点が気になります。
上の実験、/dev/zeroではパリティの計算が一瞬で終わってしまいちゃんとした比較にならないかもしれないと思い、追試してみました。サンプルとしてパッと思いつくのは/dev/randomですが、読み出しがボトルネックになるので、tmpfsを使ってメモリ上にサンプルを準備します。
/etc/fstabを編集して最大1.5GB分の領域を確保
tmpfs /tmp tmpfs rw,mode=1777,size=1610612736 0 0
1GBのファイルを準備
# dd if=/dev/random of=/tmp/t.img bs=1024000 count=1024
この/tmp/t.imgを使って書き込み速度を計測してみました。メモリ容量が速度に影響するのは上の実験で分かっているので、比較のために/dev/zeroの速度も測りました。
[border]
file\raid | raidz1 | raidz2 |
---|---|---|
/dev/zero | 173.0 / 137.0 | 110.1 / 63.8 |
random | 260.1 / 187.2 | 109.3 / 96.2 |
zero | 261.6 / 151.0 | 108.2 / 102.6 |
ご覧の通り、/dev/zeroのraidz1は不思議な速度低下をしたので、/dev/zeroから生成した/tmp/t.imgを使った実験も行って表の一番下の行に記載しました。tmpfs使った以外は上の実験と条件変わらないはずなので、ちょっと謎です。
さておき、結果的にはファイルの内容が0-fillでもランダムな値でも速度的には変わらないようでした。前回の実験と値がけっこう変わってますが、これはtmpfsを使った影響とみればいいのかな?
VMware ESXiを9650SEコントローラを載せたマシンにインストールすると、vSphereからもSNMP trapを使っても状態監視が出来ません。唯一の手段として、LSIのサポートページからダウンロードできるtw_cliをインストールして、sshでログインしたコンソールで実行するという方法がありますが、いちいちそんな手間をかけるのはめんどくさい。といっても、sshでアクセスしてコマンド使って状態確認できる状況なら、あとはそれを自動化するだけだよねぇ。ということでやってみました。
;ESXiホストへのドライバのインストール
9650SEのドライバは標準ではインストールされていないので、LSIのサポートページに従ってドライバをインストールします。 )))
;sshdの有効化
9650SEのドライバをインストールしてESXiを再起動したら、次の手順でsshdを有効化します。
)))
;SSH公開鍵の作成とコピー
監視を自動化するためには、sshの認証を通過するような仕込みをする必要がありますが、スクリプトにrootの生パスワードを書いたり、パスワード無しのアカウントを利用するのはさすがに論外なので、パスフレーズ無しのSSH公開鍵を使った公開鍵認証を使うことにします。
% ssh-keygen -N "" -f id_vmware
上記コマンドを実行すると秘密鍵(id_vmware)と公開鍵(id_vmware.pub)が生成されます。
生成した公開鍵をとりあえずVM ホスト(vmhost)にコピーします。
% scp id_vmware.pub root@vmhost:
)))
;tw_cliのダウンロードとコピー
LSIのサポートページの下の方に、tw_cli.zipがあるのでダウンロードして解凍後、コピーします。
% unzip tw_cli.zip % scp tw_cli root@vmhost:
))) ;vmhost側の準備
vmhostにログイン
% ssh root@vmhost root@vmhost"s password: [パスワード入力] (ここに注意書きがずらずらと表示される) ~ # tw_cliを/sbinに移動 ~ # mv tw_cli /sbin/ SSH公開鍵を/.ssh/authorized_keysにリネーム ~ # mkdir /.ssh ~ # chmod 700 /.ssh ~ # mv id_vmware /.ssh/authorized_keys
;より安全な設定
ここまででいったんログアウトして、テストしてみます。
~ # exit
))) ;テスト
監視サーバからvmhostにid_vmwareを使ってパスフレーズ無しでtw_cliを実行できるかテストします。
% ssh -i id_vmware root@vmhost /sbin/tw_cli show The authenticity of host "vmhost (xxx.xxx.xxx.xxx)" cant be established. DSA key fingerprint is ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added "vmhost" (DSA) to the list of known hosts. Ctl Model (V)Ports Drives Units NotOpt RRate VRate BBU ------------------------------------------------------------------------ c6 9650SE-4LPML 4 2 1 0 5 1 - %
後ほどNagiosの設定で使うので、vmhostのホスト鍵を抜き出しておきます。
% grep vmhost ~/.ssh/known_hosts > /tmp/vmhost_key
))) ;Nagiosの準備
Nagiosを実行するユーザーのホームディレクトリを調べてSSHの秘密鍵とvmhostのホスト鍵をコピーします。
# grep nagios /etc/passwd nagios:*:181:181:Nagios pseudo-user:/var/spool/nagios:/sbin/nologin # mkdir /var/spool/nagios/.ssh # mv id_vmware /var/spool/nagios/.ssh/ # cp /tmp/vmhost_key /var/spool/nagios/.ssh/known_hosts
check_raid_vm9650をダウンロードしてNagiosのプラグインディレクトリにコピーします。
# cp check_raid_vm9650 /usr/local/libexec/nagios/
コピーしたスクリプト30行目付近の以下の箇所を編集して、秘密鍵の場所とvmhostへの接続のための設定を行います。
IDF="/var/spool/nagios/.ssh/id_vmware" REMOTE_USER="root" REMOTE_HOST="vmhost" REMOTE_PORT="22"
編集したスクリプトをテストします。
# /usr/local/libexec/nagios/check_raid_vm9650 -c 6 -p 0 OK - disk 0 [u0] 931.51GB SN:XXXXXXXX
成功したら、SSH関連のファイルのオーナーとパーミッションを修正します。
# chown -R nagios:nagios /var/spool/nagios/.ssh # chmod -R 700 /var/spool/nagios/.ssh
))) ;Nagiosの設定
監視スクリプトのテストに成功したら、Nagiosの設定ファイルを編集して、RAIDコントローラの監視設定を行います。以下に設定サンプルを示します。 ;チェックコマンド
define command{ command_name check_raid_vm9650_unit command_line $USER1$/check_raid_vm9650 -c $ARG1$ -u $ARG2$ } define command{ command_name check_raid_vm9650_port command_line $USER1$/check_raid_vm9650 -c $ARG1$ -p $ARG2$ }
;ホスト
define host{ use generic-host host_name vmhost alias VMware Server address xxx.xxx.xxx.xxx notification_period 24x7 notification_options d,u,r }
;サービス
define service{ use generic-service host_name vmhost service_description 9650SE unit0 contact_groups admins check_command check_raid_vm9650_unit!6!0 } define service{ use generic-service host_name vmhost service_description 9650SE port0 contact_groups admins check_command check_raid_vm9650_port!6!0 } :
)))
Nagiosの監視画面で、以下のようにスクリプトのテスト結果と同じ内容がStatus Information欄に表示されれば設定完了です。
;oem.tgzへのファイル追加
これだけでは、VMwareを再起動したときに/sbin/tw_cliや/.ssh以下のファイルが消えてしまうので、最後にoem.tgzに対して今回コピーしたファイルを追加します。
~ # mkdir /tmp/oem ~ # cd /tmp/oem ~ # tar zxpf /bootbank/oem.tgz ~ # rm .emptytgz (oem.tgzの中身が.emptytgzだけの場合) ~ # cp -rp /.ssh . ~ # mkdir sbin ~ # cp -p /sbin/tw_cli sbin/ ~ # tar zcf /tmp/oem.tgz . ~ # cp /tmp/oem.tgz /bootbank/ ~ # cd /tmp ~ # rm -rf oem
)))
参加してきましたので、自分なりのまとめや感想など書いてみます。
ユーザの「上手い」「下手」は、セキュリティ意識の高さといった意味合いで使っているようでした。で、「上手い」ユーザーが地味なブラウザを使うというのは良いとして、「専門家」はもう一歩踏み込んであえて「派手な」ブラウザを使うようにしないと、「下手な」ユーザーがさらされている危険に気づかないのでは?と思ったり。挑発的なことを書いてしまうと、今回のメインテーマであった携帯認証の危機的な状況にしたって、「上手い専門家」がこれまで携帯の利用を避けていた結果、今こうなっちゃってるという側面が無いとも言えなくもないわけじゃないんじゃないかと思わなくもないわけで。
Yahoo! Japan IDについてのお話
実務ベースの具体的な数字や資料が出てきてとてもためになるセッションでした。連携レベルとか公開レベル区分とかはパブリックにしてしまって、デファクトスダンダード化を狙うというのも手じゃないかなあと思いました。
認証基盤連携フォーラムの偉い人(?)のお話でした。
このセッションも含め、全体的にSAML(Shibboleth)をスルーしているのが個人的には非常に不思議な印象を受けました。SAMLとの違いを聞かれた時の答えもいまいちはっきりしなかったし、議論の中で先日書いたような話にかなり近い話をしているのに、概念レベルで留まっていて、ShibbolethでのeduPersonTargetedIDについての言及が一切ないあたりからして、ひょっとしてOpenIDな人たちは一生懸命に車輪の再発明してるんじゃないかという気が。だとすると非常にもったいない話ですが、とっくに検討済みで、なんか問題があるので別の解決を目指してるだけかもしれません。
かんたんログインの話でした。どこまで書いていいのか分からないので、差しさわりのないことだけ。
結構怖いお話でした。ちなみにスマートフォンとその開発キットを使えばヘッダなんて書き換え放題ってのはご存知なのかな?Symbian OSならPythonで開発できるので実験とか楽そうなんですが。その前にNokia撤退という壁がありますが。
ケータイ認証の問題点とその影響について。
「端末固有IDをかんたんログインに使わない」という結論が出たのは去年の夏の話だ、ということでしたが、OpenPNEとか最新版でも端末固有IDを使ったかんたんログインが有効になってて、ソフトバンクどうしならなりすましし放題なのはどういう決着をしてそうなっちゃったんでしょうか。ユーザーが端末側の設定でonにしなければ端末固有IDは送信されないので、ユーザーの自己責任ってことなのかな。
OAuthのお話でした。
パスワードを第三者に預けさせる状態でスタートしてブラッシュアップしていったってのはある意味すごいです。
駆け足でメモが追いつかず。脅威を7つに分類して、それぞれの説明と対策について。網羅性やサンプルがすごく充実してました。資料を後で公開してもらえると言うことだったので楽しみです。
Security Development LifecycleとLive IDの解説
Live IDのOpenIDサポートってどんな状況なんでしょうか?なんか2008年に発表したっきりで、ベータ版のサイトは500になっちゃってるし。最近、DreamSparkがShibbolethに対応してるのを知ったのですが、乗り換えたのかな。
ということで、全体的に非常に濃い内容で、満足のいくイベントでした。なんか回し者のような感想になってしまいましたが、ShibbolethはOpenIDとあわせて勉強しておいて損はないシステムだと思います。
契約者固有IDや端末固有IDについて、ソフトバンクや端末メーカーがユーザーに対してどのような説明をしているのか調べてみました。特に狙っていたわけではなく、単に状況を整理するだけのつもりだったのですが、見えてきたのは業界を挙げて間違った方向に進んでいるという悲しい現実でした。
簡単に状況をまとめておくと、次のような感じになります。
また、今回の調査の結果を一言でまとめると以下の通りです。
.orangered.マニュアルを読む限り、2008年夏以降に発売されたソフトバンクの携帯電話は、おそらく全ての機種で製造番号の通知がデフォルトでonになっている
以下、調査結果です。
「改訂日:2010年5月1日」のソフトバンクのウェブ利用規定(魚拓)では、ソフトバンクがコンテンツ提供者に通知するIDについて、以下のように記載されています。
ソフトバンクでは契約者固有IDのことを「ユーザーID」、端末固有IDのことを「製造番号」と称しているようです。
製造番号の方にだけなぜか通知を拒否するための具体的な手順が記載されています。これは機種によってはデフォルトで有効になっていることに配慮しての措置かもしれません。
続けてソフトバンクのサポートサイトにある良くある質問での説明を調べたところ、以下の2つが見つかりました。
1つ目の回答にだけXシリーズの取扱説明書へのリンクがあり、一見こちらの方が新しいように見えますが、製造番号・ユーザーIDの両方についてきちんと説明しているのは2つ目の方です。
最後にソフトバンクのお客様サポートページ内にある製品の一覧からダウンロードできる取扱説明書から、ユーザーIDと製造番号の説明や初期設定がどうなっているのかを調べました。
まず大きな点として、802Nなどもっとも古い時代の物は用語的に微妙でしたが、それ以外のすべての機種の取扱説明書にはユーザーID(契約者固有ID)の通知設定に関する記載はありませんでした。このため、以下では製造番号通知のみについて書きます。
説明書の記載が「vodafone live!」の時代と「Yahoo!ケータイ」の時代、および「Xシリーズ(スマートフォン)」で分けてあります。表には古い機種から順に記述してあるので、下に行くほど新しい機種になります。また、表には以下の情報を記載しました。
.flat.
.border tc.
.border tc.
Xシリーズでは製造番号、ユーザーID共に全ての機種で説明がありませんでした。Yahoo!ケータイは閲覧できないというアナウンスも出ているので、これは予想通りの結果です。
.border.
機種名 | 製造番号 | ユーザーID | 機種名 | 製造番号 | ユーザーID | 機種名 | 製造番号 | ユーザーID | 機種名 | 製造番号 | ユーザーID | 機種名 | 製造番号 | ユーザーID |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X01HT | × | × | X02HT | × | × | X01T | × | × | X03HT | × | × | X02NK | × | × |
X04HT | × | × | X05HT | × | × | X01SC | × | × | X02T | × | × | X06HT | × | × |