Proxmox一些技巧

VM类型一般选择q35,能降低一些CPU使用率,至于Version,linux一般选择latest,但是Windows要在pve有版本升级的时候手动选择一下最新的版本,可以在Hardware->Machine里面修改。当然了,使用host方式。

默认情况下, PVE会记录所有日志,可以修改为记录warning及以上的日志,修改配置文件
nano /etc/rsyslog.conf 找到 *.*;auth,authpriv.none -/var/log/syslog
这里的 *.*表示记录所有日志,我们只记录warning及以上级别的日志,把 *.* 修改为 *.warning即可, 这样就只会记录warningerrcritalertemerg 级别的日志,修改后结果如下 *.warning;auth,authpriv.none -/var/log/syslog
同理,下面的也可以修改为warning及以上级别:

auth,authpriv.warning                   /var/log/auth.log
cron.warning                            -/var/log/cron.log
kern.warning                            -/var/log/kern.log
mail.warning                            -/var/log/mail.log
user.warning                            -/var/log/user.log

修改后,记得重启rsyslogsystemctl restart rsyslog。 还可以根据这篇帖子,来调整记录日志的大小和时间范围。比如,只保留10天内的日志,则 journalctl --vacuum-time=10d

如果你的VM没有GUI界面,比如linux server等,可以在虚拟机的Options里面,找到Use tablet for pointer,并且将enabled取消。这个选项的作用(来自ChatGPT 4.0):

启用了一个虚拟化的平板设备来改善鼠标指针在虚拟机内的性能。它对于解决VM中的鼠标指针漂移或不准确的问题特别有用。对于使用图形界面的虚拟机,如Windows系统,建议开启此功能。

我的proxmox有一个西数的18T机械硬盘,使用的zfs文件系统。如何知道实际占用了多少空间呢?可以运行 zfs list -o space 来查看:

翻译过来如下:

名称 可用空间 已用空间 快照使用空间 数据集使用空间 用户保留空间 子数据集使用空间
wd18t 7.71T 8.53T 0B 104K 0B 8.53T
wd18t/backups 7.71T 523G 0B 523G 0B 0B
wd18t/isos 7.71T 6.83G 0B 6.83G 0B 0B
wd18t/vm-104-disk-0 10.2T 2.98T 0B 473G 2.51T 0B
wd18t/vm-106-disk-0 11.4T 5.04T 0B 1.38T 3.66T 0B

第一行就是整块硬盘的使用情况,总容量等于 可用空间的7.71T + 已用空间的8.53T,等于16.24T。

已用空间的8.53T等于 快照使用空间的0B + 数据集使用空间的104K + 用户保留空间0B + 子数据集使用空间8.53T

子数据集使用空间的8.53T等于下面wd18t子数据的已用空间的和,即 523G + 6.83G + 2.98T + 5.04T

子数据集的已用空间,以wd18t/vm-104-disk-0举例,2.98T等于 快照空间0B + 数据集使用空间473G + 用户保留空间2.51T

创建VM的时候,System标签下很多东西看着让人迷糊,chatGPT4.0回答如下:

在Proxmox中创建虚拟机时,“System”标签下的“SCSI Controller”选项允许您为虚拟机选择一个SCSI控制器类型。SCSI控制器是一种接口,用于连接和控制硬盘驱动器和其他类型的存储设备。下面是每个选项的详细解释:

  1. Default (LSI 53C895A): 默认选择,这是一个广泛支持的、兼容性良好的标准虚拟SCSI控制器。适用于大多数操作系统,无需额外驱动。
  2. LSI 53C895A: 同默认选项,指定为LSI Logic的53C895A SCSI控制器,这是一个比较老的控制器模型,通常用于较旧的操作系统。
  3. LSI 53C810: 另一种LSI Logic SCSI控制器,也是为了向后兼容设计的。较少使用,但可以在特定的旧系统中提供更好的支持。
  4. MegaRAID SAS 8708EM2: MegaRAID是一个适用于高端服务器的RAID控制器,如果虚拟机需要模拟RAID配置,可以选择此选项。
  5. VirtIO SCSI: 这是为虚拟化环境优化的高性能SCSI控制器。如果您的虚拟机操作系统支持并安装了VirtIO驱动,建议使用此选项,因为它提供了更好的性能。
  6. VirtIO SCSI single: 这是VirtIO SCSI的一种变体,它为每个连接的驱动器提供了单独的虚拟SCSI控制器。如果您需要为每个磁盘分配单独的控制器,可以选择这个。
  7. VMware PVSCSI: 这是为VMware优化的SCSI控制器类型。在VMware环境中性能较好,但在Proxmox环境中使用时可能需要安装额外的驱动。

您应该选择哪个控制器主要取决于您的虚拟机操作系统和性能需求:

  • 如果您需要最好的性能,并且操作系统支持VirtIO驱动,那么推荐选择VirtIO SCSI
  • 对于大多数通用用途,不需要特定驱动的情况,可以使用Default (LSI 53C895A)LSI 53C895A
  • 对于旧的操作系统或特定的兼容性需求,您可能需要选择LSI 53C810MegaRAID选项。
  • VirtIO SCSI singleVMware PVSCSI通常用于特定的场景,如果您不确定,那么通常不需要选择这些选项。

请记住,某些操作系统在安装期间可能不会识别VirtIO SCSI控制器,因此在安装这些系统时,您可能需要加载额外的驱动程序。如果您不确定哪个选项适合您的情况,可以先使用默认设置,或者根据您的虚拟机操作系统寻找最佳实践建议。

在Proxmox创建虚拟机时,"Bus/Device"的选择决定了虚拟硬盘连接到虚拟机的方式,它影响虚拟机的性能和兼容性。下面是您可以选择的不同类型的虚拟硬盘接口及其说明:

  1. IDE: 这是最早的硬盘接口之一,被用在虚拟化环境中以提供最佳的兼容性,尤其是对于那些需要模拟较旧硬件的旧操作系统。然而,它不支持许多现代硬盘特性,如并行操作或者较快的数据传输速度。
  2. SATA: 一个比IDE更新的接口,提供了更好的性能和特性,例如热插拔支持。在大多数现代操作系统中,SATA通常比IDE有更好的性能,而且通常被认为有更好的兼容性。
  3. VirtIO Block: 这是一种为虚拟化环境优化的接口。它通过减少CPU的负载和提供更高的吞吐量来提高性能。它通常是Proxmox VE中推荐的选项,因为它可以显著提高虚拟机的磁盘操作性能。需要注意的是,某些操作系统需要安装额外的驱动程序才能识别VirtIO设备。
  4. SCSI: 它模拟了一个SCSI硬盘控制器,这也是一种提供较高性能的选项,它支持更多的并发操作和通常比IDE更快的数据传输速度。对于一些需要特别的配置或对SCSI有依赖的系统,SCSI可能是一个不错的选择。

根据您的截图,如果您想在性能和兼容性之间找到平衡,以下是一些指导建议:

  • 对于大多数现代的Windows和Linux虚拟机,VirtIO Block通常是最佳选择,前提是您已经安装了必要的驱动程序。
  • 如果您的虚拟机操作系统没有现成的VirtIO驱动支持,并且您不希望手动安装驱动,那么SATA是一个不错的选择,它提供了合理的性能和很好的兼容性。
  • 对于非常老的操作系统,或者当最大兼容性是您的首要需求时,您可以选择IDE
  • SCSI适用于对性能有特殊需求,且操作系统支持SCSI设备的场景。

总的来说,您应该根据您的具体需求和虚拟机中运行的操作系统选择合适的选项。对于大多数用户来说,VirtIO Block由于其性能优势通常是首选。



在Proxmox VE创建虚拟机时,“Disks”选项卡中的“Cache”选项会影响虚拟机的磁盘I/O性能。这里是每个缓存选项的解释:

  1. Default (No cache): 默认设置,Proxmox会自动选择合适的缓存策略,这通常是没有任何缓存,直接将I/O操作传递给物理存储。
  2. Direct sync: 使用这个选项时,写入操作会直接同步到磁盘上,确保数据的一致性,通常用于要求数据完整性的场景。
  3. Write through: 写入操作首先在缓存中进行,然后同步到磁盘,这样在提供一定性能优化的同时保持数据的安全性。
  4. Write back: 这个选项允许写入操作先在缓存中进行,然后在一定时间后异步写入磁盘。这提供了更好的性能,但在电源故障等情况下可能会导致数据丢失。
  5. Write back (unsafe): 类似于“Write back”,但不使用内部电池支持的缓存。这种方法提供了最高的性能,但如果发生系统崩溃或电源故障,数据丢失的风险最高。
  6. No cache: 所有I/O操作直接传递给物理存储,没有缓存。这种设置通常适用于低延迟和高一致性的要求,例如数据库服务器。

Discard: 当您希望为支持TRIM命令的存储(例如SSD)启用磁盘空间回收功能时应该勾选。在某些情况下,它可以提高SSD的性能和寿命。

IO thread: 勾选此选项可以为每个磁盘设备启用专用的I/O处理线程,这可能会提高并发磁盘操作的性能。

下面的选项通常用于高级的存储管理:

  1. Backup: 如果勾选,该虚拟磁盘将包含在Proxmox的备份任务中。
  2. Skip replication: 如果勾选,将跳过Proxmox的集群复制任务,这个选项通常用于不需要复制到其他节点的磁盘,如ISO文件存储或临时文件。
  3. Async IO: 这个选项允许您选择异步I/O操作的处理方式:
  • Default (io_uring): 使用Linux内核的io_uring接口,它为现代系统提供了更高的性能。
  • io_uring: 明确指定使用io_uring接口。
  • native: 使用Linux内核的原生异步I/O(AIO)接口。
  • threads: 使用线程来模拟异步I/O,这在不支持AIO的老旧系统中有时是必须的。

选择哪个选项取决于您的具体需求,如存储类型、性能需求、数据一致性和可用性要求。通常,最好的做法是在测试环境中评估不同的配置,看看哪种配置最适合您的应用案例。

参考这篇文章 (archive),可以把cpu设置为powersave模式,降低cpu占用率,这样可以尽量省电。

作者的pvetools也不错。