PVE折腾记录
Proxmox VE(英语:Proxmox Virtual Environment,通常简称为PVE、Proxmox),是一个开源的服务器虚拟化环境Linux发行版。Proxmox VE基于Debian,使用基于Ubuntu的定制内核[1] [2],包含安装程序[3]、网页控制台和命令行工具,并且向第三方工具提供了REST API,在Affero通用公共许可证第三版下发行。[4]。Proxmox VE支持两类虚拟化技术:基于容器的LXC(自4.0版开始,3.4版及以前使用OpenVZ技术[5])和硬件抽象层全虚拟化的KVM。[6]
电脑配置
去年年底将RX580换成5700xt,年初又将CPU换成了R9 3900X,于是闲置了2600和rx580,又将笔记本卖了,于是限制了一些ssd和硬盘,去年又趁着内存降价淘了两根16G的垃圾内存,在迫击炮上和十铨内存不兼容,于是萌生了组一个itx的念头,于是就有了下列的电脑配置。散热器用了3900x的,风扇选用了一个大风量的Arctic和利民的静音扇,实际体验也很不错,可以做到7*24。其余购入:主板、机箱与电源,都是在好友的推荐下购入
-
CPU: AMD Ryzen R5 2600
-
MotherBoard: A320M-ITX
-
Graphics card: MAXSUN MS-RX580 1340MHz/8000MHz
-
RAM: Gloway 16 DDR4 2666 MHz * 2
-
Stroage
-
SSD: LITEON_CV6-8Q128 128G
-
HDD:
-
ST1000LM048-2E7172 1T
-
ST2000LM015-2E8174 2T
-
Power Supply: FSP MS450
-
Case: GEEK N501
-
Colling Fan: Arctic F8 PWM + Thermalright TY08015B
以上配置唯一不太满意的地方就是主板,其实还是直接加200上b450的itx更好些,不过这块主板也是妖板没有特别的问题。
系统选择
- Windows 10
- Pro:游戏、日常办公
- Con:由于主用机的存在,注定了使用率较少,意义不大
- Linux:Manjaro、Kali
- Pro:编码与环境准备等
- Con:使用率太低,经常还是通过ssh连接l简单运行docker,有很多软件包在不同发行版上有更加良好的体验。
- 虚拟化系统
- Pro:随心用,适合折腾
- Con:上手门槛高,硬件直通效率可能是瓶颈
- 选取的部分版本:
- EXSI:系统需要针对硬件特殊定制(增加网卡驱动等),易用性不足
- PVE:开源,基于Debian,支持虚拟机与LXC容器,使用相对简单
- Etc:Unraid等,主要都是商用版本,对于我的使用场景暂时没必要
PVE安装
- 下载ISO
- 利用工具将ISO写入U盘
- 利用U盘安装PVE
下载ISO
从这个地址下载pve的iso镜像:pve download
利用工具将ISO写入U盘
利用U盘安装PVE
参考链接:
初始配置
切换debian源
pve 6.1是基于Debian buster上进一步定制而来,所以基础的软件源使用debian的源即可,这里放一个我认为比较好的镜像源地址:清华Debian镜像使用帮助
安装必要软件
- vim curl wget net-tools
- vim是我经常使用的一个文本编辑器,简单易用,也不需要过多的设置
切换PVE源
删除商用源
rm -f /etc/apt/sources.list.d/pve-enterprise.list
添加非商用的源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
使用国内源代理,加快pve相关的更新
如上图所示,采用了ustc,中科大的源
更新系统与软件
apt update
apt dist-upgrade
修改ceph.lsit以加快ceph的安装(可选)
/etc/apt/sources.list.d/ceph.list
是ceph的源,网上的教程里都没有提及这一点,如果需要使用ceph建议修改,文件内容如下
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-nautilus/ buster main
注意:利用web gui安装ceph可能会导致ceph源修改失效,建议手动安装所有需要的软件包,在此不一一列出
修改js文件以取消未订阅提示(可选)
文件路径:/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
shell中使用VI等工具编辑,将
if(data.status!=='Active'){
替换为
if(false){
注意:如果更新时将pve相关组件更新,可能胡造成这个修改失效,需要每次重新进行修改
磁盘配置
在安装pve时,选择了ssd作为target,即将pve系统安装在ssd上,在option选项下调整了swap分区的大小为38G。
安装完成后SSD的磁盘分区状态如下:
Device Start End Sectors Size Type
/dev/sdc1 34 2047 2014 1007K BIOS boot
/dev/sdc2 2048 1050623 1048576 512M EFI System
/dev/sdc3 1050624 250069646 249019023 118.8G Linux LVM
可见,其中主要是LVM分区,LVM分区在此不进行赘述。
LVM其中分区:有三分之一作为root分区,有三分之一作为data分区供最早的虚拟机使用,剩余三分之一就是交换分区了。由于其中大概只有60G是真正PVE可使用的分区,所以必须要有额外的空间作为使用。
机器上总共安装了一块2T、一块1T的机械硬盘,所以计划是将1T的磁盘用作存放ISO、LXC镜像和虚拟磁盘等,2T的磁盘专门用作虚拟磁盘使用,这样可以达到最大的使用率。
分区工具:gdisk,可以使用gdisk做gpt分区,也可以在pve的web gui上进行磁盘挂载与修改,如果玩坏了,可以使用gdisk来进行修改,使用大体上与fdisk相当。
注意:不要使用fdisk进行分区,可能会破坏gpt分区表,导致pve界面无法识别
分区规划:
- 1T:创建为Directory,可以实现最大的功能:磁盘映像, 容器模板, VZDump备份文件, 片段, 容器, ISO镜像
- 2T:创建为LLVM-Thin,用作虚拟机磁盘,保证虚拟机有足够的空间:磁盘映像, 容器
PCIE直通
用途
计划利用pve安装Ubuntu 18.04.4, 并在Ubuntu上安装ROCM,实现amd侧的深度学习环境搭建
基础设置
开启虚拟化、iommu
在主板bios的选项中开启虚拟化和iommu设置,一般来说虚拟化还是比较好找到,但是iommu就不一定了,我是下载了主办的完整说明书,才找到相关设置的位置
修改系统启动选项、系统内核模块
Step 1: 修改Grub配置
vim /etc/default/grub
修改这一行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
For Intel CPUs:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
For AMD CPUs:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
update-grub
Step 2: 添加VFIO模块
vim /etc/modules
增加以下几行:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Step 3: 更新grub并重启
update-grub
reboot
Step4: 修改虚拟机
给虚拟机新增pci设备
All Functions: YES
Rom-Bar: YES
Primary GPU: NO
PCI-Express: NO (如果需要改动这一项,需要修改机器类型为q35)
方案说明
这是我自己最初的方案,这个方案下,GPU不是PCIE直通,但是在第一次安装后,然后安装ROCM重新启动之后也还是能正常进入系统。其余方案我尝试各种设置都是没法在安装完ROCM后能够进入系统的,图形界面都属于挂起状态,如果能进入终端的时候,rocm也无法识别到显卡,这个方案有很大的不足那就是性能问题,下面会讲。
不足
性能不足:跑tf benchmark,普遍性能只有网上教程里的一半
显卡直通说明
如果是多卡设备,推荐还是参考文末的reddit链接的配置,可以实现完全的显卡直通,不丢失性能。
参考链接:
https://post.smzdm.com/p/768830/
https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/