• Welcome to LiuJason's Blog!

Proxmox常用命令脚本及操作|PVE自用笔记

Linux笔记 Jason 2 weeks ago (07-07) 18 Views 0 Comments QR code of this page
[Edit]
文章目录[隐藏]

前言

一直都是用notepad来存这些零零散散的脚本,然后前几天Windows11出来了,大半夜一脑热就给装上了,忘记备份….
这次记在博客上不怕丢了。

基本设置

更换Community源

默认安装的Proxmox是自带Enterprise源的,没有订阅不能更新,换成Community源之后就没问题了

sed -i "s/^deb/\#deb/" /etc/apt/sources.list.d/pve-enterprise.list && \
echo "deb http://download.proxmox.com/debian/pve $(grep "VERSION=" /etc/os-release | sed -n 's/.*(\(.*\)).*/\1/p') pve-no-subscription" > /etc/apt/sources.list.d/pve-no-enterprise.list && \
apt update

更新Proxmox版本

切记不要用apt upgrade!!!!会有很多问题,Proxmox论坛上的staff也是这么说的

apt update && \
apt dist-upgrade -y

开启嵌套虚拟化nested virtualization

如果是普通开启KVM虚拟机的话无所谓,但是如果开的KVM内部还要再开KVM的话,就需要开启这个功能了。
Intel CPU:

echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf
modprobe -r kvm_intel
modprobe kvm_intel

AMD CPU:

echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf
modprobe -r kvm_amd
modprobe kvm_amd

网络配置

开启IPv4、IPv6转发

echo 'net.ipv4.ip_forward = 1
net.ipv6.conf.all.accept_dad = 1
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 1' > /etc/sysctl.conf
sysctl -p

开启IPv4 NAT

首先确认公网已经配置好,修改/etc/network/interfaces
添加内网网卡(本例中vmbr1),并设置内网MASQUERADE转发到公网网卡(本例中vmbr0,如果是网卡直接配置IP的话,把vmbr0改成网卡名即可)

echo 'auto vmbr1
iface vmbr1 inet static
        address 192.168.0.1/24
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
        bridge-ports none
        bridge-stp off
        bridge-fd 0' >> /etc/network/interfaces
cat /etc/network/interfaces

确认输出的网卡信息都正确后,再重启网络(以免失联):service networking restart

配置InfiniBand

apt-get install -y libmlx4-1 infiniband-diags ibutils ibverbs-utils rdmacm-utils perftest
modprobe ib_ipoib
ip addr 
ibstat

查看IB设备名,以及对应设备的联通情况,确定网卡设备后再配置对应的IP

echo 'auto ibp5s0
iface ibp5s0 inet static
        address 10.0.34.198/8
        pre-up modprobe ib_ipoib
        pre-up modprobe ib_umad
        pre-up echo connected > /sys/class/net/ibp5s0/mode' >> /etc/network/interfaces

磁盘配置

安装MegaCli管理硬件阵列卡

apt-get install sudo unzip alien libncurses5 wget -y && \
wget https://docs.broadcom.com/docs-and-downloads/raid-controllers/raid-controllers-common-files/8-07-14_MegaCLI.zip && \
unzip 8-07-14_MegaCLI.zip && \
cd Linux && \
sudo alien MegaCli-8.07.14-1.noarch.rpm && \
sudo dpkg -i megacli_8.07.14-2_all.deb && \
ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli

批量设置所有单盘磁盘raid0

有些阵列卡不支持JBOD,所以如果要单盘做CEPH或者ZFS的话就要做成单盘RAID0然后再进一步操作。
首先查看物理盘的情况,只有Firmware state: Unconfigured(good), Spun Up的才能进行配置

megacli -PDList -aAll | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state"

然后看好Enclosure Device IDSlot Number,就可以批量操作了:

for slotid in {1..7}
do
  megacli -CfgLdAdd -r0 [32:${slotid}] WB RA Direct CachedBadBBU -a0
done

如果是foreign的话,说明这个盘以前在别的阵列卡里安装并配置过,要么可以导入信息,要么可以清除信息,后面碰到了我再把代码贴上来

批量添加Ceph的OSD

lsblk看清楚磁盘,然后再批量添加

for diskid in {c..h}
do
  wipefs -af /dev/sd${diskid} 
  sudo ceph-volume lvm create --data /dev/sd${diskid}
  sleep 5
done

挂载Ceph中的rbd磁盘

通常ceph的rbd磁盘都是开机时自动挂载到虚拟机,但是如果需要进行一些debug的话,就需要直接挂载到宿主机上了:

rbd -p <POOLNAME> list
rbd -p <POOLNAME> map <IMAGE>

卸载:rbd unmap /dev/rbd0

常见故障排除

GUI中存储上面出现问号

如果是共享存储的话,检查一下网络连通性,NFS的话用showmount -e看看,排除故障后:

service pvestatd restart

危险操作

删除集群配置

当一个节点脱离了集群之后,如果想要重新创建集群或者加入集群,那么两个选择:要么重装系统,要么删除集群配置。

systemctl stop pve-cluster corosync
pmxcfs -l
rm -rf /etc/corosync/*
rm /etc/pve/corosync.conf
killall pmxcfs
systemctl start pve-cluster

然后如果GUI中还能看到其他节点的话,去/etc/pve/nodes中删除对应路径即可


This article is under CC BY-NC-SA 4.0 license.
Please quote the original link:https://www.liujason.com/article/1169.html
Like (0)
Jason
Jason发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到