欢迎光临
我们一直在努力

Proxmox折腾笔记

接这篇文章继续写一下关于Proxmox虚拟化的一些东西:

Hetzner使用Proxmox开KVM独立IP的VPS

这基本上可以说是个保姆级别的文章了,不过有点杂,先归类:

1.Proxmox安装完成之后机器不能update的问题解决。

2.Hetzner网卡配置以及IPv6的配置

3.开设Windows10/Debian9虚拟机并配置IPv6

4.Linux以及Windows系统模板制作

5.创建普通用户使其能管理自有的VPS

6.PCIpassthrough(PCI直通)

一:

在你安装完最新的Proxmox5.3之后你会发现机器不能正常update了,会出现这种401 Unauthorized的问题:

原因是Proxmox有一个订阅授权,这个授权是收费的,Proxmox在安装完成之后会给我们的机器加入一个企业软件源,这个源只有订阅了的用户才能使用,解决办法是重命名这个源:

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak

我们也不需要再去加额外的源,Proxmox默认在/etc/apt/sources.list.d/还有一个源就是提供免费用户使用的,只能说Proxmox这操作我有点看不懂。

二:

Proxmox在Hetzner的独服上小鸡IPv6不通的问题,按照我之前的那份网卡配置应该是可以用的,但如果你使用的时候发现母鸡都正常,小鸡的IPv4也正常,但是小鸡的IPv6不正常,就需要在母鸡内开启IPv6的转发:

echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf

然后使其生效:

sysctl -p

另外在这里再附上一份我修改过的网卡配置文件,目前我使用这份配置一切正常:

### Hetzner Online GmbH installimage

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback
iface lo inet6 loopback

iface enp0s31f6 inet manual
iface enp0s31f6 inet6 manual

auto vmbr0
iface vmbr0 inet static
  address 母鸡的IPv4
  netmask 母鸡的子网掩码
  gateway 母鸡的网关
  pointopoint 母鸡的网关(同上)
  broadcast 母鸡的广播IP
  hwaddress ether 主网卡的MAC地址 
  bridge_ports enp0s31f6
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0

iface vmbr0 inet6 static
  address 母鸡的IPv6
  netmask 64
  gateway fe80::1
  bridge_ports enp0s31f6
  bridge_stp off
  bridge_fd 0
  # 将/64的IPv6子网全部路由到vmbr0
  up ip route add xxxx:xxx:xx:xxxx::/64 dev vmbr0

三:

(1).记录在Proxmox上开Windows10小鸡并设置IPv6的过程。(基于我上面这份网卡配置)

首先要准备ISO和VirtIO驱动,当然如果你要使用Intel1000或者那种性能渣到爆炸的驱动那就可以省略很多步骤,不过为了你的小鸡性能能够正常一点,建议还是要准备VirtIO驱动。

而Windows的ISO一定要找没漏洞的版本,那种有洞的版本估计你刚安装完还没登录进去就被人日了,你说你到时候是不是得不偿失,尤其是Server2003/2008/2012这些老系统,强烈不推荐使用。下面我给出一个目前最新版的Windows10的ISO下载链接:

ed2k://|file|cn_windows_10_business_editions_version_1809_updated_jan_2019_x64_dvd_ee4a2f95.iso|5142784000|689DBCB5C2B6E022BC7E901D02DB10F1|/

如果你需要找到更多的ISO镜像,可以访问:

https://msdn.itellyou.cn/

也可以访问这里获得Server2019的ISO镜像:

http://bbs.pcbeta.com/viewthread-1795536-1-1.html

接着下载稳定版本的VirtIO驱动:

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

如果你要尝鲜,可以试试新版,可能会出现莫名其妙的问题:

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso

这个驱动的发布和介绍页面:

https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html

现在你需要将你的系统ISO和VirtIO驱动上传到Proxmox服务器内,这里可以借助Proxmox的WEB界面完成:

然后选择你的ISO文件上传即可:

当然你也可以通过SSH进入到如下目录上传:

/var/lib/vz/template/iso

准备好ISO和驱动之后开始创建虚拟机,你可以在这里勾选高级,然后勾选开机自启动,这样创建出来的虚拟机可以随母鸡自启动,如果母鸡重启了你就不用去一台台再启动小鸡:

接着下一步选择我们之前上传的ISO镜像,然后把类别和版本选择对应的:

下一步看到硬盘这里,选择VirtIO以及启用回写缓存,这样设置虚拟机的硬盘可以达到最好的性能:

CPU选择Host并勾选NUMA:

设置内存大小,勾选这个Ballooning:

网络这里选择桥接vmbr0,使用VirtIO,MAC地址填写Hetzner上生成的虚拟MAC(貌似Hetzner这家的虚拟MAC只针对Linux,Windows使用Auto应该也可以):

然后选中你刚创建的这台虚拟机,点击硬件,添加一个CD/DVD驱动器:

然后在这里把之前的VirtIO驱动加上:

完成之后你可以看到现在你这台虚拟机是有2个CD/DVD驱动器的:

现在点击右上角的启动按钮开启虚拟机,如果没有问题你将可以通过noVNC看到Windows的安装界面:

下一步开始安装:

我这个ISO可以选择安装的版本有很多,像什么教育版/企业版/专业版/专业教育版/专业工作站版。微软嘛,就喜欢搞这些没什么卵用的东西,但是我个人推荐企业版,因为这个版本的功能最全面,另外激活也很方便:

然后这里选择自定义安装,自定义安装=全新安装:

然后你会看到这个界面,它会提示你找不到任何驱动器,不要慌,在这里点击加载驱动程序:

选择浏览:

然后你在这里可以看到之前我们加载进来的VirtIO驱动文件:

首先来添加硬盘驱动:

然后你可以看到这个界面直接点下一步,它就会开始安装这个驱动,我说微软这个逻辑设计真的挺傻逼的,一次在这个界面添加多个驱动不好吗?但是它偏偏这里只能选择一个驱动:

安装完成之后你会又回到之前的那个硬盘驱动器的界面,只是这次我们的虚拟机硬盘就能被识别到了,但是不要急,这里还是点加载驱动程序:

这次我们要添加网卡驱动,步骤和之前一样,只是驱动的路径变为了:

别急,让我们再添加最后一个需要用到的驱动:Balloon,还记得之前创建虚拟机时设置内存的时候让你们勾选了Ballooning吗?这项技术可以更好的管理虚拟机的内存,驱动路径如下:

现在你就可以给虚拟机的硬盘做分区了,这里我给系统盘分了80GB,其他的分到剩余盘符:

下一步之后Windows就开始安装了:

看看妹子喝点咖啡,差不多就可以看到Windows的设置界面了,这里我跳过一些没卵用的步骤,看到这里,现在Windows10安装的时候它会让你提供一个Microsoft的账号,我提供个锤子,直接点左下角的“改为域加入”:

然后后面就是让你去创建一个管理员账户了,这里就不截图演示了。全部完成之后登到机器内,你会发现IPv4是通的,IPv6还是不能用:

这里IPv4是自动分配的,也就是我这套网卡配置实现了IPv4自动分配给虚拟机的功能,但是IPv6还是需要手动去分配的,所以现在我们来手动配置IPv6,步骤:

右下角托盘-右键网络图标-“打开网络和Internet设置”-更改适配器选项,找到如下界面,你可以看到这个虚拟网卡:

右键这个网卡-属性-Internet协议版本6(TCP/IPv6)-属性:

这里我拿Hetzner的IPv6示范,首先Hetzner是给每台独立服务器划分了/64的子网,你不用去计算你现在有多少个IPv6,我只能告诉你的是,/64有很多很多,你绝对用不完。

假设你母鸡的IPv6的地址是:2a01:4f8:3b:1556::2

你现在就可以把虚拟机内的IPv6地址配置成任意的:2a01:4f8:3b:1556::XXXX。我这份网卡配置是把/64的子网全部路由到了vmbr0这个网卡上,也就是你的虚拟机可以随便用,只要是你这个子网内的IPv6都可以。

子网前缀长度64不用说,默认网关使用和网卡配置文件上相同的:fe80::1

然后IPv6需要用到IPv6的DNS,这里可以设置成Google的:

2001:4860:4860::8888
2001:4860:4860::8844

全部设置完成之后如图所示:

现在我们重新测试一下Ping4和Ping6,应该就一切正常了:

现在你做了这么多都是在VNC上完成的,不能高效的复制/粘贴已经很烦了不是吗?那就应该把Windows的3389远程桌面给打开啊。

首先把这个Windows10的桌面图标全部显示出来:

右键-个性化-主题-桌面图标设置,如图:

把这些图标都放到桌面来:

桌面右键“此电脑”-属性-远程设置-远程-允许远程连接到此计算机:

OJBK,Windows的配置就到此为止。

(2).Debian9的IPv6配置。

首先关于Linux系的虚拟机创建这里就不写了,有不懂的可以看之前的文章。这里直接来到Debian9的网卡配置文件这里,需要注意的是以下操作请在VNC内进行,如果你在SSH里面操作的话会断网,还是得用VNC上去重启一遍。这也是很玄学的,因为networking确实是重启成功了,但不知道为何在Proxmox内还是会断网,只能重启。

nano /etc/network/interfaces

直接在网卡下面加一段(这里我假设你的IPv6是2a01:4f8:3b:1556::),然后我把地址配置为666,实际上和之前一样,只要是在/64子网内的IPv6地址都能配置。

iface ens18 inet6 static
  address 2a01:4f8:3b:1556::666
  netmask 64
  gateway fe80::1

然后重启网络服务:

systemctl restart networking.service

重启虚拟机:

reboot

最后测试Ping4和Ping6,应该是非常完美的:

四:

在Proxmox内创建Windows/Linux系统模板。其实在Proxmox内创建系统模板的话非常非常简单,而且也没什么坑,基本上可以一步到位。创建系统模板的好处无非2个:其一是快速部署,你可以事先把你需要安装的软件都装在系统内,以后需要用到就不要重复去安装了,直接用系统模板就能克隆出一台全新的虚拟机。其二是在Proxmox内没有一个完善的重装系统的功能,我们可以利用创建系统模板来实现一个伪重装的功能。不过你需要注意的是,被创建成模板的这台虚拟机就不能再次使用了。

创建系统模板的步骤如下:

1.关闭虚拟机

2.右键转换成模板,转换完成之后虚拟机的图标会有所改变:

当你需要用到哪个模板的时候就右键点击“克隆”,然后模式选择“完整克隆”,并尽量保证硬盘格式和之前的模板格式一样:

稍等几秒就会有一台全新的虚拟机可供你使用。

五:

创建普通用户让普通用户可以使用Proxmox的控制面板来管理自己的虚拟机。其实在Proxmox内有一套非常完善的用户/权限管理机制,但是也正是因为它太过于完善,显的设置起来比较麻烦。可以组合出来的权限和模式也非常之多,但我们使用的最多的无法就是创建一个再普通不过的用户,让他们能够登录到Proxmox内管理自己的虚拟机而没有任何其他的权限。

首先点击Proxmox内的“数据中心”-“用户”-“添加”,你可以进入到创建新用户的界面,在这个界面内,把领域修改为:Proxmox VE authentication server

其他的这些就可以根据自己的需要去设置:

用户创建完成之后,点击“角色”,可以在这个界面内看到很多内置的角色以及对应的权限,不过目前这个Proxmox5.3的版本有个BUG,就是这些内置的角色权限是无法在这个WEB界面修改的,它不能生效,一般情况下,我们使用PVEVMUser这个角色就可以了,但也有一个问题就是你用这个角色的权限给用户,用户没有办法重装系统,因为在Proxmox的KVM内,想重装系统只能通过CD/DVD这种模式,但这个默认的PVEVMUser角色没有添加相应的权限,又由于BUG不能去修改,所以我们在这里只能去创建一个新的角色,我在这里把它命名为了User,具体的权限如下:

也就是多加一个Datastore.Audit的权限给这个角色。这样设置完成之后,我们还要再点击“权限”-“添加”-“用户权限”:

把你需要添加到User这个角色的用户按如图设置,这里首先我们设置它的访问路径为它自己这台虚拟机:

重复之前的步骤,再设置一次访问路径为它虚拟机对应的存储路径:

这样设置完成之后,用户就可以在它的Proxmox界面内通过CD/DVD来重装自己VPS的系统了。

六:

目前的Proxmox最新版本已经是5.3了,这个版本和以往最大的不同是多了一个PCIpassthrough的功能,也就是PCI直通。如果你的机器上有多余的显卡/网卡等等这种PCI设备就可以尝试使用这个功能把设备直通给虚拟机用。直通最大的好处无非就是提供虚拟机无法提供的性能。比如VirtIO这种不需要模拟的虚拟网卡也最多只能跑个10GBps的带宽,再跑高一点就撑不住,而实际上在Proxmox内,别说10Gbps,1Gbps就会出现一些莫名其妙的问题。

PCI直通这个东西说实话有它的用处所在,但也比较鸡肋。就是你直通给虚拟机的设备也不能共享对吧,只能给那一台虚拟机去用。首先我要特别提醒的就是你的机器上如果没有第二块PCI设备就不要去折腾了,就算你全部设置好了也是无法直通的,因为直通最基本的条件就是你要有2块或者2块以上相同的PCI设备。再通俗一点讲,比如你现在有2块独立网卡,一块是给母鸡用的,那还有一块就可以用来做直通给虚拟机用。但如果你的母鸡上本身就只有1块独立网卡就千万千万不要把这块网卡给直通在虚拟机上了,不但不会成功还会导致你的母鸡爆炸。

Proxmox做直通也非常非常简单,官方有非常详细的文档,我这里就算是当个翻译吧。

首先你要编辑母鸡的grub配置文件:

nano /etc/default/grub

看到这个配置文件,在GRUB_CMDLINE_LINUX_DEFAULT后面加入一行intel_iommu=on,表明开启iommu:

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset consoleblank=0 intel_iommu=on"

然后更新grub设置:

update-grub

接着编辑内核模块的配置文件:

nano /etc/modules

加入如下4个模块的名称:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

因为Proxmox默认的内核是没有去安装这些模块的,我们在modules内加入了这些模块之后就需要重新生成内核:

update-initramfs -u -k all

完成之后重启机器:

reboot

除了我之前说的要2块或2块以上的PCI设备以外,现在你还需要查看你的机器硬件是否支持直通,执行下面的命令:

dmesg | grep ecap

如果回显的ecap最后一位字符串是如下之一则支持直通:

8/9/a/b/c/d/e/f

比如我这台机器结尾的字符串是e和a,那么就是支持的:

现在回到你的Proxmox面板,点击你需要做直通的虚拟机,点击“硬件”-“添加”-“PCI设备”,然后你就可以看到这里列出了你母鸡上的PCI设备:

你可以看到它这里还把Intel的核显给列出来了,但是我测试了一下我把这个核显直通到Windows虚拟机上也不能成功,直接母鸡爆炸。。。

差不多就是这些了,如果还要说Proxmox有什么可以折腾的地方那就是集群部署和Ceph了,属实我个人也是对Ceph比较有兴趣,但是目前没什么需求,确实够用了就行。Ceph要搞的话,基于Proxmox还是比较简单的,但如果放到别的环境上的话,那估计就不是一件容易事了。。

赞(0)
未经允许不得转载:拆东墙 » Proxmox折腾笔记

评论 抢沙发

登录

找回密码

注册