Proxmox – LXC 掛載 NFS 分享的目錄

本來學校的 Server 都是先備份到 NAS 然後再同步到 Google Drive,不過 PVE Server 不允許 LXC 直接掛載其它主機所分享的 NFS,如果要使用的話,必須要先在 PVE Server 上已經掛載連接的目錄才可以使用,可能是為了系統安全的因素。

1. 在 PVE Server 上安裝 autofs
# apt-get install autofs

2. 修改 /etc/auto.master
# vim /etc/auto.master
加入下面一行
/mnt/nasnfs     /etc/auto.nfs

3. 建立 /etc/auto.nfs 設定檔
# vim /etc/auto.nfs
# pve 本機上要掛載的目錄,配合前面就是 /mnt/nasnfs/pve
# 192.168.1.13:/volume1/homes/t850008/Server/pve nas server 上的目錄
pve 192.168.1.13:/volume1/homes/t850008/Server/pve[@more@]4. 啟動 autofs 服務
# systemctl start autofs
# systemctl enable autofs

5. 測試
# cd /mnt/nasnfs/pve
# df -h | grep t850008
192.168.1.13:/volume1/homes/t850008/Server/pve  5.4T  2.5T  2.9T  47% /mnt/nasnfs/pve

6. 在 LXC 設定檔中加入
mp0 是在 pve server 上的目錄
mp 是 lxc 虛擬機上要掛載的目錄
# cat /etc/pve/lxc/102.conf | grep mp
mp0: /mnt/nasnfs/pve,mp=/mnt/ArchLinux

7. 在 LXC 上設定
# mount | grep ArchLinux
192.168.1.13:/volume1/homes/t850008/Server/pve on /mnt/ArchLinux type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.11,local_lock=none,addr=192.168.1.13)
# cd /mnt/ArchLinux
# df -h | grep ArchLinux
192.168.1.13:/volume1/homes/t850008/Server/pve  5.4T  2.5T  2.9T  47% /mnt/ArchLinux

在 PVE Server 上的設定

Proxmox – ArchLinux LXC 初始環境設定

1. 將套件庫來源設定成 Taiwan
# sed -i ‘s/^Server/#Server/’ /etc/pacman.d/mirrorlist
# sed -i ‘373s/#Server/Server/’ /etc/pacman.d/mirrorlist

2. 更新套件庫
# pacman -Syy
[@more@]3. 更新金鑰
執行時間會有些久
# pacman-key –init
# rm -rf /etc/pacman.d/gnupg/
# rm -rf /root/.gnupg/
# gpg –refresh-keys
# pacman-key –init && pacman-key –populate
gpg: /etc/pacman.d/gnupg/trustdb.gpg: trustdb created
gpg: no ultimately trusted keys found
gpg: starting migration from earlier GnuPG versions
gpg: porting secret keys from ‘/etc/pacman.d/gnupg/secring.gpg’ to gpg-agent
gpg: migration succeeded
gpg: Generating pacman keyring master key…
gpg: key 6C2605DB2059BF97 marked as ultimately trusted
gpg: directory ‘/etc/pacman.d/gnupg/openpgp-revocs.d’ created
gpg: revocation certificate stored as ‘/etc/pacman.d/gnupg/openpgp-revocs.d/EE25                                                                                               24C9262539E30E67A6B66C2605DB2059BF97.rev’
gpg: Done
==> Updating trust database…
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
==> Appending keys from archlinux.gpg…
==> Locally signing trusted keys in keyring…
  -> Locally signing key 684148BB25B49E986A4944C55184252D824B18E8…
  -> Locally signing key 91FFE0700E80619CEB73235CA88E23E377514E00…
  -> Locally signing key AB19265E5D7D20687D303246BA1DFB64FFF979E7…
  -> Locally signing key 0E8B644079F599DFC1DDC3973348882F6AC6A4C2…
  -> Locally signing key 44D4A033AC140143927397D47EFD567D4C7EA887…
  -> Locally signing key 27FFC4769E19F096D41D9265A04F9397CDFD6BB0…
==> Importing owner trust values…
gpg: setting ownertrust to 4
gpg: inserting ownertrust of 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
==> Disabling revoked keys in keyring…
  -> Disabling key 7FA647CD89891DEDC060287BB9113D1ED21E1A55…
  -> Disabling key D4DE5ABDE2A7287644EAC7E36D1A9E70E19DAA50…
  -> Disabling key BC1FBE4D2826A0B51E47ED62E2539214C6C11350…
  -> Disabling key 63F395DE2D6398BBE458F281F2DBB4931985A992…
  -> Disabling key 8F76BEEA0289F9E1D3E229C05F946DED983D4366…
  -> Disabling key 81D7F8241DB38BC759C80FCE3A726C6170E80477…
  -> Disabling key E7210A59715F6940CF9A4E36A001876699AD6E84…
  -> Disabling key F5A361A3A13554B85E57DDDAAF7EF7873CFD4BB6…
  -> Disabling key 9515D8A8EAB88E49BB65EDBCE6B456CAF15447D5…
  -> Disabling key 4A8B17E20B88ACA61860009B5CED81B7C2E5C0D2…
  -> Disabling key 0B20CA1931F5DA3A70D0F8D2EA6836E1AB441196…
  -> Disabling key 66BD74A036D522F51DD70A3C7F2A16726521E06D…
==> Updating trust database…
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   6  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   6  signed:  68  trust: 0-, 0q, 0n, 6m, 0f, 0u
gpg: depth: 2  valid:  68  signed:   7  trust: 68-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2017-09-07
# pacman-key –refresh-keys

4. 更新已安裝套件
# pacman -Syu

5. 安裝 OpenSSH Server
# pacman -S openssh
# systemctl enable sshd.service
# systemctl start sshd.service

6.設定時區
# rm -rf /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime
# date

7. 安裝 vim 及 mlocate / dnsutils / net-tools 套件
# pacman -S vim mlocate dnsutils net-tools zip unzip p7zip ntp ssmtp logwatch screen colordiff net-snmp wget 

8. 安裝 cronie 工作排程
# pacman -S cronie
啟動 cronie
# systemctl start cronie
設定開機時啟動
# systemctl enable cronie

9. 安裝 syslog-ng
# pacman -S syslog-ng
設定開機時啟動
# systemctl enable syslog-ng
啟動 syslog-ng
# systemctl start syslog-ng

Proxmox – 解決 ArchLinux LXC 無法安裝套件的問題

在安裝套件或更新已安裝的套件時,都會出現如下圖的錯誤訊息

看起來似乎是沒有把 key 的值下載下來![@more@]解決方式:
參考網站:
[SOLVED] Resolving pacman-key update issues.

刪除 /etc/pacman.d/gnupg/ 目錄,如果目錄存在
# rm -R /etc/pacman.d/gnupg/
刪除 /root/.gnupg/ 目錄,如果目錄存在
# rm -R /root/.gnupg/
# gpg –refresh-keys
這個步驟會很久
# pacman-key –init && pacman-key –populate
# pacman-key –refresh-keys

Proxmox – Clone 功能

1. 在要複製 Clone 的虛擬主機按滑鼠右鍵,選擇 Clone

[@more@]2. 修改設定
    Name: 識別名稱
    Target Storage: 儲存位置
    Format: 儲存格式

3. 產生複製完成的主機

4. 進行開機

5. 修改網路設定(改成不同的 IP)
# vim /etc/rc.conf
ifconfig_em0=”inet 192.168.1.15  netmask 255.255.255.0″
defaultrouter=”192.168.1.254″

Proxmox – 建立 FreeBSD 虛擬主機

1. 先在 Proxmox Server 上建立 FreeBSD 虛擬主機
[@more@]2. 直接到 FreeBSD 官方網站下載虛擬映像檔
https://www.freebsd.org/where.html

# wget ftp://ftp.freebsd.org/pub/FreeBSD/releases/VM-IMAGES/11.0-RELEASE/amd64/Latest/FreeBSD-11.0-RELEASE-amd64.qcow2.xz

3. 解壓縮
# xz -d FreeBSD-11.0-RELEASE-amd64.qcow2.xz

4. 修改 FreeBSD kvm 設定檔 /etc/pve/qemu-server/100.conf
# cat /etc/pve/qemu-server/100.conf
bootdisk: virtio0
cores: 1
ide2: none,media=cdrom
memory: 1536
name: FreeBSD11
net0: e1000=D2:3E:16:76:5B:97,bridge=vmbr0
numa: 0
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=2f1a665c-a317-4b16-9646-e674e901f628
sockets: 1
virtio0: Seagate320G:100/FreeBSD-11.0-RELEASE-amd64.qcow2,size=32G

5. 搬移映像檔到指定的位置
# rm -rf /var/lib/vz/images/100/vm-100-disk-1.qcow2
# mv FreeBSD-11.0-RELEASE-amd64.qcow2 /var/lib/vz/images/100

6. 進行開機

7. 預設登入的帳號是 root

8. 設定 root 密碼
# passwd root

Proxmox – Backup 備份還原功能

1. 選擇 Backup now

[@more@]
2. Storage:備份檔存放位置
     Mode:Snapshot / Suspend / Stop
                  Snapshot :快照模式,需配合能支援 Snapshot 功能的檔案系統格式
                  Supend:備份過程時,虛擬機器先暫停
                  Stop:備份前虛擬機器先關機
     Compression:none / LZO(fast) / GZIP(good)
                              none:不壓縮直接備份,壓縮備份檔的大小最大。
                              LZO(fast):採用 lzo 格式壓縮,壓縮時間較快速,壓縮備份檔的大小居中。
                              GZIP(good):採用 gzip 格式壓縮,壓縮時間較久,壓縮備份檔的大小最小。

3.備份檔存放位置

4. 查看備份檔位置及檔案大小
# cd /var/lib/vz/dump
# ls -l
-rw-r–r– 1 root root       595 Feb  3 09:57 vzdump-lxc-200-2017_02_03-09_56_27.log
-rw-r–r– 1 root root 460163036 Feb  3 09:57 vzdump-lxc-200-2017_02_03-09_56_27.tar.lzo
# du -hs vzdump-lxc-200-2017_02_03-09_56_27.tar.lzo
439M    vzdump-lxc-200-2017_02_03-09_56_27.tar.lzo

5. 選擇 Restore 進行還原

Proxmox – Snapshot 功能

1. 要使用 Proxmox 的 Snapshot 快照功能,要先確定虛擬機器的 Image 是存放在 local-lvm

如果不是的話,則會無法使用


[@more@]2. 選擇  Take Snapshot

3. Name 的命名要求,可以用 A-Z / a-z / 0-9 / -,最少 2 個字元,開頭要是字母

4. 執行 Take Snapshot

5. 已建立快照

6. 選擇 Rollback 進行回復

Proxmox – CentOS 6 LXC 初始環境設定

1. 安裝 OpenSSH Server
# yum install openssh-server

2. 修改套件更新來源
備份原設定檔
# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.$(date +%F)
[@more@]將 mirrorlist 那一行的前面加上 # 註解
 # sed -i ‘s,mirrorlist=http://mirrorlist.centos.org,#mirrorlist=http://mirrorlist.centos.org,’ /etc/yum.repos.d/CentOS-Base.repo
把 #baseurl 前面的 # 去除
# sed -i ‘s,#baseurl=http://mirror.centos.org,baseurl=http://mirror.centos.org,’ /etc/yum.repos.d/CentOS-Base.repo
http://mirror.centos.org/centos/ 替換成 ftp://140.111.74.109/CentOS/
# sed -i ‘s,http://mirror.centos.org/centos/,ftp://140.111.74.109/CentOS/,’ /etc/yum.repos.d/CentOS-Base.repo
安裝 EPEL 套件庫
# yum install epel-release
去除舊的 yum cache
# yum clean all
開始進行更新
# yum update

3.補足缺少的套件
# yum install vim nano yum-utils bind-utils mlocate zip unzip wget ntpdate net-snmp net-snmp-utils xz
# yum install fail2ban ssmtp logwatch cronie

4. 設定時區及預設編輯器
# tail -2 /etc/profile
export EDITOR=/usr/bin/vim
export TZ=”Asia/Taipei”

5. 安裝 LAMP
# yum install mysql-server httpd php php-mysql php-gd php-mbstring php-pear php-xml

設定開機時啟動
# chkconfig –level 3 httpd on
# chkconfig –level 3 mysqld on

啟動服務
# service httpd start
# service mysqld start

MySQL Server 初始化設定
# /usr/bin/mysql_secure_installation

Proxmox – 叢集管理全部主機

將多台的 Proxmox Server 集合起來,可以在任何一台 Proxmox Server 上進行管理工作。
二台 Proxmox Server 的 VMID 不能一樣
pve 192.168.131.226

pve1 192168.131.227


[@more@]1. 開啟終端機 Shell

2. 在 pve 192.168.131.226 主機上執行(叢集名稱可以自定)
# pvecm create pvecluster
Corosync Cluster Engine Authentication key generator.
Gathering 1024 bits for key from /dev/urandom.
Writing corosync key

3. 在 pve1 192.168.131.227 主機上執行,要先將設定檔移至它處
# mkdir -p /root/pve/{lxc,qemu-server}
# mv /etc/pve/lxc/* /root/pve/lxc
# mv /etc/pve/qemu-server/* /root/pve/qemu-server
# reboot

4. 在 pve1 192.168.131.227 主機上執行
# pvecm add 192.168.131.226
root@192.168.131.226’s password:
copy corosync auth key
stopping pve-cluster service
backup old database
waiting for quorum…OK
generating node certificates
merge known_hosts file
restart services

successfully added node ‘pve1’ to cluster.

如果沒有做第 3 步驟,會出現如下的錯誤訊息

5. pve1 192.168.131.227 主機上執行
# mv /root/pve/lxc/* /etc/pve/lxc
# mv /root/pve/qemu-server/* /etc/pve/qemu-server
# rm -rf /root/pve
# reboot

6. 在二台主機上都可以進行管理
pve 192.168.131.226

pve1 192.168.131.227