02
2024
02
00:59:35

proxmox+ceph集群完整方案/完整方案



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

https://zhuanlan.zhihu.com/p/617024637?utm_id=0&wd=&eqid=930aa8c80000b2360000000465251e15

模拟企业中使用3节点组proxmox集群,使用ceph方案

零.为什么要做pve集群?

1.pve集群为什么可以省钱

pve可以节省物理机器数量,减少物理机的开销

2.pve集群适合什么样的项目?

适合CPU占用低的轻量化应用,不适合数据库服务器

3.pve集群的性能瓶颈通常在哪?

瓶颈通常在硬盘,CPU通常占用不多,内存如果满了可以很方便地添加,

最难搞的是硬盘,需要做好硬盘的存储容量优化和读写速度的优化

4.为什么不用K8S,非得用pve?

如果应用在windows系统上,K8S不适合

一.前期规划

系统主体部分


加上网络口之后

因为pve每个节点设计到N台虚拟机,过于重要,所以提前设置好IDRAC口,从BIOS层面远程监控

二.装系统

下图是一些需要注意的点,有些步骤很简单就没上图

今天安装的时候出现一个问题,装完后IP 不通, 结果发现是上图设置网络的时候,网卡没有选择接网线的网卡,而是选择了idrac网卡。。。。

这种情况多出现在IDC的物理服务器安装上面,代维由于经验问题是不会判断网卡的。

如果已经按照错误的网卡安装了, 之后怎么解救呢:

从显示器登录系统

ip addr #查看所有网卡的名称

nano /etc/network/interfaces #查看网卡配置

#修改其中vmbr0虚拟网卡 下面对应的物理网卡口 bridge-ports

修改成物理服务器上的网卡口名

然后ctrl+O 保存 , ctrl+X 退出

之后systemctl restart network保存更改, 之后应该就能正常ping通IP了



之后就自动安装,装完https:// 192.168.1.11:8006进入web页面

pve1节点弄完后,pve2,pve3节点也这样弄

三.配置网络

PS.发现一个BUG, 我家笔记本连接加密的wifi之后,

笔记本上面3台PVE节点桥接笔记本的网卡,设置完IP,网关之类的之后, 并不能上互联网

这是因为咱们pve节点仍然走的加密wifi,而加密wifi只接受输入wifi密码的客户端


解决办法: 1.笔记本插网线, pve节点桥接有线网卡

2.把wifi改成开放式wifi ,这样pve节点就可以设置完IP后直接上互联网



1.单链路方案

所有的pve节点都需要设置网络!!!

先弄一个单链路方案,便于理解

两台交换机,两个网段

每个pve节点的网卡1接管理交换机网段,网卡2接ceph交换机网段,使用Linux Bridge网卡方案

设置完所有的pve节点网络后,重启生效

2.链路聚合方案

思科交换机:交换机不用配置(只做默认的安全配置)

配置如图

弄完之后,如果拔掉网卡1的网线,网络会中断10秒,然后继续用网卡2通信

虽然是LACP聚合网络,但是会有几秒钟的故障恢复时间!!!

外网网口组合
外网网桥
ceph网络的网口组合
Ceph网络的网桥


其他参考链接
华为交换机设置参考:
思科交换机设置参考:


四.配置时间同步+软件

每个节点都需要配置

apt update -y #更新apt源

apt install ntpdate -y

ntpdate ntp1.aliyun.com

crontab -e

#写入
0 0 * * 6     ntpdate ntp1.aliyun.com

apt install ifupdown2 -y #装完后修改网络配置不用重启

五.安装杀毒软件+监控软件

1.每个节点安装杀毒软件(很重要!!!)

2.每个节点监控软件

六.proxmox集群搭建

七.ceph集群安装

1.没有ceph安装包怎么安装

3个节点都需要安装ceph

打开节点1的web,点击Ceph安装

选择一个最新版本的,确定,黑框框看到Y/N的选择就点击Y,

如果跳出网络响应问题,就关掉掉重新安装ceph,多试几次,大概一晚上能装完

装完后,这个pve版本的这个ceph版本的安装包还存在var/cache/apt/archives文件夹

可以给另外两个pve节点使用

装完点击下一步,下一步,完成

2.有ceph安装包怎么安装

如果已经有某个ceph版本的var/cache/apt/archives文件夹

ssh连接pve所有节点,archives放进去

然后进他们的web里面安装这个版本的ceph

出现Y/N后输入Y确认,等待3分钟装完

八.ceph集群设置

0.硬盘分区

根据规划,SSD2的小固态,分成4个分区,参考链接:

1.创建Ceph OSD


把SSD1和机械硬盘2分别创建OSD,注意要填磁盘,Device Class,数据库磁盘,WAL磁盘 这4个地方

如果Device Class填错了,先删掉OSD的类别,然后重加上

ceph osd crush rm-device-class osd.0 
ceph osd crush set-device-class ssd osd.0

2.创建class rule

ceph osd crush rule create-replicated ssd_rule default host ssd #创建SSD rule

ceph osd crush rule create-replicated hdd_rule default host hdd #创建HDD rule

3.创建Ceph pool

注意!!!下面这段话很重要!!!

web面板直接创建创建就好,下面两行是命令行创建的样子,创建之后发现左边不会自动出现ssd_data和hdd_data的文件夹,然后也无法在数据中心-存储-添加RBD里面的资源池找到sdd_data和hdd_data!!

后来发现web面板手工创建ceph pool后好了!!!!!!!!!!

ceph osd pool create hdd_data hdd_rule
ceph osd pool create ssd_data ssd_rule

4.创建Ceph monitor

5.创建CephFS

6.添加存储池RBD至PVE

”数据中心“ — ”存储“ — ”添加“ — ”RBD“。

7.激活存储池(否则会报错):

ceph osd pool application enable ssd_data cephfs

ceph osd pool application enable hdd_data cephfs

#取消激活存储池的命令,如果ceph配置的前后顺序弄错了,可以用这两条命令取消pool的激活ceph osd pool application disable ssd_data cephfs --yes-i-really-mean-it
ceph osd pool application disable hdd_data cephfs --yes-i-really-mean-it

8.给存储池打标签

数据中心-权限-资源池-创建

名称+备注

创建之后左边会出现标签,点击成员,创建-存储- 加入对应的Ceph pool

九.proxmox集群用户账号

角色参考:

集群中最好设置一个mgr的用户组,专门用来管理虚拟机,权限如下图,只有虚拟机,ceph pool硬盘,虚拟机的权限,不能操作节点和数据中心


root账号仅仅用在需要修改节点时候


所有节点都建好之后,数据中心-权限-用户组 -添加 ,组名设置为mgr

数据中心-用户-角色 ,创建一个账号,放在mgr组里面

数据中心-用户-添加-群组权限 ,添加下图这些权限

十.虚拟机管理指南,虚拟机模板克隆和虚拟机HA高可用

1.虚拟机创建

先去cephfs上传系统ISO镜像,然后创建虚拟机


cpu类别选择max

获取最多指令集的性能,

同时保留迁移兼容性

这对某些依赖指令集的程序性能提升很大

虚拟机上有iso挂载的时候 HA会无法生效!

虚拟机上有iso挂载的时候 HA会无法生效!

虚拟机上有iso挂载的时候 HA会无法生效!

安装完虚拟机后立刻卸载所有的iso!!

2.虚拟机模板

虚拟机可以右键做成模板,然后模板克隆出新主机,注意:克隆需要10分钟以上,克隆时web界面下方会看到任务在转圈圈,这时候任何事情都不要做,等待克隆完成

3.HA高可用

虚拟机上有iso挂载的时候 HA会无法生效!

虚拟机上有iso挂载的时候 HA会无法生效!

虚拟机上有iso挂载的时候 HA会无法生效!

安装完虚拟机后立刻卸载所有的iso!!

数据中心-HA-群组 创建 , 把所有PVE节点加进去

数据中心-HA 资源-添加 , 把虚拟机加进去

虚拟机所在节点关机,过几分钟,发现虚拟机跑到其他节点上了


注意:每个节点有pve节点系统硬盘+虚拟机系统硬盘+虚拟机数据硬盘+虚拟机数据缓存盘

如果虚拟机数据硬盘或者虚拟机数据缓存盘损坏,节点上的虚拟机是否会自动漂移?

是否存在节点的虚拟机在A节点,但是存储却指向了B节点的情况(这种磁盘读写速度<=网速,很严重!)


PS.创建HA组时有两个勾选的选项

根据我的研究,需要勾选"restricted"选项的情况是当您希望将资源的故障转移限制在特定节点上时。这可以确保资源只会故障转移到指定的节点,而不会转移到集群中的其他节点。这可能是因为您希望在特定节点上运行某些应用程序或服务,或者因为您希望确保资源只在特定节点上可用。

需要勾选"nofailback"选项的情况是当您希望防止资源在由于故障而移动到另一个节点后返回到其原始节点时。这可以确保资源不会在故障转移后不断地在节点之间移动,从而导致不必要的停机时间和性能下降。这可能是因为您希望确保资源始终在特定节点上运行,或者因为您希望避免资源在故障转移后不断地在节点之间移动。

注意:在节点发生故障后,隔离能够确保故障节点彻底离线。这样做主要是为了避免在其他节点恢复资源运行时重复运行同一个资源。这是非常重要的,如果不能确保隔离故障节点,就不可能在其他节点安全恢复资源运行。

如果节点没有被隔离,该节点就可能处于一种不可知的状态,并仍然能够访问集群的共享资源。而这是非常危险的!想象一下这种情形,如果隔离切断了故障节点的所有网络连接,但没有切断对存储的访问,现在尽管故障节点不能再访问网络,但其上的虚拟机仍在运行,并能够向共享存储写入数据。

如果我们现在在其他节点再次启动该虚拟机,我们就可能引发危险的竞争条件,因为现在两个节点上的两个虚拟机在同时向同一个镜像写入数据。这样的情况下,很可能会损坏虚拟机的所有数据,并导致整个虚拟机不可用。当然,我们再启动同一个虚拟机的操作很可能会因为存储禁止多次挂载的保护措施而失败。

这一点需要注意,制定合理的HA策略

4.网卡问题处理

virtio-win-0.1.171.iso是virio设备的驱动,通常虚拟机要选择virio的网卡

进去后在设备管理器上面设置virio网卡的驱动,选择这个iso的总目录自动安装

PS.发现windows2016系统,无论安装e1000桥接网卡,还是安装virtio的网卡,重启系统都会断网

最终解决:

使用e1000桥接网卡:

第一步:设备管理器禁用网卡

第二步:设备管理器启用网卡

第三步:取消网卡的节电。。。。。

使用virtio网卡:

第零步:先安装网卡驱动

第一步:设备管理器禁用网卡

第二步:设备管理器启用网卡


5.虚拟机必须限制读写硬盘的带宽

创建虚拟机的时候,建完虚拟机之后都可以限制这个虚拟机上单个磁盘的读写带宽,一定要事先按照虚拟机的用途做好限制,防止某个虚拟机占用太多磁盘读写,让其他虚拟机卡顿

6.强制关闭虚拟机

在日常使用PVE搭建虚拟机的使用过程中,偶尔会出现虚拟机假死无法关闭的情况并提示TASK ERROR: VM quit/powerdown failed – got timeout显示关闭推出无反应超时,通过查找学习可以使用以下办法强制关闭假死的虚拟机。


这里有两种办法

方法1:在虚拟机所在节点执行

qm stop xxx #xxx是虚拟机的编号

方法2:

找到虚拟机所在节点,打开shell

ps -ef|grep "/usr/bin/kvm -id 100" |grep -v grep#将id换成需要关闭的虚拟机

这里可以看到100的虚拟机的进程号是3995679,此时使用kill 3995679命令强制结束进程,稍等片刻就会发现该虚拟机已经停止运行了。

7.虚拟机导入导出

*********************************************************

环境

●平台:Proxmox Virtual Environment 6.2-4

●节点:pve01 pve02



一、简介

利用pve的备份恢复功能进行虚拟机的导入导出

1使用备份功能备份为vma文件

2使用WinSCP等软件复制vma备份文件至计算机

3使用WinSCP等软件上传vma备份文件至另一台pve

4使用恢复功能恢复虚拟机



8、 备份虚拟机




1登录pve01选择要备份的虚拟机

2点击子菜单中的备份按钮

3点击立即备份按钮

4设置备份到的存储(local的备份路径为:/var/lib/vz/dump)

5设置模式:停止

6设置压缩:无

7等待备份完毕







WinSCP可以使用SFTP连接pve节点 WinSCP下载地址:WinSCP官网

1登录pve01节点




2切换远程目录至备份目录(local存储的备份目录为:/var/lib/vz/dump)找到虚拟机备份文件右键点击下载




3使用二进制方式下载vma备份文件至本机目录




4等待下载完成






四、上传备份

1使用WinSCP登录pve02节点

2本地目录切换至刚下载备份的目录

3右键点击vma备份文件选择上传




4输入上传路径/var/lib/vz/dump/.(local存储的备份目录为:/var/lib/vz/dump)并使用二进制方式上传




5等待上传完毕






五、恢复虚拟机

1登录pve02节点

2切换至相应的上传存储(local)

3点击子菜单中的内容菜单

4选择刚上传的vma备份文件

5点击恢复按钮




6设置恢复到的存储和VM ID

7点击恢复按钮开始恢复




8等待恢复完毕






六、测试启动导入的虚拟机








*****************************************************************





*十二.proxmox的防火墙设置办法

1.proxmox






在已经建好的集群中,直接enable数据中心防火墙会导致集群报错,OSD,cephfs等等异常!!

pve有3种防火墙:

a.面对数据中心的防火墙,处理流出流入数据中心的流量。

b.面对节点服务器,处理主机流入流出的流量。

c.面对vm的防火墙,处理vm流入流出的流量。

集群防火墙这样设置安全群组,之后所有节点上也这样调用集群做好的安全组

注意:防火墙默认禁止ping,假如pve节点接入了zabbix服务器,那么默认是一直离线状态(ping检测不到)

还需要额外对zabbix服务器做一个ping测试

注意点:

Web 界面:8006(TCP、HTTP/1.1 over TLS)

VNC Web 控制台:5900-5999(TCP、WebSocket)#这种一整段端口可以用 : 隔开SPICE 代理:3128 (TCP)sshd(用于集群操作):22 (TCP)rpcbind: 111 (UDP)发送邮件:25(TCP,传出)

corosync 集群流量:5404、5405 UDP

实时迁移(VM 内存和本地磁盘数据):60000-60050 (TCP)作者:Varden
出处:http://www.cnblogs.com/varden/

2023.04.12,3台机器防火墙配置:配置完之后cephfs发现挂了,一台一台重启后恢复了,结果发现ssd_data,hdd_data这俩又挂了

最后直接设置为节点之间互相开放全部端口了。。。。

防火墙添加zabbix服务器需要的安全组

9.虚拟机修改uuid

当我们使用模板新建虚拟机的时候,可能会造成uuid冲突,多台电脑uuid相同

尽量的,每次新建虚拟机后手工修改一下uuid

*十三.ssh端口,web端口修改

1.ssh端口改成其他的

2.web端口从8006改成其他的

十四.硬盘定期检查

1.ssd检测

web查看

web界面的磁盘这里可以看smart值

软件查看

apt-get install -y smartmontools #安装smart信息软件

lsblk #找找哪个是固态硬盘,假定这里是sdc

smartctl -a /dev/sdc #显示smart信息

smartctl -H /dev/sdb #分析健康度,PASSED就是很健康

smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-9-amd64] (local build)Copyright (C) 2002-20, Bruce Allen, Christian Franke, http://www.smartmontools.org=== START OF READ SMART DATA SECTION ===SMART overall-health self-assessment test result: PASSED

2.机械硬盘坏道

#使用badblocks,proxmox自带的软件

badblocks -s -v /dev/sdc > badsectors.txt

结果
Checking blocks 0 to 20970495
Checking for bad blocks (read-only test): 
done                                                 
Pass completed, 0 bad blocks found. (0/0/0 errors)

坏道测试时间长,建议用crontab计划,定期选择业务停机的时间,每两个月做一次

PS.正规的流程应该是crontab任务,每月一个周末的半夜时间,对所有机械盘测试一次坏道,结果发给部门所有人的邮箱 ,然后管理员每月检索一次邮箱内容,查看坏道情况

3.定时检测硬盘坏道,并发送给指定邮箱实现(debian系统)






十五.硬盘故障处理

硬盘其实是服务器故障率最高的设备,没有之一。

只有它是机械的,有磨损,风扇还好,无尘机房可以一直用。

玩意硬盘坏一块怎么办?

1:查看ceph状态

root@pve4:~# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 3.27478 root default
-3 0.81870 host pve1
0 hdd 0.81870 osd.0 up 1.00000 1.00000
-5 0.81870 host pve2
1 hdd 0.81870 osd.1 up 1.00000 1.00000
-7 0.81870 host pve3
2 hdd 0.81870 osd.2 up 1.00000 1.00000
-9 0.81870 host pve4
3 hdd 0.81870 osd.3 down 0 1.00000

osd.3 下线了

2:去除故障硬盘

ceph osd out osd.3 #下线osd盘
ceph auth del osd.3 #删除权限
ceph osd rm 3 #删除3号

ceph osd crush rm osd.3 #管理删除osd

ceph osd crush rm pve4 #管理删除节点

root@pve4:~# ceph osd rm 3removed osd.3
root@pve4:~# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME      STATUS  REWEIGHT  PRI-AFF
-1         3.27478  root default
-3         0.81870      host pve1 0    hdd  0.81870          osd.0      up   1.00000  1.00000
-5         0.81870      host pve2 1    hdd  0.81870          osd.1      up   1.00000  1.00000
-7         0.81870      host pve3 2    hdd  0.81870          osd.2      up   1.00000  1.00000
-9         0.81870      host pve4 3    hdd  0.81870          osd.3     DNE         0root@pve4:~# ceph osd crush rm osd.3
removed item id 3 name 'osd.3' from crush map
root@pve4:~# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME      STATUS  REWEIGHT  PRI-AFF
-1         2.45609  root default
-3         0.81870      host pve1 0    hdd  0.81870          osd.0      up   1.00000  1.00000
-5         0.81870      host pve2 1    hdd  0.81870          osd.1      up   1.00000  1.00000
-7         0.81870      host pve3 2    hdd  0.81870          osd.2      up   1.00000  1.00000
-9               0      host pve4

3:添加新磁盘

记得初始化

wipefs -af /dev/sdc #sdc为新更换的磁盘设备名称

如果报错,扫描不到,彻底清除磁盘信息,并重启

dd if=/dev/zero of=/dev/sdb bs=512K count=1

reboot


十六.节点故障处理

*十七.ceph空间不够怎么处理

1.删除不用的虚拟机

待续。。。。

2.加硬盘方案

具体如何加?如果机器硬盘空间满了,在不能直接把OSD硬盘小换大的情况下,怎么加硬盘?

待续。。。。

十八.proxmox的自我修复功能

集群中,节点关机,过一分钟重启后,集群的数据中心-概要会报错:

Degraded data redundancy: 176/37893 objects degraded (0.464%), 10 pgs degraded, 10 pgs undersized

这个degraded一开始是0.9%,pve节点启动后刷新浏览器,越变越小,最后消失了,ceph恢复了健康状态

这是一种集群自我修复功能的过程

集群的节点故障了,重新做了一个节点加入,会有报错

后来报错自己消失了,这也是一种自我修复

十九.所有节点全挂了怎么恢复?

1.3个节点,2台同时关机,然后启动后,健康度会恢复么?

可以

*2.3个节点一起挂掉了,如何恢复?

待续。。。。

3.备份虚拟机

为了避免灾难,可以定期备份虚拟机

备份要考虑时间成本+存储空间成本,定好多久自动备份一次的备份计划

另外,必须规划好备份的硬盘大小

4.恢复虚拟机

恢复分为: 覆盖恢复 + 新建恢复

覆盖恢复:选中虚拟机 -备份 - 恢复

新建恢复:点击左边备份文件的标签,选中虚拟机的备份- 点击恢复

这种类似于 模板的拷贝,是新建了一个虚拟机


恢复出错怎么解决

现象

lzop: /var/lib/vz/dump/vzdump-qemu-105-2019_08_11-01_21_27.vma.lzo: Compressed data violation

TASK ERROR: command 'set -o pipefail && lzop -d -c /var/lib/vz/dump/vzdump-qemu-105-2019_08_11-01_21_27.vma.lzo | vma extract -v -r /var/tmp/vzdumptmp11512.fifo - /var/tmp/vzdumptmp11512' failed: exit code 133

_1-23_48_11.vma.zst : Decoding error (36) : Restored data doesn't match checksum

问题分析

因为PVE使用pipe管道恢复,如果硬件有问题可能会导致这样,如果是网络存储,可能网络也会有所影响。所以既有可能是文件损坏,也有可能是解压时出错。

解决方案

尝试手动还原。解包的时候忽略校验

使用lzo压缩时:使用命令lzop -xF xxxx.vma.lzo 解压

使用zstd压缩时:使用命令zstd -d --no-check xxxx.vma.zst 解压

解压时候是vma文件,使用vma extract手动解压

5.虚拟机操作失败锁定解除

qm unlock <vmid>

#强行终止正在嘉兴的虚拟机操作, 比如复制,备份等等,

#当虚拟机操作时间过长引起PVE系统异常的时候可以这样做


二十.proxmox Backup server备份服务器搭建和使用

参考网站:

Proxmox VE(PVE)备份组件:PBS(Proxmox Backup Server)部署及使用教程
https://blog.csdn.net/hanziqing0630/article/details/118678155

生产环境中,一定要在同一个IDC用另一台物理机搭建一个proxmox Backup Server

搭建注意:

官网下载ISO , 必须确保ISO安装的时候是完整的,使用MD5校验

为了节省资源,可以在virtualbox上面搭建PBS ,使用桥接网络(注意,服务器若有多块网卡,必须手工选择到正确的网卡桥接,否则是断网的) ,

PBS服务器随virtualbox启动自动打开的bat脚本(放到virtualbox安装目录下):

 @ECHO OFF
// ALP为虚拟机名称
VBoxManage.exe startvm ALP(虚拟机名)  --type headless

EXIT

装完PBS之后需要格式化一下用于备份的硬盘,然后在PBS的网页添加数据存储

pve与pbs对接配置

  1. 在pbs服务器shell中输入以下命令,复制“指纹”字段。

proxmox-backup-manager cert info


在pve服务器以下位置点击添加,选择“Proxmox Backup Server”。

根据实际情况填写参数。
ID:服务器名称,按需填写。
服务器:填写pbs服务器IP地址。
用户名:填写root@pam
密码:按需
Datastore:填写pbs中数据存储的名称。
指纹:填写第一步中复制的指纹。


备份策略配置

  1. 在pve服务器以下位置点击添加。

根据实际情况填写参数。
存储:选择第12章添加的pbs服务器。
邮件、通知:按需
备份开始时间:按需
最下方选择需要备份的虚拟机即可。


”精简/GC“策略配置

通过“精简/GC”配置,可以配置备份数据的保留时间,以及定期进行垃圾回收和精简,提高磁盘利用率。
下图配置的含义是:每周六凌晨5点进行垃圾回收,每周日5点进行精简,备份数据保留62天。


”精简/GC“模拟工具:使用这个工具可以直观看到策略的实际效果。
https://你的pbs服务器IP:8007/docs/prune-simulator/index.html

pbs日常维护

在数据存储“内容”选项卡中可以对备份文件进行验证、更改所有者、精简、删除等操作。


二十一.物理机迁移到proxmox VE虚拟机

1.Windows 物理机迁移到proxmox VE虚拟机

创建镜像

到微软官方站下载 disk2vhd

Disk2vhd - Windows Sysinternals


安装后运行,生成磁盘的镜像


创建虚拟机

在proxmox管理界面创建虚拟机


转换镜像

转换前可以用下面命令校验一下镜像:

qemu-img check -r all Vdisk/DESKTOP-VBMJON8.VHDX

使用下面命令将备份的VHDX文件转换为pve磁盘镜像:

qemu-img convert -O qcow2 Vdisk/DESKTOP-VBMJON8.VHDX /slow/images/510/vm-510-disk-0.qcow2

2.linux物理机迁移到proxmox VE虚拟机

比较简单的方法就是启动到linux,使用dd命令,直接克隆硬盘。

这种挺好的,本文是使用qemu-img直接将物理硬盘迁移到虚拟盘。

假设你拥有一个共享存储,例如NFS,smb或者ceph之类的。我们拥有一台物理机,需要将物理机的硬盘上传到PVE集群。

我们先下载qemu-img,再使用qemu-img转换磁盘

-c是压缩,-O 后面是虚拟磁盘格式,/dev/sdb是物理磁盘,vm102.qcow2是虚拟磁盘,-p是让qemu-img显示进度。

cd /mnt/pve/ssd3
qemu-img convert -c -O qcow2 /dev/sdb vm102.qcow2 -p

如果是windows,请将磁盘替换成"\\.\physicaldrive0"

请耐心等待,等转换完成,请移动到指定的虚拟机文件夹,并且修改文件格式即可。

这种方式,需要后端存储是文件存储。不能是块储存。

如果后端是快存储,比如ceph,建议先用文件系统cephfs做过度,将虚拟机开机之后,使用在线迁移硬盘,减少停机时间。

二十二.其他问题

1.搭建集群需要注意的点:

各个节点时间一致

各个节点系统版本一致

proxmox集群各个节点之间,UDP的5404,5405端口互相通信!!!必须互相允许

proxmox集群各个节点之间,tcp的22端口互相通信!!!必须互相允许

1.proxmox学习资源:

1.OSD添加的时候不认可已经有OSD数据的硬盘,如何重置硬盘,重新加入OSD?

*2.虚拟机为什么会自己断网

windows2016系统的网络标识会叹号,断网,要禁用再启用网卡才会恢复,原因是啥?

3.虚拟机备份设置不对,会导致集群硬盘占满

4.proxmox节点的web界面无法登录,但ssh正常登录,是啥原因?

我有3个节点组成的集群,今天废掉了2个,剩下的那个节点发现web界面

https: //192.168.1.226:8006/

无法登录,但是ssh能正常连接

解决方案:pvecm expected 1 #降低集群仲裁限制

原理:

关闭的节点导致集群低于仲裁限制。
这样节点进入只读模式并且没有启动任何 VM 或 CT,并且无法访问 Web GUI。
pvecm expected 1
修复了这个问题,GUI 又可以访问了。
问题:这是对丢失集群节点的预期反应吗?
如果是,我真的不明白如果剩余的集群节点因丢失另一个节点而变得无用,为什么以及如何实现高可用性?
编辑:VM 和 CT 也无法通过 CLI 启动。这就是我偶然发现失去法定人数的原因。

来源:

5.遇到很奇怪的问题

pve集群+ceph集群,其中pve1节点从集群中顺利退出之后,ceph里面删除pve1节点,之后pve1节点修好了,重新加入了集群,发现cephfs报错

这样,其实一个节点在加入了ceph后就无法正常删除正常重加了

二十三.安装Pve Tools

来自微信公众号:David的日常NASBox

该篇教程主要讲解安装pvetools

Pve Tools:这是一个为proxmox ve写的工具脚本(理论上debian9+可以用)。包括配置邮件,samba,NFS,zfs,嵌套虚拟化,docker,硬盘直通等功能。




主要流程目录:1.安装pvetools2.功能&使用


1.安装pvetools来到Shell




先删除企业源

rm /etc/apt/sources.list.d/pve-enterprise.list




安装Pve Tools

export LC_ALL=en_US.UTF-8
apt update && apt -y install git && git clone https://github.com/ivanhao/pvetools.git




启动工具(平时要用也是输入这个就行了)

cd pvetools




选择语言




已经可以使用了




2.功能&使用配置都很简单,就不过度展开了

配置pve的web界面显示传感器温度、CPU频率




之前的样式




修改后




配置PCI硬件直通




可以直通硬盘和显卡




常用的工具


参考链接:

github.com/ivanhao/pvet


二十四.PVE | 硬盘直通

来自微信公众号:David的日常NASBox


该篇教程主要讲解硬盘直通

Tip:如果安装了pvetools,可以直接使用脚本,操作起来会更加方便直观。

关联教程:PVE | 安装Pve Tools

来到Shell




查询硬盘

ls -la /dev/disk/by-id/|grep -v dm|grep -v lvm|grep -v part




不太直观可以对照这里磁盘看




复制需要直通的硬盘识别码比如这里我是:ata-HGST_HTS725032A7E630_RC240ACK0KPB7J




点开需要直通硬盘的虚拟机,注意虚拟机ID,磁盘类型和序号





整理将硬盘绑定到虚拟机上的代码

格式


输入命令




更新成功




打开虚拟机,可以看到多了直通的硬盘



参考链接:

gitee.com/spoto/PVE_Gen

二十五.PVE挂载带数据的硬盘

如果是需要直通一块新的物理硬盘,那可以执行命令:ls /dev/disk/by-id,查看物理硬盘

然后用qm set命令挂载硬盘,示例: qm set 100 --sata1 /dev/disk/by-id/ata-WDC_WD5000AADS-00S9B0_WD-WCAV94178418

如果直通的物理磁盘已经有分区了,也可以用这个命令挂载:qm set 100 --sata1 /dev/sdb

现在的情况是,物理磁盘并没有分区表,但是有之前的PVE创建的虚拟磁盘,那也可以直接挂载给新的虚拟机使用,并且数据不会丢失,命令示例如下:

fdisk -ll,显示所有磁盘信息

qm set 100 --sata1 /dev/xxxxx,如果有多块就sata2、sata3,还不够就ide0、ide1……,但是不要用scsi,系统可能无法直接识别,还要安装驱动,比较麻烦。

客户的要求是找回虚拟磁盘内的数据,所以,到此就完成了任务。

但是,其实还有一种情况,上面还没提到,就是原来的机械硬盘,执行fdisk -ll命令,分区表,但不直接显示虚拟磁盘,那就需要不同的方法来导入虚拟磁盘,找回原来的数据。

如下图所示,原来的固态硬盘坏了,新的120G固态装了PVE,也是自动产生的分区表;原来的2T机械硬盘,显示有一个分区:sda1

反正机械硬盘始终是要用的,所以编辑FSTAB文件,配置为开机自动挂载;

直接把它挂载到虚拟服务器上,看看有没有数据;其实mount之后,ls命令就能看了

挂上去之后,启动虚拟服务器,结果只看到里面有几个raw文件,那就是虚拟磁盘了,要看里面的数据文件,还要进一步操作;关闭虚拟服务器,把这块磁盘删除;采用qm importdisk命令为虚拟服务器导入虚拟磁盘:


二十六.常见qm命令

磁盘格式转换

qemu-img convert -f raw -O qcow2 synoboot.img synoboot.qcow2

qcow导入到虚拟机

qm importdisk 101 synoboot.qcow2 local-lvm

硬盘查询

ls -l /dev/disk/by-id/

硬盘直通

qm set 101 --sata1 /dev/disk/bu-id/ata-XXXXXX

二十七. Async IO导致的虚拟机断网,失联

虚拟机某日突然网络出问题,频繁断网,然后web界面显示虚拟机失去连接,过了一会儿又会自动恢复,反复出现。

查看了日志后发现有个got timeout的错误

搜索后得到官方论坛给出的解决办法

员工的回答:

“ 就是这个问题,请进入硬件选项卡,打开虚拟磁盘,点击高级,将“Async IO”更改为“Threads”或“Native”。

一般来说,我们从不推荐 Windows 上使用 SATA。最好使用 VirtIO SCSI(需要驱动程序)。”

Reboot您需要关闭+启动(也可以通过UI 中的按钮完成)才能将更改应用于异步 IO 设置。仍然建议对虚拟机使用 SCSI 控制器,但我认为该线程的原始问题(关于 SATA+io_uring)不应再出现在较新的内核中。”

另一个回答:

“I am also facing this error, trying your fix by changing the "Async IO" to "Threads" or "Native". will update once it is resolved.”

“我也面临这个错误,尝试通过将“异步 IO”更改为“线程”或“本机”来修复。一旦解决就会更新”

二十八.ceph crash archive问题

某日发现PVE3节点的系统盘ssd的 osd一直自动挂掉

手工on之后 ,也会自己掉下来

反复重启也没用。

讨论之后认为是ssd掉盘导致 ,虽然说是一个新的ssd。


解决办法: 服务器关机后 , 人工拔插硬盘 , 然后重启电脑

具体步骤:

1. 问题节点迁移虚拟机离开

2. 关机问题节点

3. 插拔问题 ssd

4.开机查看能否挂上osd

5.检查健康ceph


之后ceph逐渐恢复健康,

但是看到了无法自动消失的ceph报错:类似这样:

1 daemons have recently crashed

osd.9 crashed on host prox-node4a at 2020-01-02 07:28:12.665310Z


解决办法:命令行操作

ceph crash ls #列出问题

#之后用ceph crash archive存档问题, 面板上的报错就会消失

#2020-10-29_03:4... 是上一个命令列出的ID值

ceph crash archive 2020-10-29_03:47:12.641232Z_843e3d9d-bc56-46dc-8175-9026fa7f44a4

二十九.掉盘问题

某日很多PVE虚拟机打不开了,或者很卡顿

查看ceph健康度,发现有OSD掉了

osd重新启动后仍然掉,


判断为硬盘问题 , 紧急采购了新的硬盘

硬盘到货之前, 出问题的机器: osd相关硬盘out,暂停使用


硬盘到了, 更换新硬盘步骤:

1.首先对osd停止自动重平衡数据

ceph osd set noout

2. 关闭(停止)并退出 osd(驱动器出现故障可能已经处于此状态)

2. web界面点击销毁osd

3. 故障节点关机 , 更换磁盘

4.检查节点 - 磁盘 ,能否看到新的硬盘 , 不能则bios里面设置no-raid

5.创建新的 osd

如果还有独立的wal和db盘,也要设置好, 另外如果有给硬盘设置type,也需要按照之前的坏osd 一模一样来设置

6.等待自平衡


三十.Guest agent安装

来自佛西博客:

https://foxi.buduanwang.vip/virtualization/pve/3022.html/
https://foxi.buduanwang.vip/

佛西大佬的PVE淘宝店(提供PVE问题支持服务):

https://item.taobao.com/item.htm?spm=a1z10.1-c.w4023-17780938314.10.509f652acut2Og&id=703488389113


对于windows系统。

首先安装驱动, 在virtio的驱动ISO里面

去设备管理器,找到没有驱动的PCI设备 ,将驱动升级,使用virtio的驱动ISO


然后,打开virtio的guest-agent目录,安装guest的软件,之后web页面就能看到了


对于linux系统

Linux

On Linux you have to simply install the qemu-guest-agent, please refer to the documentation of your system.

We show here the commands for Debian/Ubuntu and Redhat based systems:

on Debian/Ubuntu based systems (with apt-get) run:

apt-get install qemu-guest-agent

and on Redhat based systems (with yum):

yum install qemu-guest-agent

Depending on the distribution, the guest agent might not start automatically after the installation.

Start it either directly with

systemctl start qemu-guest-agent

Then enable the service to autostart (permanently) if not auto started, with

systemctl enable qemu-guest-agent

(should work for most distributions) or reboot the guest.



三十一.在Promxox VE上收集日志

来自佛西博客:

https://foxi.buduanwang.vip/virtualization/pve/3022.html/
https://foxi.buduanwang.vip/

佛西大佬的PVE淘宝店(提供PVE问题支持服务):

https://item.taobao.com/item.htm?spm=a1z10.1-c.w4023-17780938314.10.509f652acut2Og&id=703488389113




PVE主机的日志收集

日志主要有2个,一个是OS日志,一个是PVE的日志,都要收集

收集OS内的日志

apt update 
apt install sosreport -y 
sos report


执行后,会让输入什么东西,直接回车,等待几分钟会出现成功提示,最后的文件就是日志。


收集PVE的日志

选中节点,点击订阅,点击系统报告,随后点击下载即可。



虚拟机日志收集

Windows虚拟机

打开事件查看器,选中日志,点击另存为。



Linux虚拟机

安装sosreport

执行sos report即可

三十二.备份PVE的配置信息,重装后快速恢复。

来自佛西博客:

https://foxi.buduanwang.vip/virtualization/pve/3022.html/
https://foxi.buduanwang.vip/

佛西大佬的PVE淘宝店(提供PVE问题支持服务):

https://item.taobao.com/item.htm?spm=a1z10.1-c.w4023-17780938314.10.509f652acut2Og&id=703488389113

假设我们备份的地方是U盘,U盘挂载到在/media目录。

1. 备份虚拟机磁盘

虚拟机的磁盘是最重要的。如果虚拟机在pve的系统盘上,则重装会清空系统盘。这会导致丢失数据。

最理想的方式,把虚拟机放到第二块硬盘上,可以在pve上挂载第二块盘,然后通过移动磁盘功能,将虚拟机的磁盘移动到第二块盘。

这个功能如下。


移动磁盘之后,就不需要做其他的了,虚拟机的配置信息,可以在第二步进行备份。

2. 备份PVE本身的信息

cp -r /var/lib/pve-cluster /media


PVE的存储信息,虚拟机信息,集群的设置比如标签、SDN、用户信息之类都存储在/var/lib/pve-cluster/config.db中。我们只需要备份这个db文件就可以,这里为了方便,就全部备份了。

如何还原?

这里我们需要注意一点,备份之前的主机名必须和重装后的主机名一致,比如你原来的主机名叫做pve,那你新装了之后也要叫pve。

在新装的PVE上,挂载U盘到/media。将config.db拷贝回去。

cp /media/pve-cluster/config.db /var/lib/pve-cluster


然后重启pve即可。如果你前后的主机名不一样。则会在web上看到2个节点,一个新的机器,一个老的主机,虚拟机都在老主机上。所以一定要确保重装前后主机名一致。

3. 备份一些额外的配置

备份启动配置,模块配置

mkdir /media/{boot,modprobe} 
cp /etc/modules-load.d/* /media/modprobe/ 
cp /etc/default/grub /media/boot/ 
cp /etc/modules /media/


要还原的话,我们逆向一下

cp /media/modprobe/*  /etc/modules-load.d/ 
cp /media/boot/grub /etc/default/ 
cp /media/modules /etc/


接着我们要更新grub

update-grub


还有更新内核参数

 update-initramfs -k all -u


4. 备份网络

个人觉得网络没有什么好备份的,如果需要请,

cp -r /etc/netowork /media/


要还原的话,需要

cp -r /media/netowork/* /etc/netowork/

然后重启主机,或者重启网络systemctl restart networking

当然新手小伙伴,增加、变换了网卡的槽位,就不要无脑还原网卡了。


本文链接:https://hqyman.cn/post/5048.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: