首頁 > 軟體

LXD 2.15 中的儲存管理

2020-06-16 17:09:38

長久以來 LXD 已經支援多種儲存驅動。使用者可以在 zfs、btrfs、lvm 或純目錄儲存池之間進行選擇,但他們只能使用單個儲存池。一個被頻繁被提到的需求是不僅支援單個儲存池,還支援多個儲存池。這樣,使用者可以維護一個由 SSD 支援的 zfs 儲存池用於 I/O 密集型容器,另一個簡單的基於目錄的儲存池用於其他容器。幸運的是,現在這是可能的,因為 LXD 在幾個版本後有了自己的儲存管理 API。

 

建立儲存池

新安裝 LXD 沒有定義任何儲存池。如果你執行 lxd init ,LXD 將提供為你建立一個儲存池。由 lxd init 建立的儲存池將是建立容器的預設儲存池。

asciicast

 

建立更多的儲存池

我們的用戶端工具使得建立額外的儲存池變得非常簡單。為了建立和管理新的儲存池,你可以使用 lxc storage 命令。所以如果你想在塊裝置 /dev/sdb 上建立一個額外的 btrfs 儲存池,你只需使用 lxc storage create my-btrfs btrfs source=/dev/sdb。讓我們來看看:

asciicast

 

在預設儲存池上建立容器

如果你從全新安裝的 LXD 開始,並通過 lxd init 建立了一個儲存池,LXD 將使用此池作為預設儲存池。這意味著如果你執行 lxc launch images:Ubuntu/xenial xen1,LXD 將為此儲存池上的容器的根檔案系統建立一個儲存卷。在範例中,我們使用 my-first-zfs-pool 作為預設儲存池。

asciicast

 

在特定儲存池上建立容器

但是你也可以通過傳遞 -s 引數來告訴 lxc launchlxc init 在特定儲存池上建立一個容器。例如,如果要在 my-btrfs 儲存池上建立一個新的容器,你可以執行 lxc launch images:ubuntu/xenial xen-on-my-btrfs -s my-btrfs

asciicast

 

建立自定義儲存卷

如果你其中一個容器需要額外的空間儲存額外的資料,那麼新的儲存 API 將允許你建立可以連線到容器的儲存卷。只需要 lxc storage volume create my-btrfs my-custom-volume

asciicast

 

連線自定義捲到容器中

當然,這個功能是有用的,因為儲存 API 讓你把這些儲存卷連線到容器。要將儲存卷連線到容器,可以使用 lxc storage volume attach my-btrfs my-custom-volume xen1 data /opt/my/data

asciicast

 

在容器之間共用自定義儲存卷

預設情況下,LXD 將使連線的儲存卷由其所連線的容器寫入。這意味著它會將儲存卷的所有權更改為容器的 id 對映。但儲存卷也可以同時連線到多個容器。這對於在多個容器之間共用資料是非常好的。但是,這有一些限制。為了將儲存卷連線到多個容器,它們必須共用相同的 id 對映。讓我們建立一個額外的具有一個隔離的 id 對映的容器 xen-isolated。這意味著它的 id 對映在這個 LXD 範例中將是唯一的,因此沒有其他容器具有相同的id對映。將相同的儲存卷 my-custom-volume 連線到此容器現在將會失敗:

asciicast

但是我們讓 xen-isolatedxen1 有相同的對映,並把它重新命名為 xen2 來反映這個變化。現在我們可以將 my-custom-volume 連線到 xen1xen2 而不會有問題:

asciicast

 

總結

儲存 API 是 LXD 非常強大的補充。它提供了一組基本功能,有助於在大規模使用容器時處理各種問題。這個簡短的介紹希望給你一個印象,你可以做什麼。將來會有更多介紹。

本篇文章最初在 Brauner 的部落格中發布。


via: https://insights.ubuntu.com/2017/07/12/storage-management-in-lxd-2-15/

作者:Christian Brauner 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-08/146066.htm


IT145.com E-mail:sddin#qq.com