前言
一直都是用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
Intel-i218网卡bug问题修复
老问题了,经常会出现:
[1453672.240655] e1000e 0000:00:1f.6 enp0s31f6: Detected Hardware Unit Hang: TDH <0> TDT <6> next_to_use <6> next_to_clean <0> buffer_info[next_to_clean]: time_stamp <115a8323b> next_to_watch <0> jiffies <115a83c11> next_to_watch.status <0> MAC Status <80083> PHY Status <796d> PHY 1000BASE-T Status <3800> PHY Extended Status <3000> PCI Status <10> [1453672.428441] e1000e 0000:00:1f.6 enp0s31f6: Reset adapter unexpectedly [1453672.691666] vmbr1: port 1(enp0s31f6) entered disabled state
解决方案(enp0s31f6改成实际的网卡设备名):
apt install ethtool -y && \ ethtool -K enp0s31f6 gso off tso off
磁盘配置
安装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 ID
和Slot 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
挂载raw格式的磁盘
losetup /dev/loop22 vm-<VM ID>-disk-0.raw partx -v --add /dev/loop22 mount /dev/loop22p1 /tempmount
Ceph重启节点
先设置noout和norebalance,这样重启期间ceph不会因为osd down了而迁移重建
ceph osd set noout ceph osd set norebalance
然后操作重启
重启后取消noout和norebalance,恢复正常
ceph osd unset noout ceph osd unset norebalance </pre <h2>常见故障排除</h2> <h3>GUI中存储上面出现问号</h3> 如果是共享存储的话,检查一下网络连通性,NFS的话用<code>showmount -e</code>看看,排除故障后: <pre class="prettyprint linenums" > 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
中删除对应路径即可