2008/05/22

Blue Coat

セキュアウェブプロキシ・WAN高速化などの多機能アプライアンスで有名なBlue Coat。前は、CacheFlowって名前でしたが、2002年に改名。元の社名は、主力製品であるキャッシュ付きウェブプロキシから命名。
では、新しい社名は?

英語でbluecoatは、警官の意。改名当時、
Webインフラを安全に守るセキュリティ・アプライアンスの戦略的プロバイダ
を目指していたとこから命名。ロゴも警官のバッチを模したものになっています。

てな話をBlue Coatの営業から聞きました。
# 久々の更新がクソの役に立たない話で申し訳ない。

2008/04/09

vmstatのちょっとした謎

ベンチマークテストを実行して気づいたのだが、CentOSの(ということは、Red HatやFedoraでも?)vmstatコマンドのCPU値がちょっと謎。実際にコマンドを実行してみる。
[root@dc3 03]# vmstat 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 1 53644 9608 160 123704 0 0 4776 4988 227 35 1 8 34 56 1
1 1 53644 3060 116 142552 0 0 10 29670 5002 3292 0 43 0 54 2
0 2 53644 3488 104 142320 0 0 6 29871 6021 4053 2 40 0 56 2
[CTRL]+[C]
[root@dc3 03]#
CPU列には、us、sy、id、waおよびstの五つの値が表示されている。
それぞれどういう意味なのか、調べてみる。まずは日本語のman page。
CPU
これらは CPU の総時間に対するパーセンテージである。
us: カーネルコード以外の実行に使用した時間 (ユーザー時間、nice 時間を含む)。
sy: カーネルコードの実行に使用した時間 (システム時間)。
id: アイドル時間。Linux 2.5.41 以前では、IO 待ち時間を含んでいる。
wa: IO 待ち時間。Linux 2.5.41 以前では、0 と表示される。
なぜか、st値の説明がない。
では、英語版ではどうか。
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
つまり、stは仮想マシンに関係している。
CentOS 5.1では、kernelおよびkernel-xenは、2.6.18なので、id値にwa値が含まれない(つまり、wa値>id値があり得る)。本当のアイドル時間とI/O待ち時間が分離されて表示される。

2008/04/08

プライバシ・ポリシ

このサイトでは、Google Adsenseを使っています。

Google Adsenseによる広告が配信される過程で、このブログの管理者でもあなたでもない第三者が、あなたのブラウザ上のクッキーを認識し、読み取ったり、情報収集の目的でウェブビーコンを使用することがあります。

もし、第三者にあなたの行動を追跡されたくない場合には、あなたのブラウザの設定により、クッキーの読み取りを制限することができるはずです。

2008/04/02

RHCS: iSCSI, DM-MP, CLVM and GFS・その9・考察

これまで、iSCSIを用いて二本の経路で共有されたブロックデバイスをCLVMで論理ボリュームとして扱い、その論理ボリュームをGFS2でフォーマットし、マウントする手順について述べた。この構成では、iSCSIターゲット=イニシエータ間のパスが複数存在するので、この間の接続が信頼性の急所(single point of failure)にならない。ここまでは、『その1・概要』および『その5・Device-Mapper Multipathの設定』で述べた通り。

ただし、今回の構成には、問題点がある。
  • クラスタcDomUsのメンバ、dc[123]が仮想マシンフェンス(XVMフェンス)された場合、システム起動されても、iSCSIの接続は復旧しない。この場合、VGcDomUs00やLVGFS00は認識されず、GFS2ファイルシステムはマウントされない。
  • iSCSIターゲット=イニシエータ間のパスが何らかの不具合で一時的に切断された場合、その後障害が復旧しても、当該パスは自動的に復旧しない。
iSCSIターゲット用RPMパッケージscsi-target-utilsの不具合によるものだ。この不具合は、『その4・iSCSIイニシエータの設定』で以下の通り述べた。
ターゲット側で使用するscsi-target-utilsで提供されるサービスtgtdは、同一パス・同一イニシエータ名でのセッションでの多重接続を拒否する。従って、イニシエータ側では、ユニークなイニシエータ名を使用する必要がある。
また、tgtdは、イニシエータが正常なログアウト処理を行わずに停止した場合、そのイニシエータに対するセッションを保持し続ける。このイニシエータが再起動され、ターゲットにログインしようとすると、ターゲット側には同一パス・同一イニシエータ名のセッションが残っているため、ターゲットはこのログインを拒否する。このため、このイニシエータはストレージにアクセスできなくなってしまう。
従って、少なくとも現時点では、CentOS 5をiSCSIターゲットとしたシステムでは、Device-Mapper Multipathの利点を活かしきれない。


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

2008/03/31

RHCS: iSCSI, DM-MP, CLVM and GFS・その8・Congaでの設定

今までの設定を、できるだけConga (Luci & Ricci)を使って行う方法を紹介する。
Congaは、Device-Mapper Multipath (DM-MP)を理解しないことに注意。これは、GNBDを理解しないのと似ている(『Red Hat Cluster: GNBD, CLVM and GFS・その8・Congaからの設定』参照)。つまり、CongaからDM-MPを設定できないし、Congaは/etc/mapper/mpath0等のDM-MPデバイスをディスクとして認識しない。従って、CongaでDM-MPデバイスをGFS2としてフォーマットするのに先立って、論理ボリュームマネージャ(logical volume manager, LVM)で物理ボリューム(physical volume, PV)およびボリュームグループ(volume group, VG)を設定しなければならない。
実際、『その6・CLVMの設定』の『PVの作成』までを実行した状態で、Luciの設定画面から[strage]タブ→ [System List]からcDomUsのメンバ(この場合はdc1.xencluster)を選ぶと、
の様に、iSCSIで作成されたデバイス/dev/sd[ab]はディスクとして認識されるが、DM-MPデバイス/dev/mapper/mpath0やPVは認識されない。
この状態から、『その6・CLVMの設定』の『VGの作成』を実行し、再び上の画面の[Reprobe Storage]ボタンを押すか、他のノードの画面を表示させると、
の様に、VG VGcDomUsが認識される。
ここで、[VGcDomUs00] → [Volume Group Properties:]と展開していくと、次の画面が表示される。
[New Logical Volume]ボタンを押下する。
スクロールダウンする。
ここで、以下の通り入力する。
  • [Logical Volume Name]: LVGFS00
  • [Content]: GFS2 - Global FS v.2
  • [Unique GFS Name]: GFS00
  • [Mountpoint]: /mnt/gfs00
  • [Mount]: true
  • [List in /etc/fstab]: true
入力後、[Create]ボタンを押下する。
確認を求めるダイアログが表示される。[OK]ボタンを押下する。
新しい論理ボリューム(logical volume, LV)、LVGFS00が作成され、GFS2でフォーマットされ、/mnt/gfs00にマウントされている。
このとき、設定を行ったノードのコンソール画面には、以下のようなエラーが表示される。
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 370, in auto_save_callback
self.save()
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 351, in save
self.sigs.write_xml('sigs', self.filepath)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 570, in write_xml
f.write(self.get_xml_text_doc(obj_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 529, in get_xml_text_doc
doc = self.get_xml_doc(obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 524, in get_xml_doc
root = self.get_xml_nodes(doc, obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 599, in get_xml_nodes
list.addChild(item.get_xml_nodes(doc, item_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 625, in get_xml_nodes
root.newChild(None, name, value)
File "/usr/lib/python2.4/site-packages/libxml2.py", line 3217, in newChild
ret = libxml2mod.xmlNewChild(self._o, ns__o, name, content)
TypeError: xmlNewChild() argument 4 must be string without null bytes or None, not str
これは、『Red Hat Cluster: GNBD, CLVM and GFS・その8・Congaからの設定』と同じ。以下の通り、設定自体は正しく行われているので、無視する。
[root@dc1 lvm]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=0:id=65539:first=1)
[root@dc1 lvm]# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/VGcDomUs00/LVGFS00 /mnt/gfs00 gfs2 defaults 0 0
[root@dc1 lvm]# 
他のノードでも同様に設定する。ただし、LVの生成とGFS2のフォーマットは終わっているので、設定するのは、マウントポイントのみ。[System List] → [dc2.xencluster] → [VGcDomUs00] → [Logical Volumes:] → [LVGFS00 3.98 GB]と選択する。
ここで、
  • [Mountpoint]: /mnt/gfs00
  • [/etc/fstab Mountpoint]: /mnt/gfs00
と入力し、[Apply]ボタンを押下する。
確認を求めるダイアログが表示される。[OK]ボタンを押下する。
このとき、設定対象ノード(上の場合はdc2.xencluster)のコンソール上には、やはり以下のようなエラーが表示される。
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 370, in auto_save_callback
self.save()
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 351, in save
self.sigs.write_xml('sigs', self.filepath)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 570, in write_xml
f.write(self.get_xml_text_doc(obj_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 529, in get_xml_text_doc
doc = self.get_xml_doc(obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 524, in get_xml_doc
root = self.get_xml_nodes(doc, obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 599, in get_xml_nodes
list.addChild(item.get_xml_nodes(doc, item_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 625, in get_xml_nodes
root.newChild(None, name, value)
File "/usr/lib/python2.4/site-packages/libxml2.py", line 3217, in newChild
ret = libxml2mod.xmlNewChild(self._o, ns__o, name, content)
TypeError: xmlNewChild() argument 4 must be string without null bytes or None, not str
ただし、以下の通り設定自体は行われているので無視する。
[root@dc2 lvm]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=1:id=65539:first=0)
[root@dc2 lvm]# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/VGcDomUs00/LVGFS00 /mnt/gfs00 gfs2 defaults 0 0
[root@dc2 lvm]# 
残りのノードに対しても、同様に設定する。


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察