OpenMediaVault 不知不覺已經出到 4 了,也正式支援 Debian 9,以前在 omv3 時想要把他裝在 lxc 要做不少設定,現在變得簡單許多啦,大概 10 分鐘就可以裝起來了。
準備
- 一個夠用的 zpool
新增 Debian 9 的 Lxc
這個部份我全部都照預設來建立,我的分配如下:
CPU | Ram | Disk | Swap |
---|---|---|---|
4 Cores | 8192 MB | 16 GB | 2048 MB |
建好以後先別急著開機,我參考先前 omv3 的安裝方法 OpenMediaVault installation in LXC with attached HW block device 照著修改 Lxc 的設定,在剛剛新建的 Lxc 的 conf (/etc/pve/lxc/LXC_ID.conf)上加上這三行:
lxc.apparmor.profile: unconfined lxc.mount.auto: cgroup:rw lxc.mount.auto: proc:rw lxc.mount.auto: sys:rw
修改完存檔再把 Lxc 開機,在更新 Lxc 之前先把 APT 改到國網中心的鏡像站,這樣更新速度會快非常多:
之後下指令更新系統,我習慣更新後重啟 Lxc:
apt update && apt dist-upgrade -y && reboot
新增 APT Source
echo "deb http://packages.openmediavault.org/public arrakis main" > /etc/apt/sources.list.d/openmediavault.list
在下 apt update
之前需要先修正 NO_PUBKEY
的問題,但是如果直接新增會發現缺了套件 dirmngr,先安裝:
apt-get install dirmngr
取得公鑰:
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
安裝 OpenMediaVault
這個步驟需要一點時間,檔案有點大,不過比起之前的安裝步驟來說現在真的簡單多了。
apt update apt-get install openmediavault poweroff
Lxc 關機後就可以來建立硬碟了。
以下都操作都在 PVE 內進行,不是LXC內
新增 Virtual Block Device
再來要透過 ZFS 來模擬一個假的硬碟讓 OMV 以為他真的有硬碟了,其實上只是建立一個 Virtual Block Device 再 Passthrough 給 Lxc 抓,我的 POOL 是 3TB*4 使用 RaidZ1 組成的 zpool,容量自己調整:
zfs create -V 1024G YOUR_ZPOOL/omv_sda
看一下這假硬碟在 PVE 內的位置是在哪裡:
ls /dev/zvol/data/OMV_sd* -al
lrwxrwxrwx 1 root root 11 Apr 1 03:40 /dev/zvol/data/OMV_sda -> ../../zd192
ls -al /dev/zd192 brw-rw---- 1 root disk 230, 192 Apr 1 04:19 /dev/zd192
這兩個紅色的數字相當重要,等等 passthrough 硬碟的時候用的到,在 Lxc 的 conf 加上這幾行:
lxc.cgroup.devices.allow: b 230:192 rwm lxc.cgroup.devices.allow: b 230:193 rwm lxc.autodev: 1 lxc.hook.autodev: /var/lib/lxc/ID/mount-hook.sh
之後在omv格式化硬碟的時候須要去讀寫 sda1
,在 vdev 中分割的話他的數字就會 +1,我測試了一下如果不加 193 這行的話 OMV 是沒有辦法新增檔案系統的,會出現一堆錯誤訊息。(沒加的話 blkid
抓不到硬碟)
新增 script 讓 Lxc 啟動時自動掛載 Virtual Device 成 sda 到 Lxc 內:
vim /var/lib/lxc/ID/mount-hook.sh
加入以下內容:
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sda b 230 192 mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sda1 b 230 193
增加執行權限:
chmod +x /var/lib/lxc/ID/mount-hook.sh
這是我完整的設定檔:
arch: amd64 cores: 4 hostname: omv4 memory: 8192 net0: name=eth0,bridge=vmbr0,gw=172.16.0.254,hwaddr=8A:34:43:CD:B0:CE,ip=172.16.0.21/24,type=veth ostype: debian rootfs: local-zfs:subvol-111-disk-1,size=16G swap: 2048 lxc.apparmor.profile: unconfined lxc.mount.auto: cgroup:rw lxc.mount.auto: proc:rw lxc.mount.auto: sys:rw lxc.cgroup.devices.allow: b 230:192 rwm lxc.cgroup.devices.allow: b 230:193 rwm lxc.autodev: 1 lxc.hook.autodev: /var/lib/lxc/111/mount-hook.sh
然後..就可以把 Lxc 打開了 XD
登入OMV4
預設帳號密碼是 admin/openmediavault
,安裝的時候就會提示了,點一下 儲存裝置 >磁碟
可以看到硬碟囉:
但是在 SMART 的部份會出現錯誤,不過不要緊,因為硬碟的健康狀況可以直接在 PVE 上面檢查,我只要 omv 可以提供服務就好了:
再點一下檔案系統,格式化一下硬碟,單碟就可以了,Raid 的部份已經透過 ZFS 來做了,系統格式當然選效能最好的 EXT4:
初始化儲存空間需要一點時間:
跑完就可以抓到硬碟容量了:
測試了一下 SMB…直接吃滿 1G 的速度…爽XD
問題
如果系統一直噴錯,請先在 PVE 內將該裝置切成一個獨立的分割區,這樣子就不會出現這個錯誤了