カテゴリ:サーバがらみ( 107 )
(VMware)VMware vSphere5.1を試してみた
社内で仮想化基盤として、VMware vSphereを使う方向になりそうだったので試しに小さな仮想化環境を構築してみた時のメモです。

VMware vSphereは60日限定の無償評価版があるようなので、それを使ってみました。
ここからユーザ登録をすればダウンロードできるようになります。
(ちなみに、ハイパーバイザーコア部分のVMware vSphere Hypervisor(ESXi)は無償版もあります。有償版に比べシングル構成で、vCenterが使えない等の制限がありますが、小規模やテストで使うにはいいかと思います。)

まず、VMware ESXi 5.1 (CD ISO) をダウンロードしました。
今まであまりVMwareに接する機会がなかったで、詳しくは知らなかったんですが、vSphereというのは様々なコンポーネントの集合体、スイーツなようです。(例えばハイパーバイザーのESX,ESXi、障害時にライブマイグレーションするvMotion、VMware HA、VMware FT、Storage VMotionなどです。詳しくは公式HP【仮想化道場】 ライセンスが大きく変わった「VMware vSphere 5」 -クラウド WatchVMware vSphere | 大塚商会などを参考に。。。)

で、最も核となる仮想化のハイパーバイザーの機能を提供しているのが ESXi のようです。(以前はLinuxOSを同梱したESXと、独自カーネルだけのESXiとがあったようですが、5.0以降ESXiだけになったようです。ESXはコンソールで操作が色々できたようですが、ESXiは最低限のことしかできませんが、安定性とセキュリティに優れています)

今回は余っているサーバがなかったので、ハードを要件を満たす普通のPCを使いました。(NEC製)
(ハード要件には、64bit & デュアルコア以上 & 仮想化支援機能 & NX/XDビット CPU 、 2GB以上のRAM等々があります。独自カーネルを使っているだけあって制約は厳しいです。詳しくはvSphere のインストールとセットアップ ガイド参照。)

ダウンロードしたイメージをCDに書き込み、ブートしてインストールを開始します。
対話型のインストールが始まりますが、どこにインストールかとかキーボードタイプとかrootのパスワードとか基本的なことしか聞かれません。
ネットワークの設定だけはちゃんとしておきましょう。

インストール後の設定も基本的なことしか出来ません。

なので、運用操作は vCenter Server か vSphere Client で行う必要があります。
実際に運用として複数台のESXiサーバを管理するのであれば、 vCenter Server が必要になります。(vCenter Serverは複数台サーバを管理できますし、ESXiのフル機能を管理することができます。しかし、vCenter Server専用のWindowsサーバが必要になります。)
しかし、今回は1台のサーバでの評価なので vSphere Client を使うことにしました。(vSphere ClientはクライアントOSにもインストール可能です)


vSphere Client ですが、VMwareのサイトからダウンロードしても良いのですが、ESXiをインストールしたサーバからも落とせます。ソッチのほうが簡単なので、そちらの方法を使いました。



まず、クライアントPCのブラウザから、ESXiのIPを叩き、設定したrootのパスワードでログインします。
すると以下の様な画面になるので、[Download vSphere Cliet]でダウンロード、インストールを行います。
e0091163_53016.jpg



↓インストールが完了し、VMware vSphere Client を立ち上げるとログイン画面が出てくるので、ESXiサーバのIPとユーザ名でログインします。
e0091163_5302240.jpg



↓評価版なのでこのようなメッセージが出ています。
e0091163_5303566.jpg




↓以下の様な感じで管理やパフォーマンスの把握が用意にできるようになっています。
e0091163_533430.jpg

e0091163_5332831.jpg

e0091163_5333070.jpg



次回はこのサーバにSolaris10をインストールしてみたいと思います。


参考:
もう1つのハイパーバイザ実装「VMware ESXi」
「クラウド基盤化」進むVMware vSphere 5の概要
[PR]
by Jehoshaphat | 2013-03-13 05:36 | サーバがらみ | Trackback | Comments(0)
(Apache)特定ファイルにアクセスした時にリダイレクト
(Apache)複数ドメインで運用しているサイトを単一ドメインになるようリダイレクトの続きみたいなものですが、今回はディレクトリ内の特定のファイルへのリクエストがあった時にリダイレクトする方法です。

例えば、あるディレクトリに hoge01.html , hoge02.html , hoge03.html とファイルがあり、hoge01.htmlだけMod-Rewriteでリダイレクトしたい場合は以下のようにします。

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^hoge01.htm$ http://newlink/ [R=301,L]


hoge01.htmlとhoge02.htmlを同じページにリダイレクトしたい場合は以下のようにします。

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(hoge01.html|hoge02.html)$ http://newlink/ [R=301,L]

RewriteRuleの指定は正規表現が使えるので、自由度は高いですね。

参考:
.htaccess - Rewrite
[PR]
by Jehoshaphat | 2012-06-26 00:35 | サーバがらみ | Trackback | Comments(0)
(Apache)複数ドメインで運用しているサイトを単一ドメインになるようリダイレクト
何やら多忙すぎて1ヶ月以上更新が滞ってしまいました。。。

Webサイトの一部を別ドメインに移したためリダイレクトさせてみたで mod_rewrite を使ったリダイレクトを書きました。

今回もそれに関連のある話ですが、あるWebサイトが hoge.jp , www.hoge.jp hoge.com どれでもアクセス可とします。
(DNSサーバの設定で同一サーバを見るようしています。VirtualHostは使っていません。)

これを www.hoge.jp でアクセスするように統一という話が出てきました。

調査すると、.htaccess - Rewriteにどんぴしゃな答えがありました。

Mod-Rewrite のリダイレクトを使って、下記のようにするとこれを実現できます。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC,OR]
RewriteCond %{HTTP_HOST} ^(hoge\.com)(:80)? [NC]
RewriteRule ^(.*) http://www.hoge.jp/$1 [R=301,L]

RewriteCond で条件を指定できるようです。
HTTP_HOST 変数にどのドメインでアクセスしてきたかの情報が入っているようですね。
複数条件も指定できるようで、今回はORを指定しています。


ちなみに、mod_rewriteを使うディレクトリでは「Options FollowSymLinks」を指定しないとエラーになるケースがあるので注意しましょう


参考:
mod_rewrite サンプル集/楽
RewriteCond - RewriteRuleの条件を設定
CPIレンタルサーバーでApache mod_rewriteの設定方法|ほっとのブログ
mod_rewriteを使うには「Options FollowSymLinks」が必要 kawama.jp:
[PR]
by Jehoshaphat | 2012-06-26 00:33 | サーバがらみ | Trackback | Comments(0)
DFSサーバ障害時にすべきこと
WindowsServer2008R2を2台使ってドメインDFSサービスを提供しています。
しかし、クライアントOSがXPの場合、片方のDFSサーバに障害が起きると、共有フォルダアクセス時に30秒弱の遅延が発生します。
(フォルダ開く毎に30秒かかるので、作業になりません。Windows7の場合は遅延は最初の一回だけで後はサクサクでした。)

詳しい原因はわかりませんが、パケットキャプチャした結果XPの場合、障害後も両方のサーバにアクセスしているようです。

いろいろ試した結果、障害があったサーバをDFSサーバとして無効にしてやればいいようです。
(削除すると、おかしなことになり、DFSサービスを再インストールする羽目になりました。)

削除の手順としては障害発生時に、正常稼動中のDFSサーバの管理ツール→DFSの管理を起動します。
そして、名前空間ツリー展開→名前空間名 をクリックし、中央ペインの "名前空間サーバ" タブを選択します。
障害がおきているサーバを右クリック→名前空間サーバを無効にする を押下します。

これで障害サーバが切り離されました。
しかし、この設定が各クライアントOSに適用されるまでにおおよそ20分程度掛かりました。(早い場合は数分で適用されます)

サーバが普及した場合は、上記と同じ設定のところで、有効にしてやればいいようです。


障害を考えて冗長化しているので、ほんとはタイムラグ無しで障害サーバを見ないよう切り替わって欲しいわけですが、とりあえずこの方法しか思いつきませんでした。

もっといい方法があれば教えて欲しいですね。
[PR]
by Jehoshaphat | 2012-05-15 23:37 | サーバがらみ | Trackback | Comments(0)
(Apache)名前バーチャルホストを設定したらメインのドキュメントルートにアクセスできなくなった
Apache2.2で以下のように名前バーチャルホストを設定しました。
(一つの IP アドレスでいくつかの名前ベースの ウェブサイトを実行するタイプのバーチャルホストです。)

余談ですが、Apache2.2だと conf\extra\httpd-vhosts.conf に設定を書いてやればいいようです。
(httpd.confで "Include conf/extra/httpd-vhosts.conf" のコメントを退ける必要があります)


NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2
DocumentRoot "E:/mydoc/hogeproject/html"
ServerName hogeserver
ErrorLog "logs/hogeserver-error.log"
CustomLog "logs/hogeserver-access.log" common
</VirtualHost>

<Directory "E:/mydoc/hogeproject/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>


しかし、これで localhost にアクセスしても、上記で設定したディレクトリのコンテツが表示されてしまうのです。
こちらが意図しているのはデフォルトのドキュメントルート("C:/Program Files/Apache Software Foundation/Apache2.2/htdocs")にアクセスして欲しかったのです。

で、Apacheのマニュアルをみるとこう書いています。
アスタリスクはすべてのアドレスにマッチしますので、主サーバは リクエストを扱いません。www.example.com は 最初にあるため、優先順位は一番高くなり、default もしくは primary のサーバと考えることができます。つまり、リクエストが どの ServerName ディレクティブにもマッチしない場合、 一番最初の VirtualHost により扱われます。
なるほど。* とすると主サーバ、つまりhttpd.confにあるドキュメントルートは使われないようです。
といういことで、以下のようにしました。
これで ServerName と一致しないrequestは上側のデフォルトのドキュメントルートを見に行くようになります。

NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2
ServerName hoge
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
ErrorLog "logs/error.log"
CustomLog "logs/access.log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2
DocumentRoot "E:/mydoc/hogeproject/html"
ServerName hogeserver
ErrorLog "logs/hogeserver-error.log"
CustomLog "logs/hogeserver-access.log" common
</VirtualHost>

<Directory "E:/mydoc/hogeproject/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>



参考:
(Apache)名前バーチャルホストでハマった
[PR]
by Jehoshaphat | 2012-05-13 21:36 | サーバがらみ | Trackback | Comments(0)
Firefox5にしたらSunRay Administrationがうまく表示できない
Firefox5にしたらSunRay Administrationがうまく表示できない

Firefoxを3.6から5にバージョンアップしたんですが、そうすると Sun Ray Administration のページが上手く表示できなくなりました。

具体的にはページ上部は表示されるんですが、リスト部分(サーバ、セッション、DTU、トークン限らず)が真っ白になるのです。

で、解決法を探すと、Stuart's Weblog : weblogに参考となる情報が。。
SunRayサーバで下記のようにすればいいようです。

#!/bin/sh
cd /tmp
unzip /opt/SUNWut/webadmin/webapps/ut/WEB-INF/lib/suntheme.jar com/sun/web/ui/suntheme/css/css_master.css
echo "#f1\3Ap1\3At1 { display:block;}" >> com/sun/web/ui/suntheme/css/css_master.css
zip -r /opt/SUNWut/webadmin/webapps/ut/WEB-INF/lib/suntheme.jar com/sun/web/ui/suntheme/css/css_master.css
rm -rf com
/etc/init.d/utwadmin stop; /etc/init.d/utwadmin start


jarファイル内の css に修正を加えるということですね。
しかし、現在安定稼働中のSunRayサーバを止めることは難しいですし、これぐらいの修正でjarファイルを書き換えたくは有りません。

ということで、Firefox側で Sun Ray Administration のページのみ修正済みのオリジナルCSSで表示するという手段を取ることにしました。

まず、特定のページをカスタマイズしたCSSで表示できるFirefoxのアドオン Stylish をインストールします。

インストールすると、ステータスバー左側に Stylish のアイコンがでるので、クリックして "新しいスタイル" → "白紙のスタイル"を押下します。

名前を適当に入力し、下側のテキストエリアに下記を入れます。
@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document url-prefix("https://10.0.15.10:1661/ut/faces/jsp/") {
 
/*
ここに、/ut/theme/com/sun/web/ui/suntheme/css/css_master.css の中身を貼り付けます。
*/

 
/*下記を追加することでリスト表示可能になります。*/
#f1\3Ap1\3At1 { display:block;}
 
}



@-moz-document 規則は、ドキュメントの URL 上にあるスタイルのスタイル規則を制限する ものだそうです。
url-prefix を指定することで、指定されたURLで始まるページ全てに設定が適用されます。
url だけだと、完全一致するページにしか適用されません。

これで、カスタムCSSを保存します。
あとは、SunRay Administration のページを表示して、Firefoxのメニューバーから "表示" → "スタイルシート" → "スタイルシートを使用しない" とすると、Stylishで指定したCSSで表示してくれます。

Stylishアドオンはいろいろ応用が効きそうなので、見た目が気にくわないサイトを自分好みにすることもできそうですね。

参考:
Stylish で特定の URL ではじまるサイトのスタイルを書く | すぐに忘れる脳みそのためのメモ
ダンジョンブックスのサイトの色が目に痛すぎるのでFireFoxのアドオンでCSSを上書きするようにしてみた - KZ-Sさんのヲタ日記
[PR]
by Jehoshaphat | 2012-05-12 13:00 | サーバがらみ | Trackback | Comments(0)
WindowsServer2003のドメインでUSBデバイス使用禁止にするグループポリシー
ドメインコントローラがWindowsServer2003 R2 でクライアントが WindowsXP が大半のActiveDirectoryなんですが、特定のPCでUSBメモリや外付けUSBハードディスクの使用を禁止したいという要件が出てきました。

WindowsServer2008のドメインコントローラなら、標準のグループポリシーでUSBメモリを含むリムーバブルメディアの使用が抑制できるんですが、2003にはデフォルトでは使えません。
(2008のグループポリシーで設定する方法は、【Windows Server 2008 実践評価ガイド】システム運用管理コストを削減する最新管理機能の全貌 : Windows Server - Computerworld.jpが参考になります)


しかし、WindowsServer2003でもグループポリシーに管理テンプレートを追加することで、リムーバブルメディアの使用を抑制できます。
そのための設定が情報漏えい対策ガイド (Windows 編)の3章にて載せられていました。

ガイドにはかなり詳細な手順が載せられているのでそのとおりにやれば簡単にできますが、一応メモしておきます。

まず、ガイドの手順で行うと下記のデバイスに関して、各制御ができます。

USB記憶装置    使用禁止、書き込み禁止
IEEE1394記憶装置 使用禁止
フロッピー    使用禁止
SDカード     使用禁止
CD-R/RW      書き込み禁止


ただし、「USB 記憶装置の書き込み禁止」と「SDカードの使用禁止」は、Windows XP SP2 以降でのみ動作し、Windows Server 2003 SP1 では動作しないようです。



リムーバブル記憶装置がインストールされている場合
PCにリムーバブル記憶装置がインストールされている場合は、グループポリシーのカスタム管理テンプレートを使うことで各制御ができます。

1.下記のコードをメモ帳にコピペし、Unicodeで、ドメインコントローラの%SystemRoot%\inf\BlockRmStor.adm に保存します。(今回2台DCがあったので2台共に保存しました)

; Administrative template file for blocking removable storage devices
; Version: 1.0

CLASS MACHINE

CATEGORY !!DisableRemovableStorage

POLICY !!WriteProtectUsbStor
#if version >= 4
SUPPORTED !!SUPPORTED_WindowsXPSP2
#endif
EXPLAIN !!WriteProtectUsbStor_Help
KEYNAME "SYSTEM\CurrentControlSet\Control\StorageDevicePolicies"
VALUENAME "WriteProtect"
VALUEON NUMERIC 1
VALUEOFF NUMERIC 0
END POLICY

POLICY !!DisableUsbStor
EXPLAIN !!DisableUsbStor_Help
KEYNAME "SYSTEM\CurrentControlSet\Services\USBStor"
VALUENAME "Start"
VALUEON NUMERIC 4
VALUEOFF NUMERIC 3
END POLICY

POLICY !!Disable1394Stor
EXPLAIN !!Disable1394Stor_Help
KEYNAME "SYSTEM\CurrentControlSet\Services\sbp2port"
VALUENAME "Start"
VALUEON NUMERIC 4
VALUEOFF NUMERIC 0
END POLICY

POLICY !!DisableFloppy
EXPLAIN !!DisableFloppy_Help
KEYNAME "SYSTEM\CurrentControlSet\Services\Flpydisk"
VALUENAME "Start"
VALUEON NUMERIC 4
VALUEOFF NUMERIC 3
END POLICY

POLICY !!DisableSDcard
#if version >= 4
SUPPORTED !!SUPPORTED_WindowsXPSP2
#endif
EXPLAIN !!DisableSDcard_Help
KEYNAME "SYSTEM\CurrentControlSet\Services\sffdisk"
VALUENAME "Start"
VALUEON NUMERIC 4
VALUEOFF NUMERIC 3
END POLICY

POLICY !!DisableCDBurning
#if version >= 4
SUPPORTED !!SUPPORTED_WindowsXPWindowsNET
#endif
EXPLAIN !!DisableCDBurning_Help
KEYNAME "SYSTEM\CurrentControlSet\Services\ImapiService"
VALUENAME "Start"
VALUEON NUMERIC 4
VALUEOFF NUMERIC 3
END POLICY

END CATEGORY ; DisableRemovableStorage

[strings]
DisableRemovableStorage="リムーバブル記憶装置の使用制限"
WriteProtectUsbStor="USB 記憶装置デバイスへの書き込み禁止"
WriteProtectUsbStor_Help="USB 記憶装置デバイスへの書き込み禁止をコンピュータを使用するすべてのユーザーに適用します。\n\nこのポリシーを有効にすると、コンピュータを使用するすべてのユーザーは USB 記憶装置デバイスへの書き込みができなくなります。読み込み操作は可能です。"
DisableUsbStor="USB 記憶装置デバイスの使用禁止"
DisableUsbStor_Help="USB 記憶装置デバイスの使用禁止をコンピュータを使用するすべてのユーザーに適用します。\n\nこのポリシーを有効にすると、コンピュータを使用するすべてのユーザーは USB 記憶装置デバイスの書き込みおよび読み込みができなくなります。"
Disable1394Stor="IEEE 1394 記憶装置デバイスの使用禁止"
Disable1394Stor_Help="IEEE 1394 記憶装置デバイスの使用禁止をコンピュータを使用するすべてのユーザーに適用します。\n\nこのポリシーを有効にすると、コンピュータを使用するすべてのユーザーは IEEE 1394 記憶装置デバイスの書き込みおよび読み込みができなくなります。"
DisableFloppy="フロッピー ディスクの使用禁止"
DisableFloppy_Help="フロッピー ディスクの使用禁止をコンピュータを使用するすべてのユーザーに適用します。\n\nこのポリシーを有効にすると、コンピュータを使用するすべてのユーザーはフロッピー ディスクの書き込みおよび読み込みができなくなります。"
DisableSDcard="SD 記憶域カードの使用禁止"
DisableSDcard_Help="SD 記憶域カードの使用禁止をコンピュータを使用するすべてのユーザーに適用します。\n\nこのポリシーを有効にすると、コンピュータを使用するすべてのユーザーは SD 記憶域カードの書き込みおよび読み込みができなくなります。"
DisableCDBurning="CD への書き込み禁止"
DisableCDBurning_Help="CD への書き込み禁止をコンピュータを使用するすべてのユーザーに適用します。\n\nこのポリシーを有効にすると、コンピュータを使用するすべてのユーザーは CD への書き込みができなくなります。読み込み操作は可能です。\n\n注意: CD ライタや IMAPI (Image Mastering Applications Programming Interface) を使用しないサードパーティのアプリケーションを使う場合は、CD を作成および修正することができます。\nユーザーごとにエクスプローラの CD 焼き付け機能を制限する場合は、ユーザーの構成\管理用テンプレート\Windows コンポーネント\エクスプローラの [CD 焼き付け機能を削除する] ポリシーを使用してください。"
SUPPORTED_WindowsXPSP2="Microsoft Windows XP Professional SP2 以降"
SUPPORTED_WindowsXPWindowsNET="Microsoft Windows XP または Windows Server 2003"


2.新しくグループポリシーオブジェクト(GPO)を作成し、任意のOUとリンクさせます。

3.作成したグループポリシーを、グループポリシーエディタ(GPE)で開きます。

4.GPEのコンソールツリーで、[コンピュータの構成]→[管理用テンプレート]→右クリック→[テンプレートの追加と削除]で、先ほど作成したBlockRmStor.admを開きます。

5.GPEのメニューバーの[表示]→[フィルタ]の[完全に管理されているポリシー設定のみ表示します]チェックをオフにすると、[コンピュータの構成\管理用テンプレート\リムーバブル記憶装置の使用制限]が表示されます。

6.後は、制限したい項目を有効にするだけですね。


リムーバブル記憶装置がインストールされていない場合
PCにリムーバブル記憶装置がインストールされていない場合は、ドライバファイル(inf)のアクセス許可を変更することにより対象のリムーバブル記憶装置をインストールできないようにする必要があるようです。

グループポリシーのスタートアップスクリプトを使って設定します。

1.リムーバブルメディアを規制するグループポリシーをグループポリシーエディタ(GPE)で開きます。

2.ツリーから [コンピュータの構成]→[Windows の設定]→[スクリプト(スタートアップ/シャットダウン)]→[スタートアップ]→[スタートアップのプロパティ]画面開くので、[ファイルの表示]。

3.上記で開いたパス(\\ドメイン名\SysVol\ドメイン名\Policies\ポリシー GUID\Machine\Scripts\Startup)に下記を "BlockRmStor.wsf" というファイル名で保存します。(文字コードをUTF-8にすること)

<?xml version="1.0" ?>
<package>
<comment>
'****************************************************************************
'* Module Name: BlockRmStor.wsf
'* Version: 1.0
'* Abstract: いくつかのリムーバブル記憶装置がインストールされることを
'* 禁止するために、指定されたグループに対して所定の inf/pnf
'* ファイルの ACE を削除します。
'****************************************************************************
</comment>
 
<job>
<runtime>
<named
name="D"
helpstring="指定されたグループ/ユーザーのリムーバブル記憶装置をインストールするためのアクセスを拒否します"
type="string"
required="false"
/>

<named
name="R"
helpstring="指定されたグループ/ユーザーのリムーバブル記憶装置をインストールするためのアクセス拒否を取り消します"
type="string"
required="false"
/>

<named
name="Q"
helpstring="処理の状況を表示しないモードをオンにします。既定はオフです"
type="string"
required="false"
/>

<example>
使用例:
BlockRmStor.wsf /D:Everyone
BlockRmStor.wsf /R:Everyone
BlockRmStor.wsf /D:Everyone /Q
/D または /R オプションのいずれかを指定する必要があります。
</example>
</runtime>
 
<script language="VBScript">
<![CDATA[
Option Explicit
On Error Resume Next
 
Dim objArgs, objFSO, objShell, blnOK, blnQuiet
Dim strArg, strGroup, strFolder, strFileList
Dim intCounter, intErr
Const conWindowsFolder = 0
Const WSH56_REQUIRED = "このスクリプトを実行するには、WSH 5.6 以上が必要です。"
Const ERROR_NUM = ": エラー 0x"
 
strFileList = Array("flpydisk", _
"usbstor", _
"sbp2", _
"sffdisk" )
 
Set objShell = CreateObject("WScript.Shell")
 
' This script is expected to work on WSH 5.6 or later
If WScript.Version < 5.6 Then
objShell.LogEvent 1, WSH56_REQUIRED
WScript.Quit(-1)
End If
 
'---------------------------------------------------------------------
' check script usage
'---------------------------------------------------------------------
blnOK = False
blnQuiet = False
strGroup = ""
Set objArgs = WScript.Arguments
 
Select Case objArgs.Named.Count
Case 1,2
If (objArgs.Named.Exists("D")) Then
strArg = " /D "
strGroup = objArgs.Named("D")
blnOK = True
ElseIf (objArgs.Named.Exists("R")) Then
strArg = " /R "
strGroup = objArgs.Named("R")
blnOK = True
End If
If (blnOK = True And objArgs.Named.Exists("Q")) Then
blnQuiet = True
End If
End Select
 
 
' if incorrect usage display message and quit
If Not(blnOK) Then
WScript.Arguments.ShowUsage
WScript.Quit(-1)
End If
 
'---------------------------------------------------------------------
' Modify ACLs of files
'---------------------------------------------------------------------
strFolder = ""
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
' Build %SystemRoot%\Inf directory
Set strFolder = objFSO.GetSpecialFolder(conWindowsFolder)
strFolder = strFolder & "\Inf\"
 
' Modify ACLs of target inf/pnf files
intCounter = 0
Do While intCounter <= Ubound(strFileList)
' Modify ACLs of .inf file
ModifyACLsOfFile strArg, strGroup, strFolder, strFileList(intCounter), ".inf"
ModifyACLsOfFile strArg, strGroup, strFolder, strFileList(intCounter), ".pnf"
 
intCounter = intCounter + 1
Loop
 
 
' Cleanup
Set objArgs = Nothing
Set objShell = Nothing
Set objFSO = Nothing
 
'---------------------------------------------------------------------
' Function: Modify ACLs of file to deny specific group access
'---------------------------------------------------------------------
Function ModifyACLsOfFile(strArg, strGroup, strFolder, strFilename, strExt)
On Error Resume Next
 
ModifyACLsOfFile = False
 
Dim strPathname, strCACLSCmd
 
strPathname = ""
strCACLSCmd = ""
strPathname = strFolder & strFilename & strExt
If (objFSO.FileExists(strPathname)) Then
' Deny access to the .inf file for specified group
strCACLSCmd = "cacls.exe """ & strPathname & """ /E" & strArg & """" & strGroup & """"
DisplayMsg strCACLSCmd
intErr = objShell.Run(strCACLSCmd, 0, True)
If intErr = 0 Then
ModifyACLsOfFile = True
Else
LogFailureEvent intErr, strCACLSCmd
End If
End If

End Function
 
'---------------------------------------------------------------------
' Sub: Log Error Event to the Application EventLog
'---------------------------------------------------------------------
Sub LogFailureEvent(intErrNum, strErrText)
On Error Resume Next
objShell.LogEvent 1, strErrText & ERROR_NUM & Hex(intErrNum)
End Sub
 
'---------------------------------------------------------------------
' Sub: Display a message if blnQuiet = FALSE
'---------------------------------------------------------------------
Sub DisplayMsg(strMessage)
If Not(blnQuiet) Then
WScript.Echo strMessage
End If
End Sub
 
]]>

</script>
</job>
</package>

上記は中身見てわかるようにパラメータでリムーバブル記憶装置をインストールさせるか,させないかを指定できます。
/D:グループorユーザ名 →リムーバブルディスクインストール拒否。
/R:グループorユーザ名 →リムーバブルディスクインストール許可。
/Q:サイレントモード(処理の状況を表示しない)

4.[スタートアップのプロパティ]のスクリプト名で "BlockRmStor.wsf" を指定し、引数に /D:Everyone /Q を指定します。これによって全ユーザでリムーバブルメディアのインストールを禁止できます。

5.これで新しいUSBメモリを挿入してもドライバインストールできないため、使用できません。

余談ですが、上記のスクリプトでアクセス制限を設定するドライバファイルは下記のようになるようです。

フロッピーディスク   :flpydisk.inf , flpydisk.pnf
USB 記憶装置デバイス  :usbstor.inf , usbstor.pnf
IEEE1394記憶装置デバイス:sbp2.inf , sbp2.pnf
SD記憶域カード     :sffdisk.inf , sffdisk.pnf


解除時の注意
一度リムーバブルメディアを制限するOUに一度適用してしまうと、そのOUを外れてもリムーバブルメディアの制限はかかったままになります。
なので、制限を解除するOUをつくって、解除時はそのOUに解除したいPCを入れないといけません。
[PR]
by Jehoshaphat | 2012-04-25 00:54 | サーバがらみ | Trackback | Comments(0)
SunRayで誰かが動画再生すると全体の描画が遅くなった
SunRay2を使ってるんですが、突然描画重くなったりする現象が発生してました。
サーバのCPU,メモリ負荷は問題なかったため、smokeping でSunrayサーバのネットワークの遅延を調べてみると以下のようになってました。
e0091163_0113938.jpg


ちょうど描画が重かった12:40-13:00にかけて大きな遅延が発生しています。

さらにユーザの利用調査をしていると、どうやら動画再生をしているときに重くなり、Sunrayサーバへの遅延も発生しているようです。

この現象についてググると、Osamu Sayama's Weblog:sunray bandwidth limit にドンピシャな情報が載っていました。

どうやらSunRayで動画サイト等を見ると、画面遷移が多いためサーバ側はクライアント側に大量の描画パケットを送信します。
SunRayの描画パケットはSunRay2で画面描画が遅く残像らしきものが残るで書いたようにUDPを使ってます
UDPは相手の都合お構いなしにパケットを投げるので、今回の動画のように画面更新が多くて、クライアント側のネットーワークがサーバ側ネットーワークより遅い場合、描画パケットが大量過ぎて捌ききれない状態になり、他のユーザへの描画パケットや/クライアントからのマウス・キーボード操作パケットが破棄/遅延されてしまうようですね。


参考先にあるように、DTU側で帯域制限をしてやれば、そのDTUに対してサーバ側は設定された帯域以上はパケットを投げず全体への影響を抑えることができるようです。
それで、utcapture コマンドで帯域制限無しと有りでのSunRayサーバ~クライアントのパケットロスを調べてみました。

utcapture の結果の各列の意味は下記のとおりです。

TERMINALID:クライアントの MAC アドレス。
TIMESTAMP:「20041229112512」などの「年-月-日-時-分-秒」の時刻形式で表示されるロスが発生した時間。
TOTAL PACKET:サーバーからクライアントに送信された合計パケット数。
TOTAL LOSS:クライアントによって消失と報告された合計パケット数。
BYTES SENT:サーバーからクライアントに送信された合計バイト数。
PERCENT LOSS:現在と前のポーリング間隔の間に消失したパケットの割合。
LATENCY:クライアントとサーバー間の往復にかかる時間 (ミリ秒単位)


まず帯域制限をかけなかった場合です。

====帯域制限なし
bash-3.00# /opt/SUNWut/sbin/utcapture | grep aabbcc(特定のDTUのみ抽出したかったので、そのDTUのMACアドレスでgrepしてます)
TERMINALID TIMESTAMP TOTAL PACKET TOTAL LOSS BYTES SENT PERCENT LOSS LATENCY
↓通常の業務操作
002128aabbcc 20111111143745 45453 6565 51095948
002128aabbcc 20111111143815 82038 9317 96325054 7.522
002128aabbcc 20111111143830 124093 11114 150312460 4.273
002128aabbcc 20111111143845 135388 11664 164520680 4.869
↓画像ファイルを全画面で表示を繰り返したとき
002128aabbcc 20111111143915 142906 13804 171358852 28.465
002128aabbcc 20111111143930 203722 32692 227348840 31.058
002128aabbcc 20111111143945 287421 66322 293922746 40.180
002128aabbcc 20111111144015 318069 76575 321067832 33.454
002128aabbcc 20111111144031 318079 76576 321068570 10.000

画像ファイルを全画面表示するとやはりサーバから送信するパケットが増えるとと共にパケットロスと遅延が増大しています。


次に、DTU側で帯域制限を 30Mbps でかけた時です。
(帯域制限のかけ方は、DTUで Ctrl+Pause+M → Advanced → Bandwidth Limit で、bps単位で帯域を制限します)

====帯域制限あり 30Mbps
bash-3.00# /opt/SUNWut/sbin/utcapture | grep aabbcc
TERMINALID TIMESTAMP TOTAL PACKET TOTAL LOSS BYTES SENT PERCENT LOSS LATENCY
↓画像ファイルを全画面で表示を繰り返したとき
002128aabbcc 20111111144231 86999 11306 101932702 7.813
002128aabbcc 20111111144301 123778 16061 145332462 12.929
002128aabbcc 20111111144316 151922 20277 177660986 14.980

ちょっとは送信パケットが減り、同様にパケットロスと遅延も減っています。


さらに、8Mbpsで制限をかけた時です。

====帯域制限 8Mbps
bash-3.00# /opt/SUNWut/sbin/utcapture | grep aabbcc
TERMINALID TIMESTAMP TOTAL PACKET TOTAL LOSS BYTES SENT PERCENT LOSS LATENCY
↓画像ファイルを全画面で表示を繰り返したとき
002128aabbcc 20111111144446 48332 1457 61692026 2.405
002128aabbcc 20111111144531 51240 1458 65180180 0.117
002128aabbcc 20111111144546 53590 1478 68135492 0.851
002128aabbcc 20111111144616 57335 1627 72505752 3.979
002128aabbcc 20111111144731 67512 1629 84757134 0.261
002128aabbcc 20111111144847 80039 1653 99529180 1.666
↓画像ファイル全画面テスト
002128aabbcc 20111111145132 88198 1853 110024494 2.483
002128aabbcc 20111111145147 100233 2177 125551832 2.692

8Mbpsでは、画像ファイル全画面表示しても大きな遅延やパケットロスがさほど発生していません。

もちろんクライアント側では制限なしの時に比べると描画が遅く感じますが、他への影響をかけないという観点からするとやはり帯域制限は必要だと感じました。


参考:
Sun Ray Server Software 4.0 管理者マニュアル P34あたりにutcaptureの使い方が載ってます。


最近忙しすぎて全然ブログ更新できてませんでしたが、ようやく時間ができたのでボチボチアップしていこうかと思います。
[PR]
by Jehoshaphat | 2012-04-19 00:12 | サーバがらみ | Trackback | Comments(0)
WindowsServer2008R2をiSCSIターゲットにする
iSCSIのターゲット(サーバ側)って、今まで本格的なストレージ製品しかないと思ってたんですが、そうじゃなかったんですね。

WindowsServerR2でも、Microsoft iSCSI Software Target を入れれば iSCSI のターゲットになれるように最近なったようです(しかも無償で)。
また、WindowsStorageServer2008 でも TechNetサブスクリプション から Microsoft iSCSI Software Target 3.2 をダウンロードしてインストールすれば iSCSI のターゲットになれるようです。(言語を英語にしないと出てきませんが。。。)
(WindowsStoreServer2008 R2の方はもとからiSCSIターゲット3.3は入ってるようです)

WindowsStorageServer の方で検証してみても良かったんですが、通常の WindowsServer2008 R2 で無償で使えるようになった Microsoft iSCSI Software Target 3.3 を試してみました。
Microsoft iSCSI Software Target 3.3のダウンロードは、こちら(iSCSITargetDLC)からできます。
解凍したx64フォルダ内の iscsitarget_public.msi インストーラからインストールすると、サーバーマネージャーの記憶域配下に "Microsoft iSCSI Software Target" ができ、iSCSIターゲットして振る舞えるようになります。


iSCSI Software Targetでは iSCSI の領域を仮想ディスク(VHD)として利用するようです。
また、通常のLANとは分けたEthernetを使ったほうが良いようです。(分けなくても使えました。)


新規 iSCSI ターゲットの作成は"Microsoft iSCSI Software Target" MMCから、"iSCSIターゲット"を右クリック→"iSCSIターゲットの作成"から行えます。
e0091163_23244324.jpg


ウィザード中の iSCSI ターゲット名 は適当に決めます。
"IQN識別子"はIPアドレスにしました。
注意としてこの時のIPアドレスはiSCSIイニシエータ側(アクセスするクライントホスト側)のIPアドレスになります。

次に、iSCSIターゲットの実体となる仮想ディスクを作成します。
(先に固定長のVHDを作り、それを割り当てたほうがパフォーマンスはいいようです)
e0091163_23245535.jpg


さて、はまった点ですが、iSCSIターゲット作成中にイニシエータのIPアドレスを指定した場合、設定を変更しないといけません。
iSCSIターゲットのプロパティの"iSCSIイニシエータ"タブで、識別子のメソッドが "IQN" になっていると思います。
これを "IP" に編集しないといけません。
e0091163_23251024.jpg

e0091163_23251528.jpg


後は、イニシエータ(ホスト)側で、iSCSIイニシエータを起動します。(最初はiSCSIのサービスを起動してないというので、OKを押下しサービスを起動してやります)
"ターゲット" にiSCSIターゲットを動かしているサーバのIPアドレスを入れて、"クイック接続" すると、接続が完了します。
e0091163_23253810.jpg


イニシエータ側のディスクの管理を見ると、ちゃんと割り当ててますね。
ただ、最初はオフラインになっているので、オンラインにしてから、ディスクの初期化とパーティション作成をしてやる必要があります。
e0091163_23255170.jpg


今回は評価目的なので一台のサーバの上にHyper-VでiSCSIターゲット用仮想サーバ、iSCSIイニシエータ用仮想サーバで検証しました。
一応iSCSIイニシエータ側からiSCSIアクセスしたときと、iSCSIターゲットで仮想VHDをマウントした後ファイル共有をかけ、iSCSIイニシエータ側からネットワークドライブした状態のベンチマークを測りました。
仮想環境なので信頼できるか情報かはわかりませんが、下記のような感じです。

↓iSCSIでアクセスしたとき。
e0091163_2326623.jpg


↓ネットワークドライブ経由でアクセスしたとき。
e0091163_23262194.jpg


読み込みに関してはほぼ同じですが、書き込みはネットワークドライブ経由のほうが1~2割程優れているという結果が出ました。
まぁ、評価環境に問題あるので信用置けませんが。。

Impress の記事でも実HDDの約10%~約20%のオーバーヘッドで済むようです。

ターゲットのプロパティで、複数のiSCSIイニシエータを接続しようとすることは出来ましたが、下記のような警告が出ます。
クラスタの検証で使うので、構わないんですが、そうでない場合はターゲットとイニシエータは1:1でないとダメなようです。
e0091163_23263590.jpg


Windowsフェールオーバークラスタの検証には、共有ディスクが必要になるんですが、これで簡単に評価ができるようになり助かりました。


参考:
【仮想化道場】 無償の純正iSCSIターゲットソフト「Microsoft iSCSI Target」を試す -クラウド Watch
iSCSI Software Target 3.2をWindows Server 2008で利用する - http://pnpk.net
Windows Storage Server2008 インストール 2
@IT:特集:最新IPストレージ技術「iSCSI」 - Part.1
iSCSI - Wikipedia
MSFCとクイックマイグレーション この記事ではRocketEivisionというiSCSIターゲットソフトを使ってますが、このあたりもMSのiSCSIターゲットに置き換えられそうですね。
@IT:Hyper-V 2.0実践ライブ・マイグレーション術 第1回 Hyper-Vのライブマイグレーションの評価にもiSCSIによる共有ディスクは必要になります。
[PR]
by Jehoshaphat | 2012-01-10 23:28 | サーバがらみ | Trackback | Comments(0)
(App-V)Office2007をシーケンスしてみた
App-V でOffice2010を評価しようとしたけれど。。 でボリュームライセンスが無いために、Office2010のシーケンスは諦めたと書きました。


Office2007だったらボリュームライセンスを持っていたので、Office2007でシーケンスを試してみました。
App-V は 4.6 です。

Officeは結構ややこしいことをしないと行けないようです。

参考んにしたのは、2007 Office system の仮想化マニュアル (Word 2.07 MB)App-V検証~その2 Office 2007 をシーケンス処理する MCTの憂鬱です。


ほとんど、参考先の手順と同じですが、バージョンが4.6なので一部異なるところがありました。

以下に手順の概略をメモしておきます。

まず、ボリュームライセンス版Officeメディアをセットし、コマンドプロンプトからOfficeカスタマイズツールを立ち上げます。

D:\setup /admin


そうすると、Office カスタマイズツールが立ち上がります。


左のメニューで適宜必要な設定を行います。今回設定したのは下記項目です。
・「インストール先と組織名」
インストール先を変更します。インストールフォルダ名は8文字以内で、且つその他のSoftGrid仮想アプリケーションで利用したインストールフォルダ名と重複しないように注意して命名します。
インストール先:Q:\Off2007
組織名:hoge

・「使用許諾契約とユーザーインターフェース」
ボリュームライセンスのキーを入れます。「使用許諾契約の条項に同意します」チェックをオンにします。

・[Office セキュリティ設定]
マクロの設定とかしたければここで設定します。マクロを使ってる社内文書が多いので、マクロセキュリティは最低にしました。

・[機能のインストール状況の設定]
MSの指針では下記のように書いてました。
[機能のインストール状況の設定]を選択します。Access, Excel, Outlook, PowerPoint, Word, Office共有機能の6項目について、全て「マイコンピュータから実行」を選択します。Officeツールについて、「Microsoft Office Document Imaging」は「インストールしない」、その他は「マイコンピュータから実行」を選択します。その他のアプリケーションについては、全て「インストールしない」を選択します。

・[レジストリエントリの追加]
[追加]ボタンをクリックして下記レジストリエントリを追加します。
App-Vで配信したOutlook2007では、Windows Desktop Searchを利用できないので、Outlook2007のWindows Desktop Searchを無効にします。

ルート: HKEY_LOCAL_MACHINE
データ型 : dword
キー: SOFTWARE\Microsoft\Windows\Windows Search\Preferences
値の名前: PreventIndexingOutlook
値データ: 00000001



メニューから[ファイル]-[名前をつけて保存]で、構成ファイルを保存します。
あとで、コマンドプロンプトで指定するのでドライブ直下が楽です。


ここからシーケンス作業に入ります。

シーケンサー立ち上げ、[パッケージの作成(既定)] → [標準のアプリケーション(既定)] → [カスタムインストール]にします。
パッケージ名は office2007 としました。

そして、コマンドプロンプト立ち上げ、カスタムインストールの構成ファイルを指定します。

D:\setup /adminfile "C:\office2007adm.msp"

インストーラが出てくるので、「今すぐインストール」を押下し、インストールが終わるまで待ちます。
インストーラが終わったら、「閉じる」ボタン押下します。


参考先サイトでは、このSP2のシーケンスもされてたんですが、3流PGの場合SP2を一緒にシーケンスすると、配信後に予期せぬエラーでOfficeが使えませんでした。
原因は不明です。


「インストールを終了する」にチェックを入れて、シーケンスを終了します。


「カスタマイズする」を選択し、ウィザードの内容に従い、ExcelとWordを起動します。
起動すると、プライバシーオプション(オンラインヘルプとか、品質向上とか) がでるので適当に構成します。
ウィザード中の最適化のところでもExcelとWordを起動しておくと良いでしょう。

これで、パッケージが出来ります。


パッケージの編集で、できたてのパッケージを開き、[展開] タブでプロトコルとホスト名設定します。

[仮想レジストリ] タブをクリックして、[User/%SFT_SID%/Software/Microsoft/Office/Common/UserInfo] を右クリックし、[キー]-[削除]をクリックしてシーケンス作業時のユーザー情報を削除します。この作業により、アプリケーションを配信した際に、クライアントPCにログインしているユーザーの情報が反映つまり、インストールウィザードでいれた、会社名や使用者名が反映されるようにします。


App-V Desktops に 配信したMicrosoft Office Word 2007の明朝体が正しく表示されないことがあります。(http://support.microsoft.com/kb/953594/ja参考)
なので、OfficeでインストールされたMS明朝のフォントファイルを削除します。
[ツール] メニューをクリックし、[診断] から [コマンドウインドウ] をクリック→下記のコマンドで MSMINCHO.TTF ファイルを削除します。

Q:
cd Off2007\vfs\CSIDL_FONTS
del MSMINCHO.TTF
exit

[ファイル] タブをクリックし、Offi2007VFSCSIDL_FONTS ディレクトリを展開→ MSMINCHO.TTF をクリックし、ファイル名を任意の名前に変更します。短い形式の名前の変更は行わず、 [適用] ボタンをクリックします。その後 [ファイル] メニューの [名前を付けて保存] をクリックし、パッケージに任意の名前を付けて保存します。
フォントファイル名は "__.TTF" にしました。


また、[OSD]タブで下記の設定を各アプリケーション毎に行います。
・[SOFTPKG]-[IMPLEMENTATION]-[VIRTUALENV]を開き、TERMINATECHILDRENを TURE に変更します。 これは、Office2007は終了してもタスクが残るので、終了時に強制的にタスクを終了させる設定です。

・[SOFTPKG]-[IMPLEMENTATION]-[VIRTUALENV]-[POLICIES]-[LOCAL_INTERACTION_ALLOWED]を選択し、右下ペインの[要素テキスト]の値を FALSE から TRUE に変更します。OfficeはOLEやIMEとの連携を行うので、そのための設定です。


これでパッケージを保存し、App-Vサーバにコピー、インポートすればOKです。
実際に動かしてみましたが、なぜかWordの起動時にテキストが空のダイアログが表示され、OKを押下しないとWordが起動できません。
謎です。

癖はありますが、Officeが展開出来ればある程度のニーズは満たせると思います。
[PR]
by Jehoshaphat | 2012-01-10 00:17 | サーバがらみ | Trackback | Comments(0)