LXD 是 Linux 容器的一個管理技術,也是基於 LXC 而來,比較不同點是,LXC 創建容器是基於 template,而 LXD 創建容器是基於 Image。
LXD 的管理方法,有點類似我在玩 AWS EC2 那樣,我由某個 image 建立了 instance之後,還可以把這 instance 另外存成一份 image,這份 image 可以讓我再部屬,或分享,整個過程算是蠻簡單的。
另外 LXD 也有內建 REST API,這樣非常方便第三方開發管理的 UI 工具,甚至遠端控制。
而我玩過了最新版 LXD 2.15 之後,發現 LXD 可以選擇 backend storage,可以指定 container 要用的儲存方式,目前包含了 dir , lvm , zfs , btrfs,其中 btrfs 支援度比較完整,我甚至可以在 container 裡面創建 btrfs 的 subvolume,並且也成功建立快照出來。而 dir 或 lvm 方式目前我試不出快照功能,zfs 則沒去玩。
建立快照這檔事,其實之前就挺苦惱的,過去 mysql 若架設於 lxc 中,也是因為想要如何安全且快速備份比較簡單,以往用 lxc 的方式,可能另外再弄個 slave,備份就把 slave 停機做備份,確實可以達到安全備份,但我這窮人還是希望可以有快照方式備份,可以省空間也可以把備份檔案 sync 到其他地方一次用 shell 完成。
LXD 搭配 btrfs 實現了我的願望,因為可以創建 subvolume,所以可以建快照,而我就可以在 instance 裡面,自己做 mysql 的 flush table 加快照只備份 data dir,我不用做整機備份浪費我的空間了。
關於 LXD Storage 的說明可以參考下列網址
https://github.com/lxc/lxd/blob/master/doc/storage.md
目前 LXD 2.15 還沒上 ubuntu LTS Release內,要玩請參考以下網址,安裝 Feature releases (LXD 2.x) 的版本才可以
https://linuxcontainers.org/lxd/getting-started-cli/
目前 Proxmox VE 內的容器仍是基於 LXC 1.X,不知道未來會不會跟上 LXD,看起來 LXD 會比較適合更多應用,而目前我搜尋了 LXD 的 UI 管理方式,大多還停留在 LXD 2.0.X 的版本管理,再慢慢等一陣子再看看,應該會有比較穩定方便的介面可以用。