Project-FiFo

The Project-FiFo Developer Hub

Welcome to the Project-FiFo developer hub. You'll find comprehensive guides and documentation to help you start working with Project-FiFo as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Chunter is Project FiFo's hypervisor interaction service. Chunter runs on each hypervisor controlled by Project-FiFo. Chunter interacts with SmartOS to create, update, and destroy vms. Chunter also collects vm and performance data to report back to Howl.

Installation

Please read the Chunter section in the current build section above for basic information on Chunter and some helpful notes before continuing.

To install Chunter we do the following:

  • To install the release version use VERSION=rel
  • To install the development version use VERSION=dev

All the following commands are to be executed in the Global Zone.
First we need to install fifo's zdoor server.

VERSION=rel
cd /opt
curl -O http://release.project-fifo.net/gz/${VERSION}/fifo_zlogin-latest.gz
gunzip fifo_zlogin-latest.gz
sh fifo_zlogin-latest

Now we can install chunter itself

VERSION=rel
cd /opt
curl -O http://release.project-fifo.net/gz/${VERSION}/chunter-latest.gz
gunzip chunter-latest.gz
sh chunter-latest

Once services have been installed, we enable the service and ensure that it is running

svcadm enable epmd
svcs epmd
svcadm enable fifo/zlogin
svcs fifo/zlogin
svcadm enable chunter
svcs chunter

If the service is running you should see:

STATE          STIME    FMRI
online         Dec_31   svc:/network/chunter:default

Once the service is running FiFo will auto-discover the node and after about a minute the SmartOS Node will appear in the FiFo web browser to be managed.

Chunter will try to guess the systems IP. It will look for a fifo0 vnic. If this doesn't exist it will take the IP of the admin nic. If Chunter registered with a wrong IP the correct IP can be changed in the config file. After changing the IP address in the config the hypervisor need to be re-registered. This can be done by removing and restarting Chunter svcadm restart chunter).

Configuration

Configuration file

Chunter's configuration file is located in /opt/chunter/etc/chunter.conf. It is automatically generated on the first install and will not be overwritten on updates. None the less the newest version of the file is always located in /opt/chunter/etc/chunter.conf.example.

In addition Chunter keeps a file /opt/chunter/etc/hostid that helps identifying the host throughout updates, hostname changes, and re-installations.

The configuration file is documented in-line but we'll go over some more interesting settings here.

General

ip
The IP and Port reported to FiFo. This is normally auto detected but in some cases needs to be changed to the right IP.

reserved_memory
The amount of memory reserved on the hypervisor that can not be given out to VMs. This can be very helpful to ensure some memory is left for the global zone and ARC.

S3

Chunter stores backups in the object store (LeoFS), some performance tweaks can be made but should generally be left alone.

s3_upload_chunk_size
Size of the chunks for uploading to the S3 storage - be ware this has to be in sync with the LeoFS setting..

parallel_uploads
Initial number of parallel uploads to S3.

max_paralell_uploads
Maximal number of parallel uploads to S3.

preload
Number of chunks to prefetch when downloading from S3.

s3_download_chunk_size
Size of the chunks for downloading from the S3 storage.

paralell_downloads
Initial number of parallel downloads from S3.

max_paralell_downloads
Maximal number of parallel downloads from S3.

Intervals

Chunter allows the users to configure various intervals that get a balance between accuracy and load. The defaults are sensible values but can be tuned as needed.

update_services_interval
The interval services for a zone are checked. The default is 10s. Changes are noted even when the state is the same at least for the nsq logging.

snapshot_update_interval
The interval the ZFS snapshots are checked. This should not be too fast since it will increase load. The default is every 15 minutes. This also does not change too often so increasing it does not make too much sense.

zonemon_interval
The intervals the zones are checked for their state. This means running zoneadm list -ip on the node. This is only required if a change is missed due to some hiccup but it ensures that the state of zones is always up to date.

Generally the more often this happen the lower are the chances a state is misrepresented but the higher is the load on the system. This operation is fairly inexpensive.

zpool_interval
The interval in which the zpool is checked for degraded disks. This is a more expensive operation so it should not be executed not too frequently. Generally an interval of 15s means that in a worst case a degraded pool stays undetected for 15s.

arc_interval
The interval in which the systems ARC status is checked. This is purely informational and slowly changing a higher interval is usually not a issue.

Administration

General management

Chunter uses the SMF to manage it's running state so it is restarted in the case of crashes and booted accordingly on system start. Chunter can be enabled, disabled and restarted via: svcadm enable chunter, svcadm disable chunter and svcadm restart chunter

Updating

Chunter can be updated by running /opt/chunter/bin/update this script will check for new updates and install them as needed.

Installing the new package

/opt/chunter/bin/update

Updating the config

After the newest package is installed the config file should be checked for changes and edited if needed. The .example file will always contain the newest version of the config. diff is a handy tool to see if some settings need to be added to the existing file.

diff /opt/chunter/etc/chunter.conf /opt/chunter/etc/chunter.conf.example
vi /opt/chunter/etc/chunter.conf

Restarting the service

Chunter can be restarted by running svcadm restart chunter.

Manually created VM's

Chunter does not automatically detect manually created VMs. To make Chunter aware of them it needs to be restarted: svcadm restart chunter.

Chunter