• Welcome to LiuJason's Blog!

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

Linux笔记 Jason 4 years ago (2021-07-07) 1282 Views 2 Comments QR code of this page
文章目录[隐藏]

前言

一直都是用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 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

挂载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中删除对应路径即可


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

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

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. ```一直都是用notepad来存这些零零散散的脚本,然后前几天Windows11出来了,大半夜一脑热就给装上了,忘记备份….这次记在博客上不怕丢了。```哈哈,大佬,您的博客不是也经常404么,不怕,老衲已经帮您备份了所有文章 :smile:
    tt2021-08-12 18:09 Reply Windows 10 | Chrome 92.0.4515.131
    • Jason
      转载没问题,记得注明来源呀!
      Jason2021-10-11 22:52 Reply Windows 10 | Chrome 94.0.4606.71