<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sysadmin on despatches</title><link>https://icle.es/tags/sysadmin/</link><description>Recent content in Sysadmin on despatches</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 18 Mar 2026 15:13:17 +0000</lastBuildDate><atom:link href="https://icle.es/tags/sysadmin/index.xml" rel="self" type="application/rss+xml"/><item><title>How to fix terminal title after disconnecting from ssh</title><link>https://icle.es/2020/06/25/how-to-terminal-title-after-disconnecting-from-ssh/</link><pubDate>Thu, 25 Jun 2020 08:47:45 +0000</pubDate><guid>https://icle.es/2020/06/25/how-to-terminal-title-after-disconnecting-from-ssh/</guid><description>&lt;p>For some reason, ssh does not clean up after itself in terms of updating the
terminal title when you disconnect.&lt;/p>
&lt;p>Here is a simple solution, a combination of
&lt;a href="https://unix.stackexchange.com/a/341277/25975">https://unix.stackexchange.com/a/341277/25975&lt;/a> and
&lt;a href="https://unix.stackexchange.com/a/28520/25975">https://unix.stackexchange.com/a/28520/25975&lt;/a>&lt;/p>
&lt;p>Add the following functions into your &lt;code>~/.bashrc&lt;/code> It will push the current title
and icon into a stack and pop it afterwards.&lt;/p>
```bash
function ssh()
{
 # push current title and icon to stack
 echo -ne '\e[22t'
 # Execute ssh as expected
 /usr/bin/ssh "$@"
 # revert the window title after the ssh command
 echo -ne '\e[23t'
}
```
&lt;p>Restart bash / log out and back in, and it should work.&lt;/p></description><content:encoded><![CDATA[<p>For some reason, ssh does not clean up after itself in terms of updating the
terminal title when you disconnect.</p>
<p>Here is a simple solution, a combination of
<a href="https://unix.stackexchange.com/a/341277/25975">https://unix.stackexchange.com/a/341277/25975</a> and
<a href="https://unix.stackexchange.com/a/28520/25975">https://unix.stackexchange.com/a/28520/25975</a></p>
<p>Add the following functions into your <code>~/.bashrc</code> It will push the current title
and icon into a stack and pop it afterwards.</p>
```bash
function ssh()
{
    # push current title and icon to stack
    echo -ne '\e[22t'
    # Execute ssh as expected
    /usr/bin/ssh "$@"
    # revert the window title after the ssh command
    echo -ne '\e[23t'
}
```
<p>Restart bash / log out and back in, and it should work.</p>
<p>For security reasons, it is not possible to query the current title of the
terminal. However, with the following command, you can push the current one on
to a stack</p>
```bash
echo -ne '\e[22t'
```
<p>The title can then be set to anything, by ssh for example. You can then pop that
back from the stack using</p>
```bash
echo -ne '\e[23t'
```
]]></content:encoded></item><item><title>Getting Docker Desktop Working with WSL2 on Windows</title><link>https://icle.es/2020/05/28/getting-docker-desktop-working-with-wsl2-on-windows/</link><pubDate>Thu, 28 May 2020 17:29:52 +0000</pubDate><guid>https://icle.es/2020/05/28/getting-docker-desktop-working-with-wsl2-on-windows/</guid><description>&lt;p>I ran into several issues while trying to get this to work. Here are the steps I
had to complete to get it working. Hopefully this will save some hair on your
head ;)&lt;/p>
&lt;p>The main step is to go into the settings in Docker Desktop -&amp;gt; Resources and
make sure that your distribution is enabled for docker.&lt;/p>
&lt;p>
 &lt;img src="https://icle.es/assets/2020/05/image.png" alt="enable your distro on docker">

&lt;/p>
&lt;ol>
&lt;li>Make sure that you have no docker packages installed on your WSL
distribution. Docker Desktop will deploy its own binaries, and any
pre-existing binaries will confuse it. This issue exhibited itself for me
with errors related to missing files around credentials.&lt;/li>
&lt;li>Remove any &lt;code>DOCKER_HOST &lt;/code>environment variables. Docker Desktop will sort it
out. Docker kept hanging for me until I fixed this.&lt;/li>
&lt;li>If you want to use docker as non-root user, add yourself to the
&lt;code>docker &lt;/code>group.&lt;/li>
&lt;/ol>
&lt;p>Errors / Issues I ran into:&lt;/p></description><content:encoded><![CDATA[<p>I ran into several issues while trying to get this to work. Here are the steps I
had to complete to get it working. Hopefully this will save some hair on your
head ;)</p>
<p>The main step is to go into the settings in Docker Desktop -&gt; Resources and
make sure that your distribution is enabled for docker.</p>
<p>
  <img src="/assets/2020/05/image.png" alt="enable your distro on docker">

</p>
<ol>
<li>Make sure that you have no docker packages installed on your WSL
distribution. Docker Desktop will deploy its own binaries, and any
pre-existing binaries will confuse it. This issue exhibited itself for me
with errors related to missing files around credentials.</li>
<li>Remove any <code>DOCKER_HOST </code>environment variables. Docker Desktop will sort it
out. Docker kept hanging for me until I fixed this.</li>
<li>If you want to use docker as non-root user, add yourself to the
<code>docker </code>group.</li>
</ol>
<p>Errors / Issues I ran into:</p>
<p><code>docker.credentials.errors.InitializationError: docker-credential-desktop.exe not installed or not available in PATH</code> -
Fixed by 1 above.</p>
<p><code>docker-compose</code> from WSL2 errors out - Again, fixed by 1</p>
<p>Unable to run <code>docker</code> as non-root user - fixed by 3.</p>
<p>Docker hangs when run as non-root user - fixed by 2.</p>
]]></content:encoded></item><item><title>ZFS Deleting files doesn't free up space</title><link>https://icle.es/2018/04/12/zfs-deleting-files-doesnt-free-up-space/</link><pubDate>Thu, 12 Apr 2018 10:15:02 +0000</pubDate><guid>https://icle.es/2018/04/12/zfs-deleting-files-doesnt-free-up-space/</guid><description>&lt;p>So I have a proxmox server on which I run a few VMs and the other day it
completely ran out of space. This was because of overprovisioning through thin
volumes.&lt;/p>
&lt;p>After much head scratching and metaphorically banging my head against a wall,
here are the things I learnt.&lt;/p></description><content:encoded><![CDATA[<p>So I have a proxmox server on which I run a few VMs and the other day it
completely ran out of space. This was because of overprovisioning through thin
volumes.</p>
<p>After much head scratching and metaphorically banging my head against a wall,
here are the things I learnt.</p>
<h2 id="empty-trash">Empty Trash</h2>
<h3 id="local-trash">Local Trash</h3>
<p>Make sure that have emptied the trash on the VMs .Ubuntu has this issue and so
might other distributions</p>
<h3 id="network-trash">Network Trash</h3>
<p>If you have SAMBA enabled on your VMs make sure that the Recycle Bin is not
enabled. I have openmediavault running on a VM and I had to go through and
disable the Recycling Bin. Make sure that the Recycle bin is emptied. They are
hidden folders in the root of your shares.</p>
<h2 id="correct-driver--settings">Correct Driver &amp; Settings</h2>
<ul>
<li>When setting up the hard drive for your VM, make sure you use virtio-scsi (or
just scsi on the web interface).
<ul>
<li>If you disk is already set up using IDE or VirtIO,
<ul>
<li>Delete it. Don't worry, it's only deleting the link. The disk itself
will show up in the interface afterwards</li>
<li>Double click on the unattached disk and select SCSI and Discard</li>
<li>You might have to fix the references to the drive in the OS</li>
</ul>
</li>
</ul>
</li>
<li>On the Device Screen, make sure discard is selected.</li>
</ul>
<h2 id="trim">TRIM</h2>
<p>Configure the OS to send TRIM commands to the drive</p>
<h3 id="linux">Linux</h3>
<h4 id="on-mount">On Mount</h4>
<p>You can pass the parameter discard to any mountpoint and the correct TRIM
commands will be sent to the disk. <strong>HOWEVER</strong>, this is apparently a big
performance hit.</p>
<p>To do the actual trim, run</p>
```bash
$ fstrim
```
<p>OR to run fstrim on all supported drives</p>
```bash
$ fstrim -a
```
<p><a href="https://www.digitalocean.com/community/tutorials/how-to-configure-periodic-trim-for-ssd-storage-on-linux-servers">Digital Ocean has a detailed post about setting TRIM and setting up a schedule etc.</a></p>
<h3 id="windows">Windows</h3>
<p>My condolences! Also, I don&rsquo;t run Windows on any of my VM&rsquo;s so I have no
experience with it.</p>]]></content:encoded></item><item><title>Understanding ZFS Disk Utilisation and available space</title><link>https://icle.es/2017/08/16/understanding-zfs-disk-utilisation-and-available-space/</link><pubDate>Wed, 16 Aug 2017 12:02:07 +0000</pubDate><guid>https://icle.es/2017/08/16/understanding-zfs-disk-utilisation-and-available-space/</guid><description>&lt;p>I am hopeful the following will help someone scratch their head a little less in
trying to understand the info returned by zfs.&lt;/p>
&lt;p>I set up a pool using 4 2TB SATA disks.&lt;/p>
```bash
$ zpool list -v
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
rpool 7.25T 2.50T 4.75T - 10% 34% 1.00x ONLINE -
raidz2 7.25T 2.50T 4.75T - 10% 34%
sda2 - - - - - -
sdb2 - - - - - -
sdc2 - - - - - -
sdd2 - - - - - -
```
&lt;p>The total size displayed here is the total size of the 4 disks. The maths works
as 4*2TB = 8TB = ~7.25TiB&lt;/p></description><content:encoded><![CDATA[<p>I am hopeful the following will help someone scratch their head a little less in
trying to understand the info returned by zfs.</p>
<p>I set up a pool using 4 2TB SATA disks.</p>
```bash
$ zpool list -v
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
rpool 7.25T 2.50T 4.75T - 10% 34% 1.00x ONLINE -
raidz2 7.25T 2.50T 4.75T - 10% 34%
sda2 - - - - - -
sdb2 - - - - - -
sdc2 - - - - - -
sdd2 - - - - - -
```
<p>The total size displayed here is the total size of the 4 disks. The maths works
as 4*2TB = 8TB = ~7.25TiB</p>
<p>RAIDZ2 is like RAID6 and it uses two disks for parity. Thus, I would expect to
have ~4TB or 3.63TiB of available space. I haven&rsquo;t been able to find this number
displayed anywhere.</p>
<p><strong>However</strong>, you can find the amount of disk space still available using the
following command.</p>
```bash
$# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 1.21T 2.19T 140K /rpool
rpool/ROOT 46.5G 2.19T 140K /rpool/ROOT
rpool/ROOT/pve-1 46.5G 2.19T 46.5G /
rpool/data 1.16T 2.19T 140K /rpool/data
rpool/data/vm-100-disk-1 593M 2.19T 593M -
rpool/data/vm-101-disk-1 87.1G 2.19T 87.1G -
rpool/data/vm-102-disk-1 71.2G 2.19T 71.2G -
rpool/data/vm-103-disk-1 2.26G 2.19T 2.26G -
rpool/data/vm-103-disk-2 13.2M 2.19T 13.2M -
rpool/data/vm-103-disk-3 13.2M 2.19T 13.2M -
rpool/data/vm-103-disk-4 93K 2.19T 93K -
rpool/data/vm-103-disk-5 1015G 2.19T 1015G -
rpool/data/vm-104-disk-1 4.73G 2.19T 4.73G -
rpool/data/vm-105-disk-1 4.16G 2.19T 4.16G -
rpool/swap 8.66G 2.19T 8.66G -
```
<p>The value of <strong>2.19T</strong> is the amount of unallocated space available in the pool.
To verify this, you can run</p>
```
# zfs get all rpool
NAME PROPERTY     VALUE                           SOURCE
rpool type        filesystem                       -
rpool creation    Fri Aug 4 20:39 2017             -
rpool used        1.21T                            -
rpool available   2.19T                            -

...
```
<p>If we add the two numbers here, 1.21T + 2.19T = 3.4T.</p>
<p>5% of disk space is reserved, so 3.63 * 0.95 = 3.4T</p>
<p>et voila</p>
]]></content:encoded></item><item><title>Restricting Linux Logins to Specified Group</title><link>https://icle.es/2012/03/21/restricting-linux-logins-to-specified-group/</link><pubDate>Wed, 21 Mar 2012 11:36:45 +0000</pubDate><guid>https://icle.es/2012/03/21/restricting-linux-logins-to-specified-group/</guid><description>&lt;p>If you have linux boxes that authenticate over ldap but want logins for specific
boxes to be restricted to a particular group, there is a simple way to achieve
this.&lt;/p>
&lt;p>Firstly, create a new file called &lt;code>/etc/group.login.allow&lt;/code> (it can be called
anything - you just need to update the line below to reflect the name)&lt;/p>
&lt;p>In this file, pop in all the groups that should be able to login&lt;/p>
```
admin
group1
group2
```
&lt;p>Edit &lt;code>/etc/pam.d/common-auth&lt;/code> (in ubuntu), it might be
called &lt;code>/etc/pam.d/system-auth&lt;/code> or something else very similar. At the top of
the file (or at least above other entries, add the following line:&lt;/p></description><content:encoded><![CDATA[<p>If you have linux boxes that authenticate over ldap but want logins for specific
boxes to be restricted to a particular group, there is a simple way to achieve
this.</p>
<p>Firstly, create a new file called <code>/etc/group.login.allow</code> (it can be called
anything - you just need to update the line below to reflect the name)</p>
<p>In this file, pop in all the groups that should be able to login</p>
```
admin
group1
group2
```
<p>Edit <code>/etc/pam.d/common-auth</code> (in ubuntu), it might be
called <code>/etc/pam.d/system-auth</code> or something else very similar. At the top of
the file (or at least above other entries, add the following line:</p>
```
auth required pam_listfile.so onerr=fail item=group sense=allow file=/etc/group.login.allow
```
<p>For the record, found this little tidbit
<a href="https://www.centos.org/modules/newbb/viewtopic.php?topic_id=25940" title="Allow Only Specific LDAP Group Access (CentOS Forums)">over at the centos forums</a>\</p>
]]></content:encoded></item><item><title>Looping from the bash commandline [1113]</title><link>https://icle.es/2011/12/20/looping-from-the-bask-commandline-1113/</link><pubDate>Tue, 20 Dec 2011 13:32:08 +0000</pubDate><guid>https://icle.es/2011/12/20/looping-from-the-bask-commandline-1113/</guid><description>&lt;p>I figured this out the other day from idle curiosity. There is occassionally the
need to have a never ending loop to be executed directly from the bash
commandline instead of writing a script.&lt;/p>
&lt;p>I used this to run sl (yes sl, not ls - try it - I love it) repeatedly.&lt;/p>
```
 $ while true; do ; done
```
&lt;p>for example&lt;/p>
```
 $ while true; do sl; done
```
&lt;p>Bear in mind that this loop is infinite and there is no way to cancel out of it
except to kill of the terminal.&lt;/p></description><content:encoded><![CDATA[<p>I figured this out the other day from idle curiosity. There is occassionally the
need to have a never ending loop to be executed directly from the bash
commandline instead of writing a script.</p>
<p>I used this to run sl (yes sl, not ls - try it - I love it) repeatedly.</p>
```
    $ while true; do ; done
```
<p>for example</p>
```
    $ while true; do sl; done
```
<p>Bear in mind that this loop is infinite and there is no way to cancel out of it
except to kill of the terminal.</p>
]]></content:encoded></item><item><title>Expanding glusterfs volumes [1112]</title><link>https://icle.es/2011/12/20/expanding-glusterfs-volumes-1112/</link><pubDate>Tue, 20 Dec 2011 13:26:55 +0000</pubDate><guid>https://icle.es/2011/12/20/expanding-glusterfs-volumes-1112/</guid><description>&lt;p>&lt;a href="https://icle.es/2011/11/24/glusterfs-howto/" title="GlusterFS HOWTO [1108]">Once you have set up a glusterfs volume&lt;/a>,
you might want to expand the volume to add storage. This is an astoundingly easy
task.&lt;/p>
&lt;p>The first thing that you&amp;rsquo;ll want to do is to add in bricks. Bricks are similar
to physical volumes a la LVM. The thing to bear in mind is that depending on
what type of cluster you have (replicated / striped), you will need to add a
certain number of blocks at a time.&lt;/p></description><content:encoded><![CDATA[<p><a href="https://icle.es/2011/11/24/glusterfs-howto/" title="GlusterFS HOWTO [1108]">Once you have set up a glusterfs volume</a>,
you might want to expand the volume to add storage. This is an astoundingly easy
task.</p>
<p>The first thing that you&rsquo;ll want to do is to add in bricks. Bricks are similar
to physical volumes a la LVM. The thing to bear in mind is that depending on
what type of cluster you have (replicated / striped), you will need to add a
certain number of blocks at a time.</p>
<p>Once you have a initialised the nodes, to add in a set of bricks, you need the
following command which adds two more bricks to a cluster which keeps two
replicas.</p>
```bash
$ gluster volume add-brick testvol cserver3:/gdata cserver4:/gdata
```
<p>Once you have done this, you will need to rebalance the cluster, which involves
redistributing the files across all the bricks. There are two steps to this
process, the &ldquo;fixing&rdquo; of the layout changes and the rebalancing of the data
itself. You can perform both tasks together.</p>
<p>As a starting point, to view the status of a rebalance, you can use:</p>
```bash
$ gluster volume rebalance testvol status
```
<p>You can also stop / pause a rebalance with</p>
```bash
$ gluster volume rebalance testvol stop
```
<p>To &ldquo;fix&rdquo; the layout changes, you need to run:</p>
```bash
$ gluster volume rebalance testvol fix-layout start
Starting rebalance on volume test-volume has been successful
```
<p>Rebalancing the volume to migrate the data is easy and can be done using a
similar command:</p>
```bash
$ gluster volume rebalance testvol migrate-data start
```
<p>To complete both in one command, you just need:</p>
```bash
$ gluster volume rebalance testvol start
```
<p>Easy right?</p>
<p>With this mechanism, you have the ability to have storage that can be expanded
on the fly by using additional hardware. You can also remove existing bricks
using:</p>
```bash
$ gluster volume remove-brick testvol cserver2:/gdata
```
<p>This means that you can remove a brick with smaller hard drives, upgrade the
harddrives, and re-integrate into the cluster with bigger hard drives. This
means that you have a cloud like storage solution which you can easily grow as
necessary without worrying about resizing underlying filesystems or hotswapping
hardisks or any of that hassle.</p>
]]></content:encoded></item><item><title>My Thoughts on OCFS2 / Understanding OCFS2 [1110]</title><link>https://icle.es/2011/11/24/my-thoughts-on-ocfs2-understanding-ocfs2-1110/</link><pubDate>Thu, 24 Nov 2011 21:42:09 +0000</pubDate><guid>https://icle.es/2011/11/24/my-thoughts-on-ocfs2-understanding-ocfs2-1110/</guid><description>&lt;p>&lt;a href="https://icle.es/2011/11/24/glusterfs-howto/" title="GlusterFS HOWTO [1108]">As mentioned earlier&lt;/a>,
we have been considered networked filesystems instead of NFS to introduce into a
number of complex environments. OCFS2 was one of the first candidates.&lt;/p>
&lt;p>In fact, we also considered GFS2 but looking around on the net, there seemed to
be a general consensus recommending ocfs2 over gfs2.&lt;/p>
&lt;p>Ubuntu makes it pretty easy to install and manage ocfs2 clusters. You just need
to install ocfs2-tools and ocfs2console. You can then use the console to manage
the cluster.&lt;/p>
&lt;p>What I totally missed in all of my research and understanding, and due to lack
of in depth knowledge on clustered filesystems was that OCFS2 (and GFS2 for that
matter) are shared disk file systems.&lt;/p>
&lt;p>What does this mean?&lt;/p></description><content:encoded><![CDATA[<p><a href="https://icle.es/2011/11/24/glusterfs-howto/" title="GlusterFS HOWTO [1108]">As mentioned earlier</a>,
we have been considered networked filesystems instead of NFS to introduce into a
number of complex environments. OCFS2 was one of the first candidates.</p>
<p>In fact, we also considered GFS2 but looking around on the net, there seemed to
be a general consensus recommending ocfs2 over gfs2.</p>
<p>Ubuntu makes it pretty easy to install and manage ocfs2 clusters. You just need
to install ocfs2-tools and ocfs2console. You can then use the console to manage
the cluster.</p>
<p>What I totally missed in all of my research and understanding, and due to lack
of in depth knowledge on clustered filesystems was that OCFS2 (and GFS2 for that
matter) are shared disk file systems.</p>
<p>What does this mean?</p>
<p><a href="http://en.wikipedia.org/" title="Wikipedia">Wikipedia</a> defines a
<a href="http://en.wikipedia.org/wiki/Shared_disk_file_system" title="Shared Disk File System">shared disk filesystem</a> as
being &ldquo;shared by being
simultaneously <a href="http://en.wikipedia.org/wiki/Mount_%28computing%29" title="Mount
(computing)">mounted</a> on
multiple <a href="http://en.wikipedia.org/wiki/Server_%28computing%29" title="Server (computing)">servers</a>.&rdquo;</p>
<p>This essentially means that the storage medium is mounted on to cluster. The
cluster is a collection of the clients. The storage is traditionally a SAN mount
point. This means that a shared storage space is accessed at high speeds by a
number of clients.</p>
<p>From a simplistic point of view, this is not that different from mounting the
SAN point onto a server and then running an NFS server on it with all the
clients mounting over NFS.</p>
<p>The main difference is that OCFS is distributed. There is no single point of
failure (assuming that the storage medium is redundant which a SAN would be).
The NFS server is a clear single point of failure.</p>
<p>If you do not have access to or want to use a SAN,
<a href="http://www.drbd.org/users-guide/ch-ocfs2.html" title="Using OCFS2 with DRBD">you can also use DRBD.</a></p>
<p>NFS is described as a network filesystem and GlusterFS is described as a NAS
file system.</p>]]></content:encoded></item><item><title>Exporting X11 to Windows [1109]</title><link>https://icle.es/2011/11/24/exporting-x11-to-windows-1109/</link><pubDate>Thu, 24 Nov 2011 21:10:55 +0000</pubDate><guid>https://icle.es/2011/11/24/exporting-x11-to-windows-1109/</guid><description>&lt;p>Playing Skyrim the last week, sometimes I just missed Linux so terribly that I
wanted a piece of it and not just the command line version. I wanted X Windows
on my Windows 7.&lt;/p>
&lt;p>There has been a solution for this for several years and the first time I did
this, I installed &lt;a href="http://www.cygwin.com/" title="cygwin">cygwin&lt;/a> with X11 but there
is a far simpler way to accomplish this.&lt;/p>
&lt;p>Install &lt;a href="http://www.straightrunning.com/XmingNotes/" title="XMing">XMing&lt;/a>. I then used
putty, which has the forward X11 option. Once logged in, running xeyes shows the
window exported onto my Windows 7. Ah.. so much better.&lt;/p></description><content:encoded><![CDATA[<p>Playing Skyrim the last week, sometimes I just missed Linux so terribly that I
wanted a piece of it and not just the command line version. I wanted X Windows
on my Windows 7.</p>
<p>There has been a solution for this for several years and the first time I did
this, I installed <a href="http://www.cygwin.com/" title="cygwin">cygwin</a> with X11 but there
is a far simpler way to accomplish this.</p>
<p>Install <a href="http://www.straightrunning.com/XmingNotes/" title="XMing">XMing</a>. I then used
putty, which has the forward X11 option. Once logged in, running xeyes shows the
window exported onto my Windows 7. Ah.. so much better.</p>
<p>I actually used this to run terminator to connect to a number of servers. Over
local LAN, the windows didn't have any perceptible lag or delay. It was more or
less like running it locally.</p>
<p>It is possible to set up shortcuts to run an application through putty and have
it exported to your desktop. I haven't played with this enough to comment
though.</p>
<p>This of course only worked because I have another box which is running Linux. If
that is not the case for you, then you might want to try
<a href="https://www.virtualbox.org/" title="VirtualBox">VirtualBox</a> but since the linux
kernel developers have described the kernel modules as
<a href="http://www.phoronix.com/scan.php?page=news_item&amp;px=OTk5Mw" title="The VirtualBox Kernel Driver Is Tainted Crap">tainted crap</a>,
you might want to consider <a href="http://www.vmware.com" title="vmware">vmware</a> instead
which is an excellent product.</p>
]]></content:encoded></item><item><title>GlusterFS HOWTO [1108]</title><link>https://icle.es/2011/11/24/glusterfs-howto/</link><pubDate>Thu, 24 Nov 2011 20:53:33 +0000</pubDate><guid>https://icle.es/2011/11/24/glusterfs-howto/</guid><description>&lt;p>So, I  am catching up a bit on the technical documentation. A week taken to play
Skyrim combined with various other bits and pieces made this a little difficult.&lt;/p>
&lt;p>On the bright side, there are a few new things that have been worked on so
hopefully plenty of things to cover soon.&lt;/p>
&lt;p>We manage a number of servers and all over the place and all of them require to
be backed up. We also have a number of desktops all with mirrored disks also
getting backed up.&lt;/p>
&lt;p>I like things to be all nicely efficient and its annoying when one server /
desktop runs out of space when another two (or ten) has plenty of space. We grew
to dislike NFS particularly due to the single point of failure and there were
few other options.&lt;/p>
&lt;p>We had tried &lt;a href="http://www.gluster.org/" title="GlusterFS">glusterfs&lt;/a> a few years ago
(think it was at version 1.3 or something) and there were various issues
particularly around small files and configuration was an absolute nightmare.&lt;/p>
&lt;p>With high hopes that version 3.2 was exactly what we were looking for, we set up
three basic machines for testing&lt;/p></description><content:encoded><![CDATA[<p>So, I  am catching up a bit on the technical documentation. A week taken to play
Skyrim combined with various other bits and pieces made this a little difficult.</p>
<p>On the bright side, there are a few new things that have been worked on so
hopefully plenty of things to cover soon.</p>
<p>We manage a number of servers and all over the place and all of them require to
be backed up. We also have a number of desktops all with mirrored disks also
getting backed up.</p>
<p>I like things to be all nicely efficient and its annoying when one server /
desktop runs out of space when another two (or ten) has plenty of space. We grew
to dislike NFS particularly due to the single point of failure and there were
few other options.</p>
<p>We had tried <a href="http://www.gluster.org/" title="GlusterFS">glusterfs</a> a few years ago
(think it was at version 1.3 or something) and there were various issues
particularly around small files and configuration was an absolute nightmare.</p>
<p>With high hopes that version 3.2 was exactly what we were looking for, we set up
three basic machines for testing</p>
<p>Previously, <a href="http://www.gluster.org/" title="GlusterFS">glusterfs</a> required all the
configuration to be completed manually and with text files. It also required a
fairly detailed knowledge of what they called translators and a lot of tweaking
and fiddling with parameters.</p>
<p>I am very happy to report that this is no longer the case with 3.2.</p>
<p>The three servers(cserver[1-3]) are running Ubuntu and was updated to Natty
(11.10) to get access to glusterfs 3.2 (11.04 only had 3.0). One thing to bear
in mind is that the glusterfs website seemed to only have the 64 bit version but
Ubuntu 11.10 also has the 32bit version.</p>
<p>Installing the server part of glusterfs was simple and straightfoward</p>
```bash
$ sudo aptitude install glusterfs-server
```
<p>Once this was done all three servers
(<a href="http://www.tenshu.net/p/terminator.html" title="Terminator">terminator</a> is a godsend
when doing these things across a number of servers), adding the servers into a
&ldquo;cluster&rdquo; was easy enough.</p>
```bash
shri@cserver1:~$ gluster peer probe cserver2
Probe successful

shri@cserver1:~$ sudo gluster peer probe cserver3
Probe successful
```
<p>The thing to note is that these probe statements are two way. In other words,
all three servers are now part of the same cluster.</p>
```bash
shri@cserver3:~$ sudo gluster peer status
Number of Peers: 2

Number of Peers: 3

Hostname: cserver1
Uuid: 8fe63300-e227-4aec-81f3-69b33f894330
State: Peer in Cluster (Connected)

Hostname: cserver2
Uuid: 275ce612-2dd8-4e2a-8cc8-3115ad18c594
State: Peer in Cluster (Connected)
```
<p>The thing is that if you type in an incorrect hostname, the probe will keep
trying to connect to it. I haven&rsquo;t left it running long enough to know if it
every returns.</p>
```bash
shri@cserver3:~# sudo gluster peer probe does-not-exist
^C
shri@cserver3:~# sudo gluster peer status
Number of Peers: 3

Hostname: cserver1
Uuid: 8fe63300-e227-4aec-81f3-69b33f894330
State: Peer in Cluster (Connected)

Hostname: cserver2
Uuid: 275ce612-2dd8-4e2a-8cc8-3115ad18c594
State: Peer in Cluster (Connected)

Hostname: does-not-exist
Uuid: 00000000-0000-0000-0000-000000000000
State: Establishing Connection (Disconnected)
```
<p>Thankfully, removing host does-not-exist is simple enough</p>
```bash
shri@cserver3:~# sudo gluster peer detach does-not-exist
Detach successful
shri@cserver3:~# sudo gluster peer status
Number of Peers: 2

Hostname: cserver1
Uuid: 8fe63300-e227-4aec-81f3-69b33f894330
State: Peer in Cluster (Connected)

Hostname: cserver2
Uuid: 275ce612-2dd8-4e2a-8cc8-3115ad18c594
State: Peer in Cluster (Connected)
```
<p>Creating a volume is straightforward. There are a number of different types of
volumes which you can find out from the documentation. In this particular
instance, we are creating a distributed replicated</p>
```bash
shri@cserver3:~$ sudo gluster volume create testvol replica 2 transport tcp cserver1:/gdata cserver2:/gdata
Creation of testvol has been successful
Please start the volume to access data
```
<p>The reason I have not included cserver3 in here is that the volume needs a
multiple of the replica number of bricks. In the case, the there needs to be a
muliple of 2 number of bricks.</p>
<p>Additionally, you could use rdma instead of tcp if you are using infiniband</p>
<p>Starting the volume is simple enough</p>
```bash
shri@cserver3:~$ sudo gluster volume start testvol
```
<p>this volume is now accessible from all the boxes in the cluster</p>
```bash
shri@cserver1:~# sudo gluster volume info

Volume Name: testvo
Type: Distributed-Replicate
Status: Started
Number of Bricks: 2 x 1 = 2
Transport-type: tcp
Bricks:
Brick1: cserver1:/gdata
Brick2: cserver2:/gdata
```
<p>Mounting this from another box is easy</p>
```bash
$ sudo aptitude install glusterfs-client
$ sudo mount -t glusterfs /mnt cserver:/testvol
```
<p>If you get the error of &ldquo;endpoint not connected&rdquo; when listing the content of the
mount, it is likely because the volume is not started.</p>
<p>If you are curious, check the gdata folders in the bricks after copying some
files into the mount and you&rsquo;ll find them show up intact and on both bricks in
the above example.</p>]]></content:encoded></item><item><title>Saving your workspace window configuration in Linux [1102]</title><link>https://icle.es/2011/11/02/saving-your-workspace-window-configuration-in-linux-1102/</link><pubDate>Wed, 02 Nov 2011 23:57:22 +0000</pubDate><guid>https://icle.es/2011/11/02/saving-your-workspace-window-configuration-in-linux-1102/</guid><description>&lt;p>I am usually working on a good half a dozen things at any given time and this
means that I usually have a good ten or twenty windows open. My chromium
currently has a 134 tabs and this is after I  cleaned up and closed all the tabs
I no longer need.&lt;/p>
&lt;p>Luckily, working in Linux means that I can spread each stream of work into the
various workspaces.&lt;/p>
&lt;p>Now GNOME 3 makes things a little more complicated with the dynamic workspaces
but I&amp;rsquo;m learning to use it to my advantage&lt;/p>
&lt;p>However, with Ubuntu 11.10 Oneiric Ocelot and GNOME 3, I seem to be running into
an issue regularly&amp;hellip;If I leave my computer for a while, it doesn&amp;rsquo;t unlock
correctly. The screen remains black and I can&amp;rsquo;t move the mouse to my second
screen and the unlock screen doesn&amp;rsquo;t show up.&lt;/p></description><content:encoded><![CDATA[<p>I am usually working on a good half a dozen things at any given time and this
means that I usually have a good ten or twenty windows open. My chromium
currently has a 134 tabs and this is after I  cleaned up and closed all the tabs
I no longer need.</p>
<p>Luckily, working in Linux means that I can spread each stream of work into the
various workspaces.</p>
<p>Now GNOME 3 makes things a little more complicated with the dynamic workspaces
but I&rsquo;m learning to use it to my advantage</p>
<p>However, with Ubuntu 11.10 Oneiric Ocelot and GNOME 3, I seem to be running into
an issue regularly&hellip;If I leave my computer for a while, it doesn&rsquo;t unlock
correctly. The screen remains black and I can&rsquo;t move the mouse to my second
screen and the unlock screen doesn&rsquo;t show up.</p>
<p>Thinking about it, it seems like there might be two screen savers being started
but I shall investigate that tomorrow. I have the same issue at both work and
home so it is more likely to be related to Ubuntu + GNOME 3 or something about
the way I set things up.</p>
<p>I  usually resolve this by logging into the console and here a neat trick for
killing all our processes in one fell swoop.</p>
```bash
$ kill -9 -1
```
<p>Another thing I have been doing a bit more of recently is gaming which involves
rebooting in Windows.</p>
<p>Both of the above leaves me with a restarted workspace. Starting up the
applications pops them all into the same workspace. Chrome is especially a
nightmare. I might have 135 open tabs but they are in about 6 windows spread
across four workspaces.</p>
<p>It is annoying to have to distribute these things out each time.</p>
<p>After having done much research, I have not been able to find a clean automated
solution.</p>
<p>There are two half solution that I have found however.</p>
<p>The first one is <a href="http://live.gnome.org/DevilsPie" title="Devil&#39;s Pie">Devil&rsquo;s Pie</a>
and for a graphical interface
<a href="http://code.google.com/p/gdevilspie/" title="gdevilspie">gdevilspie</a>. According the
website for Devil&rsquo;s Pie, it is &ldquo;A totally crack-ridden program for freaks and
weirdos who want precise control over what windows do when they appear. If you
want all XChat windows to be on desktop 3, in the lower-left, at 40%
transparency, you can do it.&rdquo;</p>
<p>Unfortunately, that is exactly what it is. If you pre-determine where you want
your windows to be, you can use this very useful application. However, that is
not quite what I want. I want the current configuration to be remember. Exactly
like how Chromium remembers which tabs are in which order in which windows and
their position on the workspace, but for multiple workspaces.</p>
<p>Unfortunately, I couldn&rsquo;t find any way to save the current state.</p>
<p>There is however, another tool
<a href="http://thialfihar.org/projects/window_position_session/" title="Window Position Session">I found scouring the web.</a></p>
<p><a href="http://thialfihar.org/projects/window_position_session/" title="Window Position Session"></a>libwnck-3-dev
is what I installed on my Ubuntu box. There are two key commands here</p>
```bash
$ wnckprop --list
```
<p>This will list all the windows across all the workspaces. To get more
information on a specific Window,</p>
```bash
wnckprop --xid [XID]
```
<p>The XID is the number returned next to each window from the first command. The
post that I  mentioned above has a nifty tool attached that saves the window
positions and can also restore them using wnckprop.</p>
<p>However, it saves them based on the Window title. This of course doesn&rsquo;t work
for Chromium or such Windows that changes the title each time you change the
tab.</p>
<p>However, if the save is the last command you run and the restore is the first
command you run after opening up the windows, it can restore the windows into
the correct workspaces.</p>
<p>With the idea of the dynamic workspaces in GNOME 3, you might have to initialise
the workspaces first but it is better than spending five minutes after logging
in each time re-arranging windows&hellip;</p>]]></content:encoded></item><item><title>Linux bulk search and replace</title><link>https://icle.es/2010/04/21/linux-bulk-search-and-replace/</link><pubDate>Wed, 21 Apr 2010 13:47:26 +0000</pubDate><guid>https://icle.es/2010/04/21/linux-bulk-search-and-replace/</guid><description>&lt;p>Doing a bulk search and replace across a set of files is actually surprisingly
easy. sed is the key. It has a flag - i that will modify the files passed to it
in-place.&lt;/p>
```bash
$ sed -e 's/TextToFind/Replacement/' -i file1 file2 file3
```
&lt;p>Tie this power with either grep &lt;code>-l&lt;/code>. (Thanks to Steve for pointing out a
mistake in the following, now corrected)&lt;/p>
```bash
$ grep -l TextToFind * |xargs sed -e 's/TextToFind/Replacement/' -i
```
&lt;p>or find&lt;/p></description><content:encoded><![CDATA[<p>Doing a bulk search and replace across a set of files is actually surprisingly
easy. sed is the key. It has a flag - i that will modify the files passed to it
in-place.</p>
```bash
$ sed -e 's/TextToFind/Replacement/' -i file1 file2 file3
```
<p>Tie this power with either grep <code>-l</code>. (Thanks to Steve for pointing out a
mistake in the following, now corrected)</p>
```bash
$ grep -l TextToFind * |xargs sed -e 's/TextToFind/Replacement/' -i
```
<p>or find</p>
```bash
$ find . -exec sed -e 's/TextToFind/Replacement' -i {} ;
```
<p>If there are multiple changes you want to make, just put them all into a file
and pass it in via the -f flag.</p>
<p>file: replacements.patterns</p>
```sed
s/TextToFind1/Replacement1/
s/TextToFind2/Replacement2/
s/TextToFind3/Replacement3/
```
<p>and the command, using find to iterate through all files in the current
directory and subdirectories.</p>
```bash
find . -exec sed -f replacements.patterns -i {} ;
```
<p>et voila - hope it helps.</p>
]]></content:encoded></item><item><title>Synergy with Linux Server &amp;amp; Mac Client</title><link>https://icle.es/2010/04/18/synergy-with-linux-server-mac-client/</link><pubDate>Sun, 18 Apr 2010 15:41:03 +0000</pubDate><guid>https://icle.es/2010/04/18/synergy-with-linux-server-mac-client/</guid><description>&lt;p>I  borrowed a mac to try and play
with &lt;a href="http://en.wikipedia.org/wiki/IPhone">iPhone&lt;/a> development. I already have a
linux box (running Ubuntu 9.10). Anyone who has used two computers
simultaneously know how annoying it is to have two keyboards/mice plugged. I
originally anticipated just using X11 forwarding. However, it is
an &lt;a href="http://en.wikipedia.org/wiki/IMac">iMac&lt;/a>{with a big beautiful screen. It
would be an absolute waste to not use it.&lt;/p>
&lt;p>I installed &lt;a href="http://en.wikipedia.org/wiki/Synergy%20%28software%29">synergy&lt;/a> on
both ends, with the linux one as the server&lt;/p></description><content:encoded><![CDATA[<p>I  borrowed a mac to try and play
with <a href="http://en.wikipedia.org/wiki/IPhone">iPhone</a> development. I already have a
linux box (running Ubuntu 9.10). Anyone who has used two computers
simultaneously know how annoying it is to have two keyboards/mice plugged. I
originally anticipated just using X11 forwarding. However, it is
an <a href="http://en.wikipedia.org/wiki/IMac">iMac</a>{with a big beautiful screen. It
would be an absolute waste to not use it.</p>
<p>I installed <a href="http://en.wikipedia.org/wiki/Synergy%20%28software%29">synergy</a> on
both ends, with the linux one as the server</p>
```bash
$ sudo aptitude install synergy
```
<p>and the mac as the client</p>
<p><a href="http://sourceforge.net/projects/synergykm/">http://sourceforge.net/projects/synergykm/</a></p>
<p>and it worked.</p>
<p>There was just one very very annoying problem. The Ctrl key and Cmd keys were
different. This really messed with my muscle memory. After some hunting around,
I just had to update my .synergy.conf file in linux. Here is the relevant
section</p>
```
section: screens
    linux-desktop:
    imac:
    ctrl=alt
    alt=ctrl
    meta=alt
end
```
<p>et voila. It now works a charm. I  have neglected the configuration of the
synergykm and synergys but these can be figured out easily ;-)</p>
]]></content:encoded></item><item><title>Vista Guest, Linux Host, VirtualBox, Host Networking - Bridge</title><link>https://icle.es/2009/03/23/vista-guest-linux-host-virtualbox-host-networking-bridge/</link><pubDate>Mon, 23 Mar 2009 15:39:41 +0000</pubDate><guid>https://icle.es/2009/03/23/vista-guest-linux-host-virtualbox-host-networking-bridge/</guid><description>&lt;p>One would think that it would be straightforward, work off the bat, or at least
have some reasonable documentation. Unfortunately, no!&lt;/p>
&lt;p>I needed host networking to be able to access network resources (Samba shares
etc.) which does not work if the guest OS is on NAT :-(&lt;/p>
&lt;p>Solving it was easy though&amp;hellip; I assume Vista is installed as a guest with the
guest additions and that your user account is a part of the vboxusers group.&lt;/p></description><content:encoded><![CDATA[<p>One would think that it would be straightforward, work off the bat, or at least
have some reasonable documentation. Unfortunately, no!</p>
<p>I needed host networking to be able to access network resources (Samba shares
etc.) which does not work if the guest OS is on NAT :-(</p>
<p>Solving it was easy though&hellip; I assume Vista is installed as a guest with the
guest additions and that your user account is a part of the vboxusers group.</p>
<p>On the linux host, first install bridge utils. I run Ubuntu, so it was as easy
as:</p>
```bash
$ sudo aptitude install bridge-utils
```
<p>Next, you need to set up the bridge; again, easy on Ubuntu:</p>
<p>add the following section to /etc/network/interfaces</p>
```
auto br0
iface br0 inet dhcp
bridge_ports eth1
```
<p>Add the interfaces to VirtualBox</p>
```bash
$ sudo VBoxAddIF vbox0 'shri' br0
```
<p>Within the VirtualBox Guest settings, choose Host Networking and fo the
interface, choose br0</p>
<p>bring the interface up:</p>
```
$ sudo ifup br0
```
<p>and start your guest os&hellip; et voila, it just works&hellip;</p>
]]></content:encoded></item><item><title>Making Twitter Faster</title><link>https://icle.es/2009/03/04/making-twitter-faster/</link><pubDate>Wed, 04 Mar 2009 17:36:35 +0000</pubDate><guid>https://icle.es/2009/03/04/making-twitter-faster/</guid><description>&lt;p>From my perspective, Twitter has a really really interesting technical problem
to solve. How to store and retrieve a large amount of data really really
quickly.&lt;/p>
&lt;p>I am making some assumptions based on how I see twitter working. I have little
information about how it is architected apart from some posts that suggests that
it is running ruby on rails with MySQL?&lt;/p>
&lt;p>Twitter is in the rare category where there is a very large number of data being
added. There should be no updates (except to user information but there should
be relatively very small amount of that). There is no need for transactionality.
If I guess right, it should be a large amount of inserts and selects.&lt;/p>
&lt;p>While a relational database is probably the only viable choice for the time
being, I think that twitter can scale and perform better if all the extra bits
of a relational database system was removed.&lt;/p>
&lt;p>I love challenges like this. Technical ones are easier ;-)&lt;/p>
&lt;p>If I didn&amp;rsquo;t have a lifetime job, I would prototype this in a bit more depth.
&lt;a href="http://garry.blog.kraya.co.uk" title="Garry&amp;#39;s Blog">Garry&lt;/a> pointed me in the
direction of &lt;a href="//hadoop.apache.org/" title="Hadoop">Hadoop&lt;/a>. Having had a quick look at
it, it can take care of the infrastructure, clustering and massive horizontal
scaling requirements.&lt;/p></description><content:encoded><![CDATA[<p>From my perspective, Twitter has a really really interesting technical problem
to solve. How to store and retrieve a large amount of data really really
quickly.</p>
<p>I am making some assumptions based on how I see twitter working. I have little
information about how it is architected apart from some posts that suggests that
it is running ruby on rails with MySQL?</p>
<p>Twitter is in the rare category where there is a very large number of data being
added. There should be no updates (except to user information but there should
be relatively very small amount of that). There is no need for transactionality.
If I guess right, it should be a large amount of inserts and selects.</p>
<p>While a relational database is probably the only viable choice for the time
being, I think that twitter can scale and perform better if all the extra bits
of a relational database system was removed.</p>
<p>I love challenges like this. Technical ones are easier ;-)</p>
<p>If I didn&rsquo;t have a lifetime job, I would prototype this in a bit more depth.
<a href="http://garry.blog.kraya.co.uk" title="Garry&#39;s Blog">Garry</a> pointed me in the
direction of <a href="//hadoop.apache.org/" title="Hadoop">Hadoop</a>. Having had a quick look at
it, it can take care of the infrastructure, clustering and massive horizontal
scaling requirements.</p>
<p>Now for the data layer on top. How to store and retrieve the data.
<a href="http://hadoop.apache.org/hbase/" title="HBase - a scalable distributed database">HBase</a>
is probably a good option but doing it manually should be fairly straightforward
too.</p>
<p>From my limited understanding of twitter, there are two key pieces of
functionality, the timelines and search.</p>
<p>The timelines can be solved by storing each tweet as a file within a directory
structure. My tweets would go into</p>
<p><code>/w/o/r/d/s/o/n/s/a/n/d/&lt;tweet-filename&gt;</code></p>
<p>The filename would be <code>&lt;username&gt;-&lt;timestamp&gt;</code></p>
<p>For the public timeline, you just have a similar folder structure, but with the
timestamp, for example, the timestamp 1236158897 would go into the following
structure as a symlink</p>
<p><code>/1/2/3/6/1/5/8/8/9/7/&lt;username&gt;</code></p>
<p>For search, pick up each word in the tweet and pop the tweet as a symlink into
that folder. You could have a folder per word or follow the structure above.</p>
<p><code>/t/w/i/t/t/e/r/&lt;username&gt;-&lt;timestamp&gt;</code> OR</p>
<p><code>twitter/&lt;username&gt;-&lt;timestamp&gt;</code></p>
<p>You would then have an application running on top with a distributed cache with
an API to ease access into the data easier than direct file access. Running on
Linux, the kernel will take care of the large part of the automatic caching and
buffering as long as there is enough RAM on the box.</p>
<p>This can in theory be done without Hadoop in between and separating the
directory structures across multiple servers but that can have complications of
its own, especially with adding and removing boxes for scalability.</p>
<p>You are also likely to run into issues with the number of files /
sub-directories limits but they can be solved by &lsquo;archiving&rsquo; - multiple options
for that too&hellip;</p>
<p>Thinking about this problem brought me back to the good old days of working on
the search mechanism within megabus.com. We needed the site to deal with a large
number of searches on limited hardware when the project was still classified as
a pilot.</p>
<p>With some hard work and experimentation, we were able to reduce the search time
to a tenth of the original time.</p>
<p>I&rsquo;ll admit that I don&rsquo;t know the details or the intricacies of the requirements
that twitter has. I have probably over-simplified the problem but it was still
fun to think about. If you can think of problems with this - let me know; I
wanna turn them into opportunities ;-)</p>]]></content:encoded></item><item><title>X11 Remote Applications Responsiveness</title><link>https://icle.es/2008/12/30/x11-remote-applications-responsiveness/</link><pubDate>Tue, 30 Dec 2008 15:01:43 +0000</pubDate><guid>https://icle.es/2008/12/30/x11-remote-applications-responsiveness/</guid><description>&lt;p>As a developer, I use eclipse a lot&amp;hellip; We have a powerful server that off which
eclipse is run which allows us to keep the desktops at a much lower spec. In
general, this works well for us.&lt;/p>
&lt;p>However, recently, I have been niggled by the amount of time it takes to switch
perspectives on eclipse. It takes a good 4 seconds to switch between
perspectives.There is also a noticeable lag when performing some operations.&lt;/p></description><content:encoded><![CDATA[<p>As a developer, I use eclipse a lot&hellip; We have a powerful server that off which
eclipse is run which allows us to keep the desktops at a much lower spec. In
general, this works well for us.</p>
<p>However, recently, I have been niggled by the amount of time it takes to switch
perspectives on eclipse. It takes a good 4 seconds to switch between
perspectives.There is also a noticeable lag when performing some operations.</p>
<p>To resolve this, I spent a lot of time looking at the linux real-time and
low-latency patches. I had expected that running X11 applications remotely would
not cause a bottleneck over a gigabit link. Turns out that I was wrong.</p>
<p>To test this, I ran a vnc server on the application server and found that
switching perspectives on there was super fast.</p>
<p>To be able to resolve this, the first thing to do was to remove any latency put
on the X-&gt;X communication by ssh.</p>
<p>We use gdm, so I had to enable to TCP on there first. Do this using the
following config line in <code>/etc/gdm/gdm.conf</code></p>
```
DisallowTCP=false
```
<p>Restart gdm</p>
<p>on the remote host, export DISPLAY</p>
```
export DISPLAY=<yourhost>:0
```
<p>and run your application.</p>
<p>I found the application to be a lot more responsive after this. I didn&rsquo;t have to
worry about X auth since we have nfs mounted home. If you don&rsquo;t, check
<a href="http://www.xs4all.nl/~zweije/xauth.html" title="Remote X Apps Mini HowTo">this mini howto</a></p>
]]></content:encoded></item></channel></rss>