Snapshot Locked for an extended period of time
by Simon Hallam
Hi All,
I’ve recently written a script which:
1. Takes a snapshot with memory.
2. Creates a VM from that snapshot.
3. Exports the snapshot to the export domain.
4. Deletes the snapshot.
5. Deletes the cloned VM.
Whilst running the script for the first time last night, the script
timed out whilst deleting the snapshot on the VM at step 4.
Now the logs are filled with:
2016-02-25 10:32:53,272 INFO [org.ovirt.engine.core.bll.RemoveSnapshotCommandCallback] (DefaultQuartzScheduler_Worker-25) [4559dd29] Waiting on Live Merge child commands to complete
2016-02-25 10:32:53,332 INFO [org.ovirt.engine.core.bll.RemoveSnapshotSingleDiskLiveCommand] (DefaultQuartzScheduler_Worker-25) [225b841f] Waiting on Live Merge command step MERGE to complete
2016-02-25 10:32:53,335 INFO [org.ovirt.engine.core.bll.MergeCommandCallback] (DefaultQuartzScheduler_Worker-25) [4559dd29] Waiting on merge command to complete
2016-02-25 10:32:55,331 INFO [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (DefaultQuartzScheduler_Worker-19) [4559dd29] VM job c1064551-022f-4549-a9d4-bb915e177e80: In progress (no change)
2016-02-25 10:32:58,405 INFO [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (DefaultQuartzScheduler_Worker-37) [4559dd29] VM job c1064551-022f-4549-a9d4-bb915e177e80: In progress, updating
2016-02-25 10:33:01,521 INFO [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (DefaultQuartzScheduler_Worker-56) [4559dd29] VM job c1064551-022f-4549-a9d4-bb915e177e80: In progress (no change)
2016-02-25 10:33:03,337 INFO [org.ovirt.engine.core.bll.RemoveSnapshotCommandCallback] (DefaultQuartzScheduler_Worker-12) [4559dd29] Waiting on Live Merge child commands to complete
2016-02-25 10:33:03,350 INFO [org.ovirt.engine.core.bll.RemoveSnapshotSingleDiskLiveCommand] (DefaultQuartzScheduler_Worker-12) [225b841f] Waiting on Live Merge command step MERGE to complete
2016-02-25 10:33:03,352 INFO [org.ovirt.engine.core.bll.MergeCommandCallback] (DefaultQuartzScheduler_Worker-12) [4559dd29] Waiting on merge command to complete
2016-02-25 10:33:04,678 INFO [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (DefaultQuartzScheduler_Worker-22) [4559dd29] VM job c1064551-022f-4549-a9d4-bb915e177e80: In progress (no change)
2016-02-25 10:33:07,852 INFO [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (DefaultQuartzScheduler_Worker-11) [4559dd29] VM job c1064551-022f-4549-a9d4-bb915e177e80: In progress (no change)
2016-02-25 10:33:10,993 INFO [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (DefaultQuartzScheduler_Worker-44) [4559dd29] VM job c1064551-022f-4549-a9d4-bb915e177e80: In progress, updating
2016-02-25 10:33:13,354 INFO [org.ovirt.engine.core.bll.RemoveSnapshotCommandCallback] (DefaultQuartzScheduler_Worker-14) [4559dd29] Waiting on Live Merge child commands to complete
I have attached the log of when the snapshot started deleting (2016-02-
24 23:51:17,094).
Any idea what's gone wrong? What are my next steps to clear this?
Cheers,
Simon
Please visit our new website at www.pml.ac.uk and follow us on Twitter @PlymouthMarine
Winner of the Environment & Conservation category, the Charity Awards 2014.
Plymouth Marine Laboratory (PML) is a company limited by guarantee registered in England & Wales, company number 4178503. Registered Charity No. 1091222. Registered Office: Prospect Place, The Hoe, Plymouth PL1 3DH, UK.
This message is private and confidential. If you have received this message in error, please notify the sender and remove it from your system. You are reminded that e-mail communications are not secure and may contain viruses; PML accepts no liability for any loss or damage which may be caused by viruses.
8 years, 8 months
Cannot delete snapshot or export VM after adding disk
by gregor
Hi,
after the following workflow I can't remove or create a snapshot neither
export the VM.
- Create a VM
- Add a disk with 1GB
- Make a snapshot
- Add another disk with 1GB
- Export the VM
Now you I get the following error in the events list:
--------------------
VDSM host01 command failed: Error during destination image manipulation
--------------------
Did I understand something wrong or is there a bug?
Besides: The web-interface is extremely slow and copy&paste the error
messages are painful.
regards
gregor
8 years, 8 months
DevConf.CZ 2016 - my experience
by Yaniv Kaul
On the first weekend of February I've had the pleaseure of attending
DevConf.CZ 2016, which took place in the wonderful city of Brno, CZ.
Compared to FOSDEM, it's a more relaxed, young and vibrant conference, but
it was just as fun and rewarding from my perspective.
Here's a disorganized personal summary:
- Met community members as well as customers and Red Hat TAMs (Technical
Account Managers) from all over Europe.
- Attended a presentation on a research to understand theoretical best
possible improvements to migration convergence performance[3]. I hope to
see some of it in coming versions of QEMU, while we work on other
improvements to this critical feature.
- Attended a presentation on the status of ARM on Fedora and CentOS[14].
Seems like a great positive effort, but the road is still long for complete
support. Would be cool to support ARM based hosts running virtual machines!
- Attended a presentation on native vs. threads implementation performance
in QEMU[4]. The results were not conclusive, though some improvements in
native brought it close to or better in some cases to threads. Seems that
our default of heuristic for threads in file-based storage and native in
block based storage is fine for the time being, but we'll watch closely for
developments in this area.
- Attended a presentation on debugging qemu (mainly) in OpenStack[5] - I
think (and asked) if libvirt can do a better job - in saving in a cyclic
log the QMP commands sent and the response from the guest and dump it in
case of a guest crash.
- Attended a Cockpit hackfest[9] - as we intend to use Cockpit as our UI
for RHEVH Next Generation Node, it was great to present our use case and
exchange thoughts, ideas and directions. Few bugs were filed during the
hackfest per our comments.
- Attended 'Dockerizing JBoss Applications' presentation[10]. Great work
done by the JBoss team to improve and streamline packaging of JBoss into
containers.
- Attended 'Fedora Upstream Testing' presentation[13]. I disscussed with
the presentor the possibiliy to run oVirt with Lago[17] in Fedora, in a CI
way, by monitoring distgit changes for relevant packages (such as lvm2,
device-mapper*, libvirt and others.
- Attended 'High Performance VMs in OpenStack'[12] - looks like oVirt is
already doing a lot of what OpenStack are working to achieve
high-performance from KVM!
- Preached on running Lago with OpenStack, Gluster and Cockpit. At least
the first two items look really promising and I'm looking forward to a
collaboration in those efforts. I might just try to do the Gluster one
myself.
- Having used the oVirt Live[18] USB DoK image in both FOSDEM and DevConf,
I've found several items where we can improve in and filed relevant RFEs
for them[15][16].
- The oVirt team has delivered numerous presentations in the virtualization
track[1][2][6] - and the Gluster team has additionally provided more
presentations[7][8], which were all well received.
I'd like to thank Red Hat's OSAS team members Mikey and Brian for once
again, just one week after FOSDEM, leading the effort of representing the
oVirt project and community in this event.
Y.
[1] https://www.youtube.com/watch?v=cQqJEiK7-Ug - Smart VM Scheduling -
Martin Sivák
[2] https://www.youtube.com/watch?v=V1JQtmdleaM - Host fencing in oVirt -
Fixing the unknown and allowing VMs to be highly available - Martin Peřina
[3] https://www.youtube.com/watch?v=XkMIMJKJeTY - in-depth look of virtual
machine migration algorithms - Marcelo Tosatti
[4] https://www.youtube.com/watch?v=Jx93riUF5_I - Qemu Disk I/O: Which
performs better, Native or Threads? - Pradeep K Surisetty
[5] https://www.youtube.com/watch?v=Dd2AGGMWXQM - Debugging the
Virtualization Layer (libvirt and QEMU) in OpenStack - Kashyap Chamarthy
[6] https://www.youtube.com/watch?v=4CbHTAkVDZo - Ceph integration with
oVirt using Cinder - Nir Soffer
[7] https://www.youtube.com/watch?v=XudYwEWQF7U - oVirt and Gluster
Hyperconvergence - Ramesh Nachimuthu
[8] https://www.youtube.com/watch?v=TczVVCbm8NE - Improvements in gluster
for virtualization usecase - Prasanna Kumar Kalever
[9] https://www.youtube.com/watch?v=TNDe90WSZow - Cockpit Hackfest -
Dominik Perpeet, Marius Vollmer, Peter Volpe, Stef Walter
[10] https://www.youtube.com/watch?v=NpyEoFlDzOQ - Dockerizing JBoss
Products - David Becvarik
[11] https://www.youtube.com/watch?v=rqavfmPAt7o - Avocado and Jenkins:
Test Automation and CI - Lukáš Doktor, Yash Mankad
[12] https://www.youtube.com/watch?v=9J_sEdlpIlQ - High performance VMs in
OpenStack - Nikola Dipanov
[13] https://www.youtube.com/watch?v=15-yXOJuonQ - Upstream First Testing -
Tim Flink
[14] https://www.youtube.com/watch?v=q4gU87wdRtI - Growing the ARM server
ecosystem - Jim Perrin
[15] https://bugzilla.redhat.com/show_bug.cgi?id=1307261 - [RFE] register
.vv files so they'll be opened automatically with remote-viewer
[16] https://bugzilla.redhat.com/show_bug.cgi?id=1307262 - [RFE] Disable
power management (display and computer)
[17] https://github.com/lago-project/lago
8 years, 8 months
Master Doamin - Ovirt 3.6 - hoted engine
by Dariusz Kryszak
Hi folks,
I have a question about master domain when I'm using hosted engine
deployment.
At the beginning I've made deployment on NUC (small home installation) with
hosted engine on the nfs share from NUC host. I've configured FS gluster on
the same machine and used it for master domain and iso domain. Lets say
All-in-ONE.
After reboot happened something strange. Log says that master domain is not
available and has to become on the hosted_storage. This is not ok in my
opinion. I know that behavior because master doamin is not available, has
been migrated to other shareable (in this case hosted_domain is nfs ).
Do you thing, that should be locked in this particular case means when
available is only hosted_storage? Right now it is not possible to change
this situation because hosted engine resides on the hosted_storage. I Can't
migrate it.
jezyk
8 years, 9 months
OVirt Node / RHEV-H and Multiple NICs/bond
by Christopher Young
So, I have what I think should be a standard setup where I have
dedicated NICs (to be bonded via LACP for storage) and well are NICs
for various VLANS, etc.
As typical, I have the main system interfaces for the usual system IPs
(em1 in this case).
A couple of observations (and a "chicken and the egg problem"):
#1. The RHEV-H/Ovirt-Node interface doesn't allow you to configure
more than one interface. Why is this?
#2. This prevents me from bringing up an interface for access to my
Netapp SAN (which I keep on separate networking/VLANs for
best-practices purposes)
If I'm unable to bring up a regular system interface AND an interface
for my storage, then how am I going to be able to install a RHEV-M
(engine) hosted-engine VM since I would be either unable to have an
interface for this VM's IP AND be able to connect to my storage
network.
In short, I'm confused. I see this as a very standard enterprise
setup so I feel like I must be missing something obvious. If someone
could educate me, I'd really appreciate it.
Thanks,
CHris
8 years, 9 months
Shrinking a storage domain
by Troels Arvin
Hello,
I'm moving some storage from one SAN storage unit to another SAN storage
unit (i.e.: block device storage). So I have two RHEV storage domains:
SD1
SD2
We need to move most of SD1s data to SD2.
Live storage migration for a guest works fine: It's easy to migrate a
disk from being in SD1 to SD2.
But now that I have released around half of SD1, I would like to let go
of a LUN which is part of SD1. How is that done? (If this were a stand-
alone Linux box, I would use vgreduce to release a PV and then remove the
PV from the server.)
--
Regards,
Troels Arvin
8 years, 9 months
Guest/User permissions
by Colin Coe
Hi all
I've been asked to produce a matrix of guests (VMs) and the users who have
rights on them.
Just trying to save myself some effort and see if anyone's already done
this and is willing to share?
Thanks
CC
8 years, 9 months
One host failed to attach one of Storage Domains after reboot of all hosts
by Giuseppe Berellini
--_000_03FD1DFE37AC0E47A173AC5A0835B1C1090AD30B8CSKAWNE25CEXpt_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Hi,
At the beginning of february I successfully installed oVirt 3.6.2 (with hos=
ted engine) on 3 hosts, which are using 1 storage server with GlusterFS.
2 hosts (with Intel CPU) are using HA and are hosting the engine; the 3rd h=
ost (AMD CPU) was added as host from oVirt web administration panel, withou=
t hosted engine deployment (I don't want the engine running on this host).
About 10 days ago I tried to reboot my oVirt environment (i.e. going to glo=
bal maintenance, shutting down the engine, turning off all the hosts, start=
ing them again, then setting maintenance mode to "none").
After the reboot, everything was fine with the Intel hosts and the hosted e=
ngine, but AMD host (the one without HA) was not operational.
I tryed to activate it, buti t failed with the following error:
"Host failed to attach one of Storage Domains attached to it."
If I log into my AMD host and I check the logs, I see that the storage doma=
in which is not mounted is the one of the hosted engine (but this could be =
correct, since this host won't run the hosted engine).
>From /var/log/vdsm/vdsm.log:
Thread-29::DEBUG::2016-02-25 11:44:01,157::monitor::322::Storage.Monitor::(=
_produceDomain) Producing domain 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd
Thread-29::ERROR::2016-02-25 11:44:01,158::sdc::139::Storage.StorageDomainC=
ache::(_findDomain) looking for unfetched domain 6fb10a49-5f1c-4bd4-9ff7-b7=
e33c1125cd
Thread-29::ERROR::2016-02-25 11:44:01,158::sdc::156::Storage.StorageDomainC=
ache::(_findUnfetchedDomain) looking for domain 6fb10a49-5f1c-4bd4-9ff7-b7e=
33c1125cd
Thread-29::DEBUG::2016-02-25 11:44:01,159::lvm::370::Storage.OperationMutex=
::(_reloadvgs) Operation 'lvm reload operation' got the operation mutex
Thread-29::DEBUG::2016-02-25 11:44:01,159::lvm::290::Storage.Misc.excCmd::(=
cmd) /usr/bin/taskset --cpu-list 0-63 /usr/bin/sudo -n /usr/sbin/lvm vgs --=
config ' devices { preferred_names =3D ["^/dev/mapper/"] ignore_suspended_d=
evices=3D1 write_cache_state=3D0 disable_after_error_count=3D3 filter =3D [=
'\''r|.*|'\'' ] } global { locking_type=3D1 prioritise_write_locks=3D1 =
wait_for_locks=3D1 use_lvmetad=3D0 } backup { retain_min =3D 50 retain=
_days =3D 0 } ' --noheadings --units b --nosuffix --separator '|' --ignores=
kippedcluster -o uuid,name,attr,size,free,extent_size,extent_count,free_cou=
nt,tags,vg_mda_size,vg_mda_free,lv_count,pv_count,pv_name 6fb10a49-5f1c-4bd=
4-9ff7-b7e33c1125cd (cwd None)
Thread-29::DEBUG::2016-02-25 11:44:01,223::lvm::290::Storage.Misc.excCmd::(=
cmd) FAILED: <err> =3D ' WARNING: lvmetad is running but disabled. Restart=
lvmetad before enabling it!\n Volume group "6fb10a49-5f1c-4bd4-9ff7-b7e33=
c1125cd" not found\n Cannot process volume group 6fb10a49-5f1c-4bd4-9ff7-b=
7e33c1125cd\n'; <rc> =3D 5
Thread-29::WARNING::2016-02-25 11:44:01,225::lvm::375::Storage.LVM::(_reloa=
dvgs) lvm vgs failed: 5 [] [' WARNING: lvmetad is running but disabled. Re=
start lvmetad before enabling it!', ' Volume group "6fb10a49-5f1c-4bd4-9ff=
7-b7e33c1125cd" not found', ' Cannot process volume group 6fb10a49-5f1c-4b=
d4-9ff7-b7e33c1125cd']
Thread-29::DEBUG::2016-02-25 11:44:01,225::lvm::415::Storage.OperationMutex=
::(_reloadvgs) Operation 'lvm reload operation' released the operation mute=
x
Thread-29::ERROR::2016-02-25 11:44:01,245::sdc::145::Storage.StorageDomainC=
ache::(_findDomain) domain 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd not found
Traceback (most recent call last):
File "/usr/share/vdsm/storage/sdc.py", line 143, in _findDomain
dom =3D findMethod(sdUUID)
File "/usr/share/vdsm/storage/sdc.py", line 173, in _findUnfetchedDomain
raise se.StorageDomainDoesNotExist(sdUUID)
StorageDomainDoesNotExist: Storage domain does not exist: (u'6fb10a49-5f1c-=
4bd4-9ff7-b7e33c1125cd',)
Thread-29::ERROR::2016-02-25 11:44:01,246::monitor::276::Storage.Monitor::(=
_monitorDomain) Error monitoring domain 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125c=
d
Traceback (most recent call last):
File "/usr/share/vdsm/storage/monitor.py", line 264, in _monitorDomain
self._produceDomain()
File "/usr/lib/python2.7/site-packages/vdsm/utils.py", line 767, in wrapp=
er
value =3D meth(self, *a, **kw)
File "/usr/share/vdsm/storage/monitor.py", line 323, in _produceDomain
self.domain =3D sdCache.produce(self.sdUUID)
File "/usr/share/vdsm/storage/sdc.py", line 100, in produce
domain.getRealDomain()
File "/usr/share/vdsm/storage/sdc.py", line 52, in getRealDomain
return self._cache._realProduce(self._sdUUID)
File "/usr/share/vdsm/storage/sdc.py", line 124, in _realProduce
domain =3D self._findDomain(sdUUID)
File "/usr/share/vdsm/storage/sdc.py", line 143, in _findDomain
dom =3D findMethod(sdUUID)
File "/usr/share/vdsm/storage/sdc.py", line 173, in _findUnfetchedDomain
raise se.StorageDomainDoesNotExist(sdUUID)
StorageDomainDoesNotExist: Storage domain does not exist: (u'6fb10a49-5f1c-=
4bd4-9ff7-b7e33c1125cd',)
jsonrpc.Executor/0::DEBUG::2016-02-25 11:44:03,292::task::595::Storage.Task=
Manager.Task::(_updateState) Task=3D`2862ba96-8080-4e74-a55a-cdf93326631a`:=
:moving from state init -> state preparing
jsonrpc.Executor/0::INFO::2016-02-25 11:44:03,293::logUtils::48::dispatcher=
::(wrapper) Run and protect: repoStats(options=3DNone)
jsonrpc.Executor/0::INFO::2016-02-25 11:44:03,293::logUtils::51::dispatcher=
::(wrapper) Run and protect: repoStats, Return response: {u'5f7991ba-fdf8-4=
b40-9974-c7adcd4da879': {'code': 0, 'actual': True, 'version': 3, 'acquired=
': True, 'delay': '0.00056349', 'lastCheck': '7.7', 'valid': True}, u'6fb10=
a49-5f1c-4bd4-9ff7-b7e33c1125cd': {'code': 358, 'actual': True, 'version': =
-1, 'acquired': False, 'delay': '0', 'lastCheck': '2.0', 'valid': False}, u=
'5efea9c7-c4ec-44d4-a283-060d4c83303c': {'code': 0, 'actual': True, 'versio=
n': 0, 'acquired': True, 'delay': '0.000561865', 'lastCheck': '8.4', 'valid=
': True}, u'e84c6a1a-9f82-4fa6-9a3b-0b0bc0330d9a': {'code': 0, 'actual': Tr=
ue, 'version': 3, 'acquired': True, 'delay': '0.000227759', 'lastCheck': '8=
.7', 'valid': True}}
jsonrpc.Executor/0::DEBUG::2016-02-25 11:44:03,294::task::1191::Storage.Tas=
kManager.Task::(prepare) Task=3D`2862ba96-8080-4e74-a55a-cdf93326631a`::fin=
ished: {u'5f7991ba-fdf8-4b40-9974-c7adcd4da879': {'code': 0, 'actual': True=
, 'version': 3, 'acquired': True, 'delay': '0.00056349', 'lastCheck': '7.7'=
, 'valid': True}, u'6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd': {'code': 358, 'a=
ctual': True, 'version': -1, 'acquired': False, 'delay': '0', 'lastCheck': =
'2.0', 'valid': False}, u'5efea9c7-c4ec-44d4-a283-060d4c83303c': {'code': 0=
, 'actual': True, 'version': 0, 'acquired': True, 'delay': '0.000561865', '=
lastCheck': '8.4', 'valid': True}, u'e84c6a1a-9f82-4fa6-9a3b-0b0bc0330d9a':=
{'code': 0, 'actual': True, 'version': 3, 'acquired': True, 'delay': '0.00=
0227759', 'lastCheck': '8.7', 'valid': True}}
jsonrpc.Executor/0::DEBUG::2016-02-25 11:44:03,294::task::595::Storage.Task=
Manager.Task::(_updateState) Task=3D`2862ba96-8080-4e74-a55a-cdf93326631a`:=
:moving from state preparing -> state finished
jsonrpc.Executor/0::DEBUG::2016-02-25 11:44:03,294::resourceManager::940::S=
torage.ResourceManager.Owner::(releaseAll) Owner.releaseAll requests {} res=
ources {}
jsonrpc.Executor/0::DEBUG::2016-02-25 11:44:03,295::resourceManager::977::S=
torage.ResourceManager.Owner::(cancelAll) Owner.cancelAll requests {}
jsonrpc.Executor/0::DEBUG::2016-02-25 11:44:03,295::task::993::Storage.Task=
Manager.Task::(_decref) Task=3D`2862ba96-8080-4e74-a55a-cdf93326631a`::ref =
0 aborting False
Thread-30::DEBUG::2016-02-25 11:44:04,603::fileSD::173::Storage.Misc.excCmd=
::(getReadDelay) /usr/bin/taskset --cpu-list 0-63 /usr/bin/dd if=3D/rhev/da=
ta-center/mnt/glusterSD/srv-stor-01-ib0:_ssd-pcie/e84c6a1a-9f82-4fa6-9a3b-0=
b0bc0330d9a/dom_md/metadata iflag=3Ddirect of=3D/dev/null bs=3D4096 count=
=3D1 (cwd None)
Thread-30::DEBUG::2016-02-25 11:44:04,630::fileSD::173::Storage.Misc.excCmd=
::(getReadDelay) SUCCESS: <err> =3D '0+1 records in\n0+1 records out\n336 b=
ytes (336 B) copied, 0.000286148 s, 1.2 MB/s\n'; <rc> =3D 0
Thread-31::DEBUG::2016-02-25 11:44:04,925::fileSD::173::Storage.Misc.excCmd=
::(getReadDelay) /usr/bin/taskset --cpu-list 0-63 /usr/bin/dd if=3D/rhev/da=
ta-center/mnt/glusterSD/srv-stor-01-ib0:_isodomain/5efea9c7-c4ec-44d4-a283-=
060d4c83303c/dom_md/metadata iflag=3Ddirect of=3D/dev/null bs=3D4096 count=
=3D1 (cwd None)
Thread-31::DEBUG::2016-02-25 11:44:04,950::fileSD::173::Storage.Misc.excCmd=
::(getReadDelay) SUCCESS: <err> =3D '0+1 records in\n0+1 records out\n339 b=
ytes (339 B) copied, 0.0005884 s, 576 kB/s\n'; <rc> =3D 0
Thread-28::DEBUG::2016-02-25 11:44:05,583::fileSD::173::Storage.Misc.excCmd=
::(getReadDelay) /usr/bin/taskset --cpu-list 0-63 /usr/bin/dd if=3D/rhev/da=
ta-center/mnt/glusterSD/srv-stor-01-ib0:_virtualmachines/5f7991ba-fdf8-4b40=
-9974-c7adcd4da879/dom_md/metadata iflag=3Ddirect of=3D/dev/null bs=3D4096 =
count=3D1 (cwd None)
Thread-28::DEBUG::2016-02-25 11:44:05,606::fileSD::173::Storage.Misc.excCmd=
::(getReadDelay) SUCCESS: <err> =3D '0+1 records in\n0+1 records out\n482 b=
ytes (482 B) copied, 0.000637557 s, 756 kB/s\n'; <rc> =3D 0
Other commands (executed on the host having the problem) which probably giv=
e useful information:
# vdsClient -s 0 getConnectedStoragePoolsList
00000001-0001-0001-0001-00000000020e
# vdsClient -s 0 getStoragePoolInfo 00000001-0001-0001-0001-00000000020e
name =3D No Description
isoprefix =3D /rhev/data-center/mnt/glusterSD/srv-stor-01-ib0:_isod=
omain/5efea9c7-c4ec-44d4-a283-060d4c83303c/images/11111111-1111-1111-1111-1=
11111111111
pool_status =3D connected
lver =3D 6
spm_id =3D 2
master_uuid =3D 5f7991ba-fdf8-4b40-9974-c7adcd4da879
version =3D 3
domains =3D 5f7991ba-fdf8-4b40-9974-c7adcd4da879:Active,6fb10a49-5f=
1c-4bd4-9ff7-b7e33c1125cd:Active,5efea9c7-c4ec-44d4-a283-060d4c83303c:Activ=
e,e84c6a1a-9f82-4fa6-9a3b-0b0bc0330d9a:Active
type =3D GLUSTERFS
master_ver =3D 1
5f7991ba-fdf8-4b40-9974-c7adcd4da879 =3D {'status': 'Active', 'disk=
free': '6374172262400', 'isoprefix': '', 'alerts': [], 'disktotal': '699543=
6371968', 'version': 3}
6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd =3D {'status': 'Active', 'isop=
refix': '', 'alerts': [], 'version': -1}
e84c6a1a-9f82-4fa6-9a3b-0b0bc0330d9a =3D {'status': 'Active', 'disk=
free': '224145833984', 'isoprefix': '', 'alerts': [], 'disktotal': '2363171=
79904', 'version': 3}
5efea9c7-c4ec-44d4-a283-060d4c83303c =3D {'status': 'Active', 'disk=
free': '6374172262400', 'isoprefix': '/rhev/data-center/mnt/glusterSD/srv-s=
tor-01-ib0:_isodomain/5efea9c7-c4ec-44d4-a283-060d4c83303c/images/11111111-=
1111-1111-1111-111111111111', 'alerts': [], 'disktotal': '6995436371968', '=
version': 0}
# vdsClient -s 0 getStorageDomainInfo 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd
Storage domain does not exist: ('6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd',)
If I run this last command on one of the working hosts:
# vdsClient -s 0 getStorageDomainInfo 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd
uuid =3D 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd
version =3D 3
role =3D Regular
remotePath =3D srv-stor-01-ib0:/ovirtengine
type =3D GLUSTERFS
class =3D Data
pool =3D ['00000001-0001-0001-0001-00000000020e']
name =3D hosted_storage
(please note: this is the storage domain used for my hosted engine)
If I run "mount" on my AMD host (the one with the problem):
# mount
...
srv-stor-01-ib0:/virtualmachines on /rhev/data-center/mnt/glusterSD/srv-sto=
r-01-ib0:_virtualmachines type fuse.glusterfs (rw,relatime,user_id=3D0,grou=
p_id=3D0,default_permissions,allow_other,max_read=3D131072)
srv-stor-01-ib0:/isodomain on /rhev/data-center/mnt/glusterSD/srv-stor-01-i=
b0:_isodomain type fuse.glusterfs (rw,relatime,user_id=3D0,group_id=3D0,def=
ault_permissions,allow_other,max_read=3D131072)
srv-stor-01-ib0:/ssd-pcie on /rhev/data-center/mnt/glusterSD/srv-stor-01-ib=
0:_ssd-pcie type fuse.glusterfs (rw,relatime,user_id=3D0,group_id=3D0,defau=
lt_permissions,allow_other,max_read=3D131072)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=3D13185796k,=
mode=3D700)
If I run "mount" on one of the Intel hosts (currently working):
# mount
...
srv-stor-01-ib0:/ovirtengine on /rhev/data-center/mnt/glusterSD/srv-stor-01=
-ib0:_ovirtengine type fuse.glusterfs (rw,relatime,user_id=3D0,group_id=3D0=
,default_permissions,allow_other,max_read=3D131072)
srv-stor-01-ib0:/virtualmachines on /rhev/data-center/mnt/glusterSD/srv-sto=
r-01-ib0:_virtualmachines type fuse.glusterfs (rw,relatime,user_id=3D0,grou=
p_id=3D0,default_permissions,allow_other,max_read=3D131072)
srv-stor-01-ib0:/isodomain on /rhev/data-center/mnt/glusterSD/srv-stor-01-i=
b0:_isodomain type fuse.glusterfs (rw,relatime,user_id=3D0,group_id=3D0,def=
ault_permissions,allow_other,max_read=3D131072)
srv-stor-01-ib0:/ssd-pcie on /rhev/data-center/mnt/glusterSD/srv-stor-01-ib=
0:_ssd-pcie type fuse.glusterfs (rw,relatime,user_id=3D0,group_id=3D0,defau=
lt_permissions,allow_other,max_read=3D131072)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=3D3272288k,m=
ode=3D700)
The only difference in "mount" is that the hosted-engine storage domain is =
not loaded on the host which should not run the engine. The other domains a=
re mounted correctly.
What could I do to solve this issue?
Best regards,
Giuseppe
--
Giuseppe Berellini
PTV SISTeMA
www.sistemaits.com<http://www.sistemaits.com/>
facebook.com/sistemaits<https://www.facebook.com/sistemaits>
linkedin.com/SISTeMA<https://www.linkedin.com/company/sistema-soluzioni-per=
-l-ingegneria-dei-sistemi-di-trasporto-e-l-infomobilit-s-r-l->
--_000_03FD1DFE37AC0E47A173AC5A0835B1C1090AD30B8CSKAWNE25CEXpt_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40"><head><meta http-equiv=3DContent-Type content=
=3D"text/html; charset=3Dus-ascii"><meta name=3DGenerator content=3D"Micros=
oft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
span.StileMessaggioDiPostaElettronica17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 2.0cm 2.0cm 2.0cm;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DIT link=3D"#0563C1" v=
link=3D"#954F72"><div class=3DWordSection1><p class=3DMsoNormal>Hi,<o:p></o=
:p></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>At th=
e beginning of february I successfully installed oVirt 3.6.2 (with hosted e=
ngine) on 3 hosts, which are using 1 storage server with GlusterFS.<o:p></o=
:p></p><p class=3DMsoNormal>2 hosts (with Intel CPU) are using HA and are h=
osting the engine; the 3rd host (AMD CPU) was added as host from oVirt web =
administration panel, without hosted engine deployment (I don’t want =
the engine running on this host).<o:p></o:p></p><p class=3DMsoNormal><o:p>&=
nbsp;</o:p></p><p class=3DMsoNormal>About 10 days ago I tried to reboot my =
oVirt environment (i.e. going to global maintenance, shutting down the engi=
ne, turning off all the hosts, starting them again, then setting maintenanc=
e mode to “none”).<o:p></o:p></p><p class=3DMsoNormal>After the=
reboot, everything was fine with the Intel hosts and the hosted engine, bu=
t AMD host (the one without HA) was not operational.<o:p></o:p></p><p class=
=3DMsoNormal>I tryed to activate it, buti t failed with the following error=
:<o:p></o:p></p><p class=3DMsoNormal> &n=
bsp; “Host failed to attach one of Storage Domains attached to it.=
221;<o:p></o:p></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMso=
Normal>If I log into my AMD host and I check the logs, I see that the stora=
ge domain which is not mounted is the one of the hosted engine (but this co=
uld be correct, since this host won’t run the hosted engine).<o:p></o=
:p></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>From =
/var/log/vdsm/vdsm.log:<o:p></o:p></p><p class=3DMsoNormal><o:p> </o:p=
></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>Thread-=
29::DEBUG::2016-02-25 11:44:01,157::monitor::322::Storage.Monitor::(_produc=
eDomain) Producing domain 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd<o:p></o:p></=
span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>Thr=
ead-29::ERROR::2016-02-25 11:44:01,158::sdc::139::Storage.StorageDomainCach=
e::(_findDomain) looking for unfetched domain 6fb10a49-5f1c-4bd4-9ff7-b7e33=
c1125cd<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-famil=
y:"Courier New"'>Thread-29::ERROR::2016-02-25 11:44:01,158::sdc::156::Stora=
ge.StorageDomainCache::(_findUnfetchedDomain) looking for domain 6fb10a49-5=
f1c-4bd4-9ff7-b7e33c1125cd<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-family:"Courier New"'>Thread-29::DEBUG::2016-02-25 11:44:01,1=
59::lvm::370::Storage.OperationMutex::(_reloadvgs) Operation 'lvm reload op=
eration' got the operation mutex<o:p></o:p></span></p><p class=3DMsoNormal>=
<span style=3D'font-family:"Courier New"'>Thread-29::DEBUG::2016-02-25 11:4=
4:01,159::lvm::290::Storage.Misc.excCmd::(cmd) /usr/bin/taskset --cpu-list =
0-63 /usr/bin/sudo -n /usr/sbin/lvm vgs --config ' devices { preferred_name=
s =3D ["^/dev/mapper/"] ignore_suspended_devices=3D1 write_cache_=
state=3D0 disable_after_error_count=3D3 filter =3D [ '\''r|.*|'\'' ] } =
; global { locking_type=3D1 prioritise_write_locks=3D1 wa=
it_for_locks=3D1 use_lvmetad=3D0 } backup { retain_min =
=3D 50 retain_days =3D 0 } ' --noheadings --units b --nosuffix --sepa=
rator '|' --ignoreskippedcluster -o uuid,name,attr,size,free,extent_size,ex=
tent_count,free_count,tags,vg_mda_size,vg_mda_free,lv_count,pv_count,pv_nam=
e 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd (cwd None)<o:p></o:p></span></p><p c=
lass=3DMsoNormal><span style=3D'font-family:"Courier New"'>Thread-29::DEBUG=
::2016-02-25 11:44:01,223::lvm::290::Storage.Misc.excCmd::(cmd) FAILED: <=
;err> =3D ' WARNING: lvmetad is running but disabled. Restart lvme=
tad before enabling it!\n Volume group "6fb10a49-5f1c-4bd4-9ff7-=
b7e33c1125cd" not found\n Cannot process volume group 6fb10a49-5=
f1c-4bd4-9ff7-b7e33c1125cd\n'; <rc> =3D 5<o:p></o:p></span></p><p cla=
ss=3DMsoNormal><span style=3D'font-family:"Courier New"'>Thread-29::WARNING=
::2016-02-25 11:44:01,225::lvm::375::Storage.LVM::(_reloadvgs) lvm vgs fail=
ed: 5 [] [' WARNING: lvmetad is running but disabled. Restart lvmetad=
before enabling it!', ' Volume group "6fb10a49-5f1c-4bd4-9ff7-b=
7e33c1125cd" not found', ' Cannot process volume group 6fb10a49-=
5f1c-4bd4-9ff7-b7e33c1125cd']<o:p></o:p></span></p><p class=3DMsoNormal><sp=
an style=3D'font-family:"Courier New"'>Thread-29::DEBUG::2016-02-25 11:44:0=
1,225::lvm::415::Storage.OperationMutex::(_reloadvgs) Operation 'lvm reload=
operation' released the operation mutex<o:p></o:p></span></p><p class=3DMs=
oNormal><span style=3D'font-family:"Courier New"'>Thread-29::ERROR::2016-02=
-25 11:44:01,245::sdc::145::Storage.StorageDomainCache::(_findDomain) domai=
n 6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd not found<o:p></o:p></span></p><p cl=
ass=3DMsoNormal><span style=3D'font-family:"Courier New"'>Traceback (most r=
ecent call last):<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'=
font-family:"Courier New"'> File "/usr/share/vdsm/storage/sdc.py=
", line 143, in _findDomain<o:p></o:p></span></p><p class=3DMsoNormal>=
<span style=3D'font-family:"Courier New"'> dom =3D findMe=
thod(sdUUID)<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-=
family:"Courier New"'> File "/usr/share/vdsm/storage/sdc.py"=
;, line 173, in _findUnfetchedDomain<o:p></o:p></span></p><p class=3DMsoNor=
mal><span style=3D'font-family:"Courier New"'> raise se.S=
torageDomainDoesNotExist(sdUUID)<o:p></o:p></span></p><p class=3DMsoNormal>=
<span style=3D'font-family:"Courier New"'>StorageDomainDoesNotExist: Storag=
e domain does not exist: (u'6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd',)<o:p></o=
:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"=
'>Thread-29::ERROR::2016-02-25 11:44:01,246::monitor::276::Storage.Monitor:=
:(_monitorDomain) Error monitoring domain 6fb10a49-5f1c-4bd4-9ff7-b7e33c112=
5cd<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"C=
ourier New"'>Traceback (most recent call last):<o:p></o:p></span></p><p cla=
ss=3DMsoNormal><span style=3D'font-family:"Courier New"'> File "=
/usr/share/vdsm/storage/monitor.py", line 264, in _monitorDomain<o:p><=
/o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier Ne=
w"'> self._produceDomain()<o:p></o:p></span></p><p class=
=3DMsoNormal><span style=3D'font-family:"Courier New"'> File "/u=
sr/lib/python2.7/site-packages/vdsm/utils.py", line 767, in wrapper<o:=
p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier=
New"'> value =3D meth(self, *a, **kw)<o:p></o:p></span><=
/p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'> Fi=
le "/usr/share/vdsm/storage/monitor.py", line 323, in _produceDom=
ain<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"C=
ourier New"'> self.domain =3D sdCache.produce(self.sdUUID=
)<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Cou=
rier New"'> File "/usr/share/vdsm/storage/sdc.py", line 100=
, in produce<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-=
family:"Courier New"'> domain.getRealDomain()<o:p></o:p><=
/span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>&n=
bsp; File "/usr/share/vdsm/storage/sdc.py", line 52, in getRealDo=
main<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"=
Courier New"'> return self._cache._realProduce(self._sdUU=
ID)<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"C=
ourier New"'> File "/usr/share/vdsm/storage/sdc.py", line 1=
24, in _realProduce<o:p></o:p></span></p><p class=3DMsoNormal><span style=
=3D'font-family:"Courier New"'> domain =3D self._findDoma=
in(sdUUID)<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-fa=
mily:"Courier New"'> File "/usr/share/vdsm/storage/sdc.py",=
line 143, in _findDomain<o:p></o:p></span></p><p class=3DMsoNormal><span s=
tyle=3D'font-family:"Courier New"'> dom =3D findMethod(sd=
UUID)<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:=
"Courier New"'> File "/usr/share/vdsm/storage/sdc.py", line=
173, in _findUnfetchedDomain<o:p></o:p></span></p><p class=3DMsoNormal><sp=
an style=3D'font-family:"Courier New"'> raise se.StorageD=
omainDoesNotExist(sdUUID)<o:p></o:p></span></p><p class=3DMsoNormal><span s=
tyle=3D'font-family:"Courier New"'>StorageDomainDoesNotExist: Storage domai=
n does not exist: (u'6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd',)<o:p></o:p></sp=
an></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>jsonr=
pc.Executor/0::DEBUG::2016-02-25 11:44:03,292::task::595::Storage.TaskManag=
er.Task::(_updateState) Task=3D`2862ba96-8080-4e74-a55a-cdf93326631a`::movi=
ng from state init -> state preparing<o:p></o:p></span></p><p class=3DMs=
oNormal><span style=3D'font-family:"Courier New"'>jsonrpc.Executor/0::INFO:=
:2016-02-25 11:44:03,293::logUtils::48::dispatcher::(wrapper) Run and prote=
ct: repoStats(options=3DNone)<o:p></o:p></span></p><p class=3DMsoNormal><sp=
an style=3D'font-family:"Courier New"'>jsonrpc.Executor/0::INFO::2016-02-25=
11:44:03,293::logUtils::51::dispatcher::(wrapper) Run and protect: repoSta=
ts, Return response: {u'5f7991ba-fdf8-4b40-9974-c7adcd4da879': {'code': 0, =
'actual': True, 'version': 3, 'acquired': True, 'delay': '0.00056349', 'las=
tCheck': '7.7', 'valid': True}, u'6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd': {'=
code': 358, 'actual': True, 'version': -1, 'acquired': False, 'delay': '0',=
'lastCheck': '2.0', 'valid': False}, u'5efea9c7-c4ec-44d4-a283-060d4c83303=
c': {'code': 0, 'actual': True, 'version': 0, 'acquired': True, 'delay': '0=
.000561865', 'lastCheck': '8.4', 'valid': True}, u'e84c6a1a-9f82-4fa6-9a3b-=
0b0bc0330d9a': {'code': 0, 'actual': True, 'version': 3, 'acquired': True, =
'delay': '0.000227759', 'lastCheck': '8.7', 'valid': True}}<o:p></o:p></spa=
n></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>jsonrp=
c.Executor/0::DEBUG::2016-02-25 11:44:03,294::task::1191::Storage.TaskManag=
er.Task::(prepare) Task=3D`2862ba96-8080-4e74-a55a-cdf93326631a`::finished:=
{u'5f7991ba-fdf8-4b40-9974-c7adcd4da879': {'code': 0, 'actual': True, 'ver=
sion': 3, 'acquired': True, 'delay': '0.00056349', 'lastCheck': '7.7', 'val=
id': True}, u'6fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd': {'code': 358, 'actual'=
: True, 'version': -1, 'acquired': False, 'delay': '0', 'lastCheck': '2.0',=
'valid': False}, u'5efea9c7-c4ec-44d4-a283-060d4c83303c': {'code': 0, 'act=
ual': True, 'version': 0, 'acquired': True, 'delay': '0.000561865', 'lastCh=
eck': '8.4', 'valid': True}, u'e84c6a1a-9f82-4fa6-9a3b-0b0bc0330d9a': {'cod=
e': 0, 'actual': True, 'version': 3, 'acquired': True, 'delay': '0.00022775=
9', 'lastCheck': '8.7', 'valid': True}}<o:p></o:p></span></p><p class=3DMso=
Normal><span style=3D'font-family:"Courier New"'>jsonrpc.Executor/0::DEBUG:=
:2016-02-25 11:44:03,294::task::595::Storage.TaskManager.Task::(_updateStat=
e) Task=3D`2862ba96-8080-4e74-a55a-cdf93326631a`::moving from state prepari=
ng -> state finished<o:p></o:p></span></p><p class=3DMsoNormal><span sty=
le=3D'font-family:"Courier New"'>jsonrpc.Executor/0::DEBUG::2016-02-25 11:4=
4:03,294::resourceManager::940::Storage.ResourceManager.Owner::(releaseAll)=
Owner.releaseAll requests {} resources {}<o:p></o:p></span></p><p class=3D=
MsoNormal><span style=3D'font-family:"Courier New"'>jsonrpc.Executor/0::DEB=
UG::2016-02-25 11:44:03,295::resourceManager::977::Storage.ResourceManager.=
Owner::(cancelAll) Owner.cancelAll requests {}<o:p></o:p></span></p><p clas=
s=3DMsoNormal><span style=3D'font-family:"Courier New"'>jsonrpc.Executor/0:=
:DEBUG::2016-02-25 11:44:03,295::task::993::Storage.TaskManager.Task::(_dec=
ref) Task=3D`2862ba96-8080-4e74-a55a-cdf93326631a`::ref 0 aborting False<o:=
p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier=
New"'>Thread-30::DEBUG::2016-02-25 11:44:04,603::fileSD::173::Storage.Misc=
.excCmd::(getReadDelay) /usr/bin/taskset --cpu-list 0-63 /usr/bin/dd if=3D/=
rhev/data-center/mnt/glusterSD/srv-stor-01-ib0:_ssd-pcie/e84c6a1a-9f82-4fa6=
-9a3b-0b0bc0330d9a/dom_md/metadata iflag=3Ddirect of=3D/dev/null bs=3D4096 =
count=3D1 (cwd None)<o:p></o:p></span></p><p class=3DMsoNormal><span style=
=3D'font-family:"Courier New"'>Thread-30::DEBUG::2016-02-25 11:44:04,630::f=
ileSD::173::Storage.Misc.excCmd::(getReadDelay) SUCCESS: <err> =3D '0=
+1 records in\n0+1 records out\n336 bytes (336 B) copied, 0.000286148 s, 1.=
2 MB/s\n'; <rc> =3D 0<o:p></o:p></span></p><p class=3DMsoNormal><span=
style=3D'font-family:"Courier New"'>Thread-31::DEBUG::2016-02-25 11:44:04,=
925::fileSD::173::Storage.Misc.excCmd::(getReadDelay) /usr/bin/taskset --cp=
u-list 0-63 /usr/bin/dd if=3D/rhev/data-center/mnt/glusterSD/srv-stor-01-ib=
0:_isodomain/5efea9c7-c4ec-44d4-a283-060d4c83303c/dom_md/metadata iflag=3Dd=
irect of=3D/dev/null bs=3D4096 count=3D1 (cwd None)<o:p></o:p></span></p><p=
class=3DMsoNormal><span style=3D'font-family:"Courier New"'>Thread-31::DEB=
UG::2016-02-25 11:44:04,950::fileSD::173::Storage.Misc.excCmd::(getReadDela=
y) SUCCESS: <err> =3D '0+1 records in\n0+1 records out\n339 bytes (33=
9 B) copied, 0.0005884 s, 576 kB/s\n'; <rc> =3D 0<o:p></o:p></span></=
p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>Thread-28:=
:DEBUG::2016-02-25 11:44:05,583::fileSD::173::Storage.Misc.excCmd::(getRead=
Delay) /usr/bin/taskset --cpu-list 0-63 /usr/bin/dd if=3D/rhev/data-center/=
mnt/glusterSD/srv-stor-01-ib0:_virtualmachines/5f7991ba-fdf8-4b40-9974-c7ad=
cd4da879/dom_md/metadata iflag=3Ddirect of=3D/dev/null bs=3D4096 count=3D1 =
(cwd None)<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-fa=
mily:"Courier New"'>Thread-28::DEBUG::2016-02-25 11:44:05,606::fileSD::173:=
:Storage.Misc.excCmd::(getReadDelay) SUCCESS: <err> =3D '0+1 records =
in\n0+1 records out\n482 bytes (482 B) copied, 0.000637557 s, 756 kB/s\n'; =
<rc> =3D 0<o:p></o:p></span></p><p class=3DMsoNormal><o:p> </o:p=
></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal><o:p>&n=
bsp;</o:p></p><p class=3DMsoNormal>Other commands (executed on the host hav=
ing the problem) which probably give useful information:<o:p></o:p></p><p c=
lass=3DMsoNormal><span style=3D'font-family:"Courier New"'># vdsClient -s 0=
getConnectedStoragePoolsList<o:p></o:p></span></p><p class=3DMsoNormal><sp=
an style=3D'font-family:"Courier New"'>00000001-0001-0001-0001-00000000020e=
<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Cour=
ier New"'><o:p> </o:p></span></p><p class=3DMsoNormal><span style=3D'f=
ont-family:"Courier New"'># vdsClient -s 0 getStoragePoolInfo 00000001-0001=
-0001-0001-00000000020e<o:p></o:p></span></p><p class=3DMsoNormal><span sty=
le=3D'font-family:"Courier New"'> =
name =3D No Description<o:p></o:p></span></p><p class=3DMsoNormal><span st=
yle=3D'font-family:"Courier New"'>  =
; isoprefix =3D /rhev/data-center/mnt/glusterSD/srv-stor-01-ib0:_isodomain/=
5efea9c7-c4ec-44d4-a283-060d4c83303c/images/11111111-1111-1111-1111-1111111=
11111<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:=
"Courier New"'> pool_status =3D c=
onnected<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-fami=
ly:"Courier New"'> lver =3D 6<o:p=
></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier =
New"'> spm_id =3D 2<o:p></o:p></s=
pan></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>&nbs=
p; master_uuid =3D 5f7991ba-fdf8-4b40-9=
974-c7adcd4da879<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'f=
ont-family:"Courier New"'> versio=
n =3D 3<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-famil=
y:"Courier New"'> domains =3D 5f7=
991ba-fdf8-4b40-9974-c7adcd4da879:Active,6fb10a49-5f1c-4bd4-9ff7-b7e33c1125=
cd:Active,5efea9c7-c4ec-44d4-a283-060d4c83303c:Active,e84c6a1a-9f82-4fa6-9a=
3b-0b0bc0330d9a:Active<o:p></o:p></span></p><p class=3DMsoNormal><span styl=
e=3D'font-family:"Courier New"'> =
type =3D GLUSTERFS<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D=
'font-family:"Courier New"'> mast=
er_ver =3D 1<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-=
family:"Courier New"'> 5f7991ba-f=
df8-4b40-9974-c7adcd4da879 =3D {'status': 'Active', 'diskfree': '6374172262=
400', 'isoprefix': '', 'alerts': [], 'disktotal': '6995436371968', 'version=
': 3}<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:=
"Courier New"'> 6fb10a49-5f1c-4bd=
4-9ff7-b7e33c1125cd =3D {'status': 'Active', 'isoprefix': '', 'alerts': [],=
'version': -1}<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'fo=
nt-family:"Courier New"'> e84c6a1=
a-9f82-4fa6-9a3b-0b0bc0330d9a =3D {'status': 'Active', 'diskfree': '2241458=
33984', 'isoprefix': '', 'alerts': [], 'disktotal': '236317179904', 'versio=
n': 3}<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family=
:"Courier New"'> 5efea9c7-c4ec-44=
d4-a283-060d4c83303c =3D {'status': 'Active', 'diskfree': '6374172262400', =
'isoprefix': '/rhev/data-center/mnt/glusterSD/srv-stor-01-ib0:_isodomain/5e=
fea9c7-c4ec-44d4-a283-060d4c83303c/images/11111111-1111-1111-1111-111111111=
111', 'alerts': [], 'disktotal': '6995436371968', 'version': 0}<o:p></o:p><=
/span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'><o=
:p> </o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"=
Courier New"'># vdsClient -s 0 getStorageDomainInfo 6fb10a49-5f1c-4bd4-9ff7=
-b7e33c1125cd<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font=
-family:"Courier New"'>Storage domain does not exist: ('6fb10a49-5f1c-4bd4-=
9ff7-b7e33c1125cd',)<o:p></o:p></span></p><p class=3DMsoNormal><o:p> <=
/o:p></p><p class=3DMsoNormal>If I run this last command on one of the work=
ing hosts:<o:p></o:p></p><p class=3DMsoNormal><span style=3D'font-family:"C=
ourier New"'># vdsClient -s 0 getStorageDomainInfo 6fb10a49-5f1c-4bd4-9ff7-=
b7e33c1125cd<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-=
family:"Courier New"'> uuid =3D 6=
fb10a49-5f1c-4bd4-9ff7-b7e33c1125cd<o:p></o:p></span></p><p class=3DMsoNorm=
al><span style=3D'font-family:"Courier New"'> =
version =3D 3<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-family:"Courier New"'> &nb=
sp; role =3D Regular<o:p></o:p></span></p><p class=3DMsoNormal><span style=
=3D'font-family:"Courier New"'> r=
emotePath =3D srv-stor-01-ib0:/ovirtengine<o:p></o:p></span></p><p class=3D=
MsoNormal><span style=3D'font-family:"Courier New"'>  =
; type =3D GLUSTERFS<o:p></o:p></span></p><p class=3DMsoN=
ormal><span style=3D'font-family:"Courier New"'> &nb=
sp; class =3D Data<o:p></o:p></span></p><p class=3DMsoNormal><s=
pan style=3D'font-family:"Courier New"'>  =
; pool =3D ['00000001-0001-0001-0001-00000000020e']<o:p></o:p></span>=
</p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'> &n=
bsp; name =3D hosted_storage<o:p></o:p></span=
></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>(please=
note: this is the storage domain used for my hosted engine)<o:p></o:p></p>=
<p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal><o:p> <=
/o:p></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>If =
I run “mount” on my AMD host (the one with the problem):<o:p></=
o:p></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'># mo=
unt<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"C=
ourier New"'>...<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'f=
ont-family:"Courier New"'>srv-stor-01-ib0:/virtualmachines on /rhev/data-ce=
nter/mnt/glusterSD/srv-stor-01-ib0:_virtualmachines type fuse.glusterfs (rw=
,relatime,user_id=3D0,group_id=3D0,default_permissions,allow_other,max_read=
=3D131072)<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-fa=
mily:"Courier New"'>srv-stor-01-ib0:/isodomain on /rhev/data-center/mnt/glu=
sterSD/srv-stor-01-ib0:_isodomain type fuse.glusterfs (rw,relatime,user_id=
=3D0,group_id=3D0,default_permissions,allow_other,max_read=3D131072)<o:p></=
o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New=
"'>srv-stor-01-ib0:/ssd-pcie on /rhev/data-center/mnt/glusterSD/srv-stor-01=
-ib0:_ssd-pcie type fuse.glusterfs (rw,relatime,user_id=3D0,group_id=3D0,de=
fault_permissions,allow_other,max_read=3D131072)<o:p></o:p></span></p><p cl=
ass=3DMsoNormal><span style=3D'font-family:"Courier New"'>tmpfs on /run/use=
r/0 type tmpfs (rw,nosuid,nodev,relatime,size=3D13185796k,mode=3D700)<o:p><=
/o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier Ne=
w"'><o:p> </o:p></span></p><p class=3DMsoNormal>If I run “mount&=
#8221; on one of the Intel hosts (currently working):<o:p></o:p></p><p clas=
s=3DMsoNormal><span style=3D'font-family:"Courier New"'># mount<o:p></o:p><=
/span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>..=
.<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:"Cou=
rier New"'>srv-stor-01-ib0:/ovirtengine on /rhev/data-center/mnt/glusterSD/=
srv-stor-01-ib0:_ovirtengine type fuse.glusterfs (rw,relatime,user_id=3D0,g=
roup_id=3D0,default_permissions,allow_other,max_read=3D131072)<o:p></o:p></=
span></p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>srv=
-stor-01-ib0:/virtualmachines on /rhev/data-center/mnt/glusterSD/srv-stor-0=
1-ib0:_virtualmachines type fuse.glusterfs (rw,relatime,user_id=3D0,group_i=
d=3D0,default_permissions,allow_other,max_read=3D131072)<o:p></o:p></span><=
/p><p class=3DMsoNormal><span style=3D'font-family:"Courier New"'>srv-stor-=
01-ib0:/isodomain on /rhev/data-center/mnt/glusterSD/srv-stor-01-ib0:_isodo=
main type fuse.glusterfs (rw,relatime,user_id=3D0,group_id=3D0,default_perm=
issions,allow_other,max_read=3D131072)<o:p></o:p></span></p><p class=3DMsoN=
ormal><span style=3D'font-family:"Courier New"'>srv-stor-01-ib0:/ssd-pcie o=
n /rhev/data-center/mnt/glusterSD/srv-stor-01-ib0:_ssd-pcie type fuse.glust=
erfs (rw,relatime,user_id=3D0,group_id=3D0,default_permissions,allow_other,=
max_read=3D131072)<o:p></o:p></span></p><p class=3DMsoNormal><span style=3D=
'font-family:"Courier New"'>tmpfs on /run/user/0 type tmpfs (rw,nosuid,node=
v,relatime,size=3D3272288k,mode=3D700)<o:p></o:p></span></p><p class=3DMsoN=
ormal><span style=3D'font-family:"Courier New"'><o:p> </o:p></span></p=
><p class=3DMsoNormal>The only difference in “mount” is that th=
e hosted-engine storage domain is not loaded on the host which should not r=
un the engine. The other domains are mounted correctly.<o:p></o:p></p><p cl=
ass=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>What could I do t=
o solve this issue?<o:p></o:p></p><p class=3DMsoNormal><o:p> </o:p></p=
><p class=3DMsoNormal>Best regards,<o:p></o:p></p><p class=3DMsoNormal>&nbs=
p; Giuseppe<o:p></o:p></p><p class=3DMs=
oNormal><o:p> </o:p></p><p class=3DMsoNormal><o:p> </o:p></p><p c=
lass=3DMsoNormal style=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:aut=
o'><span style=3D'font-size:10.0pt;font-family:"Arial",sans-serif;mso-farea=
st-language:IT'>--<br>Giuseppe Berellini<o:p></o:p></span></p><p class=3DMs=
oNormal style=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span =
style=3D'font-size:10.0pt;font-family:"Arial",sans-serif;color:red;mso-fare=
ast-language:IT'>PTV SISTeMA<o:p></o:p></span></p><p class=3DMsoNormal styl=
e=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style=3D'fon=
t-size:10.0pt;font-family:"Arial",sans-serif;mso-fareast-language:IT'><a hr=
ef=3D"http://www.sistemaits.com/"><span style=3D'color:black;text-decoratio=
n:none'>www.sistemaits.com</span></a><o:p></o:p></span></p><p class=3DMsoNo=
rmal><span style=3D'font-size:10.0pt;font-family:"Arial",sans-serif;mso-far=
east-language:IT'><a href=3D"https://www.facebook.com/sistemaits"><span sty=
le=3D'color:black;text-decoration:none'>facebook.com/sistemaits</span></a><=
br><a href=3D"https://www.linkedin.com/company/sistema-soluzioni-per-l-inge=
gneria-dei-sistemi-di-trasporto-e-l-infomobilit-s-r-l-"><span style=3D'colo=
r:black;text-decoration:none'>linkedin.com/SISTeMA</span></a><br> </sp=
an><o:p></o:p></p></div></body></html>=
--_000_03FD1DFE37AC0E47A173AC5A0835B1C1090AD30B8CSKAWNE25CEXpt_--
8 years, 9 months
engine-backup - readlink: missing operand
by Halsey, Michael
--_004_D2F0F19D10390michaelhalseyintechnologywificom_
Content-Type: multipart/alternative;
boundary="_000_D2F0F19D10390michaelhalseyintechnologywificom_"
--_000_D2F0F19D10390michaelhalseyintechnologywificom_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
SGkgQWxsLA0KDQoNCknigJltIGhhdmluZyBpc3N1ZXMgdXNpbmcgdGhlIGVuZ2luZS1iYWNrdXAg
Y29tbWFuZC4NCg0KDQpXaGVuIHJ1bm5pbmc6DQoNCg0KZW5naW5lLWJhY2t1cCAtLW1vZGU9YmFj
a3VwIC0tc2NvcGU9ZmlsZXMg4oCUZmlsZT12ZW5nLmJhayAtLWxvZyBiYWNrdXAubG9nDQoNCg0K
SSBnZXQgYmFjayB0aGUgZm9sbG93aW5nIGVycm9yOg0KDQoNCnJlYWRsaW5rOiBtaXNzaW5nIG9w
ZXJhbmQNCg0KVHJ5ICdyZWFkbGluayAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KDQov
dXNyL2Jpbi9lbmdpbmUtYmFja3VwOiBsaW5lIDE0MDU6IDogTm8gc3VjaCBmaWxlIG9yIGRpcmVj
dG9yeQ0KDQpOb3RpZnlpbmcgZW5naW5lDQoNCi91c3IvYmluL2VuZ2luZS1iYWNrdXA6IGxpbmUg
MTQ3MjogOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5DQoNCi91c3IvYmluL2VuZ2luZS1iYWNr
dXA6IGxpbmUgMTQwNTogOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5DQoNCkZBVEFMOiBGYWls
ZWQgbm90aWZ5aW5nIGVuZ2luZQ0KDQoNCkxvZyBmaWxlIGlzIG5vdCBjcmVhdGVkLg0KDQpJIHJl
Y2VpdmUgc2ltaWxhciBlcnJvcnMgd2hlbiBjaGFuZ2luZyB0aGUgc2NvcGUgdG8g4oCYYWxsJyBh
bmQg4oCYZGInLg0KDQoNCknigJltIHJ1bm5pbmc6DQoNCg0KQ2VudE9TIExpbnV4IHJlbGVhc2Ug
Ny4yLjE1MTEgKENvcmUpDQoNCm9WaXJ0IEVuZ2luZSBWZXJzaW9uOiAzLjYuMi42LTEuZWw3LmNl
bnRvcw0KDQpFbmdpbmUgaXMgcnVubmluZyBvbiBiYXJlIG1ldGFsLg0KDQoNCkkgaGF2ZSB0cmll
ZCB0aGlzIHdpdGggU0VMaW51eCBpbiBQZXJtaXNzaXZlIG1vZGUuIE5vIGRpZmZlcmVuY2UuDQoN
CkFsbCBwYWNrYWdlcyBhcmUgdXAgdG8gZGF0ZS4NCg0KDQpDYW4gYW55b25lIGFkdmlzZSBhIGZp
eCBmb3IgdGhpcyBvciBpZiBJ4oCZbSBkb2luZyBhbnl0aGluZyB3cm9uZz8NCg0KDQpUaGFua3Mg
aW4gYWR2YW5jZSwNCg0KDQoNCg0KTWljaGFlbCBIYWxzZXkNCkRldiBPcHMgRW5naW5lZXIgLSBp
bnRlY2hub2xvZ3lXaUZpDQptaWNoYWVsLmhhbHNleUBpbnRlY2hub2xvZ3l3aWZpLmNvbQ0KRGly
ZWN0IDAxNDIzIDUxMDY1MA0KTW9iaWxlIDA3NDY3IDE0NTYyNg0KSGVhZCBPZmZpY2UgMDE0MjMg
NTEwNTEwDQoNCltjaWQ6aW1hZ2U0YmM0NTkuUE5HQGJlMzJmYWZjLjRlYjEzYzE4XQ0KDQoNCg0K
VGhpcyBpcyBhbiBlbWFpbCBmcm9tIGluVGVjaG5vbG9neSBwbGMsIENhcmRhbGUgSG91c2UsIENh
cmRhbGUgQ291cnQsIEJlY2t3aXRoIEhlYWQgUm9hZCwgSGFycm9nYXRlLCBVSywgSEczIDFSWS4N
ClJlZ2lzdGVyZWQgaW4gRW5nbGFuZCAzOTE2NTg2Lg0KDQpUaGUgY29udGVudHMgb2YgdGhpcyBt
ZXNzYWdlIG1heSBiZSBwcml2aWxlZ2VkIGFuZCBjb25maWRlbnRpYWwuIElmIHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgbWVzc2FnZSBpbiBlcnJvciwgeW91IG1heSBub3QgdXNlLCBkaXNjbG9zZSwg
Y29weSBvciBkaXN0cmlidXRlIGl0cyBjb250ZW50IGluIGFueSB3YXkuIFBsZWFzZSBub3RpZnkg
dGhlIHNlbmRlciBpbW1lZGlhdGVseS4gQWxsIG1lc3NhZ2VzIGFyZSBzY2FubmVkIGZvciBhbGwg
dmlydXNlcy4NCg==
--_000_D2F0F19D10390michaelhalseyintechnologywificom_
Content-Type: text/html; charset="utf-8"
Content-ID: <368CBD9A8C6CC24984EA18DFA2D7EEAC(a)intechnologyplc.com>
Content-Transfer-Encoding: base64
PGh0bWw+DQo8aGVhZD4NCjwhLS0gVGVtcGxhdGUgZ2VuZXJhdGVkIGJ5IEV4Y2xhaW1lciBUZW1w
bGF0ZSBFZGl0b3Igb24gMDU6MTA6NTYgTW9uZGF5LCAyMiBGZWJydWFyeSAyMDE2IC0tPg0KPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj5QLjhlZWUyMzlkLWNiM2YtNDUyMi04NDZh
LWNiYjE2YjgyNDUxMSB7DQoJTUFSR0lOOiAwY20gMGNtIDBwdA0KfQ0KTEkuOGVlZTIzOWQtY2Iz
Zi00NTIyLTg0NmEtY2JiMTZiODI0NTExIHsNCglNQVJHSU46IDBjbSAwY20gMHB0DQp9DQpESVYu
OGVlZTIzOWQtY2IzZi00NTIyLTg0NmEtY2JiMTZiODI0NTExIHsNCglNQVJHSU46IDBjbSAwY20g
MHB0DQp9DQpUQUJMRS44ZWVlMjM5ZC1jYjNmLTQ1MjItODQ2YS1jYmIxNmI4MjQ1MTFUYWJsZSB7
DQoJTUFSR0lOOiAwY20gMGNtIDBwdA0KfQ0KRElWLlNlY3Rpb24xIHsNCglwYWdlOiBTZWN0aW9u
MQ0KfQ0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5IHN0eWxlPSJ3b3JkLXdyYXA6IGJyZWFrLXdv
cmQ7IC13ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgLXdlYmtpdC1saW5lLWJyZWFrOiBhZnRlci13
aGl0ZS1zcGFjZTsiPg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFs
OyI+PGZvbnQgZmFjZT0iQ2FsaWJyaSI+SGkgQWxsLDwvZm9udD48L3A+DQo8cCBzdHlsZT0ibWFy
Z2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48Zm9udCBmYWNlPSJDYWxpYnJpIj48YnI+
DQo8L2ZvbnQ+PC9wPg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFs
OyI+PGZvbnQgZmFjZT0iQ2FsaWJyaSI+SeKAmW0gaGF2aW5nIGlzc3VlcyB1c2luZyB0aGUgZW5n
aW5lLWJhY2t1cCBjb21tYW5kLjwvZm9udD48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOiAwcHg7IGxp
bmUtaGVpZ2h0OiBub3JtYWw7Ij48Zm9udCBmYWNlPSJDYWxpYnJpIj48YnI+DQo8L2ZvbnQ+PC9w
Pg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PGZvbnQgZmFj
ZT0iQ2FsaWJyaSI+V2hlbiBydW5uaW5nOjwvZm9udD48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOiAw
cHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48Zm9udCBmYWNlPSJDYWxpYnJpIj48YnI+DQo8L2Zv
bnQ+PC9wPg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PGZv
bnQgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gY2xhc3M9IkFwcGxlLXRhYi1zcGFuIiBzdHlsZT0id2hp
dGUtc3BhY2U6IHByZTsiPjwvc3Bhbj5lbmdpbmUtYmFja3VwIC0tbW9kZT1iYWNrdXAgLS1zY29w
ZT1maWxlcyZuYnNwO+KAlGZpbGU9dmVuZy5iYWsgLS1sb2cgYmFja3VwLmxvZzwvZm9udD48L3A+
DQo8cCBzdHlsZT0ibWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48Zm9udCBmYWNl
PSJDYWxpYnJpIj48YnI+DQo8L2ZvbnQ+PC9wPg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBsaW5l
LWhlaWdodDogbm9ybWFsOyI+PGZvbnQgZmFjZT0iQ2FsaWJyaSI+SSBnZXQgYmFjayB0aGUgZm9s
bG93aW5nIGVycm9yOjwvZm9udD48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOiAwcHg7IGxpbmUtaGVp
Z2h0OiBub3JtYWw7Ij48Zm9udCBmYWNlPSJDYWxpYnJpIj48YnI+DQo8L2ZvbnQ+PC9wPg0KPGJs
b2NrcXVvdGUgc3R5bGU9Im1hcmdpbjogMHB4IDBweCAwcHggNDBweDsgYm9yZGVyOiBub25lOyBw
YWRkaW5nOiAwcHg7Ij4NCjxwIHN0eWxlPSJtYXJnaW46IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1h
bDsiPjxmb250IGZhY2U9IkNhbGlicmkiPnJlYWRsaW5rOiBtaXNzaW5nIG9wZXJhbmQ8L2ZvbnQ+
PC9wPg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PGZvbnQg
ZmFjZT0iQ2FsaWJyaSI+VHJ5ICdyZWFkbGluayAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9u
LjwvZm9udD48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7
Ij48Zm9udCBmYWNlPSJDYWxpYnJpIj4vdXNyL2Jpbi9lbmdpbmUtYmFja3VwOiBsaW5lIDE0MDU6
IDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTwvZm9udD48L3A+DQo8cCBzdHlsZT0ibWFyZ2lu
OiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48Zm9udCBmYWNlPSJDYWxpYnJpIj5Ob3RpZnlp
bmcgZW5naW5lPC9mb250PjwvcD4NCjxwIHN0eWxlPSJtYXJnaW46IDBweDsgbGluZS1oZWlnaHQ6
IG5vcm1hbDsiPjxmb250IGZhY2U9IkNhbGlicmkiPi91c3IvYmluL2VuZ2luZS1iYWNrdXA6IGxp
bmUgMTQ3MjogOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5PC9mb250PjwvcD4NCjxwIHN0eWxl
PSJtYXJnaW46IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxmb250IGZhY2U9IkNhbGlicmki
Pi91c3IvYmluL2VuZ2luZS1iYWNrdXA6IGxpbmUgMTQwNTogOiBObyBzdWNoIGZpbGUgb3IgZGly
ZWN0b3J5PC9mb250PjwvcD4NCjxwIHN0eWxlPSJtYXJnaW46IDBweDsgbGluZS1oZWlnaHQ6IG5v
cm1hbDsiPjxmb250IGZhY2U9IkNhbGlicmkiPkZBVEFMOiBGYWlsZWQgbm90aWZ5aW5nIGVuZ2lu
ZTwvZm9udD48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7
Ij48Zm9udCBmYWNlPSJDYWxpYnJpIj48YnI+DQo8L2ZvbnQ+PC9wPg0KPC9ibG9ja3F1b3RlPg0K
PHAgc3R5bGU9Im1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PGZvbnQgZmFjZT0i
Q2FsaWJyaSI+TG9nIGZpbGUgaXMgbm90IGNyZWF0ZWQuPC9mb250PjwvcD4NCjxwIHN0eWxlPSJt
YXJnaW46IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxmb250IGZhY2U9IkNhbGlicmkiPkk8
L2ZvbnQ+PGZvbnQgZmFjZT0iQ2FsaWJyaSI+Jm5ic3A7cmVjZWl2ZSBzaW1pbGFyIGVycm9ycyB3
aGVuIGNoYW5naW5nIHRoZSBzY29wZSB0byZuYnNwO+KAmGFsbCcgYW5kJm5ic3A74oCYZGInLjwv
Zm9udD48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48
Zm9udCBmYWNlPSJDYWxpYnJpIj48YnI+DQo8L2ZvbnQ+PC9wPg0KPHAgc3R5bGU9Im1hcmdpbjog
MHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PGZvbnQgZmFjZT0iQ2FsaWJyaSI+STwvZm9udD48
Zm9udCBmYWNlPSJDYWxpYnJpIj7igJltIHJ1bm5pbmc6PC9mb250PjwvcD4NCjxwIHN0eWxlPSJt
YXJnaW46IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxmb250IGZhY2U9IkNhbGlicmkiPjxi
cj4NCjwvZm9udD48L3A+DQo8YmxvY2txdW90ZSBzdHlsZT0ibWFyZ2luOjAgMCAwIDQwcHg7IGJv
cmRlcjpub25lOyBwYWRkaW5nOjBweDsiPg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBsaW5lLWhl
aWdodDogbm9ybWFsOyI+PGZvbnQgZmFjZT0iQ2FsaWJyaSI+Q2VudE9TIExpbnV4IHJlbGVhc2Ug
Ny4yLjE1MTEgKENvcmUpPC9mb250PjwvcD4NCjxwIHN0eWxlPSJtYXJnaW46IDBweDsgbGluZS1o
ZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDogMjEuNjY2N3B4OyB0ZXh0
LWFsaWduOiAtd2Via2l0LWNlbnRlcjsgd2lkb3dzOiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjU1LCAyNTUsIDI1NSk7Ij48Zm9udCBmYWNlPSJDYWxpYnJpIj5vVmlydCBFbmdpbmUgVmVyc2lv
bjogMy42LjIuNi0xLmVsNy5jZW50b3M8L2ZvbnQ+PC9zcGFuPjwvcD4NCjxwIHN0eWxlPSJtYXJn
aW46IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxmb250IGZhY2U9IkNhbGlicmkiPkVuZ2lu
ZSBpcyBydW5uaW5nIG9uIGJhcmUgbWV0YWwuPC9mb250PjwvcD4NCjxwIHN0eWxlPSJtYXJnaW46
IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxmb250IGZhY2U9IkNhbGlicmkiPjxicj4NCjwv
Zm9udD48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8ZGl2Pg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBs
aW5lLWhlaWdodDogbm9ybWFsOyI+PGZvbnQgZmFjZT0iQ2FsaWJyaSI+STwvZm9udD48Zm9udCBm
YWNlPSJDYWxpYnJpIj4mbmJzcDtoYXZlIHRyaWVkIHRoaXMgd2l0aCBTRUxpbnV4IGluIFBlcm1p
c3NpdmUgbW9kZS4gTm8gZGlmZmVyZW5jZS48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8ZGl2Pjxmb250
IGZhY2U9IkNhbGlicmkiPkFsbCBwYWNrYWdlcyBhcmUgdXAgdG8gZGF0ZS48L2ZvbnQ+PC9kaXY+
DQo8YmxvY2txdW90ZSBzdHlsZT0ibWFyZ2luOjAgMCAwIDQwcHg7IGJvcmRlcjpub25lOyBwYWRk
aW5nOjBweDsiPjxmb250IGZhY2U9IkNhbGlicmkiPjxicj4NCjwvZm9udD48L2Jsb2NrcXVvdGU+
DQo8cCBzdHlsZT0ibWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48Zm9udCBmYWNl
PSJDYWxpYnJpIj5DYW4gYW55b25lIGFkdmlzZSBhIGZpeCBmb3IgdGhpcyBvciBpZiBJ4oCZbSBk
b2luZyBhbnl0aGluZyB3cm9uZz88L2ZvbnQ+PC9wPg0KPHAgc3R5bGU9Im1hcmdpbjogMHB4OyBs
aW5lLWhlaWdodDogbm9ybWFsOyI+PGZvbnQgZmFjZT0iQ2FsaWJyaSI+PGJyPg0KPC9mb250Pjwv
cD4NCjxwIHN0eWxlPSJtYXJnaW46IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxmb250IGZh
Y2U9IkNhbGlicmkiPlRoYW5rcyBpbiBhZHZhbmNlLDwvZm9udD48L3A+DQo8cCBzdHlsZT0iZm9u
dC1zaXplOiAxMnB4OyBtYXJnaW46IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxmb250IGZh
Y2U9IkNhbGlicmkiPjxicj4NCjwvZm9udD48L3A+DQo8cCBzdHlsZT0iZm9udC1zaXplOiAxMnB4
OyBmb250LWZhbWlseTogTWVubG87IGNvbG9yOiByZ2IoNjMsIDE5NywgNDgpOyBtYXJnaW46IDBw
eDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPg0KPGJyPg0KPC9wPg0KPGJyPg0KPGJyPg0KPHNwYW4g
c3R5bGU9IkZPTlQtRkFNSUxZOiBWZXJkYW5hOyBGT05ULVNJWkU6IDEwcHQiPk1pY2hhZWwgSGFs
c2V5PGJyPg0KRGV2IE9wcyBFbmdpbmVlciAtIGludGVjaG5vbG9neVdpRmk8YnI+DQptaWNoYWVs
LmhhbHNleUBpbnRlY2hub2xvZ3l3aWZpLmNvbTxicj4NCkRpcmVjdCAwMTQyMyA1MTA2NTA8YnI+
DQpNb2JpbGUgMDc0NjcgMTQ1NjI2PGJyPg0KSGVhZCBPZmZpY2UgMDE0MjMgNTEwNTEwPGJyPg0K
PGJyPg0KPGltZyBpZD0iSU1HMSIgYm9yZGVyPSIwIiBzcmM9ImNpZDppbWFnZTRiYzQ1OS5QTkdA
YmUzMmZhZmMuNGViMTNjMTgiIHdpZHRoPSI1NzAiIGhlaWdodD0iMTMyIj48YnI+DQo8L3NwYW4+
PGJyPg0KPGJyPg0KPGJyPg0KPGZvbnQgY29sb3I9IiM4MzgzODUiIHNpemU9IjIiIGZhY2U9IlZl
cmRhbmEiPlRoaXMgaXMgYW4gZW1haWwgZnJvbSBpblRlY2hub2xvZ3kgcGxjLCBDYXJkYWxlIEhv
dXNlLCBDYXJkYWxlIENvdXJ0LCBCZWNrd2l0aCBIZWFkIFJvYWQsIEhhcnJvZ2F0ZSwgVUssIEhH
MyAxUlkuPGJyPg0KUmVnaXN0ZXJlZCBpbiBFbmdsYW5kIDM5MTY1ODYuPGJyPg0KPGJyPg0KVGhl
IGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZSBtYXkgYmUgcHJpdmlsZWdlZCBhbmQgY29uZmlkZW50
aWFsLiBJZiB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIG1lc3NhZ2UgaW4gZXJyb3IsIHlvdSBtYXkg
bm90IHVzZSwgZGlzY2xvc2UsIGNvcHkgb3IgZGlzdHJpYnV0ZSBpdHMgY29udGVudCBpbiBhbnkg
d2F5LiBQbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkuIEFsbCBtZXNzYWdlcyBh
cmUgc2Nhbm5lZCBmb3IgYWxsIHZpcnVzZXMuPC9mb250Pg0KPC9ib2R5Pg0KPC9odG1sPg0K
--_000_D2F0F19D10390michaelhalseyintechnologywificom_--
--_004_D2F0F19D10390michaelhalseyintechnologywificom_
Content-Type: image/png; name="image4bc459.PNG"
Content-Description: image4bc459.PNG
Content-Disposition: inline; filename="image4bc459.PNG"; size=16539;
creation-date="Mon, 22 Feb 2016 17:10:56 GMT";
modification-date="Mon, 22 Feb 2016 17:10:56 GMT"
Content-ID: <image4bc459.PNG(a)be32fafc.4eb13c18>
Content-Transfer-Encoding: base64
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
Odq4lVX88YffP8TRuSYdnSRJkiSZ2vR0dEbglEj+RwfMKe87bcey08XTy3Ffm1aOvxG2LScMOU4r
u146vXxo8Yyy2aE7DbUnqvRzqiM/IDicz5bnV45OJ949/tGH0tFJkiRJksQwokdX1qFxTslbjpld
dv3S9HLW0m3KAV/erkw/f4fytuNmlZdVTs+Qcl1euM+c8rZjZ5VPf3FGmXfF9p1ye125fXnvqTuu
1+uWe24FOzsxnxmMv3Srv09HJ0mSJEmS9Vzz3Xsqp+DBekenciCGpA3P2XNuef8ZO5aTv7lt2fuq
7cs7F83svECs/DcdPbvj7GzzxR3KjAvWs33lBL3jhFnlLypH53nz19vb/MjZZY/Lty+n3rRt2fa8
GeVF+6qeAWenFy/Z6n3G0Xmw6tvysM99UX2ko5MkSZIkk4RaR6dyHOSAROl3nziznHHztmXHC3eo
HJKBXZuX7T+nfPzsGeXw67YrZ9+6Tdnn6u07js0nz5lR3n78rM4ODo7PR86a0ZHvftnATs6ir08r
25+3Q3nlITt17Pz+grkdO2d9a5uy9ednDKl3sB2+fRUv/uDfpaOTJEmSJMl6eu7oWCrn4r/vN6cs
rByZz12+fflDHJxK/pZjZpWjrp9WTvrGtuWDZ+44KB/mjJC2jkqXF+w9t/NOz6Ff2a6c+a1ty9+e
OrOj87vz55ZZF+1QTrtp2/Kaw2bHNjh248MdnXx0lSRJkiRTmpE4Om+uHJrzb9umvPukyhGpHIvX
Vs7HsTdMK/tcvV3ZbGHliDjHYxBjYzBdI3/5QTuVXS6dXk755radx1vIXn/47M4LzDhDQ8pYqvLp
6CRJkiRJMoRWjk7lRPzDGTuW02/etrxonzmd92pmXrRD55HTq/WNqa6e4v/jkJ3K/zllZufR1jGV
M8S3rPRtK5hz8fTO+z2vq5yYwfKGF+83pxy0ZLvO4y8ejfE4a0EV3+2y6UN1TZ1DHJ0HJoij439Q
TD8QJjk6pInzg2f8EBg/UGbxNgW/rUE+Za0ePzQm2+gQ5x9n6kfW7A+U2bpJ86NmlFc+kIdcP57m
5ZTX/9xRHdam6gDSilOPdCT3P7imMbCovNAPqHk92SAPPfUbfdWjtqHjz4m1xQ+++bGyKM+2XzL9
yJ21rzjjF/3zVODcMUaMO0f7Wyq0ifJWrjRxnQfaoLosyMH3UbrWJjL1xYJc7RHSI0821A/k1CPd
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
2+O8WNv+3Ns8xW1fwcrR07qoOUF7NB8AmT8XKh+tK7YNsiHq+roxqN3RsU6FczD+bOFOnX/c+VH3
7xnYoeG3cvjnnq84uPtuTQWPnv7qhFnlQ5Xzwk6Q/cbUS/Yf+Eo6Ds8bjxz4Crnqe89JMzvvAb2p
cnY6+q4dninzjo7Vj+Is1ExW4kxMyugi8bZ0A2j6q4l8tZ06/AVYF1cfbdzbs0TyOl1rD2y9Vs9C
vuyhp7TyrU1vH1SGuqxcuhy1EHh9nQ/lRXV558zqMObqW1SWOEfSOqdgx0P5StuyXqaFt00Zj86F
yrWJi6Z84siUtue8Lg7Eo3Ng8ba9LIrbPzJsOUEeukrbtti4dKWvPCDP9kc3KFBZoXbVyTna+Sl5
dK6V5/Vk0+vUzc8obftDmjg6yrdoLKTbhOxaW1GaMVCblKe0jdNf29Y2cZW1cdUNURutnDkqB8Hb
9ufe5ikux83bRcfKScuWbYtPW1m0rtTZt3ne3sZguKNjvnXlj97RMGl+74ZHTJ3fu6nSOD185Zz/
ZYWzYr9ezu/g8NLyQddu19ntQZ+vkPMvJD7cfe+nFt8e04Yhjk7Vp03W0VFZ/sqJ4laHox5pEfe2
9HiLen2esGUVt+2si9t+qT3eniWS1+lae2DrtXoW8qVjL1rlW5vePtj+WLluHhacTatvFynK9Kqr
SacuzpG0vXHZ8VC+0rZsJJNj0KuMzWM+EddiTdzaqIuLpnziyJS257wu3nQOLN62l0VxzjFHf3MR
5KGrtG2LjUsXkPu5aftj85CTpg7aUud41c1P2yd/rm2ejVvqdLy+T9v+kCaOjvLVNvrWtHYJ8qJ5
B7aszpeFsZEN0j5u29omDsSReZt1bQS9r2hhF97a9ue+rg3Wbi+5zyOt8fKyaF2J7Pfq68agdkfH
OxVdZ2JIvAtfG+cffPJ+Dd/A4nEWLyv/uXZiILDFTg/v+/DuDjs7v7f33I4TxM5PWLcFucubMo4O
+SxMWgSYTMj1lwpx2cdOk03bjjpUh+qzFyAT2i6wti5dvH5R5ah2+nq8vE7Xt7vNuKkMC4b0rW1r
09sHbCOjrGR2IUbOeJBmTKy+xggoJ/taPLTgWqRDHYy/X5Qll02O5BGX3I6HzQfZUdrL1JdeZQRy
5iVx3y47f2TPxkWdLvi67TlX3M/HpnNgifolmR9nq8uRPFtOkGfbr7bQDo0t7SJPNqO5afupcVFZ
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
AElFTkSuQmCC
--_004_D2F0F19D10390michaelhalseyintechnologywificom_--
8 years, 9 months