<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5407051802472655071</id><updated>2025-06-02T11:57:42.780-07:00</updated><category term="Citrix"/><category term="XenServer"/><category term="XenApp"/><category term="NetScaler"/><category term="XenDesktop"/><category term="Provisioning Server"/><category term="Web Interface"/><category term="Linux"/><category term="Microsoft"/><category term="Access Gateway"/><category term="Citrix Summit"/><category term="Server Virtualization"/><category term="Terminal Server"/><category term="Active Directory"/><category term="Hyper-V"/><category term="NetScaler Gateway"/><category term="Provisioning Services"/><category term="Windows Server 2008 R2"/><category term="Bash Script"/><category term="Equallogic"/><category term="Framehawk"/><category term="PVS"/><category term="PowerShell"/><category term="SAN"/><category term="StoreFront"/><category term="ThinKiosk"/><category term="VMware"/><category term="Windows 7"/><category term="App-V"/><category term="CloudBridge"/><category term="License Appliance"/><category term="Microsoft Office Communications Server 2007 R2"/><category term="NITRO API"/><category term="Receiver"/><category term="Secure Gateway"/><category term="System Center Operations Manager"/><category term="VB Script"/><category term="VDA"/><category term="Windows Server 2012"/><category term="X1"/><category term="XenMobile"/><title type='text'>1 Bit at a Time</title><subtitle type='html'>Technical musings on all things Citrix (XenApp, XenDesktop, XenServer, Provisioning Server, Netscaler, Branch Repeater, etc...), some Microsoft stuff and probably more...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default?start-index=26&amp;max-results=25'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-8125451959689397378</id><published>2017-12-26T14:51:00.001-08:00</published><updated>2018-10-30T19:56:09.532-07:00</updated><title type='text'>This site has moved</title><content type='html'>This site has moved to &lt;a class=&quot;&quot; href=&quot;https://www.christopherkeim.com/&quot;&gt;https://www.christopherkeim.com&lt;/a&gt; . Please update any links you may have. Not all content will be moved over.</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/8125451959689397378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2017/12/this-site-is-in-process-of-moving.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/8125451959689397378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/8125451959689397378'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2017/12/this-site-is-in-process-of-moving.html' title='This site has moved'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-1529807491716403277</id><published>2015-02-14T12:25:00.001-08:00</published><updated>2015-02-14T12:32:04.990-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bash Script"/><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning Services"/><category scheme="http://www.blogger.com/atom/ns#" term="XenDesktop"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>New Script: XenServer VM Memory Management Bash Script</title><content type='html'>&lt;div style=&quot;orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;div style=&quot;text-align: -webkit-auto;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; text-align: -webkit-auto;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdRGRks3VvsrqXIXUtMzr0hBHe8Yo4vPWpbuAfs_RQfGv2o-4axzGZfM39gdRiKJJs4P5yOqe79f2aByYmtC91ZHaT2nOFMgcD49Vu6WskOCWz5z9_Ziopihyphenhyphen1aXsa3Ih28vJVRccaJQ/s1600/50.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdRGRks3VvsrqXIXUtMzr0hBHe8Yo4vPWpbuAfs_RQfGv2o-4axzGZfM39gdRiKJJs4P5yOqe79f2aByYmtC91ZHaT2nOFMgcD49Vu6WskOCWz5z9_Ziopihyphenhyphen1aXsa3Ih28vJVRccaJQ/s1600/50.png&quot; height=&quot;226&quot; title=&quot;Linux Bash Scripting&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Once virtual desktops are deployed, you typically don&#39;t need to adjust the resources often for those VMs unless resource utilization has grown due to additions or some other reason. This happened recently with a customer. Their desktops needed a bit more RAM and there was some additional RAM added to the XenServer hosts. They requested my help and wanted to know the quickest and least impact method for adjusting the RAM allocation for each virtual desktop. Right away I thought of three ways of accomplishing this:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Manually perform this feat.&lt;/li&gt;
&lt;li&gt;Update the template VM and re-deploy hundreds of desktops. Better than manually updating the RAM allocation, but still takes too much effort and time.&lt;/li&gt;
&lt;li&gt;Script it.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Obviously I chose door number 3 above. This was a quick script, but I built some logic into it as well as added logging. With this menu driven script, you can:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;List all VMs in a XenServer pool with a specified static max setting.&lt;/li&gt;
&lt;li&gt;Update memory on all VMs within a XenServer pool with a specified static max to a newly specified amount.&lt;/li&gt;
&lt;li&gt;Preview the changes before making them.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
After writing the script, I chose to run the script after-hours, as this script will only change memory on VMs that are shutdown. I ran the script and updated several hundred VMs in just a few minutes.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
You can read more about this script and download it &lt;a href=&quot;http://www.christopherkeim.com/p/xenserver-vm-memory-management-bash.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;This post was written in reference to the following platforms and versions:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;XenServer 6.2&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/1529807491716403277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2015/02/new-script-xenserver-vm-memory_14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/1529807491716403277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/1529807491716403277'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2015/02/new-script-xenserver-vm-memory_14.html' title='New Script: XenServer VM Memory Management Bash Script'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdRGRks3VvsrqXIXUtMzr0hBHe8Yo4vPWpbuAfs_RQfGv2o-4axzGZfM39gdRiKJJs4P5yOqe79f2aByYmtC91ZHaT2nOFMgcD49Vu6WskOCWz5z9_Ziopihyphenhyphen1aXsa3Ih28vJVRccaJQ/s72-c/50.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-7976485166904708765</id><published>2015-02-08T11:22:00.001-08:00</published><updated>2015-02-08T11:45:06.870-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Citrix Summit"/><category scheme="http://www.blogger.com/atom/ns#" term="Framehawk"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><category scheme="http://www.blogger.com/atom/ns#" term="XenApp"/><category scheme="http://www.blogger.com/atom/ns#" term="XenDesktop"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>Citrix Summit 2015: Day 2</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYsDNJD_7MJ24jlyTJOnKNSRMFIXfq4gImZq3KhSm35hNylwO2xSaXiBXI0laisZMWytTuVC2q6kFC-KaD98Q2LxGn63aNX9DUKOxd0XKY60eQXjhqW9c95rZNFJgVrvLEfokjkbaaeA/s1600/Citrix.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYsDNJD_7MJ24jlyTJOnKNSRMFIXfq4gImZq3KhSm35hNylwO2xSaXiBXI0laisZMWytTuVC2q6kFC-KaD98Q2LxGn63aNX9DUKOxd0XKY60eQXjhqW9c95rZNFJgVrvLEfokjkbaaeA/s1600/Citrix.png&quot; height=&quot;226&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Day 2 (really day 3) started with the tech talks keynote. This key note is NDA, so I cannot go into detail. But, suffice to say there will be a good number of announcements most likely during Synergy later this year. But one thing I am excited to look into, is &lt;a href=&quot;http://www.citrix.com/products/workspace-cloud/overview.html&quot; target=&quot;_blank&quot;&gt;Workspace Cloud&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I attended self-paced labs for a good chunk of the day, which gives great hands-on experience to many Citrix technologies. &amp;nbsp;But starting in the afternoon, I attended a session about vGPU and XenServer presented by David Cottingham. It is nice to see XenServer getting some love. I am really happy about the 64bit architecture, as this will allow for further compatibility with hardware manufacturers (Fusion-io). This session went into detail about the 6.5 release of XenServer. Below are some of the new features / information about this release:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;64-Bit control domain&lt;/b&gt;. The control domain (dom0) used to be 32bit, not anymore!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;In memory read cache&lt;/b&gt;. This feature allows you to store your golden images in RAM, significantly improving performance.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Storage&lt;/b&gt;. Live LUN expansion! Support for tapdisk3.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Network&lt;/b&gt;. Updated Open vSwitch 2.1.3. Improved vNIC performance.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;vGPU&lt;/b&gt;. Now 96 GRID vGPU sessions per host.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;XenServer split into two editions&lt;/b&gt;: Standard and Enterprise.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
The last session of the day, I attended was another great presentation by Daniel Feller. Extremely fast paced because so much great information crammed into a small segment of time. Daniel went into various tests the Citrix team performed on various hypervisors with the resulting performance outcomes. The three hypervisors tested were Microsoft, VMWare, and of course Citrix. One of the best stats was that of the RAM Cache with Disk Overflow. In a nut shell, you can get down from an average of 15 IOPS per Windows 7 user to .1 IOPS. All this while not using expensive an SAN, or using local expensive SSDs or some other complex configuration or expensive 3rd party hardware addition. All you need is RAM plus some disk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfKJGGGlRKJTwIGQYE1Ek8t3J6BLhYdzFcsUm17ZmiEL8-qAXuOLm8qmbBTTLO846qfYpEXiohMzVP1rq6esXbZOvR9Tqb1TGo47tJdT7HePLPrYi1Lf4huwR7XEiuOyBGDEE9yxL40A/s1600/Citrix+(1).png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfKJGGGlRKJTwIGQYE1Ek8t3J6BLhYdzFcsUm17ZmiEL8-qAXuOLm8qmbBTTLO846qfYpEXiohMzVP1rq6esXbZOvR9Tqb1TGo47tJdT7HePLPrYi1Lf4huwR7XEiuOyBGDEE9yxL40A/s1600/Citrix+(1).png&quot; height=&quot;226&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The day closes out with the partner closing keynote. Another great day! But, there is more to be had...PARTY!!! Well the partner appreciation party. This time we got bused to the Las Vegas Speedway. Plenty of great food and entertainment. You could strap in and take a ride around the oval with a professional driver, take a drifting ride, or get in the driver seat yourself with go-karts. I was able to get in the drifting car and that was a insane! Well played Citrix.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
With the close of Summit, there are a few things to take away:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Citrix is definitely focused on consumer (a.k.a the user) experience.&lt;/li&gt;
&lt;li&gt;With Framehawk integration, it is a no brainer when choosing between Citrix and VMWare.&lt;/li&gt;
&lt;li&gt;Linux is not a limiting factor anymore when looking into desktop virtualization.&lt;/li&gt;
&lt;li&gt;A mouse for iPad!&lt;/li&gt;
&lt;li&gt;Easier migrations from Legacy Citrix products.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
If you are on legacy Citrix products, thinking about VDI, or wanting to load balance / accelerate network traffic, contact a Citrix partner and ask for a demo. This year is a great year to get started.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/7976485166904708765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2015/02/citrix-summit-2015-day-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/7976485166904708765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/7976485166904708765'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2015/02/citrix-summit-2015-day-2.html' title='Citrix Summit 2015: Day 2'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYsDNJD_7MJ24jlyTJOnKNSRMFIXfq4gImZq3KhSm35hNylwO2xSaXiBXI0laisZMWytTuVC2q6kFC-KaD98Q2LxGn63aNX9DUKOxd0XKY60eQXjhqW9c95rZNFJgVrvLEfokjkbaaeA/s72-c/Citrix.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-7434169303148639050</id><published>2015-01-21T20:56:00.002-08:00</published><updated>2015-02-08T11:45:40.556-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Citrix Summit"/><category scheme="http://www.blogger.com/atom/ns#" term="CloudBridge"/><category scheme="http://www.blogger.com/atom/ns#" term="Framehawk"/><category scheme="http://www.blogger.com/atom/ns#" term="NetScaler"/><category scheme="http://www.blogger.com/atom/ns#" term="NITRO API"/><category scheme="http://www.blogger.com/atom/ns#" term="Receiver"/><category scheme="http://www.blogger.com/atom/ns#" term="VDA"/><category scheme="http://www.blogger.com/atom/ns#" term="X1"/><category scheme="http://www.blogger.com/atom/ns#" term="XenApp"/><category scheme="http://www.blogger.com/atom/ns#" term="XenMobile"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>Citrix Summit 2015: Day 1</title><content type='html'>&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuPHhtLexvmykBYurMlWDC9TqJ_lkeE-qURM1dRo9PBK-nLoFMIf0pmU9Mz6MuDu1ij6qdCM_aPjNteww9bA2QpXurbs10QUqt8vjDqq0BNqw5JQvWyiC6npRLRyFVhkpbcpzhmqhvnQ/s1600/Untitled+design.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuPHhtLexvmykBYurMlWDC9TqJ_lkeE-qURM1dRo9PBK-nLoFMIf0pmU9Mz6MuDu1ij6qdCM_aPjNteww9bA2QpXurbs10QUqt8vjDqq0BNqw5JQvWyiC6npRLRyFVhkpbcpzhmqhvnQ/s1600/Untitled+design.png&quot; height=&quot;226&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;As day 1 (really day 2) started and I realized it takes me 30 minutes to get from my hotel to Summit and working off bad in room coffee, I ponder my hotel choice for the event. Oh well, a quick grab of actual coffee (not hotel room coffee).... and on to the Vision Keynote!&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;So this if the official kick off of Summit, even though it really started yesterday. Great attendance, great vibe, and a great staff as we walk into the main room. The lights dim and the information starts flowing.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
OK, there was some great presentations, but you want to see a summary, not read me ramble on about software defined stuff or whatever. But, I do have to say that Citrix has the &quot;consumer&quot; experience first, and this is of course not a new idea. But, this has been forgotten by many. Not that the consumer comes first, but the experience of the consumer must come first.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
One other idea that Mark Templeton introduced was the software defined workspace. What makes up the software defined workspace idea is agility, manageability, and&amp;nbsp;&lt;u&gt;predicting&amp;nbsp;&lt;/u&gt;what users want before they know.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
Below is a quick list of the announcements during this keynote:&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;XenServer 6.5&lt;/b&gt;&amp;nbsp;- What I have been excited about during the beta testing of XenServer 6.5 is a 64bit dom0!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;XenApp online migration tool&lt;/b&gt;&amp;nbsp;- There are some powershell scripts to help migrate from XenApp 6.5 to 7.6, but this migration tool will make it that much easier.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Citrix Receiver X1&lt;/b&gt;&amp;nbsp;- A nice new clean interface, that can be branded, and other features like application ratings and bundles (sounds like folders). You can see the new receiver &lt;a href=&quot;https://www.youtube.com/watch?v=HIjCXnPB4XE&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Citrix XenMobile 10&lt;/b&gt;&amp;nbsp;- For more information, click &lt;a href=&quot;http://blogs.citrix.com/2015/01/13/xenmobile-10-what-experience-means-for-it/&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Session recording (a.k.a. Smart Auditor)&amp;nbsp;&lt;/b&gt;- Its funny how Citrix had some great features back in the day, then depreciated them, now bringing them back. I do give Citrix great credit in listening to customers and partners, and bringing them back. Again, they are focusing on the experience and this is very apparent.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WorkspacePod&lt;/b&gt;&amp;nbsp;- A complete Citrix certified integrated solution from the hardware to deliver workspaces.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CloudBridge Virtual WAN&lt;/b&gt;&amp;nbsp;- More information to come.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Linux virtual desktops and apps&amp;nbsp;&lt;/b&gt;- I am very excited about this. Now, I don&#39;t get very many requests for Linux virtual desktops, but I am a huge Linux fan and this makes me very happy!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Framehawk integration&lt;/b&gt;&amp;nbsp;- Where do I start? Framehawk helps with packet loss (yes I am over simplifying this). But to what extent? There was a demo with up to 10% loss over a WIFI connection with the user experience seeming to be unaffected except for the computer without using Framehawk. Nice, OK. Then they bumped up the packet loss to 50%! The computer not using Framehawk was unusable, but the computer using Framehawk was working just fine. Very, very, very impressed!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Citrix X1 Mouse&lt;/b&gt;&amp;nbsp;- Finally a mouse for iPad users!&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqxTtDFY2n9Zn_VFUoqI3tBJy-8HEWeN-rBlrk4y47beMqXB0odmfvijys_dd5CBfPtYYvPWRQbqlRdGn2duzn1uVohBfdMeP39I5XVIETDYvX3-JvviErcRfNpWPTpAvMD5iiTjB2rA/s1600/Untitled+design+(1).png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqxTtDFY2n9Zn_VFUoqI3tBJy-8HEWeN-rBlrk4y47beMqXB0odmfvijys_dd5CBfPtYYvPWRQbqlRdGn2duzn1uVohBfdMeP39I5XVIETDYvX3-JvviErcRfNpWPTpAvMD5iiTjB2rA/s1600/Untitled+design+(1).png&quot; height=&quot;226&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
After the keynote, off I went to partake of the many offerings of Citrix Summit 2015. First on the agenda was an instructor led lab about using the NetScaler 10.5 NITRO API. Now, I&#39;m not really a developer, even though I have and currently working on some custom solutions. This was the first time I was introduced to this method and using REST interfaces. It was very interesting learning how to manipulate NetScaler outside the CLI and GUI. For more information, click &lt;a href=&quot;http://support.citrix.com/proddocs/topic/netscaler-main-api-10-map/ns-nitro-rest-landing-page-con.html&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I finished out the day working on some more labs, like WAN optimization using CloudBridge. For more information, click &lt;a href=&quot;http://www.citrix.com/products/cloudbridge/overview.html&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Next I will be posting a summary of the final day of Citrix Summit 2015 minus the NDA stuff.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/7434169303148639050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2015/01/citrix-summit-2015-day-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/7434169303148639050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/7434169303148639050'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2015/01/citrix-summit-2015-day-2.html' title='Citrix Summit 2015: Day 1'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuPHhtLexvmykBYurMlWDC9TqJ_lkeE-qURM1dRo9PBK-nLoFMIf0pmU9Mz6MuDu1ij6qdCM_aPjNteww9bA2QpXurbs10QUqt8vjDqq0BNqw5JQvWyiC6npRLRyFVhkpbcpzhmqhvnQ/s72-c/Untitled+design.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-6669921376709473931</id><published>2015-01-12T23:02:00.000-08:00</published><updated>2015-02-08T10:07:16.232-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Citrix Summit"/><category scheme="http://www.blogger.com/atom/ns#" term="StoreFront"/><category scheme="http://www.blogger.com/atom/ns#" term="XenApp"/><title type='text'>Citrix Summit 2015: Day 0</title><content type='html'>&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujIpT5Qk_RQM4jtDEu7VCW6NgBE4-zkZ_PMxRj9zNANkAf-7eFLHujjsX5S-ES2xFSOLwlWJkaZSryA2zzkI1JZXCB909IMZUGlk7tKhk2h1-XW20KiuuPErCPiv8dE2MguoPBNjxkg/s1600/20150112_135547.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujIpT5Qk_RQM4jtDEu7VCW6NgBE4-zkZ_PMxRj9zNANkAf-7eFLHujjsX5S-ES2xFSOLwlWJkaZSryA2zzkI1JZXCB909IMZUGlk7tKhk2h1-XW20KiuuPErCPiv8dE2MguoPBNjxkg/s1600/20150112_135547.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
One flight delayed, and the airline pilot announcing &quot;what happens in Vegas will live with you forever&quot;.... Not really the exciting journey I was hoping for. But, once in Las Vegas, dropped our luggage off at the hotel (My wife got a special sticker on her baggage. I really think she packed some kettle bells in some hidden compartment, that suitcase was HEAVY!). &amp;nbsp;Once I found my way to The Venetian (A quick hop on the monorail, and a not so quick walk.), I made my way to the check-in to grab my badge and NEW BACKPACK!&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXGcKfqjatsp_uHc8kvq9e_1-0mul9Biyaf_9hWnmevc4JNXCmhRg3ARUIC3HKCpJMb-mWwTg2mvsNjzNfCMzd1ocL_59d9lg6PsMueNMTFN33ajnx7UuUyCfaMOePDuy-mESBkEXqfw/s1600/20150112_222007.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXGcKfqjatsp_uHc8kvq9e_1-0mul9Biyaf_9hWnmevc4JNXCmhRg3ARUIC3HKCpJMb-mWwTg2mvsNjzNfCMzd1ocL_59d9lg6PsMueNMTFN33ajnx7UuUyCfaMOePDuy-mESBkEXqfw/s1600/20150112_222007.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
Because of the late arrival, I wasn&#39;t able to get two self paced labs. No matter, as I am here to learn, not to regret as this is Vegas! I enter the self-paced lab area, a large room, with about half-full of like minded engineers and find my assigned seat. After perusing the catalog of courses, I settled on &quot;Upgrading Legacy XenApp To The New XenApp 7.6&quot;.&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
What was nice about this lab, was it was centered on end user experience and of course... acceptance which is sometimes very hard. They stepped through a simple upgrade process:&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Verify XenApp legacy functionality&lt;/li&gt;
&lt;li&gt;Configuring StoreFront for both XenApp versions&lt;/li&gt;
&lt;li&gt;Enabling application de-duplication in StoreFront&lt;/li&gt;
&lt;li&gt;Enabling a Web Interface type feel in StoreFront by disabling user subscriptions&lt;/li&gt;
&lt;li&gt;Exporting legacy farm data, then importing this data into XenApp 7.6&lt;/li&gt;
&lt;li&gt;Upgrading XenApp 6.5 servers with the new XenApp 7.6 virtual desktop agent (VDA)&lt;/li&gt;
&lt;li&gt;And of course verify&lt;/li&gt;
&lt;li&gt;Plus a bonus&amp;nbsp;exercise&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The whole takeaway is that the user experience is a focus during an upgrade and as well, ease of upgrade. For those that are still on XenApp 6.5 (or heaven forbid XenApp 5, of which I still see around) no need to fear an upgrade, only benefits to gain. Definitely looking forward to tomorrow morning!&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/6669921376709473931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2015/01/citrix-summit-2015-day-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/6669921376709473931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/6669921376709473931'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2015/01/citrix-summit-2015-day-1.html' title='Citrix Summit 2015: Day 0'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujIpT5Qk_RQM4jtDEu7VCW6NgBE4-zkZ_PMxRj9zNANkAf-7eFLHujjsX5S-ES2xFSOLwlWJkaZSryA2zzkI1JZXCB909IMZUGlk7tKhk2h1-XW20KiuuPErCPiv8dE2MguoPBNjxkg/s72-c/20150112_135547.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-8616300792261270542</id><published>2015-01-07T12:16:00.001-08:00</published><updated>2015-01-16T16:16:03.476-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Citrix Summit"/><title type='text'>Citrix Summit 2015</title><content type='html'>2015, a new year and time to get in shape! I&#39;m not talking about the gym and doing who knows how many reps of burpees (an evil vomit inducing exercise). No, I&#39;m talking about building up technical skills, shedding those unwanted legacy solutions, and gaining the business strength and endurance we all want at Citrix Summit 2015. For those of you who don&#39;t know, Citrix Summit is an event for Citrix Partners to grow their technical skills, businesses, and have fun (this year it is in Vegas!).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;The event really starts on Monday 1/12/15 (Citrix lists 1/13/15 as the start date) and ends on Wednesday afternoon with a partner appreciation party which is always fun. There are lots to choose from, from sales, business and various technical tracks.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Monday is really &quot;on your own&quot; day. They have self paced labs and other stuff. Not much to mention here, but definitely worth attending. Tuesday starts off with the Vision Keynote delivered by the ever so great Citrix leader CEO Mark Templeton and the VP of Sales Al Monserrat. After an always great keynote, they will let us loose to find our way in the web of sessions. I always find it hard to choose what sessions I want to attend. But, I do have a backup plan, well several. One, my colleague Brian McCarty is attending as well, so hopefully what I don&#39;t have a chance to see he will get the info and hopefully give me a brain dump. Two, Citrix usually posts some of the sessions on line later on.&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
Wednesday kicks off with another keynote, Tech Talks Keynote delivered by Tom Flink (Vice President, Worldwide Channels and Market Development Citrix), Jess Lipson (Vice President &amp;amp; General Manager, Documents Cloud Citrix), Sunil Potti (Vice President and General Manager, NetScaler Product Group Citrix), Dan McCall (Vice President, Product Management and Product Marketing, Client Virtualization Citrix), and Brian Dye (Vice President and General Manager, Mobile Platforms Group Citrix). Once again, we are let loose to pick and choose our own sessions. There are a couple of session on this day, that I am especially looking forward to attend.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;All in all, it look like a great event that I am excited to attend. Check back soon, because I plan on sharing what I learn (minus any NDA stuff). You can follow me on twitter during this event as well (&lt;a href=&quot;https://twitter.com/chris_keim&quot;&gt;https://twitter.com/chris_keim&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Sources:&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;Citrix. Citrix Summit [Web Page]. Retreived from http://www.citrixsummit.com</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/8616300792261270542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2015/01/citrix-summit-2015.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/8616300792261270542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/8616300792261270542'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2015/01/citrix-summit-2015.html' title='Citrix Summit 2015'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-6753395346702914142</id><published>2014-12-31T19:01:00.000-08:00</published><updated>2015-01-01T08:19:23.463-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="NetScaler Gateway"/><category scheme="http://www.blogger.com/atom/ns#" term="StoreFront"/><category scheme="http://www.blogger.com/atom/ns#" term="XenApp"/><category scheme="http://www.blogger.com/atom/ns#" term="XenDesktop"/><title type='text'>How to Force Sessions through NetScaler Gateway</title><content type='html'>It always happens. You start a project with a clear direction and wham, you get a curve ball. Something new pops up out of no where and you have to quickly scramble to address this well timed [sarcasm] addition and try to stay on schedule. Better yet, have the schedule already very aggressive based on a customers deadline of which you cannot go past or the gates of hell, otherwise known as the project managers fury come raining down and... OK, I&#39;m being a bit over dramatic, but you get the idea.&lt;br /&gt;
&lt;br /&gt;
The above scenario happened to me (minus the project managers fury) not too long ago during a project that had an unusually &amp;nbsp;aggressive time line. I had to deploy a full XenApp environment to several hundred users spread across 3 (maybe more) continents. This in itself is not complicated or hard, it was the time line that provided the stress as there was little wiggle room for surprises.&lt;br /&gt;
&lt;br /&gt;
Sure enough, as with most projects, there are surprises. This surprise was a bit more than what I wanted. I discovered, that the VLAN housing the XenApp environment, created by the client, was not accessible by any other location and was not able to be so because of an internal configuration they had. Not only this, they wanted to direct all sessions through NetScaler Gateway on the public side, but keep all the benefits of pass-through authentication, and pretty much everything else that makes sure an shortcut is presented on the users desktop with the published application and all they have to do is launch the shortcut.&lt;br /&gt;
&lt;br /&gt;
My requirements were:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Have all sessions directed through NetScaler Gateway on the public Internet.&lt;/li&gt;
&lt;li&gt;Keep pass-through authentication in place.&lt;/li&gt;
&lt;li&gt;Have users access a VLAN that they cannot access.&lt;/li&gt;
&lt;li&gt;Be able to view network metadata in Director per session.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
My first thought was how in the world was I going to keep pass-through authentication? I knew that not too long ago NetScaler Gateway does have the ability for pass-through authentication using kerberos. But, because of the time line, we did not have time to deal with that solution. Next, I came across StoreFront optimal gateway feature which fit exactly with what I was trying to accomplish as well as all my requirements could still be kept and it was simple to implement. The work flow for this setup is as follows:&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Citrix Receiver launches and contacts StoreFront for single-sign-on.&lt;/li&gt;
&lt;li&gt;StoreFront retrieves the published resource list from a Citrix Delivery Controller and forwards this to the endpoint.&lt;/li&gt;
&lt;li&gt;Citrix Receiver now sees the published resources available.&lt;/li&gt;
&lt;li&gt;The user clicks on the published resource and the application is launched over NetScaler Gateway.&lt;/li&gt;
&lt;li&gt;All session traffic runs through NetScaler Gateway.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
The StoreFront optimal gateway feature allows the Citrix Reciever to connect to StoreFront and then when the user launches a session, StoreFront directs the session through NetScaler Gateway of your choosing. Pass-through authentication works as you are authenticating against StoreFront and STA&#39;s are used when sessions are started through NetScaler Gateway. To combat the problem of users unable to access the XenApp VLAN, all I had to do was move the load balanced virtual server on NetScaler to a VLAN which all users had access. Problem solved, and quickly.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To configure StoreFront optimal gateway:&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Get the following information:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;The name of the farm as found in the StoreFront &quot;Manage Delivery Controllers&quot; section. Remember that XenApp used to have farms and not sites? Don&#39;t confuse this with the site name.&lt;/li&gt;
&lt;li&gt;Name of the NetScaler Gateway appliance as found in StoreFront &quot;NetScaler Gateway&quot; settings. I am talking about the logical name, not the URL, so whatever the name column has.&lt;/li&gt;
&lt;li&gt;The NetScaler Gateway URL for users to use. To direct users to the public IP, I had the internal DNS A record for the NetScaler Gateway site point to the public IP.&lt;/li&gt;
&lt;li&gt;And of course, the STA URLs. I would hope at least two.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;You need to modify the web.config file which is by default in C:\inetpub\wwwroot\Citrix\[store]&lt;store&gt;\web.config. Keep in mind it is the store name, not the storeweb directory. Make a backup of the web.config file. Did I mention to make a backup of the web.config file?&amp;nbsp;&lt;/store&gt;&lt;/li&gt;
&lt;li&gt;Open the web.config file with a text editor (notepad or whatever) and search for optimalGatewayForFarmsCollection&lt;optimalgatewayforfarmscollection&gt;. This is the section you want to modify.&lt;/optimalgatewayforfarmscollection&gt;&lt;/li&gt;
&lt;li&gt;Modify the text below with the information collected found in bold:&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;optimalgatewayforfarmscollection&gt;&lt;/optimalgatewayforfarmscollection&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;farm name=&quot;XenApp&quot;&gt;&lt;/farm&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;optimalgateway enablesessionreliability=&quot;true” useTwoTickets=&quot; false=&quot;&quot; key=&quot;_&quot; name=&quot;NetScaler Gateway&quot; stasbypassduration=&quot;00:05:00&quot; stasuseloadbalancing=&quot;true&quot;&gt;&lt;/optimalgateway&gt;&lt;/div&gt;
&lt;div&gt;
&lt;hostnames&gt;&lt;/hostnames&gt;&lt;/div&gt;
&lt;div&gt;
&lt;add hostname=&quot;remote.company.com:443&quot;&gt;&lt;/add&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;staurls&gt;&lt;/staurls&gt;&lt;/div&gt;
&lt;div&gt;
&lt;add staurl=&quot;http://10.10.0.10/scripts/ctxsta.dll&quot;&gt;&lt;/add&gt;&lt;/div&gt;
&lt;div&gt;
&lt;add staurl=&quot;http://10.10.0.11/scripts/ctxsta.dll&quot;&gt;&lt;/add&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJkO1-1CVWYbwCU3R_wUMSBBkPIQ_KAJcu7zS62PvHtd8WBwfsMpq8V-GzhF2WyTPORU0IQtKzpExB5T6kWPgxP6qjpWXy36a6M8YJImn-uWk2RWm2Zd7O6J7Ms3aXjVURzcDQQ5xjOQ/s1600/storefront.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJkO1-1CVWYbwCU3R_wUMSBBkPIQ_KAJcu7zS62PvHtd8WBwfsMpq8V-GzhF2WyTPORU0IQtKzpExB5T6kWPgxP6qjpWXy36a6M8YJImn-uWk2RWm2Zd7O6J7Ms3aXjVURzcDQQ5xjOQ/s1600/storefront.jpg&quot; height=&quot;257&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Save the file and perform the same steps on any other StoreFront servers you use and you should be set.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;This post was written in reference to the following platforms and versions:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;StoreFront 2.6&lt;/li&gt;
&lt;li&gt;XenDesktop 7.6&lt;/li&gt;
&lt;li&gt;NetScaler 10.5 Build 53.9&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Sources:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Citrix Systems, Inc.. (Jul 21, 2014). How to Force Connections through NetScaler Gateway Using &amp;nbsp;Optimal Gateways Feature of StoreFront [Article]. Retreived from &lt;a href=&quot;http://support.citrix.com/article/CTX200129&quot;&gt;http://support.citrix.com/article/CTX200129&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/6753395346702914142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2014/12/how-to-force-sessions-through-netscaler.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/6753395346702914142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/6753395346702914142'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2014/12/how-to-force-sessions-through-netscaler.html' title='How to Force Sessions through NetScaler Gateway'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJkO1-1CVWYbwCU3R_wUMSBBkPIQ_KAJcu7zS62PvHtd8WBwfsMpq8V-GzhF2WyTPORU0IQtKzpExB5T6kWPgxP6qjpWXy36a6M8YJImn-uWk2RWm2Zd7O6J7Ms3aXjVURzcDQQ5xjOQ/s72-c/storefront.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-772782210282708404</id><published>2014-06-04T15:10:00.002-07:00</published><updated>2015-05-14T16:17:08.893-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Directory"/><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><title type='text'>How to Reset Redirected Folder NTFS Permissions with PowerShell</title><content type='html'>I have been dealing with user redirected folders ever since Windows Server 2000. This is a great feature as many of you know, especially in Citrix environments where you do not want to keep data on XenApp servers or read-only images. Generally, you set it up &quot;correctly&quot; and it usually just works as long as you don&#39;t touch it much. Then you start to get requests to get into the users folders and you need to do so as an administrator, or you are wanting fix the security settings because someone has modified the NTFS permissions for several users to gain access, but failed to properly set the permissions back to the way it needs to be based on what Microsoft recommends. To fix a redirected folder store for a few users, not a big deal. But, to fix a redirected folder store for many users, you can imagine the millions of clicks that have to be done which usually scares people off.&lt;br /&gt;
&lt;br /&gt;
A couple of years ago, I had to fix permissions on a clients redirected folder store which contained about 1000 users. Instead of wasting my time and the clients money, I decided to create a script that would do what I needed. After I built, this script, we ran it against the clients environment and everything went as planned. All permissions were fixed as the customer request of adding administrator groups to the existing store so that they would not need to modify permissions to get into users folders which caused the problem in the first place. This script (and modifications of this script for various clients requirements) have been successfully run in many environments, which in turn has saved countless hours and money.&lt;br /&gt;
&lt;br /&gt;
Before I go over the script instructions, I want to go over the permissions as recommended by Microsoft that the script modifies (Note: This script does not modify share permissions):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;u&gt;NTFS permissions for the root folder:&lt;/u&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Creator Owner&lt;/b&gt; - Full Control, Subfolders and Files Only&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Administrator&lt;/b&gt; - None (the script will give you the option to modify this to allow full rights to administrators)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Security group of users that will be using folder redirection&lt;/b&gt; - List Folder / Read Data, Create Folders / Append Data - This Folder Only&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Local System&lt;/b&gt; - Full Control, This Folder, Subfolders and Files&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;u&gt;NTFS permissions for the users&#39; redirected folders&lt;/u&gt;:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;%Username%&lt;/b&gt; - Full Control, Owner of Folder&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Local System&lt;/b&gt; - Full Control&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Administrators&lt;/b&gt; - None (the script will give you the option to modify this to allow full rights to administrators)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
To successfully run this script, the following is required:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Before doing anything, backup your data. I take no responsibility of this script when you run it in your own environment.&lt;/li&gt;
&lt;li&gt;Test the script in your environment, take a snap shot of the data and verify the results are what you want before running the script on your production data.&lt;/li&gt;
&lt;li&gt;Takeown.exe is required as part of the script. This will probably already be on the system that will run the script, but just make sure.&lt;/li&gt;
&lt;li&gt;The domain name of the domain you will be running this script in (e.g. domain.local)&lt;/li&gt;
&lt;li&gt;A UNC path to the redirected folders (e.g. \\server\redirfolders)&lt;/li&gt;
&lt;li&gt;An Active Directory administrative security group. This group is used as part of the process to reset the permissions as well as if you want to have administrative access, this group will be left, otherwise it will be removed once the permissions are set.&lt;/li&gt;
&lt;li&gt;An Active Directory user security group that is using the redirected folder feature.&lt;/li&gt;
&lt;li&gt;PowerShell run with administrative rights.&lt;/li&gt;
&lt;li&gt;The user that will be launching this script to be part of the administrative group mentioned above.&lt;/li&gt;
&lt;li&gt;For better performance, disable antivirus when running this script.&lt;/li&gt;
&lt;li&gt;Make sure to disable any replication that may be setup for this data while you run this script (please note, if you are using DFSR, this will cause the algorithm used by DFSR see the files and folders as updated and copy according to your DFSR configuration).&lt;/li&gt;
&lt;li&gt;Do not run this script while users are accessing the system.&lt;/li&gt;
&lt;li&gt;Did I mention to backup prior to running the script.&lt;/li&gt;
&lt;li&gt;When running the script against the test data, make note of the amount of data as well as how long the script took to process the data to help make a calculation of how long the script will take on your production data.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
To run the script:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Download and place it in a directory of your choosing. It is recommended to run this on the same server as where the files reside.&lt;/li&gt;
&lt;li&gt;Open PowerShell as an administrator.&lt;/li&gt;
&lt;li&gt;Since this is really a PowerShell function, you need to add the function to your PowerShell session with the following dot sourcing:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&quot;. ./set-redirectedfolderpermissions.ps1&quot;&lt;/li&gt;
&lt;li&gt;Do not include the &quot;&lt;/li&gt;
&lt;li&gt;There is a space between the 2 periods in the beginning&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Once you dot source the script which now adds the function to use in your PowerShell session, to run the function:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;set-redirectedfolderpermissions&lt;/li&gt;
&lt;li&gt;If you use auto complete, make sure to remove the .ps1 at the end.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;You will be prompted for the information mentioned above in the requirements:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;DomainName - Enter the domain name (e.g. domain.local).&lt;/li&gt;
&lt;li&gt;RootProfileUNCDir - Enter the UNC path to the root folder (e.g. \\server\redirfolders).&lt;/li&gt;
&lt;li&gt;AdminGroup - Enter the admin group that will be used to set the appropriate permissions as well as which group you want to assign administrative rights to the users folders (e.g. Domain Admins).&lt;/li&gt;
&lt;li&gt;UserGroup - Enter the user group that uses redirected folders (e.g. Domain Users).&lt;/li&gt;
&lt;li&gt;GiveAdminAccess - Specified in either Y or N to allow the administrators group access to users folders (e.g. Y)&lt;/li&gt;
&lt;li&gt;GiveLocalAdminAccess - Specified in either Y or N to allow local administrators rights to users folders (e.g. N)&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;After you enter the above information, you will be asked to confirm if everything is correct, use Y or N to confirm.&lt;/li&gt;
&lt;li&gt;The script will run, and depending on the amount of data, it might run for a long time. You will see output in the PowerShell screen of what is happening.&lt;/li&gt;
&lt;li&gt;In some instances, the script might have to run a couple of times to get everything set correctly.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
To download the script, please go to my scripts page or click &lt;a href=&quot;https://app.box.com/s/byoo3dot5qgbhqsnohu2&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Please let me know what you think, or if you have any questions or issues.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/772782210282708404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2014/06/how-to-reset-redirected-folder-ntfs.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/772782210282708404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/772782210282708404'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2014/06/how-to-reset-redirected-folder-ntfs.html' title='How to Reset Redirected Folder NTFS Permissions with PowerShell'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-6437044525390467242</id><published>2014-05-30T15:20:00.001-07:00</published><updated>2014-05-30T15:20:44.769-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="NetScaler"/><category scheme="http://www.blogger.com/atom/ns#" term="NetScaler Gateway"/><title type='text'>Book Review: Implementing NetScaler VPX</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.packtpub.com/implementing-netscaler-vpx/book#author&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ6q3PKTFdmvVkYN9oKCPHUOJZjG1V4vqcCisKz9yaov2h73gY3Vh9ItZDsNlBQ7cm2ftrRCEUjP2h1rvv3Lw5WrnK9elBNntf9Yze-dTzhwGvSbYljq0wJ-xnJdIj98_82ehrPepiVw/s1600/2673EN.jpg&quot; height=&quot;320&quot; width=&quot;255&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Recently, I had the pleasure of reading &quot;Implementing NetScaler VPX&quot; written by &lt;a href=&quot;http://msandbu.wordpress.com/&quot; target=&quot;_blank&quot;&gt;Marius Sandbu&lt;/a&gt; and published by &lt;a href=&quot;http://www.packtpub.com/&quot; target=&quot;_blank&quot;&gt;Packet Publishing&lt;/a&gt;. Packet Publishing had asked me to read the book and provide a review. Before I begin, I want to give you a bit of my background to help understand my point of view. I am a consultant and have been architecting, implementing, and administering Citrix products since MetaFrame 1.8. In most of my projects, NetScaler is involved and I am architecting the integration and/or implementation which touches on many different aspects of the client environment, not just their XenApp or XenDesktop environment. NetScaler can be a complex subject as it bridges between systems and network.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Author&lt;/h3&gt;
&quot;Implementing NetScaler VPX&quot; is written by Marius Sandbu who is a Consultant and Trainer in Norway. He has been heavily involved with Microsoft for over 9 years, during that time he was awarded a Microsoft MVP title for his involvement in the Microsoft community.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Overview&lt;/h3&gt;
&lt;br /&gt;
Again, NetScaler is a complex subject, and depending on what you are trying to accomplish, it can be very complex. But most clients that I run into initially start of with NetScaler because they want secure remote access to their XenApp or XenDesktop environment. With this in mind, I was wondering how the book would be laid out, and Marius Sandbu used the most common approach many of my clients take.&lt;br /&gt;
&lt;br /&gt;
Marius starts out with an overview of NetScaler, platforms, editions, features, and modes. Brief scenarios are used to help identify when you would use a certain platform or edition. In the same chapter he walks you through a base setup. Then he proceeds to review networking components. One of the bits I really did like is that Marius opted to not use the wizards, and used command line instead. Running through wizards is great and easy, but it doesn&#39;t give you the same understanding when you have to perform the steps in order on your own. And of course, I am a command line junkie, so I was glad he opted for this input method.&lt;br /&gt;
&lt;br /&gt;
Now, NetScaler Gateway makes its appearance in the book. In implementing NetScaler Gateway, you can gloss over some nice features, and just get it up and running. But, Marius decided not to go that route. He first does an overview of the features and dives right in to deploying ICA Proxy using StoreFront. Most deployments I have done use ICA proxy, but there are a few that needed a SSL VPN and Marius goes over these steps as well. One bit of information I was glad to see included is the NetScaler out-of-the-box SSL vulnerability fix as well as how to test this for this vulnerability.&lt;br /&gt;
&lt;br /&gt;
Up next is load balancing. Oh boy do I love load balancing. To help the reader get a better understanding of the subject, Marius starts of with load balancing of a generic web application. This is a good primer before heading into the next sections of load balancing Citrix products. Prior to NetScaler 10.1 load balancing TFTP, namely for Provisioning Services, was a task and not easily understood. But after NetScaler 10.1 came out load balancing TFTP became as easy as load balancing DNS. Marius of course included the section on how to load balance TFTP, as well as other topics outside the realm of Citrix that are commonly configured with NetScaler. Second to load balancing Citrix services and setting up NetScaler Gateway is almost always load balancing Exchange. Now, Exchange load balancing changes with each version of Exchange that is released. Marius goes over what is needed to load balance an Exchange 2013 environment. He also touches on load balancing SharePoint 2013 and SQL.&lt;br /&gt;
&lt;br /&gt;
The next subject covered is compression and caching. He does a great overview of these subjects. Now, if you have seen caching at work, give it a try as it can be eye opening. For example, a query that takes 60 seconds to process can be cached and returned to the client within seconds. Compression is a must read, especially if you are front ending web services to clients.&lt;br /&gt;
&lt;br /&gt;
High availability (HA) and global server load balancing (GSLB). These are simple ideas to grasp, but GSLB in particular can be difficult to implement if you have never done so before. Now Marius does show you how to configure HA, but only does an overview of GSLB. Next, Marius goes on to explain how to perform traffic analysis. I really like that Marius included this in his book, although it doesn&#39;t take up much room, it is a must know for anybody who implements or administers NetScaler. Then finally, Marius touches on app firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Impressions&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
I honestly did enjoy this book. The way Marius laid out the subjects, even the order he chose, and the level of depth of the subjects was just right. NetScaler goes much deeper than this book, but for the intended audience, the amount of depth is perfect. I highly recommend this book, if you are just starting out with NetScaler, or even if you have been working with NetScaler.</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/6437044525390467242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2014/05/book-review-implementing-netscaler-vpx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/6437044525390467242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/6437044525390467242'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2014/05/book-review-implementing-netscaler-vpx.html' title='Book Review: Implementing NetScaler VPX'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ6q3PKTFdmvVkYN9oKCPHUOJZjG1V4vqcCisKz9yaov2h73gY3Vh9ItZDsNlBQ7cm2ftrRCEUjP2h1rvv3Lw5WrnK9elBNntf9Yze-dTzhwGvSbYljq0wJ-xnJdIj98_82ehrPepiVw/s72-c/2673EN.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-8270056576980773372</id><published>2014-03-28T01:31:00.004-07:00</published><updated>2015-02-14T11:09:53.219-08:00</updated><title type='text'>Updated: Provisioning Services TFTP Load Balancing on NetScaler</title><content type='html'>To be able to provide Provisioning Services (PVS) High Availability (HA), you need to setup TFTP load balancing with NetScaler. This is because of DHCPs inability to provide multiple TFTP hosts to a client in a smart way. NetScaler overcomes DHCPs limitation. The process for a typical request is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;A DHCP request is sent by a client, at which the DHCP server responds with an IP address and 2 DHCP options, 66 and 67. Option 66 holds the TFTP server IP, and option 67 holds the boot file name.&lt;/li&gt;
&lt;li&gt;The preboot execution environment (PXE) on the client then makes a request to the TFTP IP.&lt;/li&gt;
&lt;li&gt;NetScaler now makes a load balancing decision and will forward the request accordingly.&lt;/li&gt;
&lt;li&gt;After the TFTP server receives the request, it then sends the client the initial segment of its boot file.&lt;/li&gt;
&lt;li&gt;The client will then boot, and start talking directly with the Provisioning Servers.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Prior to NetScaler 10.1, load balancing TFTP services took a bit of effort and the process is explained in a previous post &lt;a href=&quot;http://www.christopherkeim.com/2012/04/tftp-load-balancing-on-netscaler-using.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. There are other unsupported methods that some have used like using HTTP to distribute the boot file. Now load balancing TFTP is quick and easy. Also, an actual TFTP monitor is available to verify the health of the service, not like last time where you had to rely on the basic ping monitor. You do not need to setup Direct Server Return (DSR) anymore as well as no need to add loopback adapters to the Provisioning Servers. And, of course, you don&#39;t need to distribute the boot file via HTTP.&lt;br /&gt;
&lt;br /&gt;
The basic overview of what you need to do:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Create a TFTP monitor on NetScaler.&lt;/li&gt;
&lt;li&gt;Create a virtual server on NetScaler pointing to your Provisioning Servers.&lt;/li&gt;
&lt;li&gt;Configure DHCP options 66 and 67.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
For those that need a bit more help in navigating how to perform the above:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Make sure the NetScaler appliance has 10.1 firmware or better.&lt;/li&gt;
&lt;li&gt;Open the NetScaler GUI and login.&lt;/li&gt;
&lt;li&gt;Create the server objects:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;b&gt;Traffic Management&lt;/b&gt;\&lt;b&gt;Load Balancing&lt;/b&gt;\&lt;b&gt;Servers.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Add.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Enter a name and FQDN or IP address, then click &lt;b&gt;Create&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Repeat step 5 for additional Provisioning Servers that are acting as TFTP servers.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Create a new monitor:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;b&gt;Traffic Management&lt;/b&gt;\&lt;b&gt;Load Balancing&lt;/b&gt;\&lt;b&gt;Monitors&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Add&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Give the monitor a name.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;Type &lt;/b&gt;to &lt;b&gt;USER&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Special Parameters&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Browse &lt;/b&gt;and select &lt;b&gt;nstftp.pl&lt;/b&gt; for the &lt;b&gt;Script Name&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Create&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Create the service group:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;b&gt;Traffic Management&lt;/b&gt;\&lt;b&gt;Load Balancing&lt;/b&gt;\&lt;b&gt;Service Groups&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Add&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Give the service group a name.&lt;/li&gt;
&lt;li&gt;Select &lt;b&gt;TFTP&lt;/b&gt; for the &lt;b&gt;protocol&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;b&gt;Server Based&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Select both server objects created earlier and type &lt;b&gt;69 &lt;/b&gt;for the &lt;b&gt;port&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click on the &lt;b&gt;Monitors &lt;/b&gt;tab.&lt;/li&gt;
&lt;li&gt;Add the monitor you created earlier.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Create&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Create the virtual server:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;b&gt;Traffic Management&lt;/b&gt;\&lt;b&gt;Load Balancing&lt;/b&gt;\&lt;b&gt;Virtual Servers&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Add&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Give the virtual server a name.&lt;/li&gt;
&lt;li&gt;Select &lt;b&gt;TFTP &lt;/b&gt;for the &lt;b&gt;protocol&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Give the virtual server an IP address.&lt;/li&gt;
&lt;li&gt;Click on the &lt;b&gt;Service Groups&lt;/b&gt; tab.&lt;/li&gt;
&lt;li&gt;Select the service group create earlier.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Create&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Configure DHCP:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Add DHCP option 66 on your DHCP server with the value of the TFTP virtual server IP address assigned above.&lt;/li&gt;
&lt;li&gt;Add DHCP option 67 on your DHCP server with the boot name file (e.g. ARDBP32.bin).&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Test:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Install the Windows TFTP client and run the following:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;tftp [IP of TFTP virtual server] GET [name of boot file] [name of boot file]&lt;/li&gt;
&lt;li&gt;E.g. tftp 10.1.16.10 GET ardbp32.bin ardbp32.bin&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;b&gt;This post was written in reference to the following platforms and versions:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Provisioning Services 6.x&amp;nbsp;+&amp;nbsp;&lt;/li&gt;
&lt;li&gt;NetScaler 10.1&amp;nbsp;+&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/8270056576980773372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2014/03/updated-provisioning-services-tftp-load.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/8270056576980773372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/8270056576980773372'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2014/03/updated-provisioning-services-tftp-load.html' title='Updated: Provisioning Services TFTP Load Balancing on NetScaler'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-1127037937611324567</id><published>2014-03-24T19:46:00.000-07:00</published><updated>2014-03-24T19:46:15.632-07:00</updated><title type='text'>IT Reading Material</title><content type='html'>If you are like me, I devour reading material. I do a tremendous amount of reading for my career as well as hobbies, and just for fun. I have read books from Microsoft press, O&#39;Reilly Media, &lt;a href=&quot;http://t.co/dFvv199Cen&quot; target=&quot;_blank&quot;&gt;Packt Publishing&lt;/a&gt;, and others.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The one publishing company that I have read as of late is &lt;a href=&quot;http://t.co/dFvv199Cen&quot; target=&quot;_blank&quot;&gt;Packt Publishing&lt;/a&gt;. They have been able to produce books on a wide breadth of technology subjects (a few years ago, their book subjects were lacking for my taste, but not so anymore). They have many great books, like:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/citrix-access-gateway-vpx-5-04-essentials/book&quot; target=&quot;_blank&quot;&gt;Citrix Access Gateway VPX 5.04 Essentials&lt;/a&gt; by Andrew Mallet&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/windows-server-2012-hyper-v/book&quot; target=&quot;_blank&quot;&gt;Windows Server 2012 Hyper-V: Deploying Hyper-V Enterprise Server Virtualization Platform&lt;/a&gt; by&amp;nbsp;Zahir Hussain Shah&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/windows-server-2012-automation-with-powershell/book&quot; target=&quot;_blank&quot;&gt;Windows Server 2012 Automation with PowerShell Cookbook&lt;/a&gt; by Ed Goad&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/windows-server-2012-hypervisor-based-cookbook/book&quot; target=&quot;_blank&quot;&gt;Windows Server 2012 Hyper-V Cookbook&lt;/a&gt; by&amp;nbsp;Leandro Carvalho&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/microsoft-application-virtualization-advanced-guide/book&quot; target=&quot;_blank&quot;&gt;Microsoft Application Virtualization Advanced Guide&lt;/a&gt; by Augusto Alvarez&lt;/li&gt;
&lt;li&gt;And many more&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
They are now celebrating 2000 titles and have some great deals to offer, right now they are offering buy one get one free on all ebooks. This offer won&#39;t last long (I feel like an infomercial), so if you have thought about purchasing from them or you have been thinking about buying a book on a particular technical subject, now is the time (again, the infomercial thing, what is happening).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://t.co/dFvv199Cen&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtbXlP9jibYnzm_uv5GKbpZ-C5_j0qCRRqkSHCUxeLurj9UFP7uBfPPydOwzdhdi_trKIqf8jUOf_9iXLihh4NOPe_0E3bm_gsW3Zg-f7BzPncWUJyjMDORGwinlBSjAZcf5FWmyifoQ/s1600/unnamed.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/1127037937611324567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2014/03/it-reading-material.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/1127037937611324567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/1127037937611324567'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2014/03/it-reading-material.html' title='IT Reading Material'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtbXlP9jibYnzm_uv5GKbpZ-C5_j0qCRRqkSHCUxeLurj9UFP7uBfPPydOwzdhdi_trKIqf8jUOf_9iXLihh4NOPe_0E3bm_gsW3Zg-f7BzPncWUJyjMDORGwinlBSjAZcf5FWmyifoQ/s72-c/unnamed.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-5388030898982955108</id><published>2014-03-23T01:50:00.001-07:00</published><updated>2014-03-23T01:50:39.911-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Equallogic"/><category scheme="http://www.blogger.com/atom/ns#" term="SAN"/><category scheme="http://www.blogger.com/atom/ns#" term="Server Virtualization"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>Updated: XenServer Virtual Machine Error on Boot &quot;The VDI is not available&quot;</title><content type='html'>Last year, I had wrote about this issue in regards to particular case I was working on, which you can find &lt;a href=&quot;http://www.christopherkeim.com/2013/09/xenserver-virtual-machine-error-on-boot.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. I am updating the troubleshooting methods and techniques not based on a specific scenario. Hopefully this makes it more useful to others.&lt;br /&gt;
&lt;br /&gt;
When trying to boot a VM (virtual machine) residing on XenServer, you may get the error &quot;The VDI is not available&quot;. This error can present itself for different reasons, but there are 2 common reasons why this happens:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The VDI (virtual disk image) is missing.&lt;/li&gt;
&lt;li&gt;The VDI is locked to a host where the VM was running.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;1. Get basic startup error information &lt;/u&gt;-&lt;/b&gt;&amp;nbsp;To help narrow down the cause of the issue, we need more information. We can do this by trying to start the VM from the CLI (command line interface). To start the VM from the CLI run the following command either through the console of the XenServer host or through a SSH session to the XenServer host:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;xe vm-start vm=&#39;VM name&#39; on=&#39;XenServer host name&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;&lt;b&gt;2. Get detailed startup error information&lt;/b&gt; &lt;/u&gt;- To get more detailed information about this error, review the log file. You can do this from the CLI by running the following command:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;less /var/log/SMlog&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;3. Verify if the XAPI database thinks the VM is still running and if the VDI is locked&lt;/u&gt;&lt;/b&gt; - For more information, you can see if the XAPI database thinks the VM is still running. This can happen if a host goes down with the VM running on it and the XAPI database isn&#39;t updated accordingly. To view the power state of the VM, run the following command:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;xe vm-list name-label=&#39;VM name&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
To find out if the VDI is locked open in the XAPI database, run the following command:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;xe vdi-list params=all uuid=&#39;VM uuid&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
If the VDI is locked you will see something similar to&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;sm-config (MRO): host_OpaqueRef:6685cde1-9f08-f16b-aecc-c4e13df9c772: RW. The OpaqueRef line is a host reference, so the uuid will be different for you.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;4. If the VM is not running and the VDI is not locked&lt;/u&gt;&lt;/b&gt; - If the VM is not running and the VDI is not locked, one possibility is the VDI has been removed. You will need to verify the VDI location and files. The other possibility is if the LUN where the VDI resides is having issues. If you are not running StorageLink, you can try to create a VM using that same storage repository (SR) to verify if there are any issues. If you are using StorageLink, run the following to help determine the name of the LUN on the SAN:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;xe vdi-param-list uuid=&#39;VM uuid&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Look for the line that starts with location (RO):. Look for the following number on your SAN for the LUN names, it may not be the whole number showing, but you will be able to perform a partial match with the number and also size of the LUN. For example,&lt;span style=&quot;font-family: inherit;&quot;&gt; XenServer shows&amp;nbsp;6233ac13-1a4c-49a9-8041-1b2b9c16b579, and the SAN shows&amp;nbsp;&lt;span style=&quot;orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;6233ac131a4c49a980411b2 for the LUN name. Once you locate the LUN on the SAN verify if there are any issues on the SAN.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;5. If the power state is running, but you know the VM is powered down&lt;/u&gt;&lt;/b&gt; - If the power state is running and the VM is powered down, try resetting the power state on the VM. First on each host that is still up, run the following command to verify the VM is not running on one of them:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;list_domains | grep &#39;VM uuid&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
If a result is returned, then the VM is running on that host. When you are sure that the VM is not running on a live host, run the following command to reset the power state:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;xe vm-reset-powerstate uuid=&#39;VM uuid&#39; --force&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;6. Power state is not running, VDI is accessible, but VDI is locked&lt;/u&gt; &lt;/b&gt;- If the VDI is locked and the VM is verified off, you can reset the lock on the VDI. To do this, you will need to forget the VDI. To start you will need the UUID of the VDI:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;xe vdi-list name-label=&#39;VDI name&#39;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you get the UUID of the VDI you want to forget, run the following command:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;xe vdi-forget uuid=&#39;VDI uuid&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;After the command finishes, re-scan the SR and locate the VDI. Once the VDI has been located, re-attach it to the VM and try to start the VM.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;If you are running XenServer 6.1, you can run the &lt;i&gt;resetvdis.py&lt;/i&gt; script which will perform the reset operation for you. For previous versions of XenServer, the script exists, but all VMs on the SR that you run the script against must be shut down. To run the script in a XenServer 6.1 environment (always double check to make sure if the VM is running somewhere else using the command list_domains | grep &#39;VM uuid&#39; on each host):&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;/opt/xensource/sm/resetvdis.py single &#39;VDI uuid&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
Hopefully&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;the above steps will help you if you run into this particular error. If you have any comments, questions, or&amp;nbsp;criticisms, please leave them below.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;This post was written in reference to the following platforms and versions:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;XenServer 5.6 - 6.2&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/5388030898982955108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2014/03/updated-xenserver-virtual-machine-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5388030898982955108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5388030898982955108'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2014/03/updated-xenserver-virtual-machine-error.html' title='Updated: XenServer Virtual Machine Error on Boot &quot;The VDI is not available&quot;'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-6840551404711731769</id><published>2014-02-22T23:25:00.000-08:00</published><updated>2014-02-22T23:27:04.976-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bash Script"/><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning Server"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning Services"/><category scheme="http://www.blogger.com/atom/ns#" term="PVS"/><category scheme="http://www.blogger.com/atom/ns#" term="Server Virtualization"/><category scheme="http://www.blogger.com/atom/ns#" term="XenDesktop"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>Updated XenServer Bash Script</title><content type='html'>Originally I had written a script to eject all ISOs from every VM that has an ISO attached as well as insert an ISO into every VM in a XenServer pool. The purpose was to assist in attaching a boot ISO to Provisioning Services (PVS) Target Devices, or removing the ISO image from all VMs in a pool. You can find the original script &lt;a href=&quot;http://1bitatatime.blogspot.com/2013/01/eject-insert-iso-to-all-guest-vms-in.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. I have updated the script to provide more functionality, namely to assist in transitioning away from PVS boot ISOs to network boot using TFTP, and back again if you need to roll back for any reason. Below are the features of the updated script:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;List VMs with an ISO attached in a XenServer pool.&lt;/li&gt;
&lt;li&gt;List VMs with no ISO attached in a XenServer pool.&lt;/li&gt;
&lt;li&gt;Eject all ISOs and set the VMs to network boot in XenServer pool. Only VMs with ISOs will be affected.&lt;/li&gt;
&lt;li&gt;Insert an ISO and set the VMs to boot from ISO in a XenServer pool. Only VMs with no ISO will be affected.&lt;/li&gt;
&lt;li&gt;Eject all ISOs from all VMs in a XenServer pool.&lt;/li&gt;
&lt;li&gt;Insert an ISO to all VMs in a XenServer pool. Only VMs with no ISO will be affected.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Normally, to transition from ISO boot to network TFTP boot, you need to remove the boot ISO and then set the boot order on the VM to network. Instead of thousands of clicks for hundreds of desktops, this script automates this task. It will search all VMs with ISOs attached, eject the ISO, and switch the boot device to network. Warning, this script does this for every VM in the pool that has an ISO attached. So, if you have some VMs that you don&#39;t want this to run against, make sure to remove any ISO attached to them. If for some reason, a VM does get altered, its an easy fix through XenCenter GUI to set the correct boot device and attach an ISO if so desired. As part of any migration, a roll back plan is always necessary, and this script delivers. If for some reason you need to roll back to a boot ISO, this script will set the boot device to the ISO as well as insert a named ISO into every VM that does not have an ISO attached. Again, please be cautious if you have other VMs that you don&#39;t want to alter by adding an ISO to them or change them back after the script finishes.&lt;br /&gt;
&lt;br /&gt;
During a XenServer upgrade, the upgrade process likes all ISOs to be ejected from all VMs in the XenServer pool. If you only have a few servers, going to each one in XenCenter is not a big deal. But, what if you have a lot of VMs that you need to eject the ISO from ahead of time? This script automates the process, so you don&#39;t have to go to each VM and figure out if there is an ISO attached and eject if found. I recently used this as part of a XenServer 5.6 FP1 to 6.2 upgrade which worked flawlessly.&lt;br /&gt;
&lt;br /&gt;
To run the script:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Upload the script to a XenServer host using WinSCP (or some other method) to /usr/local/bin (or whatever other location you want).&lt;/li&gt;
&lt;li&gt;From the XenServer CLI type the following to allow execution of the script:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;chmod&amp;nbsp;+x xenserver.sh&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;From the XenServer CLI type the following to run the script:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;./xenserver.sh&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Once the script executes, you will see the following menu:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglA8F_sg4q5hdKlqtKyuZgJiwZLgUQJAnCSJjPa-mBZxYUsf3PzrH9AYMThewcQln2Yg3pmFJb45Vv2hQPXwXEdNNMe8vTgouuDZ4aov2xk7-7zpLYfr1dutHuj_mrvG5x4S8VUYx-jg/s1600/xenserver.sh.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglA8F_sg4q5hdKlqtKyuZgJiwZLgUQJAnCSJjPa-mBZxYUsf3PzrH9AYMThewcQln2Yg3pmFJb45Vv2hQPXwXEdNNMe8vTgouuDZ4aov2xk7-7zpLYfr1dutHuj_mrvG5x4S8VUYx-jg/s1600/xenserver.sh.png&quot; height=&quot;47&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
To navigate, just type the number of the option you want and press enter. The only input required is the name of the ISO dependent on the option you choose.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://app.box.com/s/8iwec0blsysgm4sq1dfj&quot; target=&quot;_blank&quot;&gt;Download the script here.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This post was written in reference to the following platforms and versions:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;XenServer 5.6 FP1 - 6.2 SP1.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/6840551404711731769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2014/02/updated-xenserver-bash-script.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/6840551404711731769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/6840551404711731769'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2014/02/updated-xenserver-bash-script.html' title='Updated XenServer Bash Script'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglA8F_sg4q5hdKlqtKyuZgJiwZLgUQJAnCSJjPa-mBZxYUsf3PzrH9AYMThewcQln2Yg3pmFJb45Vv2hQPXwXEdNNMe8vTgouuDZ4aov2xk7-7zpLYfr1dutHuj_mrvG5x4S8VUYx-jg/s72-c/xenserver.sh.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-1915969675252225942</id><published>2013-09-01T16:57:00.001-07:00</published><updated>2014-03-23T01:52:43.181-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Equallogic"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="SAN"/><category scheme="http://www.blogger.com/atom/ns#" term="Server Virtualization"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>XenServer Virtual Machine Error on Boot &quot;The VDI is not available&quot;</title><content type='html'>&lt;b&gt;&lt;u&gt;3/23/14 - This post has been updated and you can found the updated version&amp;nbsp;&lt;a href=&quot;http://www.christopherkeim.com/2014/03/updated-xenserver-virtual-machine-error.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Recently, a fellow engineer was working on an Exchange environment late one evening for a client. While he was working on the Exchange server (all virtual machines running on XenServer), the machine froze and he had to force a restart. He attempted to boot the machine but received the error:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&quot;The VDI is not availabe&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
After some initial troubleshooting by the engineer, I received a call from him seeking assistance. After continually narrowing down and isolating the problematic VDI (Virtual disk image) I was able to resolve the issue. Below are the steps I took to narrow down and ultimately resolve this issue:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;First I checked for a possible issue with the ISO repository, I verified that there were no ISOs attached to the VM.&lt;/li&gt;
&lt;li&gt;I then reviewed the log /var/log/SMlog &amp;nbsp;on the XenServer host that is trying to boot the VM to see if there were any other underlying issues.&lt;/li&gt;
&lt;li&gt;In reviewing the log, I saw error 46, which correlates to the error message &quot;the VDI is not available&quot;.&lt;/li&gt;
&lt;li&gt;I now need to determine the UUID of the SR that holds the VDI for further troubleshooting:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;You can get the SR UUID from XenCenter by clicking on the SR and navigating to the General tab.&lt;/li&gt;
&lt;li&gt;Or, you can use the CLI with the command:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;xe sr-list name-label=[name of the SR]&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Now we need to find the UUID of the VDI(s):&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;From the CLI run the following command:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;xe vm-disk-list name-label=[name of VM]&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Once you get the UUID of the VDI(s) we need to verify if the VDI is stuck open:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;From the CLI run the following command:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;xe vdi-param-list uuid=[UUID of the VDI]&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Look for the line that starts with &quot;sm-config (MRO):&quot;&lt;/li&gt;
&lt;li&gt;If that line has &quot;RW&quot; in it and the VM is turned off, then the pool has placed a lock on the VDI, not allowing anyone else to use it. In my case the VDI was not locked, but in case it is for you, all you need to do is the following:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;You can reboot the XenServer host or try the following:&lt;/li&gt;
&lt;li&gt;From the CLI run the following command:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;xe vdi-forget uuid=[UUID of the VDI]&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Run a SR scan, you can either do it from the CLI or from XenCenter:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;CLI:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;xe sr-scan uuid=[UUID of the SR]&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;GUI:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Click on the SR with the troublesome VDI.&lt;/li&gt;
&lt;li&gt;Navigate to the Storage tab.&lt;/li&gt;
&lt;li&gt;Click the Rescan button.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Now you might be able to start the VM. Again, I did not go through the above procedure since the VDI did not have a lock on it.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;If the VDI is not stuck open and you are not using Storage Link, check yourSAN to make sure there are no issues with the LUN.&lt;/li&gt;
&lt;li&gt;If you are using StorageLink, to find the LUN:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;From the CLI:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;xe vdi-param-list uuid=[UUID of the VDI]&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Look for the line that starts with location (RO):&lt;/li&gt;
&lt;li&gt;Look for this number in your SAN, the whole number will probably not be showing, but you can match most all of the numbers. Also, to help narrow down which LUNs you are looking at, sort by LUN size according to the VDI size.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;For example, XenServer shows:&amp;nbsp;6233ac13-1a4c-49a9-8041-1b2b9c16b579&lt;/li&gt;
&lt;li&gt;The SAN shows for the LUN name:&amp;nbsp;6233ac131a4c49a980411b2b&lt;/li&gt;
&lt;li&gt;Notice how the SAN LUN name only shows the first 24 characters of the UUID&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;The issue this time around for me ended up being a SAN issue. The LUN was set to thin provisioning and had reached its max threshold, and the SAN set the LUN to offline, thereby creating the issue in XenServer.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/1915969675252225942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2013/09/xenserver-virtual-machine-error-on-boot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/1915969675252225942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/1915969675252225942'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2013/09/xenserver-virtual-machine-error-on-boot.html' title='XenServer Virtual Machine Error on Boot &quot;The VDI is not available&quot;'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-5924079479237461549</id><published>2013-08-19T23:41:00.000-07:00</published><updated>2013-08-19T23:41:34.684-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Hyper-V"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning Server"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning Services"/><category scheme="http://www.blogger.com/atom/ns#" term="PVS"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server 2008 R2"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>How to Update The Provisioning Services (PVS) Agent or Hypervisor Tools The Easy Way</title><content type='html'>Either you are updating the Provisioning Services (PVS) client on a target device or you are updating the hypervisor tools, there are a few methods to choose from. &amp;nbsp;One of the quickest and least error prone (in my opinion) methods to perform this is by using the VHD attach method. &amp;nbsp;This method works with XenServer, Hyper-V, and VMware. &amp;nbsp;I have also used this method using PVS 5.6 and 6.1. &amp;nbsp;Instead of reverse imaging, or keeping a master VM to re-image from, all you need is the latest merged VHD. &amp;nbsp;I say merged because you will need to perform a merge (versions&amp;nbsp;+ base) into a single VHD if using PVS 6.1. Below are the steps to perform this in a XenServer or VMware environment. &amp;nbsp;Hyper-V is almost self-explanatory, as you can boot to the VHD without much effort.&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;VMware&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I have used this method to migrate PVS images from VMware 4.x to 5.x, updating the VMware tools and hardware versions as well as applying PVS agent hotfixes. &amp;nbsp;This method is a bit more involved than using Hyper-V or XenServer, but it works well.&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Merge all versions and the base image into one VHD from within PVS.&lt;/li&gt;
&lt;li&gt;Download and install &lt;a href=&quot;http://www.winimage.com/download.htm&quot; target=&quot;_blank&quot;&gt;WinImage&lt;/a&gt;. &amp;nbsp;There is a 30 day trial for WinImage, which should be fine to complete this process.&lt;/li&gt;
&lt;li&gt;Using WinImage, convert the VHD file to VMDK.&lt;/li&gt;
&lt;li&gt;Copy the VMDK file to the VMware datastore.&lt;/li&gt;
&lt;li&gt;Create a new VM using the VMDK you just copied.&lt;/li&gt;
&lt;li&gt;Log in with the local administrator account (you may have to rejoin the domain).&lt;/li&gt;
&lt;li&gt;Uninstall the PVS agent and reboot.&lt;/li&gt;
&lt;li&gt;Install any VMware tools updates or VMware hardware version updates.&lt;/li&gt;
&lt;li&gt;Install the PVS agent.&lt;/li&gt;
&lt;li&gt;At this point you can either copy the VMDK image and use WinImage to convert the image back to VHD, or use the PVS agent wizard.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
XenServer&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Using XenServer is a bit quicker than using VMware as you don&#39;t have to perform any VHD conversions.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Create a NFS share on the PVS server:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;&lt;u&gt;Windows 2003&lt;/u&gt;:&lt;/b&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Using WinSCP, copy the following files from XenServer to the desktop:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;/etc/passwd&lt;/li&gt;
&lt;li&gt;/etc/group&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Install NFS on Windows:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Launch the Add/Remove Windows Components Wizard in the Control Panel&lt;/li&gt;
&lt;li&gt;Select the following:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Other Network File and Print Services | Microsoft Services for NFS&lt;/li&gt;
&lt;li&gt;Other Network File and Print Services | Microsoft Services for NFS | User name mapping&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Configure NFS:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Open Microsoft Services for NFS.&lt;/li&gt;
&lt;li&gt;Right-click &quot;User name mapping&quot; and click &quot;Properties&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;Use password and group files&quot;.&lt;/li&gt;
&lt;li&gt;Browse to the passwd file you downloaded to your desktop for the password file.&lt;/li&gt;
&lt;li&gt;Browse to the group file you downloaded to your desktop for the group file.&lt;/li&gt;
&lt;li&gt;Click &quot;OK&quot;.&lt;/li&gt;
&lt;li&gt;Right-click &quot;User maps&quot; and click &quot;Create map&quot;.&lt;/li&gt;
&lt;li&gt;Verify the domain and select an administrator account.&lt;/li&gt;
&lt;li&gt;For the Unix user specify &quot;root&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;Add&quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Create a NFS share:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Create a new directory.&lt;/li&gt;
&lt;li&gt;Right-click the new directory and select &quot;NFS Sharing&quot; tab.&lt;/li&gt;
&lt;li&gt;Select &quot;Share this folder&quot;.&lt;/li&gt;
&lt;li&gt;Check &quot;Allow anonymous access&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;Permissions&quot;.&lt;/li&gt;
&lt;li&gt;Check &quot;Allow root access&quot;.&lt;/li&gt;
&lt;li&gt;Set the &quot;Type of access:&quot; to &quot;Read-Write&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;OK&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;OK&quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;&lt;b&gt;&lt;u&gt;Windows 2008&lt;/u&gt;:&lt;/b&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Install the file role service &quot;Services for Network File System&quot;.&lt;/li&gt;
&lt;li&gt;Create a NFS share:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Create a directory.&lt;/li&gt;
&lt;li&gt;Right-click the directory and select &quot;NFS Sharing&quot; tab.&lt;/li&gt;
&lt;li&gt;Enable sharing and specify a name.&lt;/li&gt;
&lt;li&gt;Click &quot;Manage NFS Sharing&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;Permissions&quot;.&lt;/li&gt;
&lt;li&gt;Set &quot;Type of access&quot; to &quot;Read-Write&quot;&lt;/li&gt;
&lt;li&gt;Check &quot;Allow root access&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;OK&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;OK&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;OK&quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Create a new SR in XenServer and point to the NFS share you created earlier. &amp;nbsp;Remember, the NFS share is case sensitive.&lt;/li&gt;
&lt;li&gt;Create a new VM in XenServer with the same specifications as the existing target devices. &amp;nbsp;Choose the new NFS SR to hold the vDisk for this VM. &amp;nbsp;Do not start this VM automatically.&lt;/li&gt;
&lt;li&gt;Within PVS, set the image you want to update to private mode.&lt;/li&gt;
&lt;li&gt;Copy or cut the VHD to the NFS share directory. &amp;nbsp;You should see another VHD in the NFS share directory with the UUID of that VHD.&lt;/li&gt;
&lt;li&gt;Rename the VHD you just copied into the NFS share directory with the same name of the VHD that was created when you created the VM within XenServer.&lt;/li&gt;
&lt;li&gt;Boot the VM within XenServer.&lt;/li&gt;
&lt;li&gt;Uninstall the PVS agent.&lt;/li&gt;
&lt;li&gt;Restart the VM and update any hypervisor tools.&lt;/li&gt;
&lt;li&gt;Install the new PVS agent.&lt;/li&gt;
&lt;li&gt;Shutdown the VM and cut or copy the VHD back to the PVS store and rename it appropriately back to the original name.&lt;/li&gt;
&lt;li&gt;Boot to the image using one of your target devices to make sure all is working and then close the image as you normally do.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/5924079479237461549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2013/08/how-to-update-provisioning-services-pvs.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5924079479237461549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5924079479237461549'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2013/08/how-to-update-provisioning-services-pvs.html' title='How to Update The Provisioning Services (PVS) Agent or Hypervisor Tools The Easy Way'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-4631239938967567355</id><published>2013-05-27T12:00:00.002-07:00</published><updated>2013-06-03T21:47:37.138-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server 2012"/><title type='text'>Windows Server 2012 Automation with PowerShell Cookbook</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP3CD8I2Xc016x0JHPKSSiHQ1WShHIV8g-tPbt06cYuCthJTYqdzlj3xVCzbrC6ziCPIlPJR2d3bQ77EfhO_FsgFxLgAgP58H5M10y-3HjVZHb85xjmtaG-TTb2Qj-KLZm6ELR5eHOdw/s1600/9465EN_0+(1).jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP3CD8I2Xc016x0JHPKSSiHQ1WShHIV8g-tPbt06cYuCthJTYqdzlj3xVCzbrC6ziCPIlPJR2d3bQ77EfhO_FsgFxLgAgP58H5M10y-3HjVZHb85xjmtaG-TTb2Qj-KLZm6ELR5eHOdw/s1600/9465EN_0+(1).jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Recently, I read the book &quot;Windows Server 2012 Automation with PowerShell Cookbook&quot; by Ed Goad and published by Packt. &amp;nbsp;This book starts out with some PowerShell primers, terminology, and structure as well as sample code. &amp;nbsp;After that, the book focuses on separate typically Windows Administration tasks with examples of how to automate those tasks with sample code. &amp;nbsp;For example, the 5th chapter &quot;Managing Storage with PowerShell&quot; goes over the various bits of managing storage on Windows Server 2012 starting out how to manage NTFS file permissions. &amp;nbsp;Then the next chapter flows nicely with &quot;Managing Network Shares with PowerShell&quot;.&lt;br /&gt;
&lt;br /&gt;
I like how this book is laid out, you can read straight through or pick your topic of what you are currently working on. &amp;nbsp;Also, this is a great book for PowerShell scripters to get great examples of tasks to be done through PowerShell. &amp;nbsp;If you are new to PowerShell, this is a great resource to dive in, although you might want to spend some time on chapter 1 &quot;Understanding PowerShell Scripting&quot; to get some of the basics down. &amp;nbsp;If you are new to scripting in general, this may be a tough read, but not impossible.&lt;br /&gt;
&lt;br /&gt;
As a PowerShell scripter myself, I am definitely keeping this book in my library as a reference and I suggest you do as well. &amp;nbsp;You can find the book here&amp;nbsp;&lt;a href=&quot;http://www.packtpub.com/windows-server-2012-automation-with-powershell/book&quot;&gt;http://www.packtpub.com/windows-server-2012-automation-with-powershell/book&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/4631239938967567355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2013/05/windows-server-2012-automation-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/4631239938967567355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/4631239938967567355'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2013/05/windows-server-2012-automation-with.html' title='Windows Server 2012 Automation with PowerShell Cookbook'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP3CD8I2Xc016x0JHPKSSiHQ1WShHIV8g-tPbt06cYuCthJTYqdzlj3xVCzbrC6ziCPIlPJR2d3bQ77EfhO_FsgFxLgAgP58H5M10y-3HjVZHb85xjmtaG-TTb2Qj-KLZm6ELR5eHOdw/s72-c/9465EN_0+(1).jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-5124172450057679540</id><published>2013-01-02T12:29:00.000-08:00</published><updated>2014-03-28T00:47:54.138-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning Server"/><category scheme="http://www.blogger.com/atom/ns#" term="XenDesktop"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>Eject / Insert an ISO to All Guest VMs in a Resource Pool at Once</title><content type='html'>&lt;br /&gt;
3/28/14 -&amp;nbsp;&lt;a href=&quot;http://www.christopherkeim.com/2014/02/updated-xenserver-bash-script.html&quot; target=&quot;_blank&quot;&gt;This post and script has been updated and you can find it here.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In a XenDesktop / XenServer (5.6 - 6.1) environment, there are a couple ways to boot virtual desktops using Provisioning Services.&amp;nbsp; I usually setup a load balanced TFTP virtual server on NetScaler and load balance between multiple Provisioning Servers.&amp;nbsp; I have written a post on configuring load balanced TFTP via NetScaler &lt;a href=&quot;http://1bitatatime.blogspot.com/2012/04/tftp-load-balancing-on-netscaler-using.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&amp;nbsp; But, I do run across some environments where they are using boot to ISOs for all their virtual desktops.&amp;nbsp; This works fine, but what happens if the virtual desktops loose the ISO mapping because of an issue with the ISO store.&amp;nbsp; This isn&#39;t a big deal if you are only dealing with a few virtual desktops, you just re-add the ISO through XenCenter.&amp;nbsp; But, what if you have hundreds or more of virtual desktops?&amp;nbsp; Without an automated way of either ejecting or inserting ISOs you will waste probably hours and end up with some really sore wrists.&lt;br /&gt;
&lt;br /&gt;
I wrote a bash script to handle this type of situation.&amp;nbsp; The script is menu driven for ease of use.&amp;nbsp; The following are the features of the script:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Able to list all VMs in a resource pool with an ISO attached.&amp;nbsp; This does not include the name of the ISO, just the name of the VM.&lt;/li&gt;
&lt;li&gt;Able to list all VMs in a resource pool without an ISO attached.&lt;/li&gt;
&lt;li&gt;Able to eject an ISO from every VM in the resource pool.&lt;/li&gt;
&lt;li&gt;Able to insert an ISO to every VM in the resource pool.&lt;/li&gt;
&lt;/ul&gt;
To be able to run the script, please do the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;After you download the script, upload the script to the XenServer host.&amp;nbsp; I recommend uploading the script to&amp;nbsp; /usr/local/bin.&amp;nbsp; To upload the script you can use WINSCP.&lt;/li&gt;
&lt;li&gt;Once the script is uploaded, you will need to enable the script to execute.&amp;nbsp; From either the console or a Putty session, type the following:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;cd /usr/local/bin&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;chmod +x iso.sh&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;To run the script, from either the console or a Putty session, type the following:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;./iso.sh&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
Once the script executes, you will see the following menu:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsNE-KNNf2IPM6DIObTLyehpP8REJM26kkpvB_FRCINJUCX2Q-RtrZnxgcLHZz1QL7Qp8RUV1lgos9a5fJCi6TLaXYaU-2gTOHxOxfAvmdqll6OeAq_MSxS51DylRNfRhUBCoIWkfkEg/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsNE-KNNf2IPM6DIObTLyehpP8REJM26kkpvB_FRCINJUCX2Q-RtrZnxgcLHZz1QL7Qp8RUV1lgos9a5fJCi6TLaXYaU-2gTOHxOxfAvmdqll6OeAq_MSxS51DylRNfRhUBCoIWkfkEg/s320/1.png&quot; height=&quot;59&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
To navigate, just type the number of the option you want and press enter.&amp;nbsp; The only other input required is when you want to insert an ISO.&amp;nbsp; &lt;u&gt;This option will insert the ISO to every VM in the resource pool that does not have an ISO currently attached, so be careful.&lt;/u&gt;&amp;nbsp; To insert an ISO, perform the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Type &lt;b&gt;4 &lt;/b&gt;and press enter.&lt;/li&gt;
&lt;li&gt;Enter the file name of the ISO you want to insert.&amp;nbsp; This must be the full ISO name, like xs-tools.iso.&amp;nbsp; This ISO must also be present in your ISO repository.&amp;nbsp; If you mistype the file name or the ISO does not exist in your ISO repository, you will see the error &quot;Error: CD &lt;iso earlier=&quot;earlier&quot; name=&quot;name&quot; type=&quot;type&quot;&gt; not found&quot;.&lt;/iso&gt;&lt;/li&gt;
&lt;/ol&gt;
This is a basic automation script, but also has a lot of potential for added functionality.&amp;nbsp; Let me know if you have any questions or comments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.box.com/s/hrrrwrj1ubphxi3mdw6d&quot; target=&quot;_blank&quot;&gt;Download script here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This post was written in reference to the following platforms and versions:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;XenServer 5.6, 6.02, and 6.1 &lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/5124172450057679540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2013/01/eject-insert-iso-to-all-guest-vms-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5124172450057679540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5124172450057679540'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2013/01/eject-insert-iso-to-all-guest-vms-in.html' title='Eject / Insert an ISO to All Guest VMs in a Resource Pool at Once'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsNE-KNNf2IPM6DIObTLyehpP8REJM26kkpvB_FRCINJUCX2Q-RtrZnxgcLHZz1QL7Qp8RUV1lgos9a5fJCi6TLaXYaU-2gTOHxOxfAvmdqll6OeAq_MSxS51DylRNfRhUBCoIWkfkEg/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-8870824538725468368</id><published>2012-12-21T18:42:00.001-08:00</published><updated>2012-12-27T12:57:48.432-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hyper-V"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><title type='text'>Windows Server 2012 Hyper-V Cookbook Review</title><content type='html'>&lt;div&gt;
I recently read &quot;Windows Server 2012 Hyper-V Cookbook&quot; from Packt Publishing written by Leandro Carvalho.&amp;nbsp; The book starts off with server requirements and how to determine if the hardware you are using is compatible.&amp;nbsp; Then it goes on to enabling and installing Hyper-V and then performing basic configurations as well as integrating several different Windows components to help manage the system.&amp;nbsp; The format is an overview, describe how to perform a task, and then describe a bit more in detail.&lt;br /&gt;
&lt;br /&gt;
This book is good for someone who is beginning their virtualization journey.&amp;nbsp; The book is full of how-to and overviews.&amp;nbsp; It does a good job on describing how to perform tasks.&amp;nbsp; If you are wanting to setup a lab with Hyper-V for testing and more discovery, this book will help you get there.&amp;nbsp; Also, in the appendix, there is a good overview of hypervisors and how they work in relation to actual hosts.&lt;br /&gt;
&lt;br /&gt;
There is no design or integration with enterprise-level components besides clustering and Hyper-V Replica in this book, so if that is what you are looking for, then you will need additional texts in addition to this book.&amp;nbsp; The book does briefly mention a comparison to VMWare but does not include XenServer, of which all 3 should be considered if embarking and evaluating hypervisors.&amp;nbsp; Some of the methods mentioned for managing the hypervisor including monitoring and backing up is geared more towards small business when there is not a lot of systems to manage or lack of funds to acquire enterprise type tools.&lt;br /&gt;
&lt;br /&gt;
All-in-all, Microsoft Hyper-V is a good option to help build your cloud whether public, private or hybrid.&amp;nbsp; And if you are just getting started in testing Hyper-V, this book is a good resource to pull from.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/8870824538725468368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2012/12/windows-server-2012-hyper-v-cookbook.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/8870824538725468368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/8870824538725468368'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2012/12/windows-server-2012-hyper-v-cookbook.html' title='Windows Server 2012 Hyper-V Cookbook Review'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-4549942831599783243</id><published>2012-12-10T01:51:00.000-08:00</published><updated>2015-02-14T10:55:20.427-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Access Gateway"/><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="NetScaler"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Interface"/><category scheme="http://www.blogger.com/atom/ns#" term="XenApp"/><title type='text'>&quot;Could not log on&quot; or &quot;Unexpected Response&quot; Error While Using Citrix Receiver through Access Gateway</title><content type='html'>&lt;b&gt;Scenario&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You have a Citrix XenApp 6.5 farm setup behind Access Gateway with Web Interface installed on the NetScaler.&amp;nbsp; Users access the Web Interface from their workstations through Access Gateway just fine.&amp;nbsp; But, for mobile access, users receive either a &quot;could not log on&quot; or &quot;unexpected response&quot; error on their mobile device and they are not able to log on.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Troubleshooting Steps&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Verify authentication is being handled properly, look at the logs on the NetScaler and for Access Gateway.&lt;/li&gt;
&lt;li&gt;Verify your session policies for Citrix Reciever are setup properly with the correct policy rules and order.&lt;/li&gt;
&lt;li&gt;Check to see that &quot;Clientless Access&quot; is set to allow, in either the global defaults for Access Gateway, or in the session policy itself for mobile devices.&lt;/li&gt;
&lt;/ol&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/4549942831599783243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2012/12/could-not-log-on-or-unexpected-response.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/4549942831599783243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/4549942831599783243'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2012/12/could-not-log-on-or-unexpected-response.html' title='&quot;Could not log on&quot; or &quot;Unexpected Response&quot; Error While Using Citrix Receiver through Access Gateway'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-1385091035874218495</id><published>2012-07-30T12:59:00.000-07:00</published><updated>2013-01-04T09:59:15.141-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>VM Does Not Respond to Restart or Shutdown Commands</title><content type='html'>&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;In XenServer, not too often you may have a VM that is not responsive to shutdown or restart commands through XenCenter and most likely has the yellow icon on it indicating that it is in process of doing something. &amp;nbsp;You may have even tried to restart the host, but the host is waiting for the VMs to shutdown but they won&#39;t so you cannot restart the host except by pulling the plug in which you do not want to do. &amp;nbsp;Below are some steps to try and resolve the issue starting from easy to last resorts.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;SSH or go to the console of the host that houses the troubled VM and perform the xe-toolstack-restart command. &amp;nbsp;If this does not fix your issue go to step 2.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;The next possible culprit may be a stuck task. &amp;nbsp;Perform the following commands to cycle through any tasks that may be keeping the VM stuck:&lt;/span&gt;&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;To list all tasks: &amp;nbsp;xe task-list&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;To cancel a task: xe task-cancel uuid=[uuid of task found from the previous step]&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;After canceling any problematic tasks, check to see if your VM is still unresponsive. &amp;nbsp;If still unresponsive, proceed to step 4.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;If you made it this far, then the problem most likely is that the dom-id for the VM in XenServer control domain is unresponsive and needs to be terminated:&lt;/span&gt;&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;Find the UUID of the VM. &amp;nbsp;You can do this through XenCenter, the UUID is found on the General tab of the VM.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;Connect to the host that houses the VM through the console or SSH.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;Run the following command: cd /opt/xensource/debug&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;Run the following command: list_domains | grep [UUID of the problematic VM]&lt;uuid of=&quot;&quot; problematic=&quot;&quot; the=&quot;&quot; vm=&quot;&quot;&gt;&lt;/uuid&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;The output format is [Dom ID]&amp;nbsp;&lt;dom id=&quot;&quot;&gt;| [VM UUID]&amp;nbsp;&lt;vm uuid=&quot;&quot;&gt; | [&lt;/vm&gt;&lt;/dom&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Tahoma;&quot;&gt;VM state]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;Run the following command: ./xenops destroy_domain -domid [&lt;dom found=&quot;&quot; id=&quot;&quot; in=&quot;&quot; previous=&quot;&quot; step=&quot;&quot;&gt;&lt;/dom&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Tahoma;&quot;&gt;Dom ID found in previous step]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;Run the following command: xe-toolstack-restart&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;Give it a few seconds and go back to XenCenter, the VM should go to a shutdown state (again give it a few seconds to refresh)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;border-collapse: separate; border-spacing: 0px; font-family: Tahoma;&quot;&gt;The last and not recommended method is to power-cycle your host. &amp;nbsp;You shouldn&#39;t have to do this step if you follow the above correctly (at least I haven&#39;t ever had to do this for a stuck VM).&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/1385091035874218495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2012/07/vm-does-not-respond-to-restart-or.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/1385091035874218495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/1385091035874218495'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2012/07/vm-does-not-respond-to-restart-or.html' title='VM Does Not Respond to Restart or Shutdown Commands'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-995205718514849606</id><published>2012-06-27T15:50:00.000-07:00</published><updated>2012-12-27T13:00:08.272-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="License Appliance"/><category scheme="http://www.blogger.com/atom/ns#" term="XenDesktop"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>Enable SSH Access on a Citrix License Appliance</title><content type='html'>A customer recently started to get not enough license errors while connecting to their XenDesktop environment. &amp;nbsp;The customer uses a Citrix License Appliance, hosted in their XenServer pool. &amp;nbsp;I verified they were out of licenses by going to the web interface of the license appliance. &amp;nbsp;I then went to the console of the license appliance and quickly verified there are users listed as having a license but do not exist anymore. &amp;nbsp;So, instead of trying to go through each user line by line through the console, I wanted to export that information so the client could review the list and then we could take the appropriate steps. &amp;nbsp;Trying to copy almost 500 users listed did not work. &amp;nbsp;So, instead I needed to enable SSH access so I could then copy the output file generated and send it off for review. &amp;nbsp;Below are the steps taken to enable SSH access on the Citrix License Appliance:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Connect to the console of the Citrix License Appliance through XenCenter.&lt;/li&gt;
&lt;li&gt;Login with root access.&lt;/li&gt;
&lt;li&gt;Open the following file with a text editor like vi: &amp;nbsp;vi /etc/sysconfig/iptables&lt;/li&gt;
&lt;li&gt;Add the following line: -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT&lt;/li&gt;
&lt;li&gt;Save the file and exit the text editor.&lt;/li&gt;
&lt;li&gt;Run the following command: service iptables restart&lt;/li&gt;
&lt;li&gt;To make the SSH service start&amp;nbsp;every time&amp;nbsp;you boot the appliance, run the following command: chkconfig sshd on&lt;/li&gt;
&lt;li&gt;To start the SSH service, run the following command: service sshd start&lt;/li&gt;
&lt;li&gt;To verify the license appliance is listening on port 22, run the following command: netstat -tulpn&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
After performing the above, you should be able to access your license appliance through SSH. &amp;nbsp;At this point, I ran the udadmin -list -a &amp;gt; liclist.txt command to save the list of users with licenses to a text file. &amp;nbsp;Then, I used WinSCP to copy that text file over to send to the client.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/995205718514849606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2012/06/enable-ssh-access-on-citrix-license.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/995205718514849606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/995205718514849606'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2012/06/enable-ssh-access-on-citrix-license.html' title='Enable SSH Access on a Citrix License Appliance'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-4559045450742986935</id><published>2012-06-24T23:13:00.002-07:00</published><updated>2012-12-27T13:00:22.060-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App-V"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><title type='text'>Microsoft Application Virtualization Advanced Guide</title><content type='html'>&lt;br /&gt;
With virtualization, there are multiple solutions that can be combined to create a personlized architecture for a company. &amp;nbsp;One of those options is application virutualization. &amp;nbsp;Augusto Alvarez does a good job in explaining the architecture and components involved in Microsoft&#39;s App-V as well as the overall lifecycle and architecture of an App-V solution.&lt;br /&gt;
&lt;br /&gt;
For those that have a little experience, the second chapter is where they might want to jump to. &amp;nbsp;The second chapter goes into sequencing applications, this is where App-V engineers want to pay attention to make sure the process is done correctly and Augusto goes over this very well. &amp;nbsp;Chapter 3 talks about deploying the package just created. &amp;nbsp;The next bit that is very important for an App-V engineer is troubleshooting and chapter 5 handles this nicely. &amp;nbsp;What happens next depends on your environment, but Augusto has this handled as well. &amp;nbsp;Whether you need to scale out your deployment, integrate SCCM, or integrate it into your VDI environment, the information is well layed out.&lt;br /&gt;
&lt;br /&gt;
You should have looked into App-V or have some experience prior to reading this book as it hits the ground running, but for those that want to get the most out of App-V, you should read this book. &amp;nbsp;To read more about this book, please click on the link below:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.packtpub.com/microsoft-application-virtualization-advanced-guide/book&quot;&gt;http://www.packtpub.com/microsoft-application-virtualization-advanced-guide/book&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/4559045450742986935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2012/06/microsoft-application-virtualization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/4559045450742986935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/4559045450742986935'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2012/06/microsoft-application-virtualization.html' title='Microsoft Application Virtualization Advanced Guide'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-5386913794603697927</id><published>2012-05-13T14:09:00.000-07:00</published><updated>2012-12-27T13:01:03.295-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="NetScaler"/><title type='text'>NetScaler DataStream and DataStream Caching</title><content type='html'>&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;There are many awesome features in NetScaler, DataStream and DataStream caching add to the gambit to help bring NetScaler into a new environment, or leverage an existing implementation and add to the value already experienced. &amp;nbsp;There are reasons why you would want to use DataStream and DataStream caching together, or by themselves. &amp;nbsp;To help parse the use cases, below are a few:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Load balancing multiple SQL servers is a no-brainer use case scenario. &amp;nbsp;If you need to leverage multiple SQL servers for performance, NetScaler is the solution. &amp;nbsp;Within this category, there are a couple ways you can configure NetScaler based on your SQL design.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;First method in configuring a load balanced solution is in a SQL master / slave database architecture. &amp;nbsp;In this scenario, you have a SQL server(s) for writes, and other SQL servers for reads. &amp;nbsp;NetScaler will parse the query and determine based on policies, whether to send the traffic to the master SQL server(s) for writes, or send the traffic to the slave SQL servers for reads. &amp;nbsp;To accomplish this, you would need the following objects created on the NetScaler:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Load balancing services - One service for each SQL server.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Load balancing master virtual server - This virtual server will be bound to the master SQL server services.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Load balancing slave virtual server - This virtual server will be bound to the slave SQL server services.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Content switching virtual server - This virtual server will be used for client connections. &amp;nbsp;The virtual server will then forward the SQL traffic to the appropriate load balanced virtual server (master or slave) based on policies.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Content switching policy - This is where you define how to forward your traffic. &amp;nbsp;You can create a policy that listens for &quot;select\&quot; and forward that traffic to the slave virtual servers for read actions. &amp;nbsp;Then all write actions will by default go to the master virtual server.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;The second method in configuring a load balanced solution is the token method. &amp;nbsp;With the token method, you create a token on the NetScaler and the NetScaler will gather the token value from the client. &amp;nbsp;Thereby, sending all like tokens to the same backend SQL server. &amp;nbsp;For instance, if you create a token on the NetScaler to listen for &amp;nbsp;database names, all client requests that are going to the same database will be forwarded to a SQL server, the next database (different database name) requested will then go to another SQL server. &amp;nbsp;Below are some sample expressions that can be used to create tokens:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;mysql mssql=&quot;&quot;&gt;.REQ.QUERY.TEXT&lt;/mysql&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;mysql mssql=&quot;&quot;&gt;.REQ.QUERY.TEXT(n)&lt;/mysql&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;mysql mssql=&quot;&quot;&gt;.REQ.QUERY.COMMAND&lt;/mysql&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;mysql mssql=&quot;&quot;&gt;.CLIENT.USER&lt;/mysql&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;mysql mssql=&quot;&quot;&gt;.CLIENT.DATABASE&lt;/mysql&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;MYSQL.CLIENT.CAPABILITIES&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;To accomplish the token based load balanced method, you will need the following objects on your NetScaler:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Load balanced services - One load balanced service per SQL server.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Load balancing virtual server - One load balanced virtual server for client requests with the load balanced method set to &quot;token&quot; and the rule expression of your choice. &amp;nbsp;The load balanced services will be bound to this virtual server.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;With either of the 2 load balanced options above, or if you only have a single SQL server you can add DataStream caching on reads. &amp;nbsp;With DataStream caching, the main advantage is to take queries that take a long time to process, to a mere fraction of a second to send back to the client. &amp;nbsp;To configure DataStream caching, you will need the following objects:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Load balanced services - One load balanced service per SQL server.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Load balancing virtual server - Minimum, one load balanced virtual server for client requests.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Cache Selector - A selector is a filter that locates particular objects in a content group to reduce any possible duplicate cached content.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Content Group - Minimum, one content group. &amp;nbsp;This is where the query cache will be stored.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;SQL Cache Policy - This is where you define your expression on when to cache.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;In testing, I have seen requests that take around 80 seconds, down to .03 seconds. &amp;nbsp;There is some obvious questions in regards to caching. &amp;nbsp;What happens if you update the record, how do you let NetScaler know to invalidate the cache? &amp;nbsp;There are a couple of methods that you can take advantage of. &amp;nbsp;First, you can set timeouts on the cache in seconds. &amp;nbsp;Second, you can create a policy so that if the NetScaler processes a write action, the policy will invalidate the cache. &amp;nbsp;Once the cache is invalidated, the system will wait for a query that matches the configured policy and cache the response. &amp;nbsp;Any subsequent querys to the same data will be retrieved from the NetScaler cache instead of the SQL server. &amp;nbsp;Then, either the cache timeout or the policy that invalidates the cache will take action and the process starts over.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;So, whether you have a single or multiple SQL servers, with DataStream and/or DataStream caching you will definitely see an improvement with performance. &amp;nbsp;As always, please let me know what you think.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/5386913794603697927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2012/05/netscaler-datastream-and-datastream.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5386913794603697927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5386913794603697927'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2012/05/netscaler-datastream-and-datastream.html' title='NetScaler DataStream and DataStream Caching'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-5452170166260996671</id><published>2012-04-24T11:48:00.003-07:00</published><updated>2012-12-27T13:01:17.216-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="XenServer"/><title type='text'>NICs Disappear in XenServer After Reboot or Hotfix Installation</title><content type='html'>&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;During a XenServer reboot or hotfix installation when there are multiple XenServers in the pool, you may run into an issue where the NICs seem to&amp;nbsp;disappear. &amp;nbsp;Also, if you try to run XE commands, you may get the error &quot;The host is still booting&quot;. &amp;nbsp;In the cases I have seen this issue, the problem is what the problematic XenServer thinks is the pool master when in fact the pool master is a different host. &amp;nbsp;Below are the steps I went through to diagnose and resolve this issue:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Go to the hosts command line interface (CLI).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;&quot;&gt;Type&amp;nbsp;&lt;b&gt;ifconfig&lt;/b&gt;&amp;nbsp;and verify the underlying system sees the NICs and that they are up.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;b&gt;\var\log\xensource.log&lt;/b&gt;&amp;nbsp;and review the log entries. &amp;nbsp;In my case, it was stating that it was trying to contact the pool master, but was not receiving a response. &amp;nbsp;I knew my pool master was up and functional as the other XenServer hosts did not have an issue.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;b&gt;\xensource\pool.conf&lt;/b&gt;&amp;nbsp;and modify the IP address found inside the file to the current pool master IP.&lt;/li&gt;
&lt;li&gt;At the CLI, type&amp;nbsp;&lt;b&gt;xe-toolstack-restart&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Let me know if you have any questions or comments.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/5452170166260996671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2012/04/nics-disappear-on-xenserver-after.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5452170166260996671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/5452170166260996671'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2012/04/nics-disappear-on-xenserver-after.html' title='NICs Disappear in XenServer After Reboot or Hotfix Installation'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5407051802472655071.post-7007788758718727708</id><published>2012-04-04T23:01:00.001-07:00</published><updated>2015-02-14T11:08:18.390-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Citrix"/><category scheme="http://www.blogger.com/atom/ns#" term="NetScaler"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning Server"/><title type='text'>TFTP Load Balancing on NetScaler using Direct Server Return</title><content type='html'>&lt;a href=&quot;http://www.christopherkeim.com/2014/03/updated-provisioning-services-tftp-load.html&quot; target=&quot;_blank&quot;&gt;3/28/14 - A new post with updated information can be found here.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
To be able to provide Provisioning Server (PVS) High Availability (HA), there are a few options. &amp;nbsp;One option stands out, direct server return (DSR). &amp;nbsp;With DSR, NetScaler provides the initial load balancing to an appropriate TFTP server, and then the TFTP and the client talk directly freeing up bandwidth on the NetScaler. &amp;nbsp;The process of the request is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;A DHCP request is sent by a client, at which the DHCP server responds with an IP address and 2 DHCP options, 66 and 67. &amp;nbsp;Option 66 holds the TFTP server IP, and option 67 holds the boot file name.&lt;/li&gt;
&lt;li&gt;The preboot execution environment (PXE) on the client then makes a request to the TFTP IP.&lt;/li&gt;
&lt;li&gt;NetScaler now makes a load balancing decision. &amp;nbsp;NetScaler uses the MAC address and forwards the request while not changing the destination IP. &amp;nbsp;The frame arrives at the TFTP server with the same destination IP as the VIP configured on NetScaler. &amp;nbsp;The TFTP is able to process this frame because of a loopback adapter with the same IP assigned.&lt;/li&gt;
&lt;li&gt;After the TFTP server receives the request, it forwards the request to the loopback adapter. &amp;nbsp;It then sends to the client the initial segment of its boot file.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
The advantages of DSR for TFTP load balancing is that it provides robust scalability and availability. &amp;nbsp;The disadvantages of using DSR is that it requires a bit more effort in configuration and also requires a loopback interface on the TFTP servers.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now on to the fun stuff. &amp;nbsp;Below you will find instructions on how to configure TFTP load balancing using NetScaler DSR. &amp;nbsp;In this scenario there are 2 PVSs with the TFTP service installed on each. &amp;nbsp;The PVSs have initially 2 network adapters. &amp;nbsp;The first network adapter is used to connect to the server VLAN. &amp;nbsp;The second adapter is to connect to the PVS VLAN for streaming images. &amp;nbsp;We are using 1 NetScaler (or you could use 2 in a HA pair) using subnet IP (SNIP) instead of mapped IP (MIP). &amp;nbsp;There are 3 VLANS connected to the NetScaler. &amp;nbsp;First, the management interface which is where the NetScaler IP (NSIP) is allocated. &amp;nbsp;Second, the server VLAN. &amp;nbsp;Finally, the PVS VLAN &amp;nbsp;So it logically looks like:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrrBzwZbdfSvlP9PNdRQmzkPiGc2TBf4PdCObH5WQZG-o9YLBL_MgVIpc1kul2kfpOpKeutT7EkHk6M9o3W51cAmUIptx_vk6XMofm2gFnBOPpECXKll6cmK9Qfbq4ARFaeAckz_A2Dg/s1600/Drawing2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrrBzwZbdfSvlP9PNdRQmzkPiGc2TBf4PdCObH5WQZG-o9YLBL_MgVIpc1kul2kfpOpKeutT7EkHk6M9o3W51cAmUIptx_vk6XMofm2gFnBOPpECXKll6cmK9Qfbq4ARFaeAckz_A2Dg/s640/Drawing2.jpg&quot; height=&quot;111&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now for the configuration:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Open the NetScaler GUI and login.&lt;/li&gt;
&lt;li&gt;Navigate to &quot;System&quot; | &quot;Settings&quot;&lt;/li&gt;
&lt;li&gt;Click on &quot;Configure modes&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;Use Source IP&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;MAC Based Forwarding&quot;.&lt;/li&gt;
&lt;li&gt;Create the SNIP for the PVS VLAN if not already created.&lt;/li&gt;
&lt;li&gt;Create load balancing servers in NetScaler:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &quot;Load Balancing&quot; | &quot;Servers&quot; and click &quot;Add&quot;.&lt;/li&gt;
&lt;li&gt;Enter a name and IP address, the click &quot;Create&quot;.&lt;/li&gt;
&lt;li&gt;Repeat this for each TFTP server.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Create a new service group:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &quot;Load Balancing&quot; | &quot;Service Groups&quot; and click &quot;Add&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;ANY&quot; for Protocol.&lt;/li&gt;
&lt;li&gt;Select &quot;Server based&quot;.&lt;/li&gt;
&lt;li&gt;Select the TFTP servers created earlier.&lt;/li&gt;
&lt;li&gt;Enter &lt;b&gt;*&lt;/b&gt;&amp;nbsp;for the port.&lt;/li&gt;
&lt;li&gt;Add a ping monitor, or create your own TFTP monitor.&lt;/li&gt;
&lt;li&gt;Navigate to the &quot;Advanced&quot; tab.&lt;/li&gt;
&lt;li&gt;Select &quot;Use Source IP&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;Client Keep-Alive&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;TCP Buffering&quot;.&lt;/li&gt;
&lt;li&gt;De-select &quot;Surge Protection&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;Create&quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Create a new virtual server:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &quot;Load Balancing&quot; | &quot;Virtual Servers&quot;.&lt;/li&gt;
&lt;li&gt;Type in a name and IP. &amp;nbsp;This is the IP that needs to be used in DHCP option 66. &amp;nbsp;This is also the IP address to be used for the loopback adapters.&lt;/li&gt;
&lt;li&gt;Set the protocol to &quot;Any&quot;.&lt;/li&gt;
&lt;li&gt;Set the port to &lt;b&gt;*&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the &quot;Services Group&quot; tab.&lt;/li&gt;
&lt;li&gt;Select the service group created earlier.&lt;/li&gt;
&lt;li&gt;Navigate to the &quot;Method and Persistence&quot; tab.&lt;/li&gt;
&lt;li&gt;Select &quot;SOURCEIP&quot; for persistence.&lt;/li&gt;
&lt;li&gt;Navigate to the &quot;Advanced&quot; tab.&lt;/li&gt;
&lt;li&gt;Set redirection mode to &quot;MAC Based&quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Add the loopback adapter to the TFTP servers:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the device manager.&lt;/li&gt;
&lt;li&gt;Right-click the TFTP server name in the middle pane and choose &quot;Add legacy hardware&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;Next&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;Install the hardware that I manually select from a list (Advanced)&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;Next&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;Network adapters&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;Next&quot;.&lt;/li&gt;
&lt;li&gt;Select &quot;Microsoft&quot; for the manufacturer.&lt;/li&gt;
&lt;li&gt;Select &quot;Microsoft Loopback Adapter&quot; for the network adapter.&lt;/li&gt;
&lt;li&gt;Click &quot;Next&quot;.&lt;/li&gt;
&lt;li&gt;Click &quot;Finish&quot;.&lt;/li&gt;
&lt;li&gt;Navigate to the properties of the new loopback adapter and uncheck IPv6.&lt;/li&gt;
&lt;li&gt;Go to the properties of IPv4 and type in the IP address and subnet mask. &amp;nbsp;This is the same IP address when you created the virtual server earlier. &amp;nbsp;Do not enter a gateway or DNS servers.&lt;/li&gt;
&lt;li&gt;Disable DNS registration on this adapter.&lt;/li&gt;
&lt;li&gt;Disable NetBIOS on this adapter.&lt;/li&gt;
&lt;li&gt;Open a command prompt as an administrator.&lt;/li&gt;
&lt;li&gt;Enter the following commans for the loopback adapter and PVS VLAN adapter:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;netsh interface ipv4 set interface &quot;&lt;/b&gt;[name of adapter]&lt;b&gt;&quot; weakhostreceive=enabled&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Enter the following command for just the loopback adapter:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;netsh interface ipv4 set interface &quot;&lt;/b&gt;[name of adapter]&lt;b&gt;&quot; weakhostsend=enabled&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Set the TFTP service to listen on the new loopback adapter:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to C:\Program Files\Citrix\Provisioning Services.&lt;/li&gt;
&lt;li&gt;Open tftpcpl.cpl as an administrator.&lt;/li&gt;
&lt;li&gt;Click on the &quot;TFTP Network&quot; tab.&lt;/li&gt;
&lt;li&gt;Select the loopback adapter created earlier and de-select any other adapters.&lt;/li&gt;
&lt;li&gt;Restart the Citrix TFTP service.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Test TFTP load balancing with NetScaler DSR:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Install the TFTP client feature on a server that is on the PVS VLAN but is not a TFTP server.&lt;/li&gt;
&lt;li&gt;Open a command prompt and enter the following:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;tftp &lt;/b&gt;[IP of TFTP virtual server created earlier]&lt;b&gt;&amp;nbsp;GET ardbp32.bin ardbp32.bin&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;div&gt;
Let me know if you have any comments, questions, or suggestions.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://1bitatatime.blogspot.com/feeds/7007788758718727708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://1bitatatime.blogspot.com/2012/04/tftp-load-balancing-on-netscaler-using.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/7007788758718727708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5407051802472655071/posts/default/7007788758718727708'/><link rel='alternate' type='text/html' href='http://1bitatatime.blogspot.com/2012/04/tftp-load-balancing-on-netscaler-using.html' title='TFTP Load Balancing on NetScaler using Direct Server Return'/><author><name>Chris Keim</name><uri>http://www.blogger.com/profile/16383076018145492939</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrrBzwZbdfSvlP9PNdRQmzkPiGc2TBf4PdCObH5WQZG-o9YLBL_MgVIpc1kul2kfpOpKeutT7EkHk6M9o3W51cAmUIptx_vk6XMofm2gFnBOPpECXKll6cmK9Qfbq4ARFaeAckz_A2Dg/s72-c/Drawing2.jpg" height="72" width="72"/><thr:total>13</thr:total></entry></feed>