Table of Contents
I have used zentyal as a gateway server, and it is actually running on a virtual machine. An important component of it is squid, which is supposed to improve the efficiency of the network connection by saving in cache the web pages that have been already visited, and fetching them from the cache when they are re-visited.
This is an operation that makes intesive usage of the disk, and virtual disks (used on virtual machines) are not particularly efficient for it. However, a virtual machine can also use a real partition, so the efficience of squid can be improved by attaching a real partition to the virtual machine and using it for the cache.
1 Attach a Real Partition to the Virtual Machine
The host where zentyal is installed is a CentOS system, and the disk partitions are managed by LVM. So, first of all we should create a new LVM partition to be attached to the virtual machine:
vgdisplay lvdisplay lvcreate vg_data -L 50G -n /dev/vg_data/lv_cache
In LVM, Volume Groups (VG) are the equivalents of disks, and Logical Volumes (LV) are the equivalents of partitions. In this case, we are creating a logical volume with name /dev/vg_data/lv_cache, on the volume group with name vg_data. The size of this LV partition is 50G, and this is enough for the squid cache.
Then we add this partition to the configuration file of the virtual
<devices> . . . . . <disk type='block' device='disk'> <driver name='qemu' type='raw' cache='none' io='native'/> <source dev='/dev/vg_data/lv_cache'/> <target dev='sdb' bus='ide'/> <address type='drive' controller='0' bus='0' unit='1'/> </disk> . . . . . </devices>
Inside the virtual machine this disk will appear and will be accessed as /dev/sdb.
Now we have to enable it, by reloading (re-defining) the configuration file:
virsh define /etc/libvirt/qemu/zentyal.xml virsh shutdown zentyal virsh start zentyal
2 Using the New Disk Inside the Virtual Machine
Inside the virtual machine (zentyal), we can access the new disk as /dev/sdb. First we have to format and mount it, and then we can change the squid configuration to use it.
- Format the new partition with the reiserfs format (which is a
recommended format for the squid cache):
mkfs.reiserfs -f /dev/sdb
- Append this line to
/dev/sdb /var/spool/squid reiserfs defaults,notail,noatime 1 2
- Then stop squid and mount the new partition:
service squid stop rm -rf /var/spool/squid/* mount -a chown proxy:proxy /var/spool/squid/ chmod 750 /var/spool/squid/ squid -z service squid start
/usr/share/zentyal/stubs/squid/squid.conf.masand change this line:
cache_dir ufs /var/spool/squid <% $cacheDirSize %> 16 256
to this one (by adding an
cache_dir aufs /var/spool/squid <% $cacheDirSize %> 16 256
service squid restart