SDLab

SDLab
SDLab.org::Adminな脳み

2014年4月30日水曜日

XenServer 6.2.5 - Development Snapshots - Nightly BUild 2014-04-29
http://xenserver.org/overview-xenserver-open-source-virtualization/project-roadmap/2-uncategorised/115-development-snapshots.html
でてました。

<追記>
XenMotionのOcamlが変更されたことは確認した。
でもDowntimeは変わらない感じ。(2台で試してないけど)


[SCTX-1104] Add WindowsPEMode to xenfilt
https://github.com/benchalmers/win-xenbus/commit/0c56db7d6e4fdf5955af76cc581a47fa94b4bde0
Windows PE Mode への対応。(win-xenbus)
Windows対応っていろいろあって大変ね。

2014年4月28日月曜日

SRmaster

SCTX-1616: Ensure PBD.device_config:SRmaster never exists
https://github.com/simonjbeaumont/xen-api/commit/45c85c73200ec9c4dfa981bc9d10c2b156ce47e3

XenServer 5.6 無印 以前?に利用されていて
PoolをUpgradeしても「PBD.device_config:SRmaster」と残り続けてきたXenServerの盲腸「SRmaster」への対応。
可能であれば、device-configからも消して欲しいところ。
UpGrade時に悪さされて困ったので、メモとして残しておきます。


uuid ( RO)                  : 3f4dfe1f-f5cb-bba5-1234-7e72d148cf83
             host-uuid ( RO): 6fe5bb93-1234-4bc5-9257-b9d174fde5b2
               sr-uuid ( RO): 09ed8c35-0590-fbb4-7e89-abcd24540206
         device-config (MRO): multiSession: 192.168.0.1,3260,iqn.2000-09.org.sdlab:storage-system.xs56:00011df0|; target: 192.168.0.1; multihomelist: 192.168.0.1:3260; targetIQN: *; SRmaster: true; SCSIid: 3600000e00d00000000011df700030000; port: 3260
    currently-attached ( RO): true

2014年4月27日日曜日

XenServer にHDDを追加し、LocalStorage2 として使う


本番では無いかもしれないけど、テスト環境ではよくあるので。
今回の環境は、XenServer 6.2.5 build 4/23
HDDを追加して確認。
1TB。
LVMで使うので、IDは「8e」で。

[root@xs625test ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x4155c0a4
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      121601   976760001   8e  Linux LVM

状態を見てみよう。

[root@xs625test ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               VG_XenStorage-fbda5740-7485-3ba7-3401-42840ec6ad84
  PV Size               931.51 GiB / not usable 10.81 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              238464
  Free PE               228708
  Allocated PE          9756
  PV UUID               EtS9LV-9CX2-SI0O-igqB-ViZ3-nxVr-s2a3ol

あれ、pvcreateしてなくても、見えるのか。
まぁ、使い回しのHDDだし。
VG Nameもしっかり入ってるので、vgdisplayでも表示される。

[root@xs625test ~]# vgdisplay VG_XenStorage-fbda5740-7485-3ba7-3401-42840ec6ad84
  --- Volume group ---
  VG Name               VG_XenStorage-fbda5740-7485-3ba7-3401-42840ec6ad84
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  109
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                5
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               931.50 GiB
  PE Size               4.00 MiB
  Total PE              238464
  Alloc PE / Size       9756 / 38.11 GiB
  Free  PE / Size       228708 / 893.39 GiB
  VG UUID               FOZirY-XHEY-ItuW-LOyM-HNIP-5VF3-B3XMvW

LVMの確認が終わったら、Local Storage 2を作成する。

[root@xs625test ~]# xe sr-create name-label="Local Storage 2" type=lvm shared=false device-config:device=/dev/sdb1 content-type=user
bb3b4213-82a9-b8a9-6737-85f2dfd165ec

複数台ある場合には、
 host-uuid=<host-uuid>
も追加して実行ね。

[root@xs625test ~]# xe sr-list type=lvm
uuid ( RO)                : f78c0a4e-7025-0f00-360f-a559611e9a8a
          name-label ( RW): Local storage
    name-description ( RW):
                host ( RO): xs625test
                type ( RO): lvm
        content-type ( RO): user

uuid ( RO)                : bb3b4213-82a9-b8a9-6737-85f2dfd165ec
          name-label ( RW): Local Storage 2
    name-description ( RW):
                host ( RO): xs625test
                type ( RO): lvm
        content-type ( RO): user

Citrixへのリンクは下記
How to Set Up an Additional Hard Drive in XenServerhttp://support.citrix.com/article/CTX130897

2014年4月26日土曜日

Perfツール: xsiostat と xsifstat

どちらもXenServer 6.2 に含まれてます。

xsiostat - XenServer Storage I/O Stats

https://github.com/xenserver/xsiostat
これがあればストレージのトラブルシュートがかなり楽。

[root@xs62-01 debug]# pwd
/opt/xensource/debug
[root@xs62-01 debug]# ./xsiostat
----------------------------------------------------------------------
pool: 8453eac5-0a7e-6b2f-f812-cbc3500958fc ( 704,    0)
      DOM   VBD  BLKBKRING  INFLIGHT     BLKTAP REQS/s     BLKTAP MB/s
                  TOT USE    RD  WR        RD      WR       RD     WR
 vbd:  12,51760: ( 32,  0) (  0,  0) (   0.00,   0.00) (  0.00,  0.00)
pool: a0565dd9-c599-5230-fef3-a864d84f90f5 ( 704,    0)
      DOM   VBD  BLKBKRING  INFLIGHT     BLKTAP REQS/s     BLKTAP MB/s
                  TOT USE    RD  WR        RD      WR       RD     WR
 vbd:  12,51712: ( 32,  0) (  0,  0) (   0.00,   0.00) (  0.00,  0.00)
 vbd:   3,51712: ( 32,  0) (  0,  0) (   0.00,   0.00) (  0.00,  0.00)



xsifstat - XenServer Network I/O Stats

https://github.com/xenserver/xsifstat
netbackとVIF間の状態をとれるので、トラブルシュートに役立つかも。

[root@xs62-01 debug]# pwd
/opt/xensource/debug
[root@xs62-01 debug]# ./xsifstat
DEVTYPE=bridge: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|- netback/0: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|  |- vif3.0: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|- netback/1: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|  |- vif3.1: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|- netback/2: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|  |- vif12.0: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|- netback/3: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|  |- vif12.1: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
DEVTYPE=bridge: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|- netback/0: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|  |- vif3.0: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|- netback/1: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|  |- vif3.1: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|- netback/2: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|  |- vif12.0: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|- netback/3: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s
|  |- vif12.1: Rx=0.000 Gbit/s, Tx=0.000 Gbit/s

2014年4月25日金曜日

XenServer 6.2.5 Nightly Release : Build on 2014-04-23

XenServer 6.2.5 Nightly Release : Build on 2014-04-23
ほぼ一カ月ぶりに更新された。
http://xenserver.org/overview-xenserver-open-source-virtualization/project-roadmap/2-uncategorised/115-development-snapshots.html


<追記>
Storage XenMotion (1台構成で、Local Storageから、VMのNFSをSRとしてものへ)でErrorになる・・・
Apr 25 22:02:09 xs625test xenopsd-xc: [debug|xs625test|9||xenops_server] TASK.signal 225 = ["Failed", ["Internal_error", "End_of_file"]]
Apr 25 22:02:09 xs625test xenopsd-xc: [debug|xs625test|886||xenopsd-xc]    <- success({id:S(225);dbg:S(Async.VDI.pool_migrate R:231d38e41bef);ctime:F(1.39842e+09);state:[S(Failed);[S(Internal_error);S(End_of_file)]];subtasks:{};debug_info:{cancel_points_seen:S(3)}})
Apr 25 22:02:09 xs625test xenopsd-xc: [debug|xs625test|888||xenopsd-xc]    <- success({id:S(225);dbg:S(Async.VDI.pool_migrate R:231d38e41bef);ctime:F(1.39842e+09);state:[S(Failed);[S(Internal_error);S(End_of_file)]];subtasks:{};debug_info:{cancel_points_seen:S(3)}})
Apr 25 22:02:09 xs625test xapi: [ info|xs625test|5880|Async.VDI.pool_migrate R:231d38e41bef|xapi] xenops: will retry migration: caught Xenops_interface.Internal_error("End_of_file") from success_task in attempt 2 of 3.
Apr 25 22:02:10 xs625test xapi: [error|xs625test|5880|Async.VDI.pool_migrate R:231d38e41bef|xapi] Caught Xenops_interface.Internal_error("End_of_file"): cleaning up

なんか、元のVDIを離せないのか?
Apr 25 22:02:28 xs625test xapi: [20140425T13:02:28.911Z|audit|xs625test|6710 UNIX /var/lib/xcp/xapi|VDI.forget R:bf919accc59e|audit] ('trackid=1b7b1599b5cbafb7113f23ff2dadcb5c' 'LOCAL_SUPERUSER' 'root' 'ALLOWED' 'OK' 'API' 'VDI.forget' (('vdi' '' '' 'OpaqueRef:8abbb2d5-eea5-ee35-f0e6-0f138a940c36')))
Apr 25 22:02:29 xs625test xapi: [20140425T13:02:29.039Z|audit|xs625test|5880|Async.VDI.pool_migrate R:231d38e41bef|audit] ('trackid=6582b6cd010c81cb6d7af7215ebc1dbf' 'LOCAL_SUPERUSER' 'root' 'ALLOWED' 'ERROR:INTERNAL_ERROR: [ Xenops_interface.Internal_error(\"End_of_file\") ]' 'API' 'VDI.pool_migrate' (('vdi' 'CentOS 6 (64-bit) (1) 0' '9b480e60-f7e4-4b99-ba40-908d58b2ce2f' 'OpaqueRef:933c60f2-4559-9f86-836b-49c57f4aa3e9') ('sr' 'NFS virtual disk storage' 'b1a40f88-619e-a165-e197-23b5bb01ad67' 'OpaqueRef:532eb260-2bb6-47b7-69d5-6c353af5f726')))
通常のXenMotionはできるのかなぁ?そのうち試してみよう。
でもパッと見、OCamlのErrorが多いので、このBuildはダメっぽいなぁ・・・


Ubuntu 14.04 とか VSS とかのMEMO

Ubuntu14.04 on XS62


Ubuntu 14.04 - Unable to find partition containing kernel - XenServer 6.2
http://discussions.citrix.com/topic/350648-ubuntu-1404-unable-to-find-partition-containing-kernel-xenserver-62/
pygrub がUbuntu14.04のDefault FileSystemのBtrfsをサポートしてないので、ext3でインストールしろとのこと。

Xen 6.2 and Ubuntu server beta2 14.04
http://ubuntuforums.org/showthread.php?t=2216358
ext2でBootを作らなくてもいい方法

Windows



Windows 2008/2008R2/2012/2012R2 のVSSとQuiesced Snapshotについて
http://discussions.citrix.com/topic/350623-quiesced-snapshots-fail/
http://support.citri...04221/guest.pdf
A.1.2. Windows Server 2008
Quiesced snapshots taken on Windows Server 2008 guests will not be directly bootable. Attach the snapshot disk
to an existing Windows Server 2008 VM to access files for restoration purposes.


Xapi

CA-99828 Add a new bond option: lacp-fallback-ab to xapi
https://github.com/robhoes/xen-api/commit/7aeb454ebcacaf2fc2c1d7a3603e3ff3dcf4dea2
lacp-fallback-ab allows lacp bond to fallback to active-backup when there is no lacp partner.


New API 2.3 の対応 
なおAPIは、
XenServer6.2 (Clearwater)が API2.0(11)、
XenServer6.2 with vGPU が API2.1(12)
XenServer6.2 SP1 with XS62ESP1004 が API2.2(13)
今回は、API2.3(14)がxs62bitブランチに追加された。

XenServer

Add SDV to normal driver build
https://github.com/pauldu/win-xenvif/commit/0f9a5545d019feb1cd3b6d64f831483556256869
WindowsVM用ドライバのSDV(Static Driver Verifier)対応は、マージされた模様
でもまだ終わってないっぽいね。

2014年4月24日木曜日

XenServer 6.2 ) XenMotionのDownTime その2

XenServer 6.2 ) XenMotionのDownTimehttp://mada0833.blogspot.jp/2014/04/xenserver-62-xenmotiondowntime.html
の続き。

環境は、1Gbpsで、iSCSI multipath環境。
XenServer6.2を2台用意して、Live Migration。
そのとき、対象VMに同一セグメントの別ハードウェアのCentOSからPINGを1秒ごとに打った。
なお、この環境では、VMwareはseamlessにLive Migrationできた。(1秒未満)
VMはCentOS5。

とりあえず、SourceとLogを比較してみた。
対象の Sourceはこれ。
xapi-0.2/ocaml/xenops/xenops_server.ml



XenMotion でVMを受ける側

####################### Receive######################
1288                 | VM_receive_memory (id, memory_limit, s) ->1289                         debug "VM.receive_memory %s" id;1290                         let open Xenops_migrate in1291 (*                      let state = B.VM.get_state (VM_DB.read_exn id) in1292                         debug "VM.receive_memory %s power_state = %s" id (state.Vm.power_state |> rpc_of_power_s     tate |> Jsonrpc.to_string);*)12931294                         (try1295                                 Handshake.send s Handshake.Success1296                         with e ->1297                                 Handshake.send s (Handshake.Error (Printexc.to_string e));1298                                 raise e1299                         );1300                         debug "Synchronisation point 1";
LOG> 22:22:30 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Synchronisation point 113011302                         debug "VM.receive_memory calling create";
LOG> 22:22:30 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] VM.receive_memory calling create
1303                         perform_atomics [1304                                 VM_create (id, Some memory_limit);
LOG> 22:22:30 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_create", ["188bbe5c-547c-0367-b848-2be29fc2275b", [2147483648]]]
1305                                 VM_restore (id, FD s);
LOG> 22:22:30 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_restore", ["188bbe5c-547c-0367-b848-2be29fc2275b", ["FD", 16]]]
1306                         ] t;1307                         debug "VM.receive_memory restore complete";
##### Ping fail: 22:22:49 - 22:23:00 #####LOG> 22:22:49 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] VM.receive_memory restore complete
1308                         debug "Synchronisation point 2";
LOG> 22:22:49 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Synchronisation point 2
13091310                         begin try1311                                 (* Receive the all-clear to unpause *)1312                                 Handshake.recv_success ~verbose:true s;
LOG> 22:22:51 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Handshake.recv: finished reading result code from remote.
1313                                 debug "Synchronisation point 3";
LOG> 22:22:51 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Synchronisation point 3
13141315                                 perform_atomics ([1316                                 ] @ (atomics_of_operation (VM_restore_devices id)) @ [1317                                         VM_unpause id;
LOG> 22:22:51 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VBD_set_active", ["188bbe5c-547c-0367-b848-2be29fc2275b", "xvda"], true]LOG> 22:22:51 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VBD_plug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "xvda"]]LOG> 22:22:53 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VIF_set_active", ["188bbe5c-547c-0367-b848-2be29fc2275b", "0"], true]LOG> 22:22:53 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VIF_set_active", ["188bbe5c-547c-0367-b848-2be29fc2275b", "1"], true]LOG> 22:22:53 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VIF_plug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "0"]]LOG> 22:22:54 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VIF_plug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "1"]]LOG> 22:22:54 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_create_device_model", ["188bbe5c-547c-0367-b848-2be29fc2275b", true]]LOG> 22:22:54 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_unpause", "188bbe5c-547c-0367-b848-2be29fc2275b"]

1318                                         VM_set_domain_action_request(id, None)
LOG> 22:22:54 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_set_domain_action_request", ["188bbe5c-547c-0367-b848-2be29fc2275b", []]]
1319                                 ]) t;13201321                                 Handshake.send s Handshake.Success;1322                                 debug "Synchronisation point 4";
LOG> 22:22:54 xs62-1 xenopsd: [debug|xs62-1|7|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Synchronisation point 4
1323                         with e ->1324                                 debug "Caught %s: cleaning up VM state" (Printexc.to_string e);1325                                 perform_atomics (atomics_of_operation (VM_shutdown (id, None)) @ [1326                                         VM_remove id1327                                 ]) t;1328                                 Handshake.send s (Handshake.Error (Printexc.to_string e))1329                         end

 XenMotion でVMを受ける側


####################### Send######################
1220                 | VM_migrate (id, vdi_map, vif_map, url') ->1221                         debug "VM.migrate %s -> %s" id url';1222                         let vm = VM_DB.read_exn id in1223                         let open Xmlrpc_client in1224                         let open Xenops_client in1225                         let url = url' |> Http.Url.of_string in1226                         (* We need to perform version exchange here *)1227                         let is_localhost =1228                                 try1229                                         let q = query t.Xenops_task.dbg url in1230                                         debug "Remote system is: %s" (q |> Query.rpc_of_t |> Jsonrpc.to_string);1231                                         q.Query.instance_id = instance_id1232                                 with e ->1233                                         debug "Failed to contact remote system on %s: is it running? (%s)" url'      (Printexc.to_string e);1234                                         raise (Failed_to_contact_remote_service (url |> transport_of_url |> stri     ng_of_transport)) in1235                         if is_localhost1236                         then debug "This is a localhost migration.";1237                         Xenops_hooks.vm_pre_migrate ~reason:Xenops_hooks.reason__migrate_source ~id;12381239                         let module Remote = Xenops_interface.Client(struct let rpc = xml_http_rpc ~srcstr:"xenop     s" ~dststr:"dst_xenops" url end) in1240                         let id = Remote.VM.import_metadata t.Xenops_task.dbg (export_metadata vdi_map vif_map id     ) in1241                         debug "Received id = %s" id;
LOG> 22:22:30 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Received id = 188bbe5c-547c-0367-b848-2be29fc2275b
1242                         let suffix = Printf.sprintf "/memory/%s" id in1243                         let memory_url = Http.Url.(set_uri url (get_uri url ^ suffix)) in12441245                         (* CA-78365: set the memory dynamic range to a single value to stop ballooning. *)1246                         let atomic = VM_set_memory_dynamic_range(id, vm.Vm.memory_dynamic_min, vm.Vm.memory_dyna     mic_min) in1247                         let (_: unit) = perform_atomic ~subtask:(string_of_atomic atomic) ~progress_callback:(fu     n _ -> ()) atomic t in12481249                         (* Find out the VM's current memory_limit: this will be used to allocate memory on the r     eceiver *)1250                         let state = B.VM.get_state vm in1251                         info "VM %s has memory_limit = %Ld" id state.Vm.memory_limit;
LOG> 22:22:30 xs62-3 xenopsd: [ info|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] VM 188bbe5c-547c-0367-b848-2be29fc2275b has memory_limit = 2147483648
1253                         with_transport (transport_of_url memory_url)1254                                 (fun mfd ->1255                                         let open Xenops_migrate in1256                                         let request = http_put memory_url ~cookie:[1257                                                 "instance_id", instance_id;1258                                                 "dbg", t.Xenops_task.dbg;1259                                                 "memory_limit", Int64.to_string state.Vm.memory_limit;1260                                         ] in1261                                         request |> Http.Request.to_wire_string |> Unixext.really_write_string mf     d;12621263                                         begin match Handshake.recv mfd with1264                                                 | Handshake.Success -> ()1265                                                 | Handshake.Error msg ->1266                                                         error "cannot transmit vm to host: %s" msg;1267                                         end;1268                                         debug "Synchronisation point 1";
LOG> 22:22:30 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Synchronisation point 1
12691270                                         perform_atomics [1271                                                 VM_save(id, [ Live ], FD mfd)
LOG> 22:22:30 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_save", ["188bbe5c-547c-0367-b848-2be29fc2275b", ["Live"], ["FD", 10]]]
1272                                         ] t;1273                                         debug "Synchronisation point 2";
##### Ping fail: 22:22:49 - 22:23:00 #####LOG> 22:22:51 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Synchronisation point 2
12741275                                         Handshake.send ~verbose:true mfd Handshake.Success;
LOG> 22:22:51 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Handshake.send: about to write result to remote.LOG> 22:22:51 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Handshake.send: finished writing result to remote.
1276                                         debug "Synchronisation point 3";
LOG> 22:22:51 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Synchronisation point 3
12771278                                         Handshake.recv_success mfd;1279                                         debug "Synchronisation point 4";
LOG> 22:22:54 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Synchronisation point 4
1280                                 );1281                         let atomics = [1282                                 VM_hook_script(id, Xenops_hooks.VM_pre_destroy, Xenops_hooks.reason__suspend);1283                         ] @ (atomics_of_operation (VM_shutdown (id, None))) @ [1284                                 VM_hook_script(id, Xenops_hooks.VM_post_destroy, Xenops_hooks.reason__suspend);
LOG> 22:22:54 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_hook_script", ["188bbe5c-547c-0367-b848-2be29fc2275b", "VM_pre_destroy", "suspend"]]LOG> 22:22:54 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_destroy_device_model", "188bbe5c-547c-0367-b848-2be29fc2275b"]LOG> 22:22:54 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VBD_unplug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "xvda"], true]LOG> 22:22:55 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VIF_unplug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "1"], true]LOG> 22:22:56 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VIF_unplug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "0"], true]LOG> 22:22:57 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_destroy", "188bbe5c-547c-0367-b848-2be29fc2275b"]LOG> 22:22:58 xs62-3 xenopsd: [debug|xs62-3|9|Async.VM.pool_migrate R:07d6b289f1a4|xenops] Performing: ["VM_hook_script", ["188bbe5c-547c-0367-b848-2be29fc2275b", "VM_post_destroy", "suspend"]]LOG> 22:22:58 xs62-3 xenopsd: [debug|xs62-3|10|events|xenops] Performing: ["VM_destroy_device_model", "188bbe5c-547c-0367-b848-2be29fc2275b"]LOG> 22:22:58 xs62-3 xenopsd: [debug|xs62-3|10|events|xenops] Performing: ["VBD_unplug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "xvda"], true]LOG> 22:22:58 xs62-3 xenopsd: [debug|xs62-3|10|events|xenops] Performing: ["VIF_unplug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "1"], true]LOG> 22:22:58 xs62-3 xenopsd: [debug|xs62-3|10|events|xenops] Performing: ["VIF_unplug", ["188bbe5c-547c-0367-b848-2be29fc2275b", "0"], true]
1285                         ] in1286                         perform_atomics atomics t;1287                         VM_DB.signal id

結果をみてみる

結果は、11秒の断。
内訳の前に、XenMotionを行うと、
Synchronisation point 
が1から4まで出力される。
これがある程度の目安になるかと。

Synchronisation point 1

メモリのコピーと、Migration先にVMの作成とリストアを実施している。
ここでは、パケットロスは発生していない。

Synchronisation point 2

ここから発生か?
処理はHandshake。
1275                                         Handshake.send ~verbose:true mfd Handshake.Success;
なんだろこれ。多分、これか。
1311                                 (* Receive the all-clear to unpause *)

Synchronisation point 3

パケットロスから2秒経過。
ここでは、移動先でVMの各種デバイス(VBDやVIFなど)を有効化している。
で、vm_unpause でパケット返しても良さそうだが、パケロス継続。

Synchronisation point 4

パケロスから5秒経過。
移動元のVMの各種デバイス(VBDやVIF)を無効化し、移動元のVMはDestroyする。

で、再開。

まとめ

なんか超理不尽な気がしない?
ポイント2、ポイント3は多めに見るとしてポイント4だよ。
新しいVMで動かさせろよ。
多分この動作は、LiveMigrationが失敗したときに移動元VMで復旧できるような処置のような気がする。
やっぱりね、XenServer変だよ。
Self-fenceもそうだけど、守ろうとして、その機能が悪さして、結果みんな痛い目をみる。
そう、それが Citrix XenServer。
でも、最近のXenServerはまともなので、この辺も改善というか、どのリスクを取ってXenMotionするか選択できるようになってくれればなぁと考える今日この頃。


<2014/06/17 追記>
XenServer 5.5 では、パケットロスなしでLive Migrationできていた。
これは、単純に、
LiveMigration元: VDI CLOSE。 VIF UNPLUG
その後、
LiveMigration先: VIF PLUG。 VDI OPEN
といった単純な動作だったから。
これが、Citrix XenServerが
Self-fenceもそうだけど、守ろうとして、その機能が悪さして、結果みんな痛い目をみる。
という根拠。

2014年4月23日水曜日

XenServer 6.2 ) XenMotionのDownTime

なぜか直接聞かれたから返答。
XenServerはダウンタイムでかいよ。
気付かないかもしれないけど、外部からのパケットが到達しないんだ。
これは、パッと見では、Mirgate先のホスト上で、
VDIやVIFをつける前にVMをActiveにしてたり
また、Migrate元のホスト上の元VMをDestroyするまでVDIやVIFが有効になってないように見える。

とりあえず、他の調査した人の報告をはっておく。
どこで遅いか、どこが原因かは、調べるから待って。(いつになるんだろう)

A"Quantitative"Study"of"Virtual"Machine"Live"Migration
http://people.clarkson.edu/~jmatthew/publications/cac2013_livemigration.pdf
XenServer6.1のDowntime: 4.64秒(VHD/NFS, EXT3/LVM)

Downtime Analysis of Virtual Machine Live Migration
http://www.thinkmind.org/index.php?view=article&articleid=depend_2011_4_40_40067
XenServer5.6 / Fujitsu RX300 S5 / iSCSI(VHD/LVM) で 7.69秒


なお、XenMotionではないけど、Storage XenMotionで、
XenServer 6.5.2 で1台構成で、LOCALのSRとNFSのSR作ってStorageXenMotionしたら、
外部からのPINGのPacket Lossが11秒だった。

2014年4月22日火曜日

VHDファイルの復旧ツール

使ったこと無いけど。

Undelete Deleted VHD File
http://undelete-deleted-vhd-file.en.softonic.com/

Repair Broken Virtual Partition Data
http://repair-broken-virtual-partition.en.softonic.com/

Kernel for VHD
http://www.restorevhd.com/
http://www.file.recovervhd.com/


XenServerのVHDはシンプルな形式なので、

復旧ツールじゃないけど、外部機器へのバックアップで
愛用してるのは、PHD。高いけど。

PHD virtual
http://www.phdvirtual.com/


あと、VHD関連の操作関連のLINKも張っておきます。

Access VHD VDIs from the Control Domain
http://grantmcwilliams.com/item/650-howto-access-vhd-vdis-from-the-control-domain
VHDファイルをDom0からマウントして中身をみる方法。xeコマンドの使い方ですが。

Mounting a .vhd disk image using blktap/tapdisk
http://wiki.xen.org/wiki/Mounting_a_.vhd_disk_image_using_blktap/tapdisk
XenServerでtap-ctlを使う場面は普通ないし、
もしやる場合、VMを止めてからやった方がいいよ。

2014年4月18日金曜日

ping の脆弱性

Kernel 3.14.1 のpingにオーバーフローの脆弱性あり。
DoSや権限昇格も可能。
ping init sockでのgroup_infoのrefcounterはインクリメントしかされないから続けていれば溢れるってことみたい。

JVNDB-2014-002009
Linux Kernel の net/ipv4/ping.c 内の ping_init_sock 関数における整数オーバーフローの脆弱性
http://jvndb.jvn.jp/ja/contents/2014/JVNDB-2014-002009.html

1086730: CVE-2014-2851 kernel: net: ping: refcount issue in ping_init_sock() function
https://access.redhat.com/security/cve/CVE-2014-2851

Re: CVE request -- Linux kernel: net: ping: refcount issue in ping_init_sock() function
http://seclists.org/oss-sec/2014/q2/98

2014年4月17日木曜日

2014/04/17のMEMO

PIFのOffload設定関連
API to set GRO (and potentially other "properties") on PIFs #1689
https://github.com/xapi-project/xen-api/pull/1689

このリンクも張っとく。
Add documentation for PIF.properties
https://github.com/johnelse/xen-api/commit/f8f3868e7c99af21d9a4e3ef59b512ac7af33a8e


DISK関連
CA-126097: Handle vm-clone when VBD is attached.
https://github.com/xapi-project/sm/pull/101

A clone operation was never performed when the VM is running, as a result
there is no need to pause/unpause tapdisk during the clone operation. With
vm-copy in place, there is a change in this behaviour. vm-copy attaches
and activates the VBD, a clone operation during the phase could result
in VHDs in inconsistent state.


2014年4月16日水曜日

XenServer6.2 で RHEL7 を ParaVirtual で動かしたい

えーと、今回もNGでした。
でも、 XenServer6.2.5 でRHEL7は動作 しました。
※XenServer6.2.5 は、XenServer6.2ではありません。次のXenServerの開発版です。
※XenServer6.2.5 は正式Build番号は、6.2.50 です。

はじめに

XenCenterから「Other install media」として、完全仮想化VMとしてインストールする
今回は、MinimalでBaseシステムだけインストールした。

完全仮想化で起動する
この時、SSH接続用のアカウントやsudoの設定を行う
なお、SSHが上がっていることも確認しておく。(netstat -anとかで)

GRUB2の編集

これをしないと起動しない。
14行目から21行目をコメントアウトする
(Fedora19では 行数が2行ずれてるので注意)
[root@rhel7 ~]# vi /etc/grub2.cfg
#if [ "${next_entry}" ] ; then
#   set default="${next_entry}"
#   set next_entry=
#   save_env next_entry
#   set boot_once=true
#else
#   set default="${saved_entry}"
#fi


準仮想化への設定

Dom0での操作

現状確認
[root@xs62sp1 ~]# xe vm-list name-label=RHEL7
uuid ( RO)           : 8a4ab85b-8561-fb00-700e-20659163eb62
     name-label ( RW): RHEL7
    power-state ( RO): halted

[root@xs62sp1 ~]# xe vm-param-get uuid=8a4ab85b-8561-fb00-700e-20659163eb62 param-name=HVM-boot-policy
BIOS order
[root@xs62sp1 ~]# xe vm-param-get uuid=8a4ab85b-8561-fb00-700e-20659163eb62 param-name=PV-bootloader
[root@xs62sp1 ~]# xe vm-param-get uuid=8a4ab85b-8561-fb00-700e-20659163eb62 param-name=PV-args

変更
[root@xs62sp1 ~]# xe vm-param-set uuid=8a4ab85b-8561-fb00-700e-20659163eb62 HVM-boot-policy=
[root@xs62sp1 ~]# xe vm-param-set uuid=8a4ab85b-8561-fb00-700e-20659163eb62 PV-bootloader=pygrub
[root@xs62sp1 ~]# xe vm-param-set uuid=8a4ab85b-8561-fb00-700e-20659163eb62 PV-args=text

確認
[root@xs62sp1 ~]# xe vm-param-get uuid=8a4ab85b-8561-fb00-700e-20659163eb62 param-name=HVM-boot-policy
[root@xs62sp1 ~]# xe vm-param-get uuid=8a4ab85b-8561-fb00-700e-20659163eb62 param-name=PV-bootloader
pygrub
[root@xs62sp1 ~]# xe vm-param-get uuid=8a4ab85b-8561-fb00-700e-20659163eb62 param-name=PV-args
text

ブロックデバイスの設定

ブロックデバイスを探す
[root@xs62sp1 ~]# xe vm-disk-list uuid=8a4ab85b-8561-fb00-700e-20659163eb62
Disk 0 VBD:
uuid ( RO)             : bd67f2e3-88fd-dae4-856c-dfec18a8b869 <<<THIS!
    vm-name-label ( RO): RHEL7
       userdevice ( RW): 0
Disk 0 VDI:
uuid ( RO)             : b09e7e37-e268-4b53-a0d4-637d86581f13
       name-label ( RW): RHEL7
    sr-name-label ( RO): iSCSI virtual disk storage 4
     virtual-size ( RO): 10737418240


現状確認
[root@xs62sp1 ~]# xe vbd-param-get uuid=bd67f2e3-88fd-dae4-856c-dfec18a8b869 param-name=bootable
false

変更
[root@xs62sp1 ~]# xe vbd-param-set uuid=bd67f2e3-88fd-dae4-856c-dfec18a8b869 bootable=true

確認
[root@xs62sp1 ~]# xe vbd-param-get uuid=bd67f2e3-88fd-dae4-856c-dfec18a8b869 param-name=bootable
true

VMを起動


ですが、ここでERROR。
RHEL7は、XenServer6.2では動かないな・・・
最新のXen4.4のパッチで修正されているそうなので

[Xen-changelog] [xen stable-4.4] xen/pygrub: grub2/grub.cfg from RHEL 7 has new commands in menuentry

grub2/grub.cfg uses linux16 and initrd16 commands
とのこと。


XenServer6.2.5の対応待ちですね。
っとおもったら、XenServer6.2.5ではPatchあたってた。
つまり動くってことか。
https://github.com/xenserver/xen-4.3.pg/blob/master/pygrub-fix-for-rhel7.patch

ちなみに、修正ファイルの場所はここ
/usr/lib/python2.6/site-packages/grub/GrubConf.py

とりあえず、XenServer6.2から対象VMをExportして、XenServer6.2.5にImportした。

起動した!!

RHEL7がXenServer6.2.5で起動したよ。

Xen4.4でのテストを考えてたけど、XenServerで起動できてよかったよぉ。
というわけで、続きの作業。

XenCenterのConsoleで xs-tools.isoをセットする

xe-guest-utilitiesだけインストール。PVドライバはKernelにBuild-inなので。
[root@xs625test ~]# mount -t iso9660 -o loop /dev/xvdd /mnt
mount: /dev/loop0 is write-protected, mounting read-only
[root@xs625test ~]# cd /mnt/Linux
[root@xs625test Linux]# ./install.sh -k
-k はKernelは変更しないモードなので、Daemonだけインストールされた状態。
<2014/4/22訂正>
install.sh の中身を確認したら、rhel4/centos4系にのみ有効なオプションでした。
rhel7が見えない場合用に念のため、付けとけばって感じ。

VM再起動

確認

XenToolsの起動確認
[root@rhel7 ~]# systemctl
xe-linux-distribution.service loaded active running   LSB: XenServer Virtual Machine daemon providing host integration services 

XenCenterで見ると
Operating System: Red Hat Enterprise Linux Everything release 7.0 Beta (Maipo)
Virtualization state: Optimized (version 6.2 installed)
と表示される。

OKね。
ただ、気になる点がある。
Rebootすると
[root@xs62sp1 ~]# xe vbd-param-get uuid=bd67f2e3-88fd-dae4-856c-dfec18a8b869 param-name=bootable
が falseになって起動しない。
なんだろ。XenServer6.2.5はいろいろテストしてるので、その影響かなぁと思ってるのでスルーしておく。 

<追記 2014/4/16>
Red Hat Enterprise Linux 7 RC (release candidate) は During the week of April 21, 2014 だそうです。

Red Hat Enterprise Linux 7 release candidate arrives

2014年4月15日火曜日

XenServer6.2.5 ) PCI PassthroughでVMにUSBメモリをつける

PCI Passthroughで、USBメモリをVMにつけてみるテスト。

注意)この記事では失敗しています。DomUのKernelの問題。Kernel3系のVMをImportするのが面倒だったなんていえない・・・


Dom0 がpcibackをサポートしていることを確認

[root@xs625test ~]# ls /sys/bus/pci/drivers/

DomU がpcifrontをサポートしていることを確認

DomU は Kernel 2.6.37以上が必要
[root@Cent64-132 ~]# uname -a
Linux Cent64-132 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
あれ、だめだね。
ダメもとで続けてみる。(っていうか、pcifrontなけりゃ動かないんだけどね)

Dom0 にUSBメモリを刺す。


一応状態確認
[root@xs625test ~]# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   752     4     r-----      48.0
[root@xs625test ~]# xl pci-list Domain-0
[root@xs625test ~]# 
なにもついてない。

dmesgでPCI IDを確認

lspciで確認するよりも、こっちの方が早い。
[root@xs625test ~]# dmesg
[368519.359878] scsi7 : usb-storage 7-4:1.0
[368521.093017] scsi 7:0:0:0: Direct-Access     Sony     Storage Media    0100 PQ: 0 ANSI: 0 CCS
<略>
[368521.095702] sd 7:0:0:0: Attached scsi generic sg2 type 0
[368521.098056] sd 7:0:0:0: [sdc] 7831552 512-byte logical blocks: (4.00 GB/3.73 GiB)
<略>
sdc で認識したようだ。

次にPCI IDを探す。
[root@xs625test ~]# ll /sys/block/sdc
lrwxrwxrwx 1 root root 0 Apr 14 16:27 /sys/block/sdc -> ../devices/pci0000:00/0000:00:13.1/usb7/7-4/7-4:1.0/host7/target7:0:0/7:0:0:0/block/sdc
0000:00:13.1のようだ。

確認してみる。
[root@xs625test ~]# lspci | grep 00:13.1
00:13.1 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0 USB OHCI1 Controller

VMへの設定

なお、PCI PassthroughはVMのOther-Configに記述するので、「VMを停止」する必要がある。(VMの再起動が必要ってこと)

USBメモリをつける対象のVMをShutdownする。

次にOther-Configに追加する。
一応今の状態を確認
[root@xs625test ~]# xe vm-param-get param-name=other-config uuid=85de31d0-e717-ef01-1f9a-8daf703af2e5
vgpu_pci: ; import_task: OpaqueRef:69498860-467e-7ee9-3482-2dec76d2dcdc; mac_seed: 84bae631-dee2-fac1-452e-f234736ed489; linux_template: true; base_template_name: CentOS 6 (64-bit); rhel6: true; install-repository: cdrom; install-methods: cdrom,nfs,http,ftp

追加
[root@xs625test ~]# xe vm-param-set other-config:pci=0/0000:00:13.1 uuid=85de31d0-e717-ef01-1f9a-8daf703af2e5

確認
[root@xs625test ~]# xe vm-param-get param-name=other-config uuid=85de31d0-e717-ef01-1f9a-8daf703af2e5
pci: 0/0000:00:13.1; vgpu_pci: ; import_task: OpaqueRef:69498860-467e-7ee9-3482-2dec76d2dcdc; mac_seed: 84bae631-dee2-fac1-452e-f234736ed489; linux_template: true; base_template_name: CentOS 6 (64-bit); rhel6: true; install-repository: cdrom; install-methods: cdrom,nfs,http,ftp

VMを起動してみる。


Dom0 のDmesgになんか出た
[370536.251894] ohci_hcd 0000:00:13.1: remove, state 1
[370536.251911] usb usb4: USB disconnect, device number 1
[370536.251917] usb 4-1: USB disconnect, device number 3
[370536.254912] ohci_hcd 0000:00:13.1: USB bus 4 deregistered
[370536.256458] pciback 0000:00:13.1: seizing device
[370536.256749] xen: registering gsi 18 triggering 0 polarity 1
[370536.256760] Already setup the GSI :18
[370536.273286] xen-pciback: vpci: 0000:00:13.1: assign to virtual slot 0
[370536.993527] xen-blkback:ring-ref 8, event-channel 13, protocol 3 (x86_64-abi)
pcibackは動いたようだ。
xlコマンドでみてみる
[root@xs625test ~]# xl pci-list Domain-0
Vdev Device
00.0 0000:00:13.1


Dom0 的には上手くいったぽい。
Dom0からUSBメモリは見えなくなった。
でもDomUでは、やっぱりKernelのVersion問題で、見えなかった。
pcifrontが無いしね。

そのうち、SuseかRHEL7で試してみる。

さて、取り外し。

対象のVMを停止。
そして、設定を抜く。
[root@xs625test ~]# xe vm-param-remove param-name=other-config param-key=pci uuid=85de31d0-e717-ef01-1f9a-8daf703af2e5
確認
[root@xs625test ~]# xe vm-param-get param-name=other-config uuid=85de31d0-e717-ef01-1f9a-8daf703af2e5
vgpu_pci: ; import_task: OpaqueRef:69498860-467e-7ee9-3482-2dec76d2dcdc; mac_seed: 84bae631-dee2-fac1-452e-f234736ed489; linux_template: true; base_template_name: CentOS 6 (64-bit); rhel6: true; install-repository: cdrom; install-methods: cdrom,nfs,http,ftp
消えた。
xlでも確認。
[root@xs625test ~]# xl pci-list Domain-0
Vdev Device
00.0 0000:00:13.1

?あれ、消えない・・・
期待していた結果はこんな感じ


[root@xs625test ~]# xl pci-list RHEL7
Vdev Device
00.0 0000:00:13.2


xl pci-detach してもErrorになるし・・・

この辺も含めて改めてリベンジしよう。




参考にしたBLOG
PCI Passthru on XenServer and Xen Cloud Platform
http://nicksegers.com/xcp-pci-passthru/

2014年4月14日月曜日

XenServer6.2 4coreのCPUを 2sockets搭載して 8coreのVMを設定してみる

How to Set Cores-Per-Socket Parameter for a Virtual Machine
http://support.citrix.com/article/CTX126524

4coreのCPUを 2sockets搭載して 8coreのVMを設定してみる。
これは、VMやコア数に対応していない商用ソフトウェアパッケージを利用する場合等のライセンス数回避に用いる。(PMからの移し替え時など)
まず、対象VMはShutdownする。


現状の設定確認
[root@xs625test ~]# xe vm-param-get param-name=VCPUs-at-startup uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
2
[root@xs625test ~]# xe vm-param-get param-name=VCPUs-max uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
2
[root@xs625test ~]# xe vm-param-get param-name=platform uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
nx: true; acpi: 1; apic: true; pae: true; viridian: true
まず、cores per socket を設定。

1ソケット4コアで設定する
[root@xs625test ~]# xe vm-param-set platform:cores-per-socket=4 uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
次に、最大コア数を設定する。合計8coreにしたいので、8。

[root@xs625test ~]# xe vm-param-set VCPUs-max=8 uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
下記も同じ値:8 で設定する

[root@xs625test ~]# xe vm-param-set VCPUs-at-startup=8 uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
なお、Citrixのページ通りに行うとErrorとなった。順番を入れ替えて実行すればOK
[root@xs625test ~]# xe vm-param-set VCPUs-at-startup=8 uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
The value given is invalid
field: VCPU values must satisfy: 0 < VCPUs_at_startup ? VCPUs_max
value: 8
確認
[root@xs625test ~]# xe vm-param-get param-name=VCPUs-at-startup uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
8
[root@xs625test ~]# xe vm-param-get param-name=VCPUs-max uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
8
[root@xs625test ~]# xe vm-param-get param-name=platform uuid=cf18-75d6-6d067dfd-d6d3-0d19d446557c
cores-per-socket: 4; nx: true; acpi: 1; apic: true; pae: true; viridian: true

2014年4月13日日曜日

Joke) Xeコマンダ

xeコマンドでSRをDestoryする
XeコマンダでSRをDestoryする
は大きく意味が異なります。
ご注意ください

see:
Xe
http://ja.wikipedia.org/wiki/ブラックウォーターUSA

SR


2014年4月12日土曜日

XSM-flask

XSM-flask
http://wiki.xen.org/wiki/Xen_Security_Modules_:_XSM-FLASK
http://xenbits.xen.org/docs/unstable/misc/xsm-flask.txt
FlaskはXen4.3からサポートされたXSM(Xen Security Module)でSELinuxのようなもの。

xl dmesg で確認できるようだ。
# xl dmesg | grep flask_enforcing
Defalutは0。
XenServer6.2.5には出力されなかった。

2014年4月11日金曜日

ethtools の修正

Dom0のethertoolsのPIFの設定がかわるっぽい。といっても遠い将来?

Fix ethtool issue with workload setting.
1. Overrode any hardware issue with workload setting.
2. Change workload setting into two groups, mandatory and optional. 
3. Improved handling of ethtool output for newer version.
https://github.com/bpwook/auto-cert-kit/commit/221b633baf0d40ae495aea09823da86e6fd4db50

PIFからufo/lro/ntuple/rxhash が廃止で、
NICに、ufo/lro/ntuple/rxhash/rxvlan/txvlan が追加なのか

XenServer 6.2の時に、PIFのufoをonにしてたら、Upgrade時に起動できなかった記憶がある。

2014年4月10日木曜日

XenServer6.2 SP1 のパッチリスト (2015/11/10 時点)

現状のXenServer6.2 のパッチリスト


Recommended Updates for XenServer 6.x Hotfixes
http://support.citrix.com/article/CTX138115
とは全く関係ない私的意見での当て方
Recommendedがもう整理されないようなので。

  1. XS62ESP1001 (XenCenter)
  2. XS62 SP1
  3. Reboot (for SP1)
  4. XS62ESP1014 (Bash)
  5. XS62ESP1003 XS62ESP1012 (xentools)
  6. XS62ESP1013 XS62ESP1015 XS62ESP1019
  7. XS62ESP1009
  8. Driver Update (XS62ESP1009用のもの)
  9. XS62ESP1017
  10. XS62ESP1021 (XS62ESP1031に含まれる)
  11. XS62ESP1020 XS62ESP1028(xentools)
  12. XS62ESP1025 (VENOM)  XS62ESP1026 XS62ESP1027 XS62ESP1030 XS62ESP1031 XS62ESP1032 XS62ESP1033 XS62ESP1034
  13. Reboot
整理すると
  1. XS62ESP1001 (XenCenter)
  2. XS62 SP1
  3. Reboot (for SP1)
  4. XS62ESP1014 (Bash)
  5. XS62ESP1019
  6. XS62ESP1009
  7. Driver Update (XS62ESP1009用のもの)
  8. XS62ESP1017
  9. XS62ESP1028(xentools)
  10. XS62ESP1034
  11. Reboot


XS62ESP1034 は、XS62ESP1027とXS62ESP1030-XS62ESP1033 を含んでいるのでこれを最後に当てればいいと思う。

XS62ESP1028 は、XenToolsのISOファイルだけなので適当な場所で。


XenServer6.2SP1
http://support.citrix.com/article/CTX139788
・6.2系のPatchのまとめ



Hotfix XS62ESP1001
http://support.citrix.com/article/CTX139790
・XenCenterの更新(build 1377)



Hotfix XS62ESP1002
http://support.citrix.com/article/CTX140051
・Security Fix



Hotfix XS62ESP1003
http://support.citrix.com/article/CTX140416
・xs-tools.iso の更新
・VMとの時間同期がずれる問題修正。あまり影響なさそう。



Hotfix XS62ESP1004
http://support.citrix.com/article/CTX140417
・xapi-projectまわりの修正っぽいね。
・xapi/sm/blktap/vhdとか。


Hotfix XS62EPS1005(公開停止2014/4/10)(再公開 2014/4/25)
XS62ESP1009に含まれる
http://support.citrix.com/article/CTX140553
An issue has been identified in hotfix XS62ESP1005 which affects customers using the vGPU functionality. The hotfix has been temporarily removed to provide a fix for this behavior.
・KernelのCPU Soft Lockup問題の修正と、Open vSwitchの修正と、ストレージはRDACの修正ね。
・Kernelが更新されたのでDriverのRebuildが必要な人はやっといてね。
・<追記>内容は同じで、再度同じリンクで公開された


Hotfix XS62ESP1008
http://support.citrix.com/article/CTX141036
もろもろ修正されているけどこれが大きいかな。
[Xen-users] Xen Security Advisory 100 (CVE-2014-4021) - Hypervisor heap contents leaked to guests
BLOG内リンク
・あとは、xapi全体と、OpenSSLの修正

XS62ESP1008のパッチを適用すると
・XS62E017
・XS62ESP1006
・XS62ESP1007
・XS62ESP1008
が表示される。

XS62ESP1008までのパッチのあて方
http://mada0833.blogspot.jp/2014/09/xenserver62-xs62esp1008.html

Hotfix XS62ESP1009
http://support.citrix.com/article/CTX141191
ん?
VT-d: honor APEI firmware-first mode in XSA-59 workaround code
http://lists.xen.org/archives/html/xen-changelog/2014-06/msg00128.html
の関連?
XS62ESP1008 で完全に治してなかった?

なお、XS62ESP1005が含まれる模様。

Hotfix XS62ESP1011
http://support.citrix.com/article/CTX141472
多くのBugFix

Hotfix XS62ESP1013
https://support.citrix.com/article/CTX141480
セキュリティアップデート
最近話題に上がったMSRとか。

Hotfix XS62ESP1014
https://support.citrix.com/article/CTX141486
Bash Update
Security Update。主にXenのHVM関連。

Hotfix XS62ESP1012
http://support.citrix.com/article/CTX141845
修正内容は主にWindows系のPVドライバ関係。
Dell EqualLogic7のサポートと、Migration時のFixと、SM関連の修正。

Hotfix XS62ESP1017
http://support.citrix.com/article/CTX142012
glibcの修正のみ。あてる?

Hotfix XS62ESP1019
https://support.citrix.com/article/CTX142146
x86系のセキュリティアップデート

Hotfix XS62ESP1020
http://support.citrix.com/article/CTX142219
WindowsのPVドライバの修正。
XS602系のPVドライバがきれいに抜けなかったりする問題の修正らしいけど、
今度はちゃんと動くか?

Hotfix XS62ESP1021
https://support.citrix.com/article/CTX142272
QEMU系のセキュリティアップデート

Hotfix XS62ESP1025
http://support.citrix.com/article/CTX201078
VENOM対応
なお、更新リストは次の通り
blktap-2.0.90.xs735-xs6.2.0.src.rpm
guest-templates-1.8.0-46.src.rpm
kexec-tools-2.0.4-1155.148.src.rpm
openssl-0.9.8e-27.el5_10.3.src.rpm
perf-tools-0.1.2-134.src.rpm
sm-1.8.0-xs2185.src.rpm
vgpu-6.2.0-62.src.rpm
vhd-tool-0.7.4-1.src.rpm
xapi-0.2-6171.src.rpm
xen-4.1.5-1.8.0.627.23840.src.rpm
xen-device-model-1.8.0-108.7583.src.rpm

Hotfix XS62ESP1024
http://support.citrix.com/article/CTX142496
Kernelを含むアップデート。
Hotfix XS62ESP1009 の件もあるからちょっと様子見したいところ。


Hotfix XS62ESP1026
http://support.citrix.com/article/CTX141952

xen/xapi系の大型FIXなので当てておきたいところ。
私的に気になってるのは、ここ。
When using Linux bridge, switches do not forward network packets in the first 15 seconds after plugging a VIF.
Hotfix XS62ESP1027
https://support.citrix.com/article/CTX142536
XenのPCI関連の修正


Hotfix XS62ESP1028
http://support.citrix.com/article/CTX142593
主にWindows用のXenToolsのアップデート。


Hotfix XS62ESP1030
https://support.citrix.com/article/CTX201635
累積的なSecurity Update。QEMUのATAPI関連。

Hotfix XS62ESP1031
http://support.citrix.com/article/CTX201763
GPUまわりのほかに、
Storage XenMotion関連のVDIの修正も含まれる。

Hotfix XS62ESP1032
http://support.citrix.com/article/CTX201739
HVMからPVを攻撃できる脆弱性の修正

Hotfix XS62ESP1033
http://support.citrix.com/article/CTX202437
PVからHOSTをクラッシュできる脆弱性の修正など

Hotfix XS62ESP1034
https://support.citrix.com/article/CTX202617
HVMからPVを攻撃できる脆弱性の修正


推奨のあて方は下記
http://support.citrix.com/article/CTX138115




XenServer6.2 Intel55x0チップとIOMMU

Intel 55x0 Chipset Errata - Interrupt Remapping Issue
Intel おまえもか。
よくDom0が起動しないという問題を引き起こしているIOMMU君。
今度はIntelチップでも。
結論:IOMMUはDisableがよい。


この問題の解決はこれ
[root@xs625test ~]# /opt/xensource/libexec/xen-cmdline --set-xen iommu=no-intremap
Disableにするにはこれ
[root@xs625test ~]# /opt/xensource/libexec/xen-cmdline --set-xen iommu=0
でもね、BIOSでDisableをお勧めします。

2014年4月9日水曜日

CQM (Cache QoS Monitoring)

[Xen-API] Intel CQM feature enabling in XenAPI
http://lists.xen.org/archives/html/xen-api/2014-04/msg00032.html
CQM (Cache QoS Monitoring)がKernelでサポートされたのでXenAPIでもサポートしました。

CQM(Cache QoS Monitoring)の説明
[PATCH 0/4] x86: Add Cache QoS Monitoring (CQM) support
http://linux-kernel.2935.n7.nabble.com/PATCH-0-4-x86-Add-Cache-QoS-Monitoring-CQM-support-td780119.html

XenServer6.2 rrd2csv でパフォーマンス情報を出力する


XenCenterの「Performance」タブにあるグラフデータは、RRDで取得しているが、そのRRDをCSVに出力するツール。
なお、リアルタイムのみね。

XenServer6.2には標準でインストールされている。

Performance Monitoring Enhancements Pack for XenServer 6.1
http://support.citrix.com/article/CTX135033


実行方法

書式

SYNOPSIS rrd2csv [options] [datasource-descriptor]

オプション

rrd2csv -n [datasource-descriptor]
ネームラベルでの表示

rrd2csv -u [datasource-descriptor]
UUIDでの表示

rrd2csv -s 秒 [datasource-descriptor]
取得間隔

datasource-descriptorについて

CF:SOURCE:UUID:METRIC といったように、コロンで区切って記述。
CFには、AVERAGE/MIN/MAX/LAST
SOURCEには、host / vm のどちらか
UUIDは、対象のUUID
METRICには、cpu0 とか memory とかの項目。指定できるものは、このページの初めのリンクを参照。

なお、どれがとれるか、一度全取得してみると記述方法を含めわかる。

実行例

全ホストの情報全部

[root@xs625test ~]# rrd2csv AVERAGE:host::

全VMの情報全部

[root@xs625test ~]# rrd2csv AVERAGE:vm::

特定VMのメモリのみ

[root@xs625test ~]# rrd2csv AVERAGE:vm:35383f41-0994-5deb-3d1a-c171611078fc:memory
timestamp, AVERAGE:vm:35383f41-0994-5deb-3d1a-c171611078fc:memory_internal_free, AVERAGE:vm:35383f41-0994-5deb-3d1a-c171611078fc:memory
2014-04-08T22:23:05Z, 2745132, 4294938624
2014-04-08T22:23:10Z, 2745132, 4294938624
2014-04-08T22:23:15Z, 2745132, 4294938624

2014年4月8日火曜日

2014/04/08のMEMO

[Xen-changelog] [xen stable-4.4] xen/pygrub: grub2/grub.cfg from RHEL 7 has new commands in menuentry
http://lists.xen.org/archives/html/xen-changelog/2014-04/msg00104.html
RHEL7(beta)でInstall後Bootできない問題の修正
これはXen4.4に対してだけど、XenServer 6.2.5 はXen4.4ベースなので。

iSCSI Multipath for Arrays that Only Expose a Single Target
http://support.citrix.com/article/CTX138429
えーと、なんだろ。I/F固定でiSCSI Multipath組む感じっていえばいいかな。
通常で張れている人は関係ない。
ただ、
#iscsiadm -m iface --op new -I c_iface0
みたいなやり方があることだけ覚えておこう。

How to Use the XenServer Xentop Utility
http://support.citrix.com/article/CTX127896
xentopの使い方。必須だけど、たまにガッツリ使うかんじなので、BookMarkでいいよ。

Unattended Installation of XenServer Tools
http://support.citrix.com/article/CTX137027
Windowsへのxs-tools コマンドラインセットアップ
Msiexecを用いた方法というかMsiexecとInstallWizardのオプションの指定方法。Windowsがよくわからないので使い方もよくわからない。

Suse open-sources live updater for Linux kernel
http://podcasts.infoworld.com/t/linux/suse-open-sources-live-updater-linux-kernel-239405?source=rss_open_source_software
「Nobody loves downtime or reboots」
DowntimeなしでのKernel Update。この計画がうまくいけばいいのに。

OpenSSL 1.0.1の脆弱性

新しいFullDisclosure MLに流れてたので。

CVE-2014-0160: 7th April 2014
A missing bounds check in the handling of the TLS heartbeat extension can be used to reveal up to 64kB of memory to a connected client or server. This issue did not affect versions of OpenSSL prior to 1.0.1. Reported by Neel Mehta.
Fixed in OpenSSL 1.0.1g (Affected 1.0.1f, 1.0.1e, 1.0.1d, 1.0.1c, 1.0.1b, 1.0.1a, 1.0.1)

TLS heartbeat extensionってのが追加されたのかぁ。
どこで追加されてたかというと、1.0.1からのようだ。
Changes between 1.0.0h and 1.0.1  [14 Mar 2012]
*) Add support for TLS/DTLS heartbeats.

なので、影響はこのheartbeat機能がある1.0.1限定。

細かい説明はココ

チェックツールはここ
Tool to check if TLS heartbeat extension is supported:
※安全か知らないけど

<2014/04/10 追記>

http://seclists.org/fulldisclosure/2014/Apr/113

iptables -t filter -A INPUT -p tcp --dport 443 \
-m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP

こういうやり方もあるのね。

その2

hb-test.pyのXenServer向けがなぜがアップされてた
https://github.com/xenserver/devops/blob/master/tools/hb-test.py


<2014/10/16 追記>
Closeし忘れたので。
XenServerには影響ありません。
Citrix Security Advisory for OpenSSL Vulnerabilities (June 2014)
http://support.citrix.com/article/CTX140876
Citrix XenServer: 
When acting as an SSL server, the TLS libraries used by currently supported versions of Citrix XenServer are not vulnerable to these issues.






2014年4月6日日曜日

XenServer 6.2 の state.db の中身をみてみよう

state.dbにはxapi の情報が入ってるので覗きたい場面は多々ある。

state.dbは XML形式だ。
しかし情報量が多くてとてもPlanではつらい。
そこで、見やすくするXSLTがCitrixから提供されているので、それを使おう。

XAPI Database Parsing Tool - Windows
http://support.citrix.com/article/CTX129070

これは、とても古いツールだ。

INSTALL


標準のINSTALL手段に従う必要はない。

  1. Donwloadして解凍する
  2. そのフォルダに、XenServerの/var/xapi/state.db をSCPとかで取得しておく。
  3. コマンドプロンプトを開いて対象のフォルダに移動し、
    type xml-header.inc state.db > state.xml
    と実行する。
  4. state.xmlが出来上がるので、それをXML Editor等で見る。


こんな感じで情報が確認できる。
なお、修正はできないので注意。


2014年4月5日土曜日

XenServer 6.2 ログの見方

XenServer6.2 の基本的な運用としてログの確認がある。

参照が必要なログは、

  • xensource.log
    • xapiのログ
  • messages
    • 一般的Dom0のログの他、qemu、tapdiskなども含まれる
  • audit
    • 見落としがちだが、xapiの実行結果が出てる。
  • SMlog
    • Storage関連

また、必要に応じて下記もある。

  • kern.log
    • iSCSI等追加したSRの状態
  • xcp-rrdd-plugins.log
    • グラフね。
    • libnvidia-ml.so.1(Nvidiaのドライバ) が無いよとエラーが出る場合があるが、GPUを提供していなければ無視してよい
  • xha.log
    • HAのON/OFFのログ


xensource.log

一番みるのは、xensource.logだろう。
例えば、こんな感じ
[ info|xs625test|981240|Async.VM.start_on R:d46d45395533|dispatcher]

上の行の解説

  • info
    • デバッグレベル
  • xs625test
    • ホスト名
  • 981240
    • スレッドID。このIDで追うことができる。他のログにも出てくる。
  • Async.VM.start
  • R:d46d45395533
    • セッションID。当然セッション終了まで同一。「R」と「D」で異なる。
    • D: ダミーのセッションID。(ダミーといってもUniq)。 xapi-db には存在しないID
    • R: xapi-dbに存在するセッションID
  • dispatcher
    • 実行のモジュール。他の例として「audit」auditモジュールでの実行などがある。
    • dispatcherは、Masterから各メンバへの通達時に出力される。


Debugging XenServer Using Events or Logs


2014年4月4日金曜日

2014/04/04 のMEMO

XenServer DevOps Tools: zabbix_agentd.conf
https://github.com/xenserver/devops
This is a config file for the Zabbix agent daemon (Unix)


NGINX Announces Release 3 of NGINX Plus
http://www.businesswire.com/news/home/20140402005478/en
Dynamic DNS-based なLoad BalancingやSPDYをサポート


本の虫: Linus様がSystemdにぶちきれる
http://cpplover.blogspot.ca/2014/04/linussystemd.html


2014年4月3日木曜日

2014/4/3のメモ

Xen Server 6.2 SP1 installation failed
http://discussions.citrix.com/topic/346595-xen-server-62-sp1-installation-failed/
XenServer6.2 SP1のInstall後、Bootに失敗する場合は、BIOSでMemory Mapped I/OをDisabledにすれば改善する場合があるらしい。

Linux netback crash trying to disable due to malformed packet
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-2580
Dom0へのDoSの話。コメントは特にない。

DNSの伝搬状況を調べるツール「dnsyo」


XenServerと関係ないけど使ってみた。on CentOS 6.5

DNSのZoneレコードを変更して、その変更がどこまで伝搬したか調べる必要がある場合に便利なツール。
リストにある1800台のDNSキャッシュサーバからランダムにピックアップした500台に問合せを行い、結果を表示する。

なお、リストは、下記にある通り、30カ国以上あげられておりかなりWorldWide。
http://dnsyo-list.codesam.co.uk/resolver-list.yml
自分で修正して編集した独自リストを、喰わせることもできる。実際の運用はそうなるかな。

インストール

EPELでINSTALL
[root@dhcp152 mada]# yum install dnsyo

実行
[root@dhcp152 mada]# dnsyo
Traceback (most recent call last):
  File "/usr/bin/dnsyo", line 9, in <module>
    load_entry_point('dnsyo==1.1.4', 'console_scripts', 'dnsyo')()
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 299, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 2229, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 1948, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python2.6/site-packages/dnsyo/cli.py", line 29, in <module>
    from argparse import ArgumentParser
ImportError: No module named argparse

argparseが無いってよ。
yumになさそうなので、easy_install。
[root@dhcp152 mada]# easy_install argparse
入った。

[root@dhcp152 mada]# dnsyo
usage: dnsyo [options] domain [type]
dnsyo: error: too few arguments
大丈夫そう。

実行

動かしてみる
[root@dhcp152 mada]# dnsyo sdlab.org
INFO:root:Updating resolver list file
INFO:urllib3.connectionpool:Starting new HTTP connection (1): dnsyo-list.codesam.co.uk
Status: Queried 500 of 500 servers, duration: 0:00:08.168047
 - RESULTS
I asked 500 servers for A records related to sdlab.org,
321 responded with records and 179 gave errors
Here are the results;

321 servers responded with;
59.106.182.152


And here are the errors;

87 servers responded with;
No Nameservers
30 servers responded with;
No Answer
62 servers responded with;
Server Timeout

500台中321台しかレスポンスを返さなかった。
これは、問題では無い。まぁその他いろいろ原因はあるでしょ。外部からは許可してないとか。
まぁ、ある程度のサーバがレスポンスを返してればいいんじゃない?
だってこのツールの目的は、Zoneファイル変更の伝搬を調べることだから。
よって、レスポンスで返ってくるIPが1つであれば、今回は問題ない。
古いのと新しいのが表示される場合はダメね。


2014年4月2日水曜日

XenServer 6.2からの新機能。Dom0のCPUチューニング

How to use host-cpu-tune to fine tune XenServer 6.2.0 performance
http://support.citrix.com/article/CTX139714
XenServer 6.2からの新機能。Dom0のCPUチューニング。

コマンドは、 host-cpu-tune
[root@xs625test ~]# /usr/lib/xen/bin/host-cpu-tune
Usage: /usr/lib/xen/bin/host-cpu-tune { show | advise | set <dom0_vcpus> <pinning> [--force] }
         show     Shows current running configuration
         advise   Advise on a configuration for current host
         set      Set host's configuration for next reboot
          <dom0_vcpus> specifies how many vCPUs to give dom0
          <pinning>    specifies the host's pinning strategy
                       allowed values are 'nopin' or 'xpin'
          [--force]    forces xpin even if VMs conflict
Examples: /usr/lib/xen/bin/host-cpu-tune show
          /usr/lib/xen/bin/host-cpu-tune advise
          /usr/lib/xen/bin/host-cpu-tune set 4 nopin
          /usr/lib/xen/bin/host-cpu-tune set 8 xpin
          /usr/lib/xen/bin/host-cpu-tune set 8 xpin --force

現状を見てみよう
[root@xs625test ~]# /usr/lib/xen/bin/host-cpu-tune show
dom0's vCPU count: 4, pinned

アドバイスを聞く
[root@xs625test ~]# /usr/lib/xen/bin/host-cpu-tune advise
Citrix recommends assigning 4 vCPUs to dom0, not using pinning.
This can be achieved by running:
/usr/lib/xen/bin/host-cpu-tune set 4 nopin

nopinにしろってことなので、してみる。
[root@xs625test ~]# /usr/lib/xen/bin/host-cpu-tune set 4 nopin
Configuration successfully applied.
Reboot this host NOW.

速くなったのか?まぁ、設定上 pinningするなっていうことなので、やっといて問題は無いだろう。

ちなみに時間があれば、下記も読んでおくと勉強になる

Understanding Heterogeneous CPU Pooling in XenServer
http://support.citrix.com/article/CTX127059
異なるCPUを同一Poolで使う場合。MaskingとかLevelingとか。

Mada