PVE 使用笔记

PVE 使用笔记

我整了一个 E3 小主机,打算安装一个虚拟平台当小服务器。原来打算安装 ESXI 8.0,但是进入安装界面的时候报错。据查资料,需要 UEFI 启动才会不报这个错。机子是 H61 主板,BIOS 内也没有 UEFI 的设置项,我也懒得折腾这方面的东西。

索性把虚拟平台换成 PVE(Proxmox Virtual Environment),我没有使用 PVE 的经验,遂写下这篇文章,一是给别人做指南,二是给我做备忘录。

关键词:PVE、Proxmox Virtual Environment、Linux、虚拟机、优化

1. 安装 PVE

安装 PVE 我就不细讲了,安装过程比较简单,有几个需要注意的点。PVE 安装过程中需要输入邮箱,输入自己的邮箱即可。设置网络配置的时候,网关填写 PVE 所在局域网的网关,如果 PVE 没接入局域网,则填 PVE 的 IP,这一点在安装时 PVE 会自动设置,一般无需太操心。DNS 一般填写局域网的网关,直接填写 DNS 服务器的 IP 也行。主机名参照给出的示例填写,其他的随意。

在浏览器输入之前设置的 IP 地址加上 8006 端口号即可访问 PVE,用户名是 root,密码是安装的时候设置的。登录窗口有设置语言的下拉框,我登录的时候没注意,找了半天切换语言的设置。

2. 调教 PVE

接下来的操作都在命令行界面进行,在 PVE 的 WEB 管理界面打开 shell 或者 SSH 连接 PVE。

2.1 删除企业软件源

企业源对我们来说没啥用,输入以下命令删除企业软件源。

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

2.2 安装 pvetools

安装 pvetools 需要联网,所以配置好网络之后,再进行下一步的操作。按序输入以下命令安装并打开 pvetools。

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

大致的界面如下:

请选择相应的配置:                                                      │ 
b 配置 apt 国内源(更换为 ustc.edu.cn,去除企业源等)
c 安装配置 samba 或 NFS
d 安装配置 root 邮件通知
e 安装配置 zfs 最大内存及 zed 通知
f 安装配置 VIM
g 安装配置 CPU 省电
h 安装配置硬盘休眠
i 配置 PCI 硬件直通
j 配置 pve 的 web 界面显示传感器温度、CPU 频率
k 配置开启嵌套虚拟化
l 去除订阅提示
m 配置 chroot 环境和 docker 等
n 常用的工具
p 自动备份虚拟机 conf 文件
u 升级该 pvetools 脚本到最新版本
L Change Language

根据自己的需求配置即可。我把我的配置分享给大家。

把软件源改成国内源(b),国内的网络环境大家也知道,国外源不仅慢,还会断连。配置 CPU 省电(g),我的机子的 CPU 是洋垃圾 E3,功耗不低。搞省电,减少电费支出。

配置 PVE 的 Web 界面显示温度、CPU 频率(j),我可以不看,但不能没有。

去除订阅提示(l),每次手动关闭这个弹窗挺麻烦的,直接干掉。

2.3 删除 local-lvm 并把容量分配给 local(pve-root)

local-lvm 是 lvm-thin,lvm-thin 可以实现类似于 vSphere 的精简置备,还可以进行快照,能够方便地调整空间。但是虚拟机储存到 lvm-thin,是作为块设备,不能直接拷贝文件到其他地方去做备份或者迁移,也不能直接存放虚拟机,更不能存放文件。

local-lvm 也缺少文件层的缓存机制,影响了 IO 效率,而且 qcow2 很优秀,且属于文件类型,所以并不建议使用 lvm-thin 作为存储底层。

我是直接删除 local-lvm,把空间直接分配给 local(pve-root)。这样的操作,我不推荐。 因为 local 存储上有 proxmox 的系统文件,虚拟机的磁盘也保存在 local 上,如果遇到磁盘空间耗尽的情况,可能导致 proxmox 无法启动。 影响系统稳定性,给生产环境的长期运行带来隐患。推荐是把 local-lvm 改成目录机制,我这里演示两种方法。

2.3.1 删除 local-lvm,把空间分配给 local(pve-root)

注意!先确保自己的虚拟机没有位于 local-lvm 上,若有,请先移动到 local。

在虚拟机配置栏,选择磁盘,点击移动磁盘到其他磁盘上就行。

编辑 local,勾选所有内容,并确认。

pve-1.webp

使用 lvremove /dev/pve/data 命令删除 local-lvm

root@pve:~# lvremove /dev/pve/data 
Do you really want to remove active logical volume pve/data? [y/n]: y 
  Logical volume "data" successfully removed

使用 lvextend -rl +100%FREE /dev/pve/root 命令将 local-lvm 的空间转移到pve-root。

root@pve:~# lvextend -rl +100%FREE /dev/pve/root
  Rounding size to boundary between physical extents: 43.87 GiB.
  Size of logical volume pve/root changed from 19.75 GiB (5056 extents) to 63.62 GiB (16287 extents).
  Logical volume pve/root successfully resized.

转移完成之后,使用 df -h 命令就可以看到,根目录已经扩大了。

root@pve:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
udev                  7.7G     0  7.7G   0% /dev
tmpfs                 1.6G  1.1M  1.6G   1% /run
/dev/mapper/pve-root  109G  4.6G  100G   5% /
tmpfs                 7.8G   46M  7.7G   1% /dev/shm
tmpfs                 5.0M     0  5.0M   0% /run/lock
/dev/fuse             128M   16K  128M   1% /etc/pve
tmpfs                 1.6G     0  1.6G   0% /run/user/0

在 PVE 的 WEB 管理界面上,删除 local-lvm。

数据中心 —> 储存 —> 选择 local-lvm 并点击删除。

2.3.2 把 local-lvm 改成目录机制

卸载 local-lvm 卷。

umount /dev/pve/data

删除 local-vm 卷。

lvremove /dev/pve/data

查看磁盘剩余空间。

# pve 为卷组名。
vgdisplay pve | grep Free

创建新的 local-lvm 卷。

# 2333 为之前查看的磁盘剩余空间。
# pve 为卷组名。
lvcreate -l 2333 -n data pve

格式化新的 local-lvm 卷。

mkfs.ext4 /dev/pve/data

建立新文件夹,用于挂载 local-lvm 卷。

mkdir /mnt/data

将 local-lvm 卷挂载到新建的文件夹。

mount /dev/pve/data /mnt/data

编辑 fstab 文件,确保重启时,自动挂载文件系统。

echo "/dev/pve/data /mnt/data ext4 defaults 0 0" >> /etc/fstab

2.4 将新建的目录注册为存储。

在 PVE 的 WEB 管理界面,选择 数据中心 —>存储 —>添加, ID 随意填写, 目录填写之前新建的 /mnt/data ,即可添加新的存储。

3. 杂项

3.1 停止虚拟机

折腾 PVE 的时候,我忘记给虚拟机加上硬盘。重启 PVE 之后,虚拟机自动开启,因为没有硬盘,虚拟机无法正常启动,会自动重启。就像被黄金体验镇魂曲攻击了一样,不断循环开机失败、重启。我在 PVE 的 WEB 管理界面尝试手动停止,直接就报错。最终还是命令行靠谱。

qm stop 虚拟机 id

3.2 将 QCOW2 磁盘镜像文件导入到虚拟机中

使用 winscp 或者其他什么的,将 QCOW2 磁盘镜像文件上传到 PVE 中。在使用如下命令即可。

# 100 是虚拟机 ID。
# VM100.qcow2 是磁盘镜像文件。
# local 是存储 ID。
qm importdisk 100 VM100.qcow2 local

导入完成之后,虚拟机内会出现一个未使用的硬盘,将他加入到虚拟机里即可。

3.3 更改 local-lvm 的大小

记得备份好数据,这个操作会清空数据。

# 删除原来的 local-lvm。
lvremove /dev/pve/data

# 新建新的容量为 xxG 名为 data 的 local-lvm。
lvcreate -L xxG -n data pve

# 声明 pve/data 为 PVE 的 thin-pool type
lvconvert --type thin-pool pve/data

3.4 qemu-guest-agent

VM 有 VM-Tools,PVE 也有类似的东西。就是 qemu-guest-agent

Qemu-guest-agent 主要用于两件事:

1、正确关闭虚拟机,而不是依赖 ACPI 命令或 Windows 策略。

2、在进行备份时冻结来宾文件系统(在 Windows 上,使用卷影复制服务 VSS)。

想要使用 qemu-guest-agent,不仅需要在 PVE 里开启这个选项,还需要手动安装 qemu-guest-agent。

3.4.1 Linux 安装 qemu-guest-agent

# 我用 apt 命令演示,安装下面两个软件包即可。
apt install qemu-guest-agent
apt install spice-vdagent

3.4.2 Windows 安装

驱动下载链接如下:

https://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers

下载 ISO 格式的光盘镜像文件即可。较老的 Windows 可能无法正常读取 Qemu 虚拟的光驱设备, 此时需要下载 VFD 格式的软盘镜像文件。

将 virtio-win.iso 下载到 Windows 虚拟机里双击打开,双击运行 virtio-win-guest-tools.exe,根据提示进行安装。

3.4.3 PVE 更换磁盘格式删除快照被锁

输入以下命令解锁:

# 2333 是虚拟机 ID
qm unlock 2333

删除 snapshot 报错的记录。

# 2333 是虚拟机 ID。
# snapshot 中报错的区段都删掉。
vi /etc/pve/qemu-server/2333.conf

删除记录之后在 PVE 的 WEB 管理界面删除快照并重启虚拟机。

3.5 让 Openwrt Virtio 网卡显示全双工

Virtio 网卡在虚拟机下因为识别问题显示半双工,命令行输入下面的命令即可显示全双工(这个办法可能有副作用)。

# ethX 是网口 ID。
# 要改那个网口,就对那个网口使用这个命令。
ethtool -s ethX speed 1000 duplex full

重启就会回到半双工,为了一劳永逸,我们需要修改 /etc/init.d/network 文件。

start_service() {
    init_switch

    procd_open_instance
    procd_set_param command /sbin/netifd
    procd_set_param respawn
    procd_set_param watch network.interface
    [ -e /proc/sys/kernel/core_pattern ] && {
        procd_set_param limits core="unlimited"
    }
    procd_close_instance

    # ethX 是网口 ID。
    # 要改那个网口,就对那个网口使用这个命令。
    ethtool -s ethX speed 1000 duplex full
}

3.6 修改 PVE 的管理地址

在 PVE 的 WEB 管理界面上修改就能修改管理地址(修改网桥的 IP),但是修改管理地址之后,某些地方的文字不会改。虽然不影响使用,但是强迫症接受不了。下面我来讲讲完全修改管理地址的方法。

命令行输入以下命令

nano /etc/network/interfaces

你会看到如下内容:

# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manual>
# please utilize the 'source' or 'source-directory' directives to>
# so.
# PVE will preserve these directives, but will NOT read its netwo>
# configuration from sourced files, so do not attempt to move any>
# the PVE managed interfaces into external files!

auto lo
iface lo inet loopback

iface enp3s0 inet manual

iface enp1s0f0 inet manual

iface enp1s0f1 inet manual

iface enp1s0f2 inet manual

iface enp1s0f3 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.0.1/24
        gateway 192.168.0.2
        bridge-ports enp3s0
        bridge-stp off
        bridge-fd 0

auto vmbr1
iface vmbr1 inet manual
        bridge-ports enp1s0f0
        bridge-stp off
        bridge-fd 0
#wan

auto vmbr3
iface vmbr3 inet manual
        bridge-ports enp1s0f2
        bridge-stp off
        bridge-fd 0
#lan

auto vmbr4
iface vmbr4 inet manual
        bridge-ports enp1s0f3
        bridge-stp off
        bridge-fd 0
#lan

auto vmbr5
iface vmbr5 inet manual
        bridge-ports none
        bridge-stp off
        bridge-fd 0

在这些配置中找到你的管理口(可以到在 PVE 的 WEB 管理界面的系统 —> 网络部分查看),例如我的是 vmbr0。将 address(管理口 IP)和 gateway(网关)改成你想要的就行了(不会使用 Nano 的可以看我另一篇文章)。这一步改完之后,就可以通过修改后的管理地址访问 PVE,但是部分地方还是显示之前的管理地址,为了更完美一点,我们需要修改其他地方。

3.7 修改 PVE 的欢迎词

命令行输入下面的命令。

nano /etc/issue

你会看到下面的内容:

----------------------------------------------------------------->

Welcome to the Proxmox Virtual Environment. Please use your web b>
configure this server - connect to:

  https://192.168.3.254:8006/

----------------------------------------------------------------->

将 HTTPS 这一行的 IP 地址改成新的 IP 地址(不会使用 Nano 的可以看我另一篇文章)。当然你可以把这里的文本内容改成你喜欢的。

3.8 修改 PVE 的 Hosts

命令行输入下面的命令。

nano /etc/hosts

你会看到下面的内容:

127.0.0.1 localhost.localdomain localhost
192.168.0.1 pve.2333.com pve

# The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

把第二行的 IP 地址修改成新的 IP 地址即可(不会使用 Nano 的可以看我另一篇文章)。

3.9 PVE 虚拟化下的 Openwrt 访问 PVE 管理页面

PVE 的管理口配置 IP 和路由器一个网段,网关为路由器的 Lan 口 IP。

将管理口的 Linux 网桥分配给 Openwrt,Openwrt 再将网桥合并到 br-lan 的网桥端口中。

这样 Openwrt lan 口下的设备都是可以访问 PVE。

可能需要在 PVE 中新建一个网桥,网桥的设置保持默认。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇