• slider image 168
:::
條列式新聞
新聞載入中,請稍後...

12-2-1 在 LXC 安裝OpenMediaVault 並附加 HW block device


https://www.facebook.com/groups/pve.tw/permalink/706276702874227/

https://forum.proxmox.com/threads/openmediavault-installation-in-lxc-with-attached-hw-block-device.29918/#post-151867

------------------------------------------------------------------------------------------------------------------------
使用 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)的備份存儲。

定義.

  1.  4.3 版ProxmoxVE — 最新官方釋出版本
    http://www.proxmox.com/en/downloads 與測試更新;
  2. OpenMediaVault — 最新的版本為 3.beta(3.0.47)
    http://www.openmediavault.org,代號為Erasmus;
  3. OpenMediaVault plugins — 從 http://omv-extras.org/joomla/ 取得的插件為Erasmus;
  4. Debian 8(代號為Jessie)LXC模板 - 從ProxmoxVE內置的LXC模板庫獲得 - debian-8.0-standard_8.6-1_amd64.tar.gz
    *** Daily LXC Template Images from https://jenkins.linuxcontainers.org/view/LXC/view/LXC 對於Debian也將是合適的,但到2016年10月21日它的狀態很差。
  5. LXC container config — 檔案, 存於 /etc/pve/lxc/XXX.conf 其中XXX是來自ProxmoxVE的容器編號。
  6. LXC container hook script — bash shell腳本,位於/var/lib/lxc/XXX/<script-name>.sh其中XXX是來自ProxmoxVE的容器編號。

決定.

步驟 1 — 安裝 OpenMediaVault

  1. 更新ProxmoxVE shell中的可用容器列表:pveam update
  2. 下載最新的可用Debian 8模板到容器模板存儲(通過web-gui或從shell)。
    我發現了debian-8.0-standard_8.6-1_amd64.tar.gz。
  3. 創建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.拿我的英語我的原諒。


:::
展開 | 闔起

文章類別

書籍目錄

展開 | 闔起

線上使用者

4人線上 (4人在瀏覽線上書籍)

會員: 0

訪客: 4

更多…