PVE服务器配置及常见问题处理
1、新装配置
取消订阅 sed -i “s/data.status !== ‘Active’/false/g” /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
更换源 rm -rf /etc/apt/sources.list.d/pve-enterprise.list
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
echo “deb http://download.proxmox.com/debian/pve buster pve-no-subscription” >/etc/apt/sources.list.d/pve-install-repo.list
echo “deb http://mirrors.aliyun.com/debian/ buster main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib deb http://mirrors.aliyun.com/debian-security buster/updates main deb-src http://mirrors.aliyun.com/debian-security buster/updates main deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib” > /etc/apt/sources.list
apt update
更换LXC国内源
grep -rn “download.proxmox.com” /usr/share/perl5/PVE/* #查找设定下载源的文件 sed -i.bak “s#http://download.proxmox.com/images#https://mirrors.ustc.edu.cn/proxmox/images#g” /usr/share/perl5/PVE/APLInfo.pm wget -O /var/lib/pve-manager/apl-info/mirrors.ustc.edu.cn https://mirrors.ustc.edu.cn/proxmox/images/aplinfo-pve-6.dat
安装时间同步服务 apt-get install ntp -y
2、虚拟机迁移时需要确认几个问题
1、先将虚拟机的磁盘 通过硬件 中的 迁移磁盘 移到共享磁盘中。 2、再用迁移,将服务迁移过去。 3、迁移时需确认硬件,目标服务器是否满足硬盘需求。不能满足的需要先调整。
3、硬盘空间调小
3.0调整虚拟机硬盘的大小
查看虚拟机硬盘信息
fdisk -l 查看虚拟机硬盘路径 lvdisplay 查看虚拟机硬盘大小 lvs 调小虚拟机硬盘2G,备注:调整前先将系统内的硬盘调为未分配状态。 lvreduce -L -2G /dev/pve/vm-100-disk-0
3.1增加 或减小 local 目录的大小即扩容
首先执行命令 fdisk -l ,查看/dev/mapper/pve-root大小,显示内容大概如下面的:
Disk /dev/mapper/pve-root: 4.5 GiB, 4831838208 bytes, 9437184 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
然后对 /dev/mapper/pve-root 扩容,命令如下,即增加1G的空间.
lvextend -L +1G /dev/mapper/pve-root
执行后实际大小其实是还不会变化的,还需要下边的命令, 作用是执行上边的扩容操作 resize2fs /dev/mapper/pve-root
3.2如何要删除 local-vm 然后把所有的空间都移到 local下,那么如何操作。
1.先移除local-lvm对应的逻辑卷pve/data
lvremove pve/data
2.对local对应的逻辑卷/dev/mapper/pve-root进行在线扩容
lvextend -l +100%FREE -r /dev/mapper/pve-root
3、执行后实际大小其实是还不会变化的,还需要下边的命令, 作用是执行上边的扩容操作
resize2fs /dev/mapper/pve-root
4、Web中依次展开数据中心-存储,编辑local-lvm,把local-lvm中对应节点移除即可。
5、还有在数据中心-存储,编辑local,内容下拉菜单中把所有的内容都选上,以便这个空间可以储存磁盘映像。
4、开启PVE嵌套虚拟化功能
通过命令检验嵌套虚拟化功能是否已被开启:
vim /sys/module/kvm_intel/parameters/nested N
开启内核支持:
modprobe -r kvm_intel modprobe kvm_intel nested=1
现在再看看nested是否已开启:
cat /sys/module/kvm_intel/parameters/nested Y
编辑配置文件:
echo “options kvm_intel nested=1” >> /etc/modprobe.d/modprobe.conf
5、查看和关闭虚拟机
列出所有虚拟机:
qm list 关闭虚拟机:
qm stop
6、镜像转换
qemu-img convert disk.qcow2 disk.vmdk
7、迁移相关设置
PVE迁移的类型分加密(secure)或不加密(insecure) secure迁移 优点:信息安全,加密迁移 缺点:非常耗费host主机的CPU资源,且迁移速度慢 insecure迁移 优点:迁移速度快,对host主机的资源消耗小 缺点:不是加密迁移,信息安全需要考虑 如果在网络完全自主可控的情况下,可以考虑insecure迁移
迁移类型在配置文件中设置,web控制台无法设置 进入任意host节点----shell root@m71:~# cat /etc/pve/datacenter.cfg keyboard: en-us migration: network=172.18.171.71/24,type=insecure type可以设置为 加密secure(默认)不加密insecure
8、其它
如果只希望使用所有节点的列表,请使用: pvecm nodes
使分离的集群网络 添加回节点 将节点添加到具有独立集群网络的集群中时,需要使用link0参数设置该网络上的节点地址:
pvecm add IP-ADDRESS-CLUSTER -link0 LOCAL-IP-ADDRESS-LINK0
删除集群节点 pvecm delnode 节点名称
proxmox 退出集群 1、在需要退出集群的node上停止pve-cluster 服务 systemctl stop pve-cluster.service
systemctl stop corosync.service
2、node上集群系统文件设置未本地模式 pmxcfs -l
3、删除 corosync 配置文件 rm /etc/pve/corosync.conf
rm -rf /etc/corosync/*
4、重新启动集群文件系统服务 killall pmxcfs
systemctl start pve-cluster.service
一个三节点的PVE 6.1+CEPH集群,因为系统损坏,全部重新安装。 注意: 逐一重装系统/重新加入PVE集群/重新加入CEPH集群;
先禁用ceph的recover,避免其因OSD丢失重建:任一节点执行: for i in noout nobackfill norecover;do ceph osd set $i;done
重新加入pve集群前确保已经从集群中删除
步骤 1.备份配置和证书
备份到/root/bak/目录下,然后打包拷贝到其他地方保存(别忘了,否则就不能还原了):
systemctl stop pvestatd.service systemctl stop pvedaemon.service systemctl stop pve-cluster.service
tar -czf /root/bak/pve-cluster-backup.tar.gz /var/lib/pve-cluster tar -czf /root/bak/ssh-backup.tar.gz /root/.ssh tar -czf /root/bak/corosync-backup.tar.gz /etc/corosync cp /etc/hosts /root/bak/ cp /etc/network/interfaces /root/bak/ tar cjvf bak-$(hostname).tgz /root/bak 2.从pve集群删除节点
节点xxx关机,然后在其他节点删除该节点,下面的xxx就是节点名:
pvecm nodes pvecm delnode xxx pvecm updatecerts 3.重新安装PVE
尽量和以前一致,尤其主机名/IP地址。 4.恢复备份的配置和证书
把刚才的备份拷贝回来还原,按照原来的目录
tar xjvf bak-xxx.tgz cp /root/bak/hosts /etc/hosts cp /root/bak/interfaces /etc/network/interfaces systemctl stop pvestatd.service systemctl stop pvedaemon.service systemctl stop pve-cluster.service
cd / ; tar -xvzf /root/bak/ssh-backup.tar.gz rm -rf /var/lib/pve-cluster cd / ; tar -xvzf /root/bak/pve-cluster-backup.tar.gz rm -rf /etc/corosync cd / ; tar -xvzf /root/bak/corosync-backup.tar.gz 5.重新加入pve集群
强制加入pve集群,下面的xxx.xxx.xxx.xxx是集群中现存节点的IP地址
pvecm add xxx.xxx.xxx.xxx -force pvecm updatecerts 6.重新加入ceph集群
6.1安装ceph,直接使用gui上的pveinstall就可以 在正常ceph节点上删除该节点的mon
ceph mon stat ceph mon rm xxx
6.2重建mon
在图形界面里面新建即可,注意选择重装的节点
6.3激活ceph的osd
ceph-volume lvm activate --all
后附 1.双节点集群删除节点需要修改expect:
pvecm expected 1 pvecm delete pvecm updatecerts 2.一般错误
Permission denied (publickey). TASK ERROR: Failed to run vncproxy.
修改/etc/hosts同步到所有节点,如: 192.168.254.11 node1.cqcq.com node1 192.168.254.12 node2.cqcq.com node2 192.168.254.13 node3.cqcq.com node3 3.最后别忘了恢复ceph的自动恢复,同步数据
for i in noout nobackfill norecover;do ceph osd unset $i;done
输出状态
停止
TASK ERROR: storage ‘local-lvm’ does not exist
10、问题处理
1、迁移时提示认证失败时
Host key verification failed.
在控制台运行如下 /usr/bin/ssh -e none -o ‘HostKeyAlias=pve1’ root@192.168.3.241 /bin/true
ssh 192.168.3.241
2、PVE下qm stop提示超时的解决办法
TASK ERROR: can’t lock file ‘/var/lock/qemu-server/lock-108.conf’ - got timeout
rm 该文件就可以了。
1.先在shell里输入 rm /var/lock/qemu-server/lock-108.conf #108是你的虚拟机编号
2.再输入qm stop 108 就可以立即关闭你的108号虚拟机了
3、虚拟机存放路径
iso存放路径: /var/lib/vz/template/iso/
备份路径: /var/lib/vz/dump/
local 路径:/var/lib/vz/images/
local-vm 路径: /dev/pve/
虚拟机配置文件路径: /etc/pve/
集群中虚拟机配置文件路径: /etc/pve/nodes/pve(pve为节点名称)/qemu-server/
4、本机硬盘格式是lvm,新加硬盘想使用zfs格式,那么请一定要关闭swap。 命令为 swapoff -a ,否则zfs会发生很怪异的事情.
5、虚拟机出现问题状态为unkonw的解决方法
service rrdcached stop
rm -rf /var/lib/rrdcached/*
service rrdcached start
6、 虚拟机无法启动提示:TASK ERROR: storage ‘local-lvm’ does not exist
原因分析:集群导致硬盘指向出错。
解决方式:先退出集群,再分离原有的硬盘,重新挂载硬盘
退出集群(该步也许可以不用做,一般来说只有集群坏了才可做,没做过验证):
1、在需要退出集群的node上停止pve-cluster 服务
systemctl stop pve-cluster.service
systemctl stop corosync.service
2、node上集群系统文件设置未本地模式
pmxcfs -l
3、删除 corosync 配置文件
rm /etc/pve/corosync.conf
rm -rf /etc/corosync/*
4、重新启动集群文件系统服务
killall pmxcfs
systemctl start pve-cluster.service
分离硬盘:找到虚拟机,点硬件,点硬盘,点分离。
重新挂载硬盘:
SSH进入服务器,执行
qm set 105 -scsi0 local-vm:vm-105-disk-0
前面105 代表虚拟机ID 后面 105 代表对应的硬盘文件
虚拟机实际路径: /dev/pve/vm-105-disk-0
7、删除集群所有节点
删除集群:
/etc/init.d/pve-cluster stop
rm -rf /etc/corosync/*
rm -rf /var/lib/pve-cluster/*
rm -rf /var/lib/corosync/*
/etc/init.d/pve-cluster start
8、从配置文件及镜像中恢复虚拟系统
1、先新建一个同ID的虚拟机。为避免数据被覆盖,先将原来的镜像移动到其它目录。
mv /dev/pve/ vm-106-disk-0 /dev/pve99
106为对应的虚拟机磁盘 pve99 为临时备份目录
2、备份配置文件
mv /etc/pve/nodes/pve/qemu-server/ 106.conf /var/pve/
106.conf 为 106虚拟机的配置文件 /var/pve 为配置文件备份目录
3、创建同ID的虚拟机,并尽可能的把配置设为跟原虚拟机的一致,下一步修改时可以少修改点配置。
4、将/etc/pve/nodes/pve/qemu-server 下的配置文件改为跟/var/pve/下的一至,除vmgenid 和 smbios1 可以不用改。(如果系统应用授权有出错的,也可以修改 smbios1 的ID,该步没做过验证)
5、从/dev/pve99/下移回虚拟机磁盘到 /dev/pve 下。
6、在SSH下 用以下命令
qm set 106 -scsi0 local-vm:vm-106-disk-0
挂载虚拟机磁盘。
9、加入集群里,节点服务器必须没有虚拟机,如果有虚拟机将无法加入集群。
10、INFO: unable to open file ‘/etc/pve/nodes//qemu-server/.conf.tmp’ - Permission denied
pvecm expected 1 告诉服务器集群只有一个节点了。
11、安全的在集群中移动失效的节点
1、pvecm nodes 查看节点信息
2、pvecm delnode pve3 删除节点信息
3、cd /etc/pve/nodes 跳转至nodes目录下
4、rm -rf /pve3 删除pve3 目录及下面的