Home > Tags > 仮想化

仮想化

ezjailの後継としてqjail を試してみる

qjail は、従来のezjailより後に設計された第4世代のjail管理システム。前から気になっていたので、テストがてらに入れてみる。大規模管理にむいていて、いきなりflavorから10個新jailを作る、とかもできるらしい。

qjail for Freebsd jail system から qjail-portMakefiles.tar.bz2 をダウンロードして /usr/ports で展開すると、sysutils/qjail ができる。

# cd /usr/ports/sysutils/qjail
# make config-recursive
# make install

更新されたのかdistinfoが妙でエラーが出ていたので、修正。

SHA256 (qjail-1.0.tar.bz2) = c28fd8663f96c5bb03f6a497d7a1953ed7ecc2f8f2690ed17a8760f73a10cf94
SIZE (qjail-1.0.tar.bz2) = 40214

あらためて、インストール。

# make install

qjail-intro(8) と qjail(8) に目を通す。

/usr/local/etc/ に qjail.conf.sample が生えているので、qjail.conf として編集。

# cp qjail.conf.sample qjail.conf
# chmod u+w qjail.conf
# vi qjail.conf

jail用のストレージを /jail に確保してあるのでそちらに向けるのと、ftpサーバを近いjpに変更。

qjail_jaildir=/jail
qjail_archivedir=/jail/archive
qjail_ftphost=ftp.jp.freebsd.org

起動スクリプトは qjail2 と qjail-jail2 の二種類がある。後者は前者のクローンで、大規模用に起動メッセージを省略したもの、らしい。

/etc/rc.d に qjail_enable="YES" を追加し、/usr/local/etc/rc.d/qjail2 を qjail2 として ln しておく。

で、ここまでやった所で目的を思いだす。そういえば vnet がezjailで使えないから止めたんだっけ。qjail2の中を覗いて vnet があるかチェック…。

…うん、無いね。

だとすると、あまり現時点での旨味はないかも。ezjailでいいや。

というわけで、さくさくと作りなおす。結局vnetを使って遊びたければ、(nullfsでの省力化は普通にするとして)手動でjail管理するしかないのか。

家庭内LAN再編計画

まずはサーバ類を分類するために、FreeBSD 8.2RELEASEでjailの受け口をつくっておく。unboundとかdhcpdとかはこちらに移す予定。

最初8.0でつくっていたが、bootonlyのディスクだと当然ftpサーバから取ってこれるわけもなく、8.2で素直にやりなおす羽目になった。

VMWare Toolsがportsのvmware-guestd6でうまく入らなかったので、perlだけインストールしてそのまま付属のVMWare Toolsを導入。若干厄介だったが、まあこんなものだろう。

ネットワークをvxnにして、メモリ管理ができるようになったので本日の作業は終了。

FreeNASでサーバをたててみる

FreeNAS 8.0がリリースされたようなので、試してみる。VMWare ESXiに載せて適当に設定。scsiは駄目だったが、ネットはvmxnetを素直に解釈してくれるのは嬉しい。

まだローカライゼーションは間に合っていないようで、インタフェースは英語のみ。なんとでもなるけど、iSCSIとか未知のものを試す時には日本語があった方が便利。

最初がDHCP強制なのでタイムアウトが面倒。DHCPなんてないゾーンで固定IPで運用するので、変更するまでが大変だった。

ZFSがメモリを喰うというのは本当らしい。25GBx2で500GBのボリュームを作ってみたら、800MB程使っていた。普通に組むなら大人しくUFSでRAIDはハードウェアまかせがいいのかな。

速度は感覚的にはTimeCupsuleがやっているよりは早い。比較元が遅すぎるだけだが。

VirtualBoxからVMWareへのエクスポートに悩まされる

VMWareでova(Open Virtual Appliance)形式のLinux VMを扱う必要があったのだけれども、苦労したので記録。

virtualBoxからだという事はわかっていたので、最初は素直にVBに喰わせてみる。素直に読みこんでくれてVMも動作。

VMWareがovfなら対応してそうな感じだったので、最新のVMware vCenter Converter 4.3 を使いvmxへのコンバートを試みようとするも、何故か4.3はovf/ovaに未対応。

コマンドラインのVMware OVF Toolで試してみたところ、環境がVB独自らしく適切なハードが無いということでエラー。VBはofa/ovf/ovf0.9の3形式で吐き出せるので全部試してみたが全滅。

VMWare Converterの旧版(4.0系)ならovf対応しているそうなので喰わせてみたけれども、やっぱり無理。

仕方が無いのでNHCを使いHDDだけのコンバートに方針を変更。

最初はVMWareにあわせてSCSIに変換してしまい、initrdでpanic。思わずGRUBで突破できないか散々いじりまわしてしまったけれど、LVMが絡むと非常に面倒なので断念。

最終的には、VirtualBoxがIDE HDDなので、そのままNHCでもIDE HDDでVMWareの最新形式に変換。VMWare上でもIDE HDDとIDEで通すことで、なんとか起動を確認。

と思ったらまだ罠が潜んでいて、スナップショットを取って戻そうとするとエラーになってしまう。

VMWare ConverterでVMX→VMXの変換をかけてvmdkを正常化して解決。

…ふう、疲れた。

モテるセキュリティ女子力を磨くための4つの心得

クラウドサービス ClowdFlare

fladdict » 0円の広域負荷分散システムCloudFlareが素晴らしい件

CloudFlareというサービスが良い値段の分散サービスらしい。稼働率からして安値でも採算があるということらしいが、実際はどうなのか。セキュリティも強調しているので気になるところだ。

実際、クラウドサービスのセキュリティというものは色々面倒なもので、社内でも何人も調べて講座にしていたりする。上物は同じなんだけれども仮想化レイヤが絡んでくるのでそこをどこまで「制度化」するのかというのがキモな気がする。ESXiとかVMMに徹しているものはまだわかるが、Vyattaとかからむと内部でさらに複雑なネットワークとなるのでネットワーク方面のセキュリティまで必要となる。

NISTのSP800-125があるので、一般的にはこのあたりでポリシーレベルを決めれば良いのかな。日本の省庁で出しはじめれば基準になると思う。

[物欲]VMWare Fusion 3 を購入

VMWare Fusino 2が64bit kernelで動作しなかったので、仕方なくact2.comでVMWare Fusion2を登録し、アップデートパッケージのノンサポート版を購入する。Paypalで支払ったので速攻ライセンスも到着。

VMWare Fusion 3 本体はダウンロードしてインストール。BootCampのWindowsXPをあらかじめファイルサーバにVMWare Converterで退避しておいたので、有線で繋いで持ってくる。後は、フォルダの名前を .vmwarevm になおしてインポート。

これでやっとVMWare ESXiのクライアントが確保できた。ssh越しでも一応操作はできるのだけれども、新規作成はCUIでちまちまやるには少々辛い。GUIは偉大なり。

おっと、仮想マシンフォルダをTimeMachineの除外対象にしておかなければ。

BootCampから仮想マシンへの変換

VMware vCenter Converterをダウンロードして、VMWare Fusion上で実行。本来はBootCamp上で行うべきものなのだろうが、再起動が面倒だったのでOSXの上からやってしまった。

延々と時間がかかるので放置。3〜4時間かけて終了。サイズはHDDの元サイズ70GB弱のところが、20GB強。

そんなメッセンジャーで大丈夫か?

いつの間にかオフライン対応していたようなので、VMWare Fusion上のWindows Live Messengerから、Adiumにしてみる。以前試したときはできなくってあきらめたので、上書きバージョンアップして起動。

試してみたところ、きちんと受信に成功。これで、Windowsを使う理由がまた一つ消えた。後はVMWareのGUIがOSXで出てくれればなあ。

地味な変更点として、「入力中」がわからなくなったり、ステータスコメントが変更しにくくなったが、大丈夫だ、問題ない。

エンジニアなら知っておきたい「仮想マシン」のしくみ

WindowsXPを効率的に仮想化する賢い方法

EMCが出しているEMC Performance Optimization for Microsoft Windows XP for the Virtual Desktop Infrastructure[PDF]を参考に、VMWare Fusionでできるだけやってみる。

ざっと見てみたところ、I/Oの削減が主なようですね。特にOS上での動作はI/O負荷を徹底して減らそうという試みに見えます。

ちなみに、Windows 7版[PDF]もあるので最新OSの人はそっちらをどうぞ。

VMWareの設定

SCSI controllerを”LSI Logic Parallel”に変更…BootCampなのでなし

仮想マシンのログを停止…Fusionには設定はない

BIOSで、I/O Device Configulationでシリアルポートとパラレルポートを無効化する…生憎シリアルコンソール用に必要なのでシリアルはそのままで。

NTFSのアライメントを揃える…生ディスクなので無理。そもそも仮想ディスク新規作成でないと無理。

OS上のVMWareの設定

VMWare Toolsをインストール…まあ普通にしています。

VMWare View agentのログを停止する…そもそも入ってないし。

HKLM/SOFTWARE/VMware, Inc./VMWare VDM/
DebugEnabled=False
TraceEnabled=False
HKLM/SYSTEM/CurrentControlSet/Service/vmware-viewcomposer-ga/
LogLevel=0

Windows XPの設定

エラーレポートを止める…詳細は文書参照。正直クラッシュした時の話なので最小dumpにしてあればそれでもいいかと。

Windows Updateフォルダを削除…詳細は文書参照。「潜在的に危険」と書いてあるしやらないでおこう。

自動アップデートを停止…背後でがりがりやってもいいし、逃す方が痛いのでこれも無効化しないでそのままにする。

不必要なアプリケーションを削除…QuickTimeとかRealとかAdobe Acrobatとか。確かに。

不要なWindowsのコンポーネントを削除…まあこれもこのままでいいか。

fsutilでNTFSのビヘイビアを変更…8.3式のファイル名を生成しないようにするのと、最終更新時刻を記録しないようにする。確かにこれはききそうだ。

fsutil behavior set disablelastaccess 1
fsutil behavior set disable8dot3 1

WindowsのDLLキャッシュを廃止…これはまた過激な。とりあえずこれもI/O負荷対策なのかな。

sfc /purgecache
sfc /cachesize=0

不要なフォントを消す…I/O負荷の元なのでということで。Font Xplorerがおすすめらしい。

Windowsの prefetcherを止める…0でdisable、1でアプリケーションのみ、2でブートのみ、3で全部(標準)のようだ。

HKLM/SYSTEM/CurrentControlSet/Control/Settion Manager/Memory Management/PreffetchParameters/
EnablePrefetcher=0

ハイバネーションを無効化…まあVMだし。コントロールパネルの「電源オプション」からさっさと無効にしておく。

言語バーを無効化する…ってそれは酷い。流石英語の国。当然しない。

システムの復旧を無効化する…まあそれはねえ。VMですし。個人的には細々としたトラブルに備えてそれくらい入れておこうよというところですが。

Paging Executiveを無効化…要するに十分なメモリがあるならカーネルモードドライバとシステムコードは常にオンメモリにしておこうと。

HKLM/SYSTEM/CurrentControlSet/Control/Settion Manager/Memory Management/
DisablePagingExecutive=0

十分なRAMを割当てる…まあ当然ですね。

ページファイルを固定サイズにする…詳しくは別文章と。

インデックス化を止める…まあそうですね。Cドライブのプロパティあたりからどうぞ。

ログオンスクリーンセーバを停止…確かにVMでは不要ですね。

レジストリを最適化…レジストリが減ればI/O負荷も減る。RegScrubXPでレジストリの重複を消して、NTREGOPTで圧縮。

不必要なサービスを停止…具体的には以下のあたりらしい。まあ理解して止める必要はありますね。Security CenterとかThemesとかWindows Audioとか、普通に使うならあきらかに止めない方がいいのまで混じってますし。

  1. Wireless Zero Configulation
  2. Telephony
  3. SSDP Discovery Service
  4. Remote Registory
  5. Security Center
  6. Shell Hardware detection
  7. Task Scheduler
  8. Themes
  9. Help and Support
  10. Indexing Service
  11. Machine Debug Manaeger(MDM)
  12. Network Location Awareness
  13. IPSec Services
  14. Windows Audio

ユーザプロファイルをクリーンにする…MicrosoftのUser Profile Hive Cleanup Serviceを使えば、プロファイルの整合性が解決するかもよ、と。

印刷イベントのログを停止する…印刷は使っていないのでまあいいや。

アプリケーションとサービスの停止時間を変更する…ログアウトの時に標準だと20000秒待つので、レジストリ書き換えで短くする。

ログインの成功のログを取らない…監査ポリシー的にこれもどうかと。些細なことですし。

グループポリシーの更新時間を変更する…ネットワーク負荷になるから、90分毎の更新から24時間に一度の更新にするといい、だそうです。

デフォルトのユーザプロファイルを設定

まあ色々とあるけど省略

インストール後の設定

ディスクのクリーンナップとデフラグ…まあ適当に。

ここまですれば、細かいつみかさねで変わってくるんだろうなあと思える内容ですね。ただ、あくまでESXi等用なので、テーマ無し、サウンド無し、監査も最小限以下、というのがちょっと気にかかります。

VMWare ESXiでWBEMを試す

Web-Based Enterprise Management(WBEM)は、システムをリモートから管理する手法の一つ。オブジェクト志向管理モデルのCIM(Common Information Model)と呼ばれるデータ構造等を用いて、システムの情報を取得したり設置したりできる。一応MicrosoftのWMIもWBEMの一種らしい。そして、現在のVMWare ESX系はこのWBEMに対応している。

日本語でまともに解説したものがほとんど無いので、portsにあったwbemcliを使って色々試している、というのが全開までの話。

まずは、ecn(Enmumelate Class Name) でクラスの一覧を列挙。なお、-nl をつけて改行している。

# wbemcli ecn -nl -noverify 'https://root@esxhost:5989/root/cimv2'

結果は長いので省略。

gc(get class)でクラス情報を取得。gcd(get class definition)なら定義が取れる。

# wbemcli gci -noverify -nl "https://root@esxhost/root/cimv2:CIM_Processor"
Enter password:
<CLASS NAME="CIM_Processor" SUPERCLASS="CIM_LogicalDevice">
<PROPERTY NAME="LocationIndicator" TYPE="uint16">
</PROPERTY>
<PROPERTY NAME="MaxQuiesceTime" TYPE="uint64">
</PROPERTY>
<PROPERTY.ARRAY NAME="AdditionalAvailability" TYPE="uint16">
</PROPERTY.ARRAY>
<PROPERTY.ARRAY NAME="IdentifyingDescriptions" TYPE="string">
</PROPERTY.ARRAY>
<PROPERTY NAME="TotalPowerOnHours" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="PowerOnHours" TYPE="uint64">
</PROPERTY>
(略)
</METHOD>
</CLASS></code>

クラス名を指定して、ei(enumarate instances)で値がとれた。返答を見るにここはCIMではなくOEM_Processorを指定するほうがいいらしい。

#wbemcli ei -nl -noverify "https://root@esxhost/root/cimv2:CIM_Processor"
Enter password:
esxhost:5989:5989/root/cimv2:OMC_Processor.CreationClassName="OMC_Processor",DeviceID="3.1024",SystemCreationClassName="OMC_UnitaryComputerSystem",SystemName="****"
-EnabledProcessorCharacteristics=2,2,2,2,3
-Characteristics=2,4,5,6,7
-IdentifyingDescriptions="Brand ID"
-OtherIdentifyingInfo="0x  ff"
-DataWidth=64
-ModelName="Intel(R) Celeron(R) CPU        G1101  @ 2.27GHz"
-Stepping="2"
-UpgradeMethod=8
-TransitioningToState=12
-SystemName="****"
-SystemCreationClassName="OMC_UnitaryComputerSystem"
-RequestedState=12
-OperationalStatus=2
-NumberOfEnabledCores=2
-MaxClockSpeed=3400
-HealthState=5
-Family=1
-ExternalBusClockSpeed=133
-EnabledState=2
-EnabledDefault=2
-ElementName="CPU#1"
-DeviceID="3.1024"
-Description="CPU#1"
-CurrentClockSpeed=2260
-CreationClassName="OMC_Processor"
-Caption="CPU#1"
-CPUStatus=0
-LocationIndicator=
-MaxQuiesceTime=
-AdditionalAvailability=
-TotalPowerOnHours=
-PowerOnHours=
-ErrorCleared=
-ErrorDescription=
-LastErrorCode=
-StatusInfo=
-Availability=
-PowerManagementCapabilities=
-PowerManagementSupported=
-Generation=
-InstanceID=
-InstallDate=
-Name=
-StatusDescriptions=
-Status=
-PrimaryStatus=
-DetailedStatus=
-OperatingStatus=
-CommunicationStatus=
-OtherEnabledState=
-TimeOfLastStateChange=
-AvailableRequestedStates=
-Role=
-OtherFamilyDescription=
-AddressWidth=
-LoadPercentage=
-UniqueID=

それにしても色々と見えていない。まあこんなものか。

ei(enumarate instance)でプロパティまで指定すれば、とりあえずピンポイントの値まで取れるようだ。

# wbemcli ei -noverify "https://root@esxhost/root/cimv2:OMC_Processor" ElementName
Enter password:
esxhost:5989/root/cimv2:OMC_Processor.CreationClassName="OMC_Processor",DeviceID="3.1024",SystemCreationClassName="OMC_UnitaryComputerSystem",SystemName="***" ElementName="CPU#1"

それにしても、よくわからない。OMC_ProcessorとかOMC_Memoryである程度の値はとれるが、システム管理でまっさきに気にしたい現在のメモリ利用量やロードアベレージ、ネットワークトラフィックなどはどこを見ればいいのだろう。

真面目に規格を読むしかないのだろうか。クラスはあっても値が入っていない項目がかあなりあるので、あまりむくわれなさそうだが…。

Postfix + Postgrey + Cyrus-mapd 2.3 での構築(まだ途中)

やたら多いMicrosoft UpdateをVMWare Fusionで当てつつ作業。

とはいっても、元々のMTAを止めた上でルータ経由のSMTPを新MTAに流して、実際に外との導通をとってみるだけ。最初はgreylistingにひっかかってなかなか確認できなかったが、一応一通りの操作はできたので安心。内部DNSを新MTAに向けなおして実働に入る。

Postgreyは、/etc/rc.conf でホワイトリストを指定。その上で普段利用の転送サーバをホワイトリスト指定している。

postgrey_flags="--pidfile=/var/run/postgrey.pid \
        --whitelist-clients=/usr/local/etc/postfix/postgrey_whitelist_clients \
        --whitelist-recipients=/usr/local/etc/postfix/postgrey_whitelist_recipients \
        --inet=10023 -d --user=postgrey --group=postgrey --dbdir=/var/db/postgrey"

次は、Cyrus-IMAPdと併用してのSMTP Authまわりかな。まあ内部用なので割と気分的なものだし、後まわしでいいや。

DNSまわりを整備

DNSSECをみすえてと、いい加減にBINDの肥大化と手順のややこしさにめげてきたので、DNSのResolverをunbound、Contantsをnsdに移行してみる。Jailでさくさくと複数環境を用意して、それぞれportsでinstall。

まずはunboundからざっと設定。localなzoneは、local-dataとして完全に記載する形にした。本当は外ファイルに出すべきなのかな。IPv6対応は外回線が確保できてからということで、あえてOFF。DNSSEC対応はこれから様子見つつテスト予定。portsなので起動も/usr/local/etc/rc.d/unboundからできるし、rc.confでunbound_enable=”YES”で起動も設定。


server:
        verbosity: 0
        interface: 192.168.xxx.xxx
        do-ip4: yes
        do-ip6: no
        do-udp: yes
        do-tcp: yes
        do-daemonize: yes
        access-control: 0.0.0.0/0 refuse
        access-control: 127.0.0.0/8 allow
        access-control: ::0/0 refuse
        access-control: ::1 allow
        access-control: ::ffff:127.0.0.1 allow
        access-control: 192.168.xxx.xxx/24 allow
        use-syslog: yes 

        private-address: 192.168.0.0/16
        private-domain: "localnet"

        local-zone: "localnet." static
        local-data: "ns.localnet. A 192.168.xxx.xxx"
        local-data-ptr: "192.168.xxx.xxx ns.localnet"

nsdも同様に別Jailに設定。ZONEは独自形式もできるようだが、そのままBINDのものを利用。逆引きの登録ができないのが若干不安。同じように登録してやればいいのかな。

と思ったら、ISPの業務移譲に伴い、逆引き移譲が消えているらしい。むー。


server:
        ip-address: 192.168.xxx.xxx
        hide-version: yes
        ip4-only: yes

        database: "/var/db/nsd/nsd.db"
        username: nsd
        zonesdir: "/usr/local/etc/nsd"

zone:
        name: "fortunerinn.org"
        zonefile: "fortunerinn.org.zone"

ついでに、RT105eでサーバへの静的NATもしているため、そちらも設定も変更しておく。


# nat descriptor masquerade static 1 1 192.168.xxx.xxx udp domain
# nat descriptor masquerade static 1 2 192.168.xxx.xxx tcp domain

今迄のサーバのBINDを止めて、一通り問題ないことをチェックしてから、移行完了。

unboundのlocal-dataをファイル分割。ついでに、nsdでSPFをIPアドレス制限で表明してみる(←まだやってなかった)。

あきらめた

色々考えた結果、ルータ入れ替えとかの際に面倒になるので、素のezjailのままで行くことに決定。VIMAGEは必要なところだけ使って遊ぶ予定。

ということで、jail を作りなおす。ezjail-adminで済むと色々と楽だなあ。

DNSサーバをいじる土台をつくったところで終了。

Home > Tags > 仮想化

Return to page top

12