Building an LXC Server on Ubuntu with ZFS and a container with public IP address
apt Update for first
apt-get update
apt-get dist-upgrade
Setup ZFS
apt-add-repository ppa:zfs-native/stable
apt-get update
apt-get install ubuntu-zfs
Configure LXC
sudo apt-get install lxc
Configure ZFS
Create ZFS pool:
sudo zpool create -f tank /dev/sdX
Keep in mind that deduplication takes much more memory and sometimes CPU.
The rule of Thumb says to have 1GB of Ram per TB of Data. For deduplicated ZPools you actually should have 5 GB of Ram for 1TB of Data. I don't use it.
zfs set dedup=on tank
Turn on compression and create fs:
zfs set compression=on tank
zfs create tank/lxc
zfs create tank/lxc/containers
To configure LXC to use ZFS as the backing store and set the default LXC path, add the following to /etc/lxc/lxc.conf:
lxc.lxcpath = /tank/lxc/containers
lxc.bdev.zfs.root = tank/lxc/containers
Creating a Container
Create the first container by doing:
lxc-create -t ubuntu -n node.name -B zfs
Setup Bridged Network
apt-get install bridge-utils
Important Commands
Show bridge interfaces:
brctl show
Simple Bridge
This setup can be used to connect multiple network interfaces. The bridge acts as a switch: each additional network interface is directly connected to the physical network.
Edit /etc/network/interfaces, remove eth0, add br0.
For dynamic IP:
#auto eth0
#iface eth0 inet dhcp
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
For static IP:
auto br0
iface br0 inet static
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
address 192.168.0.101
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.254
dns-nameservers 8.8.8.8 8.8.4.4
reboot server
Is all OK?
Edit /tank/lxc/containers/node.name/config
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = 00:16:3e:30:fa:4a
start the node:
lxc-start -n node.name -d
connect to the node:
lxc-console -n node.name
On the lxc node /etc/network/interfaces:
auto eth0
iface eth0 inet static
address 192.168.0.102
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.254
dns-nameservers 8.8.8.8 8.8.4.4
It's possible to use static IP address in node config and use dhcp inside the node, that works too.
But IPv6 didn't work inside the node, I disabled it and then the node stopped receiving IP address at all.
I had to use static IP.
I'm going to solve this problem later.
You can read the original post at
kayama.dp.ua / Building an LXC Server