Device Mapper Multipath Enablement
Kit for HP StorageWorks Disk Arrays
http://bizsupport1.austin.hp.com/bc/docs/support/SupportManual/c01683837/c01683837.pdf
- xenutil.sys
- xevtchn.sys
- xennet.sys/xennet6.sys
- xenvbd.sys
- scsifilt.sys
- xenservice.exe
- xenvssprovider.dll
- xs.dll
他のTool:
- xenstore_client
- getlogs
- setloglevel
- installXenProvider.cmd
- uninstallXenProvider.cmd
DNS
- DNS の設定は、DHCP または PIF.DNS
- ifcfg-xenbr<X> の PEERDNS=[yes|no]
- PIF.other-config:domain により上書きされるDHCP よりドメインを検索
- DNS server IP addrの一覧はカンマ区切り
- DOMAIN= field は ifcfg-xenbr<X> で設定
- /sbin/ifup は /etc/resolv.conf で設定
\# cat /etc/resolv.conf ; generated by /sbin/dhclientscript search uk.xensource.com xensource.com \[...\] nameserver 10.80.16.28 nameserver 10.80.16.67
物理 デバイスの設定
- ethtoolにより、speed、 duplex および autoneg を設定
- 他はPIF.other-configより設定
- o-c:ethtool-speed= 10|100|1000
- o-c:ethtool-duplex= half|full
- o-c:ethtool-autoneg= on|off
- すべての組が有効ではありません、Gigabit Ethernetではautonegotationが必要となります
- PIFを、アンプラグ後、再プラグすると有効
- PIFがmanagementインターフェースの場合、reboot。新規設定は/etc/init.d/managemen-tinterfaceに保存
- bondまたはVLANデバイスには、それほど有益ではない
Network Protocol Offload
- ハードウェアのIPプロトコル処理のある側面を有効にする
- IP checksum offload (TX および RX)
- TCP およびUDP segmentation offload
- ドライバー固有の障害
- 仮想ネットワークドライバーは、過度にoffloadするので、PIF同様VIFにも適応
\# ethtool \-k eth0 Offload parameters for eth0: Cannot get device udp large send offload settings: Operation not supported rxchecksumming:on txchecksumming:on scattergather:on tcp segmentation offload: off udp fragmentation offload: off generic segmentation offload: off
- Bugtool: ethtoolk*.out
- PIF.other-config:ethtool* および VIF.other-config:ethtool*
- o-c:ethtool-{rx,tx,sg,tso,ufo,gso} \= [on|off]
- VIF およびPIFのアンプラグが必要です、managementインターフェースの場合、reboot
ルーティング
- IP設定されているPIFはサブネットへのトラフィックルートが設定されます
- managementインターフェースのみがゲートウェイを持ち、すべての他のトラフィックはそこを経由
- PIF.other-config:static-routesによって設定されるPIFに追加のルートを設定
- フォーマットは、カンマ区切り、NETWORK/NETMASK/GATEWAY,...
- 例 "172.18.0.0/16/192.168.0.4" は、クラスBネットワーク172.18.0.0に対し、ルーター192.168.0.4へルーティング
- interface-reconfigure は、/etc/sysconfig/networkscripts/routexenbr<X> へ設定
- bugtoolに含まれます
-
-- # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.80.224.0 * 255.255.240.0 U 0 0 0 xapi4 169.254.0.0 * 255.255.0.0 U 0 0 0 xapi4 default 10.80.224.1 0.0.0.0 UG 0 0 0 xapi4
- # route -n stops DNS lookup
(bugtool: routen.out)
Bonded VLAN Network
- bondingとVLANの組み合わせ
- デバイス名 bond<X>.<Y>
- bond<X> は VLAN.taggedPIF
- <Y> は VLAN ID
- VLAN-on-bondは、決してbond-on-VLANではない(仕様/単純性)
- bond<X> および bond<X>.<Y> は同時に利用可能、ただし、eth<N>は不可
内部ネットワーク
- xapiにより管理、名前xapi<N>
- 構築はありません、 interface-reconfigure も ifcfg* もなし
- ブリッジに物理・ボンディング・VLANインターフェースなし
IP 設定
- 一般的には、management インターフェースへのみ適応
- しかし、ストレージネットワークインターフェースもあります
- IP設定はブリッジに適応、物理NIC、bond、VLANではない
- 将来的には、(ストレージには)ブリッジPIFはないかも。。。でも。。。
IP設定(DHCP)
PIF.mode=DHCP. ifcfgxenbr<N>: BOOTPROTO=none BOOTPROTO=dhcp PERSISTENT_DHCLIENT=yes
IP設定(Static)
PIF.mode = static
PIF.IP = 1.2.3.4
PIF.netmask = 255.255.255.0
PIF.gateway = 1.2.3.1
BOOTPROTO=none NETMASK=255.255.255.0 IPADDR=1.2.3.4 GATEWAY=1.2.3.1
IP設定(Gateway)
- /etc/sysconfig/networkがデフォルトゲートウェイを定義するブリッジを設定
- GATEWAYDEV=xenbr<X>
- managementインターフェース
- 他のインターフェースに対し、GATEWAY= は無視、同様に、DHCP経由でのゲートウェイも他のインターフェースに対し無視されます
Bonding ネットワークインターフェース
- デバイス名 bond<X> (xapi が決定)
- 2つの物理ネットワークインターフェース(スレーブ)以外の1つの冗長なネットワークインターフェースを構築
- Active-Active 構築
- ソース(例えばVIF)のMACアドレスに基づき、送信時、スレーブが選択
- 任意の1つのVIFが最大ひとつのNICの帯域値となります
- 複数のVIFは全合計の帯域の利点を得ることが可能
- 負荷は、10秒ごとにリバランス
- リンク失敗のトラフィックは、他の物理インターフェースへすぐにリバランス
- Orlando前: Active-Passiveのみ
- PIFはxapiのbond.cretaeにより自動的に作成、PIF.bondmasterofは、bondオブジェクトを指します
- スレーブは、PIF.bondslaveof を持ちます
- 各スレーブに関連するネットワークは、利用されません
- ブリッジは以前と同様に 構築
- 物理NICの構築は異なります
- /etc/sysconfig/networkscripts/ifcfgeth<X>
\# DO NOT EDIT: This file (ifcfgeth0) was autogenerated by interfacereconfigure XEMANAGED=yes DEVICE=eth0 ONBOOT=no TYPE=Ethernet HWADDR=00:13:20:f3:f0:d3 MASTER=bond0
- /etc/sysconfig/networkscripts/ifcfgbond<Y>
# DO NOT EDIT: This file (ifcfgbond0) was autogenerated by interfacereconfigure XEMANAGED=yes DEVICE=bond0 ONBOOT=no MACADDR=00:13:20:f3:f0:d3 BRIDGE=xapi4 SLAVE=yes
- /proc/net/bonding/bond<X>
- 失敗の数も含め、スレーブの状態を表示
- bugtoolに含まれます
VLAN ネットワークインターフェース
- デバイス名 eth<X>.<Y>
- eth<X> 物理NIC
- (VLAN.taggedPIF)
- <Y> VLAN タグ (PIF.VLAN)
- PIF は、xapi の VLAN.create で作成されます、VLAN.untaggedPIF として参照されます
- eth<X>と関連するネットワークは、まだ有効です、両方とも同時に設定・利用されます
- ブリッジの設定は、これまでと同様ですが、名前はxapi<N> です、 xenbr<N> ではないです <N> はxapiにより決定
- ifcfgeth<X> はこれまでと同様です
- /etc/sysconfig/netw[...]pts/ifcfgeth<X>.<Y>
\# DO NOT EDIT: This file (ifcfgeth2.47) was autogenerated by interfacereconfigure XEMANAGED=yes DEVICE=eth2.47 ONBOOT=no VLAN=yes BRIDGE=xapi1\\
- /proc/net/vlan/eth<X>.<Y>
- bugtoolにも含まれます(Orlandoより)
http://community.citrix.com/cdn/xs/sdks
Xen-API
C libxenserver
C#.NET XenServer.NET
Java XenServerJava
PowerShell XenServerPSSnapIn
Python XenAPI.py
OCaml (available but not released)
No HTTP calls
http://docs.vmd.citrix.com/XenServer/5.5.0/1.0/en_gb/api/docs/html/browser.html
Citrix XenServer Management API
| パッケージ |
コンポーネント |
|---|---|
| dom0.tar.bz2 | dom0(ただし、他の多くのコンポーネントを含む) |
| xapi.tar.bz2 | api |
| docs.tar.bz2 | docs |
| el4.*-binaries.tar.bz2 | rhel-guest-installer |
| el5.*-binaries.tar.bz2 | rhel-guest-installer |
| tools-iso.tar.bz2 | tools-iso(ただし、他の多くのコンポーネントを含む) |
| xha.tar.bz2 | xha |
| sm.tar.bz2 | sm |
| license.tar.bz2 | ライセンス(Miamiではxapi.tar.bz2に含まれる) |
- カーネルおよびゲストのブロックデバイスドライバー
- blkback, blktap, blkfront, qemu-dm
- ストレージマネージャAPI
- SR Plug-in
- LVM, File-based, Array specific plugins
- XAPI ストレージオブジェクト
- ストレージトラフィックNIC
ブロックデバイスドライバー アーキテクチャ
単純なネットワーク
デバイス名
すべてのネットワークオブジェクトは、カーネルが利用するネットワークデバイス名となるdeviceまたはbridgeフィールドを持っています
物理デバイスには、カーネルがブート時に名前を割り当てます。(ただし、同じ名前ではないかも。)
デバイスは、PIFがプラグされるときに、リネームされる。正しい名前の判断には、MACアドレスを利用
アンプラグのPIFの一時的なカーネル名は、dev<X> または __tmp<Y>
仮想ネットワークデバイス
準仮想ネットワークドライバは、2つに分割されます
- domain 0 kernel のNetback
- guest domain kernel. eth<N> のNetback
(Linux) または NIC<N> (Windows)
xenstore、 共有リング、およびイベントチャネル経由での通信
Domain0での仮想ネットワークデバイス
デバイス名 vif<X>.<Y> は、準仮想化ネットワークデバイス(netback) のdomain0側を表す
<X> domain ID
<Y> device ID. eth<Y> または NIC<Y> に対応の必要はない
Domain0 でエミュレーションされるネットワークデバイス
PVドライバーがロードされるまで、完全仮想化(HVM)ゲストに対し 追加の tap<X>.<Y>
このデバイスは、ネットワークデバイスをエミューレーションするqemu-dmのエンドポイントを表す
tap<X>.<Y> は、一度PVドライバーが初期化されると、消えます
bugtoolにてtapデバイスがある場合、boot開始時にゲストが正しかったか、、、PVドライバーがインストールされていないか、、、
ソフトウェアブリッジ
switch/hub
デバイス名 xenbr<N> またはxapi<M>
ブリッジに最低1つの物理デバイス、およびブリッジに複数のVIF
brctlツールを用いて現在の状態を確認
# brctl show
bridge name bridge id STP enabled interfaces
xapi4 800[...]d3 no vif2.2
bond0
xenbr2 800[...]f8 no eth2
bugtool: brctl-show.out
/etc/sysconfig/networkscripts/ifcfgxenbr<N> \# DO NOT EDIT: This file (ifcfgxenbr2) was autogenerated by interfacereconfigure XEMANAGED=yes DEVICE=xenbr2 ONBOOT=no TYPE=Bridge DELAY=0 STP=off PIFDEV=eth2 BOOTPROTO=none
+ IP アドレスの設定
物理ネットワークインターフェース
Device named eth<X>
/etc/sysconfig/networkscripts/ifcfgeth<X> # DO NOT EDIT: This file (ifcfgeth2) was autogenerated by interfacereconfigure XEMANAGED=yes DEVICE=eth2 ONBOOT=no TYPE=Ethernet HWADDR=00:1b:21:06:cb:f8 BRIDGE=xenbr2
仮想ネットワークインターフェース
vif<X>.<Y> は interface-reconfigure で設定されません
以下に設定はない
/etc/sysconfig/networkscripts
Hotplug スクリプト /etc/xensource/scripts/vif が VIF をブリッジに追加
すべてのネットワークデバイス(bridge, PIF, VIF, bond, VLAN)は、Linuxカーネルに対応するデバイスを持っています
ifconfigツールを用いて、特定のデバイスの確認
# ifconfig xapi4 xapi4 Link encap:Ethernet HWaddr 00:13:20:F3:F0:D3 inet addr:10.80.226.15 Bcast:10.80.239.255 Mask:255.255[...] UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:439633 errors:0 dropped:0 overruns:0 frame:0 TX packets:244791 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:234466646 (223.6 MiB) TX bytes:225763260 (215.3[...]
すべての ("up") ネットワークデバイス
- ifconfig
すでてのネットワークデバイス (bugtool: ifconfig-a.out)
- ifconfig a
Ethtool
# ethtool eth0 [...] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports autonegotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised autonegotiation: Yes Speed: 100Mb/s Duplex: Full Port: Twisted Pair [...] Link detected: yes
- ethtool -i eth0
driver: e1000e
version: 0.4.1.12NAPI
firmwareversion:
0.117
businfo:
0000:01:00.0
(bugtool ethtool-*.out)
XenAPIオブジェクトがどのようにLinuxのネットワーク概念および構築にマップするのか考えます。
実際に実装する際の設定ファイルのありか、概念、およびメカニズムを考えます。
現在のネットワークの状況を確認する方法および、同様の情報がbugtoolのどこに保存されるのかを考えます。
すべてのネットワークの設定がXenAPIに保存
PIFおよびネットワークオブジェクトの直接のフィールドとして、またはother-configフィールドとして
interface-reconfigure スクリプトはXenAPI経由でデータモデルを検証し、設定ファイルへ書き込みます
/sbin/ifupコマンド、設定に沿って、ネットワークを設定する、を呼び出します
スクリプトは、 /opt/xensource/libexec/ にあります
ブート時に/etc/init.d/managementinterface が前回のブートでキャッシュされている設定を利用し、マネージメントインターフェースを起動します
PIF.plug XAPIがPIFを起動する要求を行うスクリプトを呼び出します
スクリプトは、新規の設定に衝突しないよう既存のネットワークの状態との整合性に注意を払います
多くの設定ファイルは以下です
/etc/sysconfig/networkscripts
- ifcfg{eth<X>,bond<Y>,xenbr<Z>,xapi<A>
- route
いくつかは、以下です
/etc/sysconfig/network
- Gateway Device (==management interface)
bugtoolに含まれます
/sbin/ifup および/sbin/ifdown を利用し、設定します
多くは次です
/etc/sysconfig/networkscript/if
CentOS/RHELをベースにしていますが、パッチを適応しています
http://support.citrix.com/article/CTX106727
VMs
- 名前 から uuid: xe vm-list
- uuid から ドメイン: list_domains
- CPU およびメモリ使用量: xentop
- Xen 詳細: serial-line 'q' and 'd'
- /usr/lib/xen/bin/xenctx
Dom0
- xenstore
-
- xenstore-ls
- /opt/xensource/debug/xs が /local/domain/x を監視
- xenstoredを再起動するな!!
- xenstore-ls
- qemu
-
-
- pgrep -fl qemu
-
-
-
- xenstore-read /local/domain/x/qemu-pid
-
参考
- Hardware
- Manuals, datasheets, standards, &c.
- Xen hypercalls
- xen-3.2.hg/docs/pdf/interface.pdf
- Syscalls/libc
- Linux man pages
- Libxc
- xen-3.2.hg/tools/libxc/*.h
- Xenstore
- xen-3.2.hg/docs/misc/xenstore.txt
qemu-dm
- HVM ゲストのためにPC ハードウェアをエミュレーション
- ネットワークカード、ディスク、VGA、PCI、シリアルポート
- エミュレートしない:CPU, タイマー, 割り込み処理, メモリ管理
- /var/log/messages, /tmp/qemu.* へログ
XenStore
- VM メタデータ重要な値のペアのレジストリ
- dom0でのデーモンとして起動
- xenbus経由で他のVMとの通信
- リブートされるまでコンテントの継続
- /var/log/xen/xenstored-access.log.* へのログ
local = "" domain = "" 8 = "" vm = "/vm/03534046-45f8-14c8-1a62-02f0cdf7ad43" vss = "/vss/03534046-45f8-14c8-1a62-02f0cdf7ad43" name = "Domain-8" cpu = "" 0 = "" availability = "online" memory = "" static-max = "786432" target = "786432" device = "" vbd = "" 768 = "" backend = "/local/domain/0/backend/vbd/8/768" state = "4" backend-id = "0" device-type = "disk" virtual-device = "768" online = "1" ring-ref = "1536" event-channel = "5" protocol = "x86_32-abi" feature-surprise-remove = "1" feature-online-resize = "1"