2018年9月23日 星期日

幫 proxmox 的 lxc 擴充硬碟

在 proxmox 上面, 原則上每個 lxc 容器配置一個檔案系統。 例如我的 proxmox 採用 zfs 作為檔案系統。 有一部 lxc 容器, id 是 371, 那麼在 /etc/pve/lxc/371.conf 裡面就會有一句: rootfs: local-zfs:subvol-371-disk-1,size=4G 之類的。 這個檔案系統對應到 proxmox host 的 rpool/data/subvol-371-disk-1 。 (假設你的 zfs pool 名為 rpool) 但如果這個容器要當作 ftp 伺服器或 docker 伺服器, 最好把資料放在第二顆硬碟上, 這樣資料備份跟伺服器狀態備份才比較方便分開處理。

以下指令都是在 proxmox 4.4 的環境底下測試。

  1. 先關掉容器: pct shutdown 371
  2. 建立一個檔案系統: zfs create rpool/data/subvol-371-disk-2
  3. 查看它的容量限制: zfs get refquota rpool/data/subvol-371-disk-2 應該看到 none, 表示沒有限制。
  4. 告訴 proxmox 我們要把這個檔案系統當成 371 的第 0 顆額外硬碟, 容量大小是 10G, 要掛載在 /var/lib/docker 底下: pct set 371 -mp0 local-zfs:subvol-371-disk-2,mp=/var/lib/docker,size=10G
  5. 此時查看 /etc/pve/lxc/371.conf 的內容, 會看到多出一句 mp0: local-zfs:subvol-371-disk-2,mp=/var/lib/docker,size=10G 但用 zfs get refquota rpool/data/subvol-371-disk-2 查看, 容量依舊沒有限制。
  6. 執行 pct resize 371 mp0 10G 之後再查看, 才會看到 subvol-371-disk-2 的 refquota 變成 10G。
  7. 啟動容器 pct start 371, 在容器裡面用 df 查看, 就會看到新硬碟了。

除了 rootfs 之外, 一部 lxc 容器最多還可以再增加十顆額外的硬碟 (mp0、 mp1、 ... mp9)。 詳見 手冊 裡的 「pct resize」那一節。

如果只是要擴大既有的 rootfs , 那麼只需要這樣做: pct resize 371 rootfs 20G。 但要注意: 空間只能越給越多; 一旦給出去, 就不能再把它變小啦! 詳見 這個問答

補充說明一下 docker 伺服器: 如果要把第二顆硬碟掛在 /var/lib/docker , 比較簡單的方式當然是先不要安裝 docker, 先把第二顆硬碟設定好, 才進 lxc 容器安裝 docker。 在 proxmox 4.4 版底下, lxc 容器可以直接拿來當 docker 伺服器沒問題, 不再需要像 這篇 所說的一樣先設一個 zfs volume。 也就是說, 想要在 proxmox (大房東) 上面建一個 lxc (二房東) 用來提供 docker 服務, 除了本篇所說的以外, 只需要照著舊文 第三節 「脫掉脫掉, 安全防護通通脫掉」 卸除 apparmor 的防護即可。 最終, 我的 /etc/pve/lxc/371.conf 長得類似 這樣

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。