<?xml version="1.0" encoding="utf-8" standalone="yes"?><feed xmlns="http://www.w3.org/2005/Atom">
  <title></title>
  <subtitle></subtitle>
  <id>https://www.endpointdev.com/blog/tags/virtualization/</id>
  <link href="https://www.endpointdev.com/blog/tags/virtualization/"/>
  <link href="https://www.endpointdev.com/blog/tags/virtualization/" rel="self"/>
  <updated>2018-12-20T00:00:00+00:00</updated>
  <author>
    <name>End Point Dev</name>
  </author>
  
    <entry>
      <title>Data Center Relocation Initiatives: Daunting But Achievable</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2018/12/data_center_relocation_initiatives_daunting_but_achievable/"/>
      <id>https://www.endpointdev.com/blog/2018/12/data_center_relocation_initiatives_daunting_but_achievable/</id>
      <published>2018-12-20T00:00:00+00:00</published>
      <author>
        <name>Charles Chang</name>
      </author>
      <content type="html">
        &lt;p&gt;&lt;img src=&#34;/blog/2018/12/data_center_relocation_initiatives_daunting_but_achievable/banner.jpg&#34; alt=&#34;Datacenter room&#34;&gt;
&lt;a href=&#34;https://www.flickr.com/photos/seeweb/9771315606/&#34;&gt;Photo by Seeweb · CC BY-SA 2.0, cropped&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;introduction&#34;&gt;Introduction&lt;/h3&gt;
&lt;p&gt;A customer asked for our help dealing with logistical nightmares they encountered during a hardware update and data center relocation project. The customer had two active data centers, and wanted to relocate one of them to a modern Tier 4 facility to improve its performance and provide redundancy for critical systems. They also wanted to consolidate or decommission equipment to reduce recurring expenses and reduce their carbon footprint. The client decided to move to a Tier 4 data center because they provide across-​the-​board redundancy within the data center.&lt;/p&gt;
&lt;h3 id=&#34;moving-forward-with-tier-iv&#34;&gt;Moving forward with Tier IV&lt;/h3&gt;
&lt;p&gt;
&lt;img align=&#34;right&#34; src=&#34;/blog/2018/12/data_center_relocation_initiatives_daunting_but_achievable/data-center-1.jpg&#34; style=&#34;margin: 1em&#34; width=&#34;200&#34;&gt;
Enterprises typically transition to Tier 4 data centers because they offer the highest uptime guarantees, and have no single points of failure. These facilities are fully redundant in terms of electrical circuits, cooling, and networking. This architecture is best able to withstand even the most serious technical incidents without server availability being affected. Tier IV facilities have contracts with disaster management companies who will provide them, for example, with fuel in the event that a natural disaster damages the power grid.
&lt;/p&gt;
&lt;p&gt;(More information about the four data center levels is at the end of this post.)&lt;/p&gt;
&lt;h3 id=&#34;key-issues&#34;&gt;Key Issues&lt;/h3&gt;
&lt;p&gt;Some of the customer’s key concerns were:&lt;/p&gt;
&lt;p&gt;1. To safely move their virtual environment to the new data center.&lt;/p&gt;
&lt;p&gt;2. To protect assets during the relocation.&lt;/p&gt;
&lt;p&gt;3. To completely shut down the current data center and migrate seamlessly to the new data center.&lt;/p&gt;
&lt;p&gt;4. To update external DNS records without causing any downtime for the web applications used by their customers.&lt;/p&gt;
&lt;h3 id=&#34;project-planning&#34;&gt;Project Planning&lt;/h3&gt;
&lt;p&gt;To manage data center relocations is challenging because there are many moving parts and variables. Typically, planning starts 6 months ahead of the scheduled relocation date. We seek to understand the role of each system by consulting in-depth with all the teams involved. We analyze each part of the client’s tech infrastructure, break it down, and strategize about the best approach for handling the migration of each component. Additional time to plan can help especially when a large group of stakeholders is involved. Successful planning requires hard and sometimes extensive work, but makes an otherwise overwhelming data center migration smooth and worry free.&lt;/p&gt;
&lt;p&gt;Here are some of our procedures for pre-​migration preparation:&lt;/p&gt;
&lt;p&gt;1. Process the paperwork for new hardware. Identify, review, and approve all applications. Hire movers. Schedule and coordinate with internal management and key stakeholders like IT staff, system admins, contractors, circuit providers, etc.&lt;img align=&#34;right&#34; src=&#34;/blog/2018/12/data_center_relocation_initiatives_daunting_but_achievable/data-center-2.jpg&#34; style=&#34;margin: 1em&#34; width=&#34;200&#34;/&gt;&lt;/p&gt;
&lt;p&gt;2. Collect and analyze resource usage associated with the critical and non-critical systems and compare resource needs to resource availability at the new facility.&lt;/p&gt;
&lt;p&gt;3. Design and schedule the migration of critical systems to the new data center. Discuss the plan with key stakeholders.&lt;/p&gt;
&lt;p&gt;4. Make sure replicas of critical systems are up to date.&lt;/p&gt;
&lt;p&gt;5. Set up a new environment with new hardware in the new data center and establish network connections.&lt;/p&gt;
&lt;p&gt;6. Prepare hardware and virtualization technology in the new data center.&lt;/p&gt;
&lt;p&gt;7. Test, retest, and burn in the new hardware (2–4 weeks of testing).&lt;/p&gt;
&lt;p&gt;8. Create a non-​essential server within the virtualization environment and test it.&lt;/p&gt;
&lt;h3 id=&#34;a-challenge-eliminating-downtime&#34;&gt;A Challenge: Eliminating Downtime&lt;/h3&gt;
&lt;img align=&#34;right&#34; src=&#34;/blog/2018/12/data_center_relocation_initiatives_daunting_but_achievable/data-center-3.jpg&#34; style=&#34;margin: 1em&#34; width=&#34;200&#34;/&gt;
&lt;p&gt;To minimize or eliminate downtime requires very careful preparation. With this particular client, we had the luxury of their already having a secondary data center, which could accommodate a majority of the critical systems during the migration.&lt;/p&gt;
&lt;p&gt;We originally planned to leverage this by simply changing the external DNS records to point to this data center during the migration, but during planning determined that the external DNS record would not replicate worldwide quickly enough to meet the uptime needs of their global operation.&lt;/p&gt;
&lt;h3 id=&#34;solutions&#34;&gt;Solutions&lt;/h3&gt;
&lt;p&gt;After discussing various approaches, we ended up using a load balancer. A load balancer is a network device that routes incoming traffic destined for a single destination (web site, application, or service) and ‘shares’ the incoming connections across multiple destination devices or services. In this case, the data center we were to migrate to housed the client’s critical systems like web servers, database, etc. The secondary data center housed a replica of the critical systems using a replication technology, e.g. Actifio, Rubrik, SAN mirroring, VMWare SRM, or Zerto — we used Actifio in this scenario.
&lt;img align=&#34;right&#34; src=&#34;/blog/2018/12/data_center_relocation_initiatives_daunting_but_achievable/data-center-4.jpg&#34; style=&#34;margin: 1em&#34; width=&#34;200&#34;/&gt;&lt;/p&gt;
&lt;p&gt;The customer had multiple systems with external DNS records and public IP addresses. We did not change the public DNS names for the critical systems. We did change the public IP addresses associated with the public DNS names, to point to the load balancer, which then pointed to the appropriate data center throughout the process. This setup enabled a gradual, flexible, and fully controlled transition to the new data center.&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;img align=&#34;right&#34; src=&#34;/blog/2018/12/data_center_relocation_initiatives_daunting_but_achievable/data-center-5.jpg&#34; style=&#34;margin: 1em&#34; width=&#34;200&#34;/&gt;
&lt;p&gt;Our client wanted to reduce their servers’ power usage 40% by consolidating into a hyper-​converged system. Other goals were to reduce floor space by 50%, and monthly recurring data center charges by 50%. We transitioned them to a new hardware stack (compute, storage, network, backup environment) in a Tier 4 data center, and saved them 50% percent on data center operation costs. Additionally, during the process we corrected issues associated with disaster recovery and business continuity, leaving the client’s operations more resilient, affordable, and more secure.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;appendix-data-center-classifications&#34;&gt;Appendix: Data Center Classifications&lt;/h3&gt;
&lt;h4 id=&#34;tier-iv-best&#34;&gt;Tier IV (Best)&lt;/h4&gt;
&lt;p&gt;Tier IV data centers have redundancies for every process and data protection stream. No single outage or error can shut down the system. To keep Tier IV ranking, data centers must have 99.995% minimum uptime per year. They come equipped with 2N+1 infrastructure (two times the amount required for operation plus a backup), which is considered “fully redundant.”&lt;/p&gt;
&lt;h4 id=&#34;tier-iii-average&#34;&gt;Tier III (Average)&lt;/h4&gt;
&lt;p&gt;N+1 (the amount required for operation plus a backup) fault tolerance, which means a Tier III facility can undergo routine maintenance without a hiccup in operations. 99.982% minimum uptime per annum, used for maintenance and overwhelming emergencies.&lt;/p&gt;
&lt;h4 id=&#34;tier-ii-minimal&#34;&gt;Tier II (Minimal)&lt;/h4&gt;
&lt;p&gt;99.749% minimum uptime. Tier II facilities have considerably more downtime than Tier III facilities, primarily because Tier II facilities have less redundancy. They do however have partial cooling redundancy and multiple power redundancies.&lt;/p&gt;
&lt;h4 id=&#34;tier-i-basic-cheapest&#34;&gt;Tier I (Basic, Cheapest)&lt;/h4&gt;
&lt;p&gt;99.671% minimum uptime, with 28.8 hours of downtime each year.&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>Disaster Recovery — Miami to Dallas in one hit</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2017/10/disaster-recovery-miami-to-dallas-in/"/>
      <id>https://www.endpointdev.com/blog/2017/10/disaster-recovery-miami-to-dallas-in/</id>
      <published>2017-10-03T00:00:00+00:00</published>
      <author>
        <name>Ian Neilsen</name>
      </author>
      <content type="html">
        &lt;p&gt;Hurricane Irma came a knocking but didn’t blow Miami away.&lt;/p&gt;
&lt;p&gt;Hurricanes are never fun, and neither is knowing that your business servers may be in the direct path of a major outage due to a natural disaster.&lt;/p&gt;
&lt;p&gt;Recently we helped a client prepare a disaster recovery environment, 4 days out pending Hurricane Irma approaching Miami—​where it happens their entire server ecosystem sat. In recent months we had been discussing a long-term disaster recovery plan for this client’s infrastructure, but the final details hadn’t been worked out yet, and no work begun on it, when the news of the impending storm started to arrive.&lt;/p&gt;
&lt;p&gt;Although the Miami datacenter they are using is highly regarded and well-rated, the client had the foresight to think about an emergency project to replicate their entire server ecosystem out of Miami to somewhere a little safer.&lt;/p&gt;
&lt;p&gt;Fire suits on, battle helmets ready, GO! Two team members jumped in and did an initial review of the ecosystem: six Linux servers, one Microsoft SQL Server database with about 50 GB of data, and several little minions. All of this hosted on a KVM virtualization platform. OK, easy, right? Export the VM disks and stand up in a new datacentre on a similar KVM-based host.&lt;/p&gt;
&lt;p&gt;But no downtime could be scheduled at that time, and cloning the database would take too much time to make a replica. If we can’t clone the VM disks without downtime we need another plan. Enter our save-the-day idea: use the database clone from the development machine.&lt;/p&gt;
&lt;p&gt;So first things first: Build the servers in the new environment using the cloned copy, rsync the entire disk across, hoping that a restart would return the machine into a working state, take the development database and use the Microsoft tools at our disposal to replicate one current snapshot, then replicate row level details, in preparation of reducing the amount of lost data, should the datacenter lose connection.&lt;/p&gt;
&lt;p&gt;Over the course of the next 16 hours, with 2 DevOps engineers, we replicated 6 servers, migrated 100+ GB of data twice and had a complete environment ready for a manual cutover.&lt;/p&gt;
&lt;p&gt;Luckily the hurricane didn’t cause any damage to the datacenter, which never lost power or connectivity, so the sites never went down.&lt;/p&gt;
&lt;p&gt;Even though it wasn’t used in this case, this emergency work did have a silver lining: Until this client’s longer-term disaster recovery environment is built, these system replicas can serve as cold standby, which is much better than having to rebuild from backups if their primary infrastructure goes out.&lt;/p&gt;
&lt;p&gt;That basic phase is out of the way, so the client can breathe easier. Along the way, we produced some updated documentation, and gained deeper knowledge of the client’s software ecosystem. That’s a win!&lt;/p&gt;
&lt;p&gt;The key takeaways here: Don’t panic, and do a little planning prior. Leaving things to the last minute rarely works well.
And preferable to all of the above: Plan and build your long-term disaster recovery environment now, well before any possible disaster is on the horizon!&lt;/p&gt;
&lt;p&gt;To all the people affected by Hurricane Irma we wish a speedy rebuild.&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>We are bigger than VR gear - Liquid Galaxy</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/"/>
      <id>https://www.endpointdev.com/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/</id>
      <published>2016-04-27T00:00:00+00:00</published>
      <author>
        <name>Yaqi Chen</name>
      </author>
      <content type="html">
        &lt;p&gt;Nowadays, virtual reality is one of the hottest topics in tech, with VR enabling users to enter immersive environments built up by computer technology.  I attended Mobile World Congress 2016 a few weeks ago, and it was interesting to see people sit next to one another and totally ignore one another while they were individually immersed in their own virtual reality worlds.&lt;/p&gt;
&lt;div class=&#34;separator&#34; style=&#34;clear: both; text-align: center;&#34;&gt;&lt;a href=&#34;https://www.visionport.com/&#34; imageanchor=&#34;1&#34; style=&#34;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&#34;&gt;&lt;img border=&#34;0&#34; src=&#34;/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/image-0.jpeg&#34;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;When everyone is so addicted to their little magic boxes, they tend to lose their connections with people around them. End Point has developed a new experience in which users can watch and share their virtually immersive world together. This experience is called the &lt;a href=&#34;https://www.visionport.com/&#34;&gt;Liquid Galaxy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When a user stands in front of Liquid Galaxy and is surrounded by a multitude of huge screens arranged in a semicircle, he puts not only his eyes but his whole body into an unprecedented 3D space. These screens are big enough to cover the audience’s entire peripheral vision and bring great visual stimulation from all directions. When using the Liquid Galaxy system, the users become fully immersed in the system and the imagery they view.&lt;/p&gt;
&lt;div class=&#34;separator&#34; style=&#34;clear: both; text-align: center;&#34;&gt;&lt;a href=&#34;/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/image-1-big.jpeg&#34; imageanchor=&#34;1&#34; style=&#34;margin-left: 1em; margin-right: 1em;&#34;&gt;&lt;img border=&#34;0&#34; src=&#34;/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/image-1.jpeg&#34;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&#34;separator&#34; style=&#34;clear: both; text-align: center; float: right;&#34;&gt;&lt;a href=&#34;/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/image-2-big.jpeg&#34; imageanchor=&#34;1&#34; style=&#34;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&#34;&gt;&lt;img border=&#34;0&#34; src=&#34;/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/image-2.jpeg&#34;/&gt;&lt;/a&gt;&lt;br/&gt;
&lt;small&gt;Movie Night at End Point&lt;/small&gt;&lt;/div&gt;
&lt;p&gt;This digital chamber can be considered a sort of VR movie theater, where an audience can enjoy the same content, and probably the same bucket of popcorn! While this setup makes the Liquid Galaxy a natural fit for any sort of exhibit, many End Point employees have also watched full length feature movies on the system during our monthly Movie Night at our Headquarters office in Manhattan. This sort of shared experience is not something that is possible on typical VR, because unlike VR the Liquid Galaxy is serving a larger audience and presenting stories in a more interactive way.&lt;/p&gt;
&lt;p&gt;For most meetings, exhibitions, and other special occasions, the Liquid Galaxy helps to provide an amazing and impactful experience  to the audience. Any scenario can be built for users to explore, and geospatial data sets can be  presented immersively.&lt;/p&gt;
&lt;div class=&#34;separator&#34; style=&#34;clear: both; text-align: center;&#34;&gt;&lt;a href=&#34;/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/image-3-big.png&#34; imageanchor=&#34;1&#34; style=&#34;margin-left: 1em; margin-right: 1em;&#34;&gt;&lt;img border=&#34;0&#34; src=&#34;/blog/2016/04/we-are-bigger-than-vr-gear-liquid-galaxy/image-3.png&#34;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;With the ability to serve a group of people simultaneously, Liquid Galaxy increases the impact of content presentation and brings a revolutionary visual experience to its audiences. If you’d like to learn more, you can call us at 212-929-6923, or &lt;a href=&#34;https://www.visionport.com/contact/&#34;&gt;contact us here&lt;/a&gt;.&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>Shrink XFS partition: Almost possible with LVM</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2015/01/shrink-xfs-partition-almost-possible/"/>
      <id>https://www.endpointdev.com/blog/2015/01/shrink-xfs-partition-almost-possible/</id>
      <published>2015-01-29T00:00:00+00:00</published>
      <author>
        <name>Emanuele “Lele” Calò</name>
      </author>
      <content type="html">
        &lt;p&gt;If you happen to have reached this page because you’re trying to shrink an XFS filesystem let’s put things straight: sorry, that’s not possible.&lt;/p&gt;
&lt;p&gt;But before you go away you should know there’s still hope and I’d like to show you how I used a little workaround to avoid reinstalling a Red Hat Enterprise Linux 7 or CentOS 7 VM using XFS dump/restore on-the-fly and LVM capabilities, both standard choices for the regular RHEL/CentOS 7 setup.&lt;/p&gt;
&lt;p&gt;First of all let’s clarify the situation I found myself in. For various reasons I had a CentOS 7 VM with everything already configured and working, installed not many days ago to test new software we’re evaluating.&lt;/p&gt;
&lt;p&gt;The VM itself is hosted on a dedicated server we manage on our own, so I had a certain degree of freedom to what I could do without the need of paying any additional fee. You may not be in this same situation, but you can probably try some similar solution for little money if you’re using an “hourly-billed” VPS provider.&lt;/p&gt;
&lt;p&gt;The problem was that, even if everything was working and configured, the virtual hard disk device attached to the machine was &lt;em&gt;too big&lt;/em&gt; and &lt;em&gt;on the wrong storage area of the virtualization hosting server&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;There was also another minor glitch: The VM itself was using an old virtualization device driver (IDE-based) instead of the new VIRTIO one. Since I knew that the virtualized OS CentOS 7 is capable of using VIRTIO based devices I also took the chance to fix this.&lt;/p&gt;
&lt;p&gt;Unfortunately, XFS is not capable of being shrunk at the moment (and for the foreseeable future) so what I needed to do was to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;add a new virtual device correctly using VIRTIO and stored in the right storage area of the virtualization host server&lt;/li&gt;
&lt;li&gt;migrate all the filesystems to the new virtual device&lt;/li&gt;
&lt;li&gt;set the VM OS to be working from the newly-built partition&lt;/li&gt;
&lt;li&gt;dismiss the old virtual device&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In my specific case this translated to connect to the virtualization hosting server, create a new LVM logical volume to host the virtual disk device for the VM and then add the new virtual device to the VM configuration. Unfortunately in order to have the VM see the new virtual device I had to shut it down.&lt;/p&gt;
&lt;p&gt;While connected to the virtualization host server I also downloaded and attached to the VM the latest ISO of &lt;a href=&#34;http://www.system-rescue-cd.org/&#34;&gt;SysRescueCD&lt;/a&gt; which is a data rescue specialized Linux distribution. I’m specifically using this distro since it’s one of the few which offers the XFS dump/restore tools on the live ISO.&lt;/p&gt;
&lt;p&gt;Now the VM was ready to be booted with the SysRescueCD Live OS and then I could start working my way through all the needed fixes. If you’re doing something similar, of course please make sure you have &lt;strong&gt;offsite backups&lt;/strong&gt; and have double-checked that they’re readable before doing anything else.&lt;/p&gt;
&lt;p&gt;First of all inspect your &lt;em&gt;dmesg&lt;/em&gt; output and find what is the source virtual device and what’s the new target virtual device. In my case the source was /dev/sda and the target was /dev/vda&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dmesg | less&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then create a partition on the new device (eg: /dev/vda1) as Linux type for the /boot partition; this should be of the same size as the source /boot partition (eg: /dev/sda1) and dedicate all the remaining space to a new LVM type partition (eg: /dev/vda2)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fdisk /dev/vda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#888&#34;&gt;# [create /boot and LVM partitions]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You could also mount and copy the /boot files or re-create them entirely if you need to change the /boot partition size. Since I kept /boot exactly the same so I could use &lt;em&gt;ddrescue&lt;/em&gt; (a more verbose version of classic Unix &lt;em&gt;dd&lt;/em&gt;).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ddrescue /dev/sda1 /dev/vda1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The next step is supposed to migrate the MBR and should be working but in my case the boot phase kept failing so I also needed to reinstall the bootloader via the CentOS 7 rescue system (not covered in this tutorial but briefly mentioned near the end of the article).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ddrescue -i0 -s512 /dev/sda /dev/vda&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then create the target LVM volumes.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvcreate /dev/vda2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgcreate fixed_centos_VG /dev/vda2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lvcreate -L 1G -n swap fixed_centos_VG
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lvcreate -l 100%FREE -n root fixed_centos_VG
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgchange -a y fixed_centos_VG&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Create the target XFS filesystem.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkfs.xfs -L root /dev/fixed_centos_VG/root&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And then create the swap partition.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkfs.swap /dev/fixed_centos_VG/swap&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Next create the needed mountpoints and mount the old source and the new empty filesystems.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir /mnt/disk_{wrong,fixed}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mount /dev/fixed_centos_VG/root /mnt/disk_fixed
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgchange -a y wrong_centos_VG
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mount /dev/centos_VG/root /mnt/disk_wrong&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now here’s the real XFS magic. We’ll use &lt;strong&gt;xfsdump&lt;/strong&gt; and &lt;strong&gt;xfsrestore&lt;/strong&gt; to copy the filesystem content (files, directory, special files) without having to care about files permission, type, extended ACLs or anything else. Plus since it’s only moving &lt;em&gt;the content&lt;/em&gt; of the filesystem we won’t need to have a partition of the same size and it won’t take as long as copying the entire block device as the process will just have to go through real used space.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xfs_dump -J - /mnt/disk_wrong | xfs_restore -J - /mnt/disk_fixed&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If you want a more verbose output, leave out the &lt;em&gt;-J&lt;/em&gt; option. After the process is done, be sure to &lt;strong&gt;carefully verify&lt;/strong&gt; that everything is in place in the new partition.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls -lhtra /mnt/disk_fixed/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then unmount the disks and deactivate the LVM VGs.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;umount /mnt/disk_{old,fixed}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgchange -a n centos_VG
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgchange -a n fixed_centos_VG&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;At this point in order to avoid changing anything inside the virtualized OS (fstab, grub and so on), let’s remove the old VG and rename the newer one with the same name the old one had.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgremove centos_VG
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvremove /dev/sda2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgrename {fixed_,}centos_VG&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You should be now able to shutdown the VM again, detach the old disk and start the new VM which will be using the new smaller virtual device.&lt;/p&gt;
&lt;p&gt;If the boot phase keeps failing, boot the CentOS installation media in &lt;strong&gt;rescue&lt;/strong&gt; mode and after &lt;strong&gt;chroot&lt;/strong&gt;-ing inside your installation run &lt;strong&gt;grub-install /dev/vda&lt;/strong&gt; (targeting your new main device) to reinstall grub.&lt;/p&gt;
&lt;p&gt;Only after everything is working as expected, proceed to remove the old unneeded device and remove it from the virtualization host server.&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>Easier IE Site Testing With RemoteIE</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2014/12/easier-ie-site-testing-with-remoteie/"/>
      <id>https://www.endpointdev.com/blog/2014/12/easier-ie-site-testing-with-remoteie/</id>
      <published>2014-12-02T00:00:00+00:00</published>
      <author>
        <name>Greg Davidson</name>
      </author>
      <content type="html">
        &lt;p&gt;Microsoft recently announced a new service which I’m finding very useful. &lt;a href=&#34;https://remote.modern.ie/&#34;&gt;RemoteIE&lt;/a&gt; lets you test your sites with IE (currently version 11) on Windows 10 Technical Preview. The service runs in Azure RemoteApp which is available for &lt;a href=&#34;https://web.archive.org/web/20171201025431/https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-clients&#34;&gt;several clients&lt;/a&gt; including Android, iOS and Windows Phone. What’s great about this is that you do not have to install and maintain your own virtual machine with VirtualBox or VMWare.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://remote.modern.ie/&#34; title=&#34;More information about RemoteIE from Microsoft&#34;&gt;&lt;img alt=&#34;RemoteIE&#34; border=&#34;0&#34; height=&#34;484&#34; src=&#34;/blog/2014/12/easier-ie-site-testing-with-remoteie/image-0.png&#34; title=&#34;remoteIE.png&#34; width=&#34;615&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To use RemoteIE you’ll need a valid Microsoft account—​it’s easy to sign up if you don’t already one. Once you have an account and have downloaded &amp;amp; installed the Azure RemoteApp client of your choice it’s just a matter of starting it up and logging in. Happy Testing!&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>Test Web Sites with Internet Explorer for Free</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2012/09/test-web-sites-with-internet-explorer/"/>
      <id>https://www.endpointdev.com/blog/2012/09/test-web-sites-with-internet-explorer/</id>
      <published>2012-09-26T00:00:00+00:00</published>
      <author>
        <name>Greg Davidson</name>
      </author>
      <content type="html">
        &lt;h3 id=&#34;browser-testing&#34;&gt;Browser Testing&lt;/h3&gt;
&lt;p&gt;While many Web Developers prefer to build sites and web applications with browsers like &lt;a href=&#34;https://www.google.com/intl/en/chrome/browser/&#34;&gt;Chrome&lt;/a&gt; or &lt;a href=&#34;http://getfirefox.com&#34;&gt;Firefox&lt;/a&gt; it&amp;rsquo;s important for us to keep an eye on the &lt;a href=&#34;http://marketshare.hitslink.com/browser-market-share.aspx?qprid=0&amp;amp;qpcustomd=0&amp;amp;qpcustomc=&#34;&gt;browser market share&lt;/a&gt; for &lt;strong&gt;all&lt;/strong&gt; web users. &lt;a href=&#34;http://windows.microsoft.com/en-US/internet-explorer/products/ie/home&#34;&gt;Internet Explorer&lt;/a&gt; (IE) still owns a large piece of this pie and because of this, it is important to test sites and applications to ensure they work properly when viewed in IE. This poses a potential problem for developers who do not use Windows.&lt;/p&gt;
&lt;p&gt;Although I use OS X on my desktop, I have Windows virtual machines with IE 6,7,8,9 and 10 installed. I also have a Linux virtual machine running Ubuntu so I can check out Chrome/Chromium and Firefox on that platform. In the past I had tried solutions like &lt;a href=&#34;http://tredosoft.com/Multiple_IE&#34;&gt;MultipleIEs&lt;/a&gt; but wasn&amp;rsquo;t satisfied with them. In my experience I&amp;rsquo;ve found that the best way to see what users are seeing is to have a virtual machine running the same software they are.&lt;/p&gt;
&lt;p&gt;I did some IE8 testing for a colleague a short time ago and suggested she should give VirtualBox a shot. Her response was &amp;ldquo;You should write a blog post about that!&amp;rdquo;. So here we are.&lt;/p&gt;
&lt;h3 id=&#34;free-tools&#34;&gt;Free Tools&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.virtualbox.org/&#34;&gt;VirtualBox&lt;/a&gt; is a free virtualization application similar to &lt;a href=&#34;http://www.parallels.com/&#34;&gt;Parallels&lt;/a&gt; or &lt;a href=&#34;http://www.vmware.com/&#34;&gt;VMWare&lt;/a&gt;. These applications aim to solve this problem by allowing us to run different &amp;ldquo;guest&amp;rdquo; operating systems on the &amp;ldquo;host&amp;rdquo; operating system of our choice. For example, I run several versions of IE and Windows on my computer which is running OS X.&lt;/p&gt;
&lt;p&gt;Microsoft have begun in recent years to release Virtual PC (VPC) images for free to enable Web Developers to test their sites and applications with various versions of Internet Explorer. The most recent images were released on July 30, 2012 and you can check them out &lt;a href=&#34;http://www.microsoft.com/en-us/download/details.aspx?id=11575&#34;&gt;here&lt;/a&gt;. Although these images are created to run on Microsoft&amp;rsquo;s &lt;a href=&#34;http://www.microsoft.com/windows/virtual-pc/&#34;&gt;Virtual PC&lt;/a&gt; application, with a little bit of effort we can also use them on Linux, OS X or Windows via VirtualBox.&lt;/p&gt;
&lt;p&gt;For our purposes, we will be building a Windows 7 virtual machine running Internet Explorer 8. However, there are several images available with various Windows OS and Internet Explorer version combinations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 7 / IE8&lt;/li&gt;
&lt;li&gt;Windows 7 / IE9&lt;/li&gt;
&lt;li&gt;Windows Vista / IE7&lt;/li&gt;
&lt;li&gt;Windows XP / IE6&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There will likely be some differences creating virtual machines for the various images but the process will be similar to what we&amp;rsquo;ll document here for Windows 7 / IE.&lt;/p&gt;
&lt;h3 id=&#34;linux-and-os-x-users&#34;&gt;Linux and OS X Users&lt;/h3&gt;
&lt;p&gt;In researching this article I came across a very helpful project on GitHub. The &lt;a href=&#34;https://github.com/xdissent/ievms#readme&#34;&gt;ievms project&lt;/a&gt; by &lt;a href=&#34;https://github.com/xdissent&#34;&gt;xdissent&lt;/a&gt; is a bash script that automates this process. I was able to run the script and run my newly created Windows 7 / IE virtual machine shortly afterward.&lt;/p&gt;
&lt;h3 id=&#34;requirements&#34;&gt;Requirements&lt;/h3&gt;
&lt;p&gt;To start we&amp;rsquo;ll need to download and install VirtualBox. Be sure you have the most recent version available as it gets updated quite often. We&amp;rsquo;ll also need to install the VirtualBox Extension Pack. Both are available on the &lt;a href=&#34;https://www.virtualbox.org/wiki/Downloads&#34;&gt;VirtualBox Downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Because the &lt;a href=&#34;http://www.microsoft.com/en-us/download/details.aspx?id=11575&#34;&gt;VPC images&lt;/a&gt; are quite large (~2.6GB in our case) they have been split up into several files. For the Windows 7 / IE8 image we&amp;rsquo;ll download the following files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://download.microsoft.com/download/B/7/2/B72085AE-0F04-4C6F-9182-BF1EE90F5273/Windows_7_IE8.part01.exe&#34;&gt;Windows 7 / IE8 - Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://download.microsoft.com/download/B/7/2/B72085AE-0F04-4C6F-9182-BF1EE90F5273/Windows_7_IE8.part02.rar&#34;&gt;Windows 7 / IE8 - Part 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://download.microsoft.com/download/B/7/2/B72085AE-0F04-4C6F-9182-BF1EE90F5273/Windows_7_IE8.part03.rar&#34;&gt;Windows 7 / IE8 - Part 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://download.microsoft.com/download/B/7/2/B72085AE-0F04-4C6F-9182-BF1EE90F5273/Windows_7_IE8.part04.rar&#34;&gt;Windows 7 / IE8 - Part 4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once the files have been extracted we have created our virtual machine the disk will take up close to 10 GB. Make sure you have enough disk space available. I run my virtual machines on an external USB hard drive which works well if your local hard drive is starved for space.&lt;/p&gt;
&lt;h3 id=&#34;extract-the-vpc-files&#34;&gt;Extract the VPC Files&lt;/h3&gt;
&lt;p&gt;Once you have all of the the VPC image files downloaded you&amp;rsquo;ll need to extract them:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows users&lt;/strong&gt;: double-click the Windows_7_IE8.part01.exe file&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux / OS X users&lt;/strong&gt;: You will need to install unrar. I did so on OS X with Homebrew and there are packages available for Ubuntu as well.&lt;/p&gt;
&lt;p&gt;Once you have unrar installed, issue the following command in the directory containing all of the VPC image files:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;unrar e -y Windows_7_IE8.part01.exe&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This will extract the files and combine them into a single .vhd file. The -y flag tells unrar to say &amp;ldquo;yes&amp;rdquo; to the EULA from Microsoft so be aware of that.&lt;/p&gt;
&lt;h3 id=&#34;create-a-new-machine&#34;&gt;Create a new Machine&lt;/h3&gt;
&lt;p&gt;Once the .vhd file is ready we can create a new machine in VirtualBox. Start up VirtualBox and click the &amp;ldquo;New&amp;rdquo; button:&lt;/p&gt;
&lt;img alt=&#34;Vbox new&#34; border=&#34;0&#34; height=&#34;198&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-0.png&#34; title=&#34;vbox-new.png&#34; width=&#34;518&#34;/&gt; 
&lt;p&gt;Click &amp;ldquo;Continue&amp;rdquo; to proceed.&lt;/p&gt;
&lt;h3 id=&#34;vm-name-and-os-type&#34;&gt;VM Name and OS Type&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ll enter a name (IE8 / Windows 7) and select &amp;ldquo;Microsoft&amp;rdquo; and &amp;ldquo;Windows 7&amp;rdquo; in the Operating System and Version drop-downs:&lt;/p&gt;
&lt;img alt=&#34;Vbox name and type&#34; border=&#34;0&#34; height=&#34;345&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-1.png&#34; title=&#34;vbox-name-and-type.png&#34; width=&#34;600&#34;/&gt;
&lt;p&gt;Click &amp;ldquo;Continue&amp;rdquo; to proceed.&lt;/p&gt;
&lt;h3 id=&#34;memory&#34;&gt;Memory&lt;/h3&gt;
&lt;p&gt;Specify how much memory (RAM) you&amp;rsquo;d like to allocate to the virtual machine. This really depends on how much you have available but it is best to go with the minimum at the very least: &lt;img alt=&#34;Vbox mem config&#34; border=&#34;0&#34; height=&#34;345&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-2.png&#34; title=&#34;vbox-mem-config.png&#34; width=&#34;600&#34;/&gt;&lt;/p&gt;
&lt;p&gt;Click &amp;ldquo;Continue&amp;rdquo; to proceed.&lt;/p&gt;
&lt;h3 id=&#34;disk&#34;&gt;Disk&lt;/h3&gt;
&lt;p&gt;Select the &amp;ldquo;Do not add a virtual hard drive&amp;rdquo; option.: &lt;img alt=&#34;Vbox do not add hdd 1&#34; border=&#34;0&#34; height=&#34;394&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-3.png&#34; title=&#34;vbox-do-not-add-hdd-1.png&#34; width=&#34;600&#34;/&gt;&lt;/p&gt;
&lt;p&gt;The reason we skip this for now is because we want to add the hard disk as an IDE drive. For some reason VirtualBox adds the disk as a SATA drive which causes the blue screen of death (BSOD) to appear when the virtual machine is booted up.&lt;/p&gt;
&lt;p&gt;Click &amp;ldquo;Continue&amp;rdquo; to proceed &lt;strong&gt;and&lt;/strong&gt; click &amp;ldquo;Continue&amp;rdquo; again when presented with the warning about not attaching a hard disk.&lt;/p&gt;
&lt;h3 id=&#34;review-settings-and-create-the-vm&#34;&gt;Review Settings and Create the VM&lt;/h3&gt;
&lt;p&gt;At this point you can review the settings you&amp;rsquo;ve made and click &amp;ldquo;Create&amp;rdquo; to complete the process:&lt;/p&gt;
&lt;img alt=&#34;Vbox review and create&#34; border=&#34;0&#34; height=&#34;369&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-4.png&#34; title=&#34;vbox-review-and-create.png&#34; width=&#34;600&#34;/&gt;
&lt;h3 id=&#34;configure-storage-settings&#34;&gt;Configure Storage Settings&lt;/h3&gt;
&lt;p&gt;Highlight your newly created virtual machine and click the &amp;ldquo;Settings&amp;rdquo; button. From there, click the &amp;ldquo;Storage&amp;rdquo; tab and add a hard disk to the IDE controller: &lt;img alt=&#34;Vbox storage add hd&#34; border=&#34;0&#34; height=&#34;509&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-5.png&#34; title=&#34;vbox-storage-add-hd.png&#34; width=&#34;600&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;absolute-pointing-device&#34;&gt;Absolute Pointing Device&lt;/h3&gt;
&lt;p&gt;In the Settings, click on the &amp;ldquo;System&amp;rdquo; tab and uncheck &amp;ldquo;Enable absolute pointing device&amp;rdquo;. I had to do this in order to to get the mouse working properly.&lt;/p&gt;
&lt;h3 id=&#34;start-it-up&#34;&gt;Start it Up&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;re almost there: next we need to start up the VM by clicking the &amp;ldquo;Start&amp;rdquo; button. You&amp;rsquo;ll see Administrator and IEUser accounts and the password for both is &amp;ldquo;Password1&amp;rdquo;. Log in as Administrator and check it out! It&amp;rsquo;s important to note when the virtual machine has the keyboard and mouse focus. When you click inside the virtual machine window, it will capture the input from your mouse and keyboard. To return focus back to your computer you will need to press the &amp;ldquo;host key&amp;rdquo; sequence on your computer:&lt;/p&gt;
&lt;img alt=&#34;Vbox host key&#34; border=&#34;0&#34; height=&#34;123&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-6.png&#34; title=&#34;vbox-host-key.png&#34; width=&#34;343&#34;/&gt;
&lt;p&gt;The &amp;ldquo;host-key&amp;rdquo; sequence can be configured in the VirtualBox preferences. On my computer, the host-key sequence is the left CTRL key (displayed as Left ^). When the arrow icon is illuminated, the guest computer – Windows 7 in this case, has the focus. When I press the left CTRL key on my computer the arrow icon goes tray to indicate focus has been returned to my computer.&lt;/p&gt;
&lt;h3 id=&#34;activation&#34;&gt;Activation&lt;/h3&gt;
&lt;p&gt;As soon as you log in you will be presented with the Windows Activation wizard. Follow the steps to activate this copy of Windows. Once that is complete you will be prompted to restart your computer. Go ahead and do that.&lt;/p&gt;
&lt;img alt=&#34;Vbox activate now&#34; border=&#34;0&#34; height=&#34;487&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-7.png&#34; title=&#34;vbox-activate-now.png&#34; width=&#34;600&#34;/&gt;
&lt;p&gt;The screen resolution in the virtual machine will be quite low at first — I believe 800x600 is the default. Don&amp;rsquo;t worry about this as it will be addressed in the next step.&lt;/p&gt;
&lt;h3 id=&#34;guest-additions&#34;&gt;Guest Additions&lt;/h3&gt;
&lt;p&gt;Log in as Administrator (Password1) and Install the VirtualBox Guest Additions. To do this,  navigate to Devices in the VirtualBox menu on your computer (the &amp;ldquo;host&amp;rdquo; machine&amp;quot;). Choose the menu option to &amp;ldquo;Install Guest Additions&amp;rdquo;. Each time you are prompted with the &amp;ldquo;Would you like to install&amp;hellip;&amp;rdquo; dialog, choose &amp;ldquo;Install&amp;rdquo;:&lt;/p&gt;
&lt;img alt=&#34;Vbox install guest additions&#34; border=&#34;0&#34; height=&#34;487&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-8.png&#34; title=&#34;vbox-install-guest-additions.png&#34; width=&#34;600&#34;/&gt;
&lt;p&gt;This will install some drivers optimized by VirtualBox which allow you to change the screen resolution, improve the interaction between your host computer and the Windows guest operating system. Once the install process is complete you will be prompted to restart your virtual machine once more.&lt;/p&gt;
&lt;h3 id=&#34;finished-product&#34;&gt;Finished Product&lt;/h3&gt;
&lt;p&gt;With Windows activated and the Guest Additions installed you should be able to log in to your very own Windows 7 / IE8 testing machine!&lt;/p&gt;
&lt;img alt=&#34;Vbox ie8 mr&#34; border=&#34;0&#34; height=&#34;476&#34; src=&#34;/blog/2012/09/test-web-sites-with-internet-explorer/image-9.png&#34; title=&#34;vbox-ie8-mr.png&#34; width=&#34;600&#34;/&gt;
&lt;p&gt;This free copy of Windows will operate for 30 days and the trial period can be extended twice by running the following at the command prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;slmgr –rearm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Check out &lt;a href=&#34;http://www.microsoft.com/en-us/download/details.aspx?id=11575#overview&#34;&gt;the documentation&lt;/a&gt; at Microsoft for more details.&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>Automated VM cloning with PowerCLI</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2012/07/automated-vm-cloning-with-powercli/"/>
      <id>https://www.endpointdev.com/blog/2012/07/automated-vm-cloning-with-powercli/</id>
      <published>2012-07-23T00:00:00+00:00</published>
      <author>
        <name>Brian Buchalter</name>
      </author>
      <content type="html">
        &lt;p&gt;Most small businesses cannot afford the high performance storage area networks (SANs) that make traditional redundancy options such high availability and fault tolerance possible. Despite this, the APIs available to administrators of virtualized infrastructure using direct attached storage (DAS) make it possible to recreate many of the benefits of high availability.&lt;/p&gt;
&lt;h3 id=&#34;high-availability-on-san-vs-das&#34;&gt;High Availability on SAN vs DAS&lt;/h3&gt;
&lt;p&gt;A single server failure in a virtualized environment can mean many applications and services can become unavailable simultaneously; for small organizations, this can be particularly damaging. High availability with SANs minimize the downtime of applications and services when a host fails by keeping virtual machine (VM) storage off the host and on the SAN. VMs on a failed host can then be automatically restarted on hosts with excess capacity. This of course requires SAN infrastructure to be highly redundant, adding to the already expensive and complex nature of SANs.&lt;/p&gt;
&lt;p&gt;Alternatively, direct attached storage (DAS) is very cost effective, performant, and well understood. By using software to automate the snapshot and cloning of VMs via traditional gigabit Ethernet from host to host, we can create a “poor man’s” high availability system.&lt;/p&gt;
&lt;p&gt;It’s important for administrators to understand that there is a very real window of data loss that can range from hours to days depending on the number of systems backed up and hardware in use. However, for many small businesses who may not have trustworthy backups, automated cloning is an excellent step forward.&lt;/p&gt;
&lt;h3 id=&#34;automated-cloning-with-vmwares-powercli&#34;&gt;Automated cloning with VMWare’s PowerCLI&lt;/h3&gt;
&lt;p&gt;Although End Point is primarily an open source shop, my introduction virtualization was with VMWare. For automation and scripting, PowerCLI, the PowerShell based command line interface for vSphere, is the platform on which we will build. The process is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A scheduled task executes the backup script.&lt;/li&gt;
&lt;li&gt;Delete all old backups to free space.&lt;/li&gt;
&lt;li&gt;Read CSV of VMs to be backed up and the target host and datastore.&lt;/li&gt;
&lt;li&gt;For each VM, snapshot and clone to destination.&lt;/li&gt;
&lt;li&gt;Collect data on cloning failures and email report.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have created a public GitHub repository for the code and called it &lt;a href=&#34;https://github.com/bbuchalter/powercli_cloner&#34;&gt;powercli_cloner&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Currently, it’s fairly customized around the needs of the particular client it was implemented for, so there is much room for generalization and improvement. One area of improvement is immediately obvious: only delete a backup after successfully replacing it. Also, the script must be run as a Windows user with administrator vSphere privileges, as the scripts assumes pass-through authentication is in place. This is probably best for keeping credentials out of plain text. The script should be run during non-peak hours, especially if you have I/O intensive workloads.&lt;/p&gt;
&lt;p&gt;Hopefully this tool can provide opportunities to develop backup and disaster recovery procedures that are flexible, cost-effective, and simple. I’d welcome pull requests and other suggestions for improvement.&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>UTOSC 2012 talks of interest</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2012/05/utosc-2012-talks-of-interest/"/>
      <id>https://www.endpointdev.com/blog/2012/05/utosc-2012-talks-of-interest/</id>
      <published>2012-05-18T00:00:00+00:00</published>
      <author>
        <name>Jon Jensen</name>
      </author>
      <content type="html">
        &lt;p&gt;It’s been two weeks now since the &lt;a href=&#34;https://web.archive.org/web/20120525040559/http://conference.utos.org/&#34;&gt;Utah Open Source Conference&lt;/a&gt; for 2012. My fellow End Pointers wrote previously about it: Josh Ausborne about the &lt;a href=&#34;/blog/2012/05/end-point-at-utah-open-source/&#34;&gt;mini Liquid Galaxy&lt;/a&gt; we set up there for everyone to play with, and Josh Tolley with a &lt;a href=&#34;/blog/2012/05/utosc-recap/&#34;&gt;write-up of his talks&lt;/a&gt; on database constraints and KML for geographic mapping markup.&lt;/p&gt;
&lt;p&gt;There were a lot of interesting talks planned, and I could only attend some of them. I really enjoyed these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rob Taylor on &lt;a href=&#34;https://angularjs.org/&#34;&gt;AngularJS&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Brandon Johnson on Red Hat’s virtualization with &lt;a href=&#34;https://www.ovirt.org/&#34;&gt;oVirt&lt;/a&gt;, &lt;a href=&#34;https://spacewalkproject.github.io/&#34;&gt;Spacewalk&lt;/a&gt;, &lt;a href=&#34;https://theforeman.org/plugins/katello/&#34;&gt;Katello&lt;/a&gt;, and &lt;a href=&#34;https://web.archive.org/web/20120519125110/http://www.aeolusproject.org/&#34;&gt;Aeolus&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Clint Savage about RPM packaging with &lt;a href=&#34;https://github.com/rpm-software-management/mock/wiki&#34;&gt;Mock&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://fedoraproject.org/wiki/Koji&#34;&gt;Koji&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Daniel Evans on testing web applications with &lt;a href=&#34;https://github.com/teamcapybara/capybara&#34;&gt;Capybara&lt;/a&gt;, embedded WebKit, and Selenium (which End Pointer Mike Farmer &lt;a href=&#34;/blog/2011/12/running-integration-tests-in-webkit/&#34;&gt;wrote about here&lt;/a&gt; back in December)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aaron Toponce on &lt;a href=&#34;https://www.youtube.com/watch?v=FGOoLGZB2Ps&#34;&gt;breaking full-disk encryption&lt;/a&gt; (I missed this talk, but learned about it from Aaron in the hallway track and his slides afterwards)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Matt Harrison’s tutorial &lt;a href=&#34;https://web.archive.org/web/20120508201627/http://hairysun.com/blog/2012/05/04/utah-open-source-conference-python-tutorial-materials/&#34;&gt;Hands-on intermediate Python&lt;/a&gt;, covering doctest, function parameters and introspection, closures, function and class decorators, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I gave a talk on GNU Screen vs. tmux, which was fun (and ends with a live demo that predictably fell apart, and audience questions that you can’t hear on the recording). Here’s the video:&lt;/p&gt;
&lt;iframe allowfullscreen=&#34;&#34; frameborder=&#34;0&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/QxTse5Elq8s&#34; width=&#34;560&#34;&gt;&lt;/iframe&gt;
&lt;p&gt;Follow this &lt;a href=&#34;https://www.youtube.com/watch?v=QxTse5Elq8s&#34;&gt;Direct YouTube link&lt;/a&gt; in case the embedded version doesn’t work for you. And here are the &lt;a href=&#34;https://jon.swelter.net/talks/utosc-2012/screen-vs-tmux-faceoff.html&#34;&gt;presentation slides&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have a bit more to cover from the conference later!&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>Problem with Cisco VPN on Ubuntu 12.04</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2012/05/problem-with-cisco-vpn-on-ubuntu-1204/"/>
      <id>https://www.endpointdev.com/blog/2012/05/problem-with-cisco-vpn-on-ubuntu-1204/</id>
      <published>2012-05-07T00:00:00+00:00</published>
      <author>
        <name>Szymon Lipiński</name>
      </author>
      <content type="html">
        &lt;p&gt;A couple of days ago I had to change my notebook. I installed Ubuntu 12.04 on the new one, while on the previous one there was Ubuntu 11.10. There were no problems with copying all the files from the old to the new machine, including GPG and SSH keys. Everything went smoothly and I could connect to all the machines I needed.&lt;/p&gt;
&lt;p&gt;The only problem was with VPN. While working for one of our clients, I need to connect to their VPN. On the old machine I did that through the Network Manager. Nothing easier, I went to the Network Manager, chose the Export option and saved all the settings to a file. I copied the file to the new computer and loaded it into the Network Manager.&lt;/p&gt;
&lt;p&gt;The file loaded correctly. I could switch the VPN on. It said everything works. But in fact it didn’t. The message was “VPN is connected”, I could switch it on and off, but I couldn’t access any of the client’s resources available from my previous notebook.&lt;/p&gt;
&lt;p&gt;The first thing I checked was the content of /etc/resolv.conf on both computers. The file without connecting to VPN looked like this on both computers:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# Generated by NetworkManager
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nameserver 127.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;When I connected to the VPN the files on both computers were quite different. For example on my new computer (and Ubuntu 12.04) the content of the file looked like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# Generated by NetworkManager
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;domain something.net
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;search something.net
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nameserver 127.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I changed the data a little bit of course, so the domain names and IP addresses (except for 127.0.0.1) are not real.&lt;/p&gt;
&lt;p&gt;On my old computer the resolv.conf file had a lot more entries, however I thought the above file should work as well. The problem was still the same: I couldn’t connect to the client’s resources.&lt;/p&gt;
&lt;p&gt;The client is using the CISCO VPN, so I had to install network-manager-vpnc. This is just a plugin for network-manager which uses the vpnc program internally. I thought that maybe the plugin was doing something wrong.&lt;/p&gt;
&lt;p&gt;I checked the plugin versions. Yes, they really differ. I started thinking about using the program without the Network Manager.&lt;/p&gt;
&lt;p&gt;It turned out to be very simple to use. I need just a config file. The file is really simple:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IPSec gateway   something.net
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IPSec ID        something.id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IPSec secret    somethingpass
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Xauth username  mylogin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Xauth password  mypass&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I keep all my local scripts in ~/bin (which can also be accessed as /home/szymon/bin). The directory ~/bin is added to the PATH environment variable. This way I can access all the scripts placed there in the console without providing the whole path. I did it by adding the following line at the end of my local ~/.bashrc file.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PATH=$PATH:$HOME/bin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To keep the things together I saved the config file at the same location ~/bin/vpn.conf.&lt;/p&gt;
&lt;p&gt;Now I can connect to the VPN using:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo vpnc-connect /home/szymon/bin/vpn.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I can also stop the VPN using:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo vpnc-disconnect&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To automate it a little bit I created a simple script stored at ~/bin/vpn:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c00;font-weight:bold&#34;&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c00;font-weight:bold&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-weight:bold&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#d20;background-color:#fff0f0&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#369&#34;&gt;$1&lt;/span&gt;&lt;span style=&#34;color:#d20;background-color:#fff0f0&#34;&gt;&amp;#34;&lt;/span&gt; in
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sudo vpnc-connect /home/szymon/bin/vpn.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;stop)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sudo vpnc-disconnect
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;status)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ps uaxf | grep vpnc-connect | grep -v grep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;restart)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sudo vpnc-disconnect
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sudo vpnc-connect /home/szymon/bin/vpn.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#038&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#d20;background-color:#fff0f0&#34;&gt;&amp;#34;Usage: vpn (start|stop|status|restart)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#038&#34;&gt;exit&lt;/span&gt; &lt;span style=&#34;color:#00d;font-weight:bold&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-weight:bold&#34;&gt;esac&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This way I can simply write:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ vpn start
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[sudo] password for szymon:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VPNC started in background (pid: 13771)...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I noticed that now the /etc/resolv.conf file contains different entries than when using the Network Manager plugin:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#@VPNC_GENERATED@ -- this file is generated by vpnc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# and will be overwritten by vpnc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# as long as the above mark is intact
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# Generated by NetworkManager
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nameserver 1.2.3.4
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nameserver 1.2.3.4
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;search something.net&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I can also disconnect from the VPN with simple command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ vpn stop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Terminating vpnc daemon (pid: 13771)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I’m using this script for a couple of days and I don’t have any problems with the CISCO VPN. It seems like the vpnc program in Ubuntu 12.04 is OK, however there is something wrong with the Network Manager plugin for vpnc.&lt;/p&gt;

      </content>
    </entry>
  
    <entry>
      <title>Xen MAC mismatch VNC mouse escape HOWTO</title>
      <link rel="alternate" href="https://www.endpointdev.com/blog/2010/03/xen-mac-mismatch-vnc-howto/"/>
      <id>https://www.endpointdev.com/blog/2010/03/xen-mac-mismatch-vnc-howto/</id>
      <published>2010-03-30T00:00:00+00:00</published>
      <author>
        <name>Jon Jensen</name>
      </author>
      <content type="html">
        &lt;p&gt;This is a story that probably shouldn’t need to be told if everything is in documentation somewhere. I’m not using any fancy virtualization management tools and didn’t have an easy time piecing everything together, so I thought it’d be worth writing down the steps of the manual approach I took.&lt;/p&gt;
&lt;p&gt;Dramatis personæ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Server: Red Hat Enterprise Linux 5.4 with Xen kernel&lt;/li&gt;
&lt;li&gt;Guest virtual server: CentOS 5.4 running paravirtualized under Xen&lt;/li&gt;
&lt;li&gt;Workstation: Ubuntu 9.10&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The situation: I updated the CentOS 5 Xen virtual guest via yum and rebooted to load the new Linux kernel and other libraries such as glibc. According to Xen as reported by xm list, the guest had started back up fine, but the host wasn’t reachable over the network via ping, http, or ssh, including from the host network.&lt;/p&gt;
&lt;p&gt;The guest wasn’t using much CPU (as shown by xm top), so I figured it wasn’t just a slow-running fsck during startup. And I was familiar with the iptables firewall rules on this guest, so I was fairly sure I wasn’t being blocked there. I needed to get to the console to see what was wrong.&lt;/p&gt;
&lt;p&gt;The way I’ve done this before is using VNC to access the virtual console remotely. The Xen host was configured to accept VNC connections on localhost, which I could see by looking in /etc/xen/xend-config.sxp:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(vnc-listen &amp;#39;127.0.0.1&amp;#39;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;There are 11 Xen guests, with consoles listening on TCP ports 5900-5910. Which one was the one? I don’t know any simple way to get a list that maps ports to Xen guests, but I did it this way:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ps auxww | grep qemu-dm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I noted the PID of the process that was running for my guest as revealed in its command line. Then I looked for the listener running under that PID:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;netstat -nlp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I looked for $pid/qemu-dm in the PID/Program Name column and could then see the TCP port in the Local Address column. In my case it was 127.0.0.1:5903.&lt;/p&gt;
&lt;p&gt;So I set up an ssh tunnel to the server for my VNC traffic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh -f -N -L 5903:localhost:5903 root@$remote_host &amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then I opened the default Ubuntu/GNOME VNC viewer, labeled “Remote Desktop Viewer” under the Internet menu. This program is actually called Vinagre, and is basic but works. I connected to localhost:5903, since I’d forwarded my own local TCP port 5903 to the remote port 5903.&lt;/p&gt;
&lt;p&gt;The remote console came up, and I was presented with the login banner and prompt. If I hadn’t had the root password, I would have needed to reboot the guest and start it in runlevel 0 to get a root shell without a password and change the password. But I did have the password, so that wasn’t necessary.&lt;/p&gt;
&lt;p&gt;Then when trying to change to another window on my desktop, I ran into the biggest snag of the whole exercise: Getting control of the mouse out of the VNC remote desktop window and back in my own desktop! I couldn’t find anything accurate on this in any documentation, forums, etc. Finally I stumbled across the trick: Press F10, which pulls down the Machine menu in Vinagre and as a side-effect takes control of the mouse away from the remote desktop. It was nice not to have to ssh in from another machine to kill Vinagre. But it makes me wonder how I’d send an F10 through to the remote console &amp;hellip;&lt;/p&gt;
&lt;p&gt;Armed with the root password I was able to log into the guest and discover that only the lo (loopback) interface started on boot. The eth0 and eth1 interfaces failed because there was no virtual NIC available with the MAC addresses specified in /etc/sysconfig/network-scripts/ifcfg-eth0 and eth1.&lt;/p&gt;
&lt;p&gt;That was because the virtual machine image had been cloned from another one and hadn’t been given new unique MAC addresses. The problem was easily fixed by updating the ifcfg-eth0 and ifcfg-eth1 files with the MAC addresses actually given to the interfaces, as seen by ifconfig, which were ultimately assigned by the Xen host in /etc/xen/$host in the vif parameter. (You can also specify no MAC addresses in the guest at all and it will use whatever it gets.)&lt;/p&gt;
&lt;p&gt;Then after running service network restart the networking was back, and I rebooted to make sure it started correctly on its own.&lt;/p&gt;

      </content>
    </entry>
  
</feed>
