Пн, 26 февраля, 12:50

lxd and adjusting size of root device

That's normal. With LXD 2.9 and the storage pool changes, LXD stopped generating automatic «root» devices for the containers, instead relying on inheritance from the default profile.

So in LXD < 2.9, every container had a local «root» device which you could then set properties directly on. With those LXD versions, adding a «root» device to your default profile would be entirely ignored as all containers would override it.

In LXD > 2.9, containers don't have any devices by default, they instead rely on inheritance. Meaning that if you want to override it, you have to add a new device to the container with the same name so that it overrides the one coming from the profiles.

«lxc config show NAME» vs "lxc config show --expanded NAME" is pretty useful to see how this all works.

© https://discuss.linuxcontainers.org/u/stgraber

 

Чт, 4 июня 2015, 15:54

Building an LXC Server

Building an LXC Server on Ubuntu with ZFS and a container with public IP address

 

First update Ubuntu

 

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

zpool set feature@lz4_compress=enabled tank

zfs set compression=lz4 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.