Proxmox VE 4.x 中文初階學習手冊
https://www.facebook.com/groups/pve.tw/permalink/706276702874227/
------------------------------------------------------------------------------------------------------------------------
使用 Google 翻譯
------------------------------------------------------------------------------------------------------------------------
在 LXC 安裝OpenMediaVault 並附加 HW block device
目標.
1. 在具有硬體 RAID控制卡的 ProxmoxVE 伺服器上將 OpenMediaVault NAS安裝到 Debian 8 LXC 容器中.
2. 提供給OpenMediaVault在LXC容器中作為存儲LSI MegaRAID RAID1 - / dev / sda1。
3. 還繼續使用/ dev / sda1作為來自ProxmoxVE本身的許多備份腳本(例如mysqldump)的備份存儲。
定義.
- 4.3 版ProxmoxVE — 最新官方釋出版本
http://www.proxmox.com/en/downloads 與測試更新; - OpenMediaVault — 最新的版本為 3.beta(3.0.47)
從 http://www.openmediavault.org,代號為Erasmus; - OpenMediaVault plugins — 從 http://omv-extras.org/joomla/ 取得的插件為Erasmus;
- Debian 8(代號為Jessie)LXC模板 - 從ProxmoxVE內置的LXC模板庫獲得 - debian-8.0-standard_8.4-1_amd64.tar.gz
*** Daily LXC Template Images from https://jenkins.linuxcontainers.org/view/LXC/view/LXC 對於Debian也將是合適的,但到2016年10月21日它的狀態很差。 - LXC container config — 檔案, 存於 /etc/pve/lxc/XXX.conf 其中XXX是來自ProxmoxVE的容器編號。
- LXC container hook script — bash shell腳本,位於/var/lib/lxc/XXX/<script-name>.sh其中XXX是來自ProxmoxVE的容器編號。
決定.
步驟 1 — 安裝 OpenMediaVault
- 更新ProxmoxVE shell中的可用容器列表:pveam update
- 下載最新的可用Debian 8模板到容器模板存儲(通過web-gui或從shell)。
我發現了debian-8.0-standard_8.4-1_amd64.tar.gz。 - 創建Debian 8 LXC容器至少有1Gb RAM(2Gb作為RAM將是很舒服,
但如果你計劃使用ZFS - 你需要更多的RAM,並應參考ZFS系統要求)和2Gb RootFS。
還需要至少一個具有Internet連接的網路設備。
***第3點的注意事項:
你應該在第一次啟動之前在LXC容器配置中添加幾行:
lxc.aa_profile: unconfined
lxc.mount.auto: cgroup:rw
lxc.mount.auto: proc:rw
lxc.mount.auto: sys:rw
簡單來說 - 這行需要啟動一個Debian網絡腳本(eth0 netcard沒有啟動,直到我添加了unconfined配置文件,proc和sys mount為容器),cgroup和unconfined配置文件需要OpenMediaVault服務,例如nfs 。
4.登錄到此容器並更新系統:
apt-get update && apt-get dist-upgrade
5. 添加OpenMediaVault存儲庫並開始安裝
echo «deb http://packages.openmediavault.org/public erasmus main» > /etc/apt/sources.list.d/openmediavault.list
apt-get update
apt-get install openmediavault-keyring
*不要忘記回答«Y»,並且按下«ENTER»
apt-get update
apt-get install openmediavault
但我們的安裝因為出現錯誤而停止:
… Socket error – Connection refused
Cannot connect to the monit daemon. Did you start it with http support?
Failed to get D-Bus connection: Unknown error -1
dpkg: error processing package openmediavault (–configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
openmediavault
E: Sub-process /usr/bin/dpkg returned an error code (1)
5.1 停止此容器
5.2 We shoult mount LXC container virtual hard drive for example into /mnt directory in ProxmoxVE
mount /dev/mapper/pve-vm–102–disk–1 /mnt/
我們應該將LXC容器虛擬硬盤驅動器安裝到Proxmox VE的/ mnt目錄中
mount / dev / mapper / pve-vm-102-disk-1 / mnt /
5.3 We should chroot into mounted LXC container virtual hard drive:
我們應該chroot到安裝的LXC容器虛擬硬盤驅動器
mount -t proc none /mnt/proc/
mount - - rbind /dev/ /mnt/dev/
mount - - rbind /sys/ /mnt/sys/
chroot /mnt/ /bin/bash
*這是一個“真正的Gentoo方式”;-)
5.4 繼續在chroot中安裝OpenMediaVault
apt-get install openmediavault
5.5 啟動安裝後命令
omv-initsystem
但我們的安裝會停止與第一個錯誤:
run-parts: /usr/share/openmediavault/initsystem/20hostname exited with return code 1
Our container does not have it's own hostmane, and in chroot we have hypervisor's hostname …
您可以簡單地從OpenMediaVault Web管理界面更改主機名,因此只需移動此文件:
mv /usr/share/openmediavault/initsystem/20hostname /root/
繼續第一次系統初始化
omv-initsystem
但我們的因為遇到第二個錯誤而停止:
run-parts: /usr/share/openmediavault/initsystem/60rootfs exited with return code 2
LXC container has no fstab mounted rootfs. This is only a rootfs check in OpenMediaVault. In this case 我們也可以通過移動此文件簡單地刪除此步驟:
mv /usr/share/openmediavault/initsystem/60rootfs /root/
繼續第一次系統初始化
omv-initsystem
並且在關於語言環境的幾個perl警告之後 - 完成成功的安裝過程。
5.6 按 «ctrl+D» 離開容器
5.7 從 ProxmoxVE 啟動這個容器
5.8 登錄到OpenMediaVault的web-gui
它似乎一切OK。 但應用更改時出錯 — Avahi-daemon error …
經過幾次谷歌搜索,我找到了Avahi的解決方案
https://loune.net/2011/02/avahi-setrlimit-nproc-and-lxc/.
我們應該修補文件 - /usr/share/openmediavault/mkconf/avahi-daemon 在容器中.
回到ProxmoxVE shell並在預裝的rootfs中編輯文件:
nano /mnt/usr/share/openmediavault/mkconf/avahi-daemon
在結束時,我們應該刪除最後一行:
rlimit-nproc=3
by
#rlimit-nproc=3
我們安裝的OpenMediaVault已成功完成.
步驟 2 — 安裝OpenMediaVault插件
1. 回到OpenMediaVault的web-gui
2. 通過瀏覽器插件從omv-extras.org下載:
http://omv-extras.org/debian/pool/main/o/openmediavault-omvextrasorg/openmediavault-omvextrasorg_3.3.3_all.deb
並通過OpenMediaVault的web-gui安裝。
這一切都為安裝。
我們需要重新啟動整個ProxmoxVE (to unmount /mnt/proc, /mnt/dev/ and /mnt/sys/)
步驟 3 — 在LXC容器中提供從ProxmoxVE到OpenMediaVault的塊設備(硬盤),以將其作為存儲設備進行操作。
我試圖附加 /dev/sda1
這是我的LSI MegaRAID鏡像卷。
我從這裡獲得一份cooking receipt:
https://forum.proxmox.com/threads/lxc-cannot-assign-a-block-device-to-container.23256/#post-118361
1.在ProxmoxVE shell中鍵入此命令:
1.1 ls -la /dev/sda*
brw-rw—- 1 root disk 8, 0 Oct 20 20:12 /dev/sda
brw-rw—- 1 root disk 8, 1 Oct 20 20:12 /dev/sda1
1.2 編輯LXC容器配置(編號為XXX)以添加幾行新行:
nano etc/pve/lxc/XXX.conf
lxc.cgroup.devices.allow: b 8:0 rwm
lxc.cgroup.devices.allow: b 8:1 rwm
lxc.autodev: 1
***
這行允許內部容器本身使用 /dev/sda, /dev/sda1 (與讀寫安裝(read-write-mount)) .
但是我們的LXC容器在 /dev中沒有塊設備有一種方法是通過mknod創建設備。 但是在容器重啟之後,我們會放棄這些設備。 我們應該創建一個鉤子。
1.3 在ProxmoxVE shell中創建此文件:
nano /var/lib/lxc/XXX/mount-hook.sh
並在其中添加以下行:
#!/bin/sh
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sda b 8 0
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sda1 b 8 1
不要忘了使這個文件可執行 (chmod +x)
1.4. 最後一件事是做 - 在容器配置中添加一個lxc.mount行.
為了我自己的目的, 我通過fstab將 /dev/sda1 加載到ProxmoxVE中的 /raid 文件夾中.
我自己的備份腳本在 /raid/backup 文件夾中運行.
OpenMediaVault自動將設備裝入 /media 文件夾與設備UUID文件夾.
在ProxmoxVE shell類型:
ls -la /dev/disk/by-uuid | grep sda1
lrwxrwxrwx 1 root root 10 Oct 20 20:12 7078dfe1-70c5-46eb-97ec-cca6d2fcff37 → ../../sda1
至於我,我添加這行到我的LXC容器配置:
lxc.mount.entry: /raid media/7078dfe1-70c5-46eb-97ec-cca6d2fcff37 none bind,create=dir,optional 0 0
1.5. 停止並啟動LXC容器以應用更改.
之後,您可以簡單地從OpenMediaVault web-gui掛載 /dev/sda1,
並將LXC容器中的OpenMediaVault代號為Erasmus的任何服務正常運行為NAS.
Voi la !!!
我在LXC容器中成功測試了OpenMediaVault這些服務:
- nfs
- samba
- ftp
- ssh
不要忘記幫它設置正確的用戶和群組權限;-)這是我認為在OpenMediaVault裡唯一的問題.
我自己的完整配置文件 (/etc/pve/lxc/100.conf) 是:
arch: amd64
cpulimit: 1
cpuunits: 1024
hostname: omv
memory: 2048
nameserver: 192.168.80.1
net0: name=eth0,bridge=vmbr80,hwaddr=82:EA:BA:52:09:CD,ip=dhcp,type=veth
ostype: debian
rootfs: local-lvm:vm-100-disk-1,size=2G
searchdomain: omv
swap: 1024
lxc.aa_profile: unconfined
lxc.mount.auto: cgroup:rw
lxc.mount.auto: proc:rw
lxc.mount.auto: sys:rw
lxc.cgroup.devices.allow: b 8:0 rwm
lxc.cgroup.devices.allow: b 8:1 rwm
lxc.autodev: 1
lxc.hook.autodev: /var/lib/lxc/100/mount-hook.sh
我自己的完整的鉤子文件 (/var/lib/lxc/100/mount-hook.sh) 是:
#!/bin/sh
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sda b 8 0
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sda1 b 8 1
我的 ProxmoxVE 是:
pve-manager/4.3-6/460dfe4c (running kernel: 4.4.21-1-pve)
希望這個短暫的人會幫助一些人節省成本,並開始自己製造的SOHO NAS,基於真正的自由軟件。 這個人不適合作為NAS解決方案的生產和/或商業用途。
P.S.拿我的英語我的原諒。