3.主机系统管理
Proxmox VE基于著名的Debian Linux发行版。这意味着您可以访问Debian软件包的整个领域,并且基本系统的文档记录非常详尽。在 Debian的管理员手册可在网上,并提供了一个全面介绍了Debian的操作系统(请参阅 [Hertzog13] )。
标准的Proxmox VE安装使用Debian的默认存储库,因此您可以通过该渠道获得错误修复和安全更新。此外,我们提供了自己的软件包存储库,以推出所有与Proxmox VE相关的软件包。包括在必要时对某些Debian软件包的更新。
我们还提供了一个经过特别优化的Linux内核,可以在其中启用所有必需的虚拟化和容器功能。该内核包括ZFS的驱动程序和几个硬件驱动程序。例如,我们提供了英特尔网卡驱动程序来支持其最新硬件。
以下各节将重点介绍与虚拟化相关的主题。他们要么解释Proxmox VE上的不同之处,要么解释Proxmox VE上常用的任务。有关其他主题,请参考标准的Debian文档。
3.1。软件包存储库
所有基于Debian的系统都使用 APT作为软件包管理工具。存储库列表在/etc/apt/sources.list和.list文件中定义,该 文件位于 /etc/apt/sources.d/中。可以使用apt-get或通过GUI 直接安装更新 。
Apt sources.list文件每行列出一个软件包存储库,最优先的源在前。空行将被忽略,并且行上任何位置的 #字符会将该行的其余部分标记为注释。可通过apt-get update获取来自已配置源的可用信息。
文件/etc/apt/sources.list
deb http://ftp.debian.org/debian buster主要贡献者
deb http://ftp.debian.org/debian buster-updates主要贡献者
#安全更新
deb http://security.debian.org buster / updates主要贡献
此外,Proxmox VE提供了三种不同的软件包存储库。
3.1.1。Proxmox VE企业资源库
这是默认,稳定和推荐的存储库,可用于所有Proxmox VE订阅用户。它包含最稳定的包装,适合生产使用。在PVE企业资源库是默认启用:
文件/etc/apt/sources.list.d/pve-enterprise.list
deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
一旦有可用的更新,就会通过电子邮件通知root @ pam用户有关可用的新软件包的信息。在GUI上,可以查看每个软件包的更改日志(如果有),显示更新的所有详细信息。因此,您将永远不会错过重要的安全修复程序。
请注意,您需要有效的订阅密钥才能访问此存储库。我们提供不同的支持级别,您可以在https://www.proxmox.com/en/proxmox-ve/pricing中找到更多详细信息。
您可以通过使用#(在该行的开头)注释掉上面的行来禁用此存储库。如果您没有订阅密钥,这可以防止出现错误消息。在这种情况下,请配置 pve-no-subscription仓库。 |
3.1.2。Proxmox VE无订阅存储库
顾名思义,您不需要订阅密钥即可访问该存储库。它可以用于测试和非生产用途。不建议在生产服务器上运行,因为这些软件包并不总是经过严格的测试和验证。
我们建议在/etc/apt/sources.list中配置此存储库。
文件/etc/apt/sources.list
deb http://ftp.debian.org/debian buster主要贡献者
deb http://ftp.debian.org/debian buster-updates主要贡献者
#proxmox.com提供的PVE pve-no-subscription储存库,
#不建议用于生产
deb http://download.proxmox.com/debian/pve buster pve-no-subscription
#安全更新
deb http://security.debian.org buster / updates主要贡献
3.1.3。Proxmox VE测试资料库
最后,有一个名为pvetest的存储库。这个包含最新的软件包,开发人员大量使用它来测试新功能。像往常一样,您可以使用/etc/apt/sources.list通过添加以下行来配置它 :
pvetest的 sources.list条目
deb http://download.proxmox.com/debian/pve buster pvetest
在pvetest库应(顾名思义)只用于测试新功能或错误修复。 |
3.1.4。Proxmox VE Ceph存储库
这是Proxmox VE的主要Ceph存储库,其中包含供生产使用的Ceph软件包。您还可以使用此存储库仅更新Ceph客户端。
文件/etc/apt/sources.list.d/ceph.list
deb http://download.proxmox.com/debian/ceph-nautilus buster main
3.1.5。Proxmox VE Ceph测试库
此Ceph存储库包含Ceph软件包,然后再将它们移入主存储库,并用于在Proxmox VE上测试新的Ceph版本。
文件/etc/apt/sources.list.d/ceph.list
deb http://download.proxmox.com/debian/ceph-nautilus破坏测试
3.1.6。Proxmox VE Ceph发光存储库进行升级
这是Proxmox VE 6.0的Ceph Luminous版本的构建,可用于将首先部署的Ceph Luminous的Proxmox VE集群升级到基于Debian Buster的6.0版本,并且仅在其后自行升级Ceph。
文件/etc/apt/sources.list.d/ceph.list
deb http://download.proxmox.com/debian/ceph-luminous buster main
3.1.7。SecureApt
我们使用GnuPG对这些存储库中的Release文件进行签名,而APT使用该签名来验证所有软件包均来自受信任的来源。
如果从我们的安装CD安装,则用于验证的密钥已经安装。如果通过其他方式安装,则可以通过以下方式手动下载密钥:
#wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
请随后验证校验和:
#sha512sum /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
acca6f416917e8e11490a08a1e2842d500b3a5d9f322c6319db0927b2901c3eae23cfb5cd5df6facf2b57399d3cfa52ad7769ebdd75d9b204549ca147da52626 /etc/apt/trusted.gpg.d.proxmox-ve
要么
#md5sum /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
f3f6c5a3a67baf38ad178e5ff1ee270c /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
3.2。系统软件更新
我们在所有存储库上提供定期的软件包更新。您可以使用GUI安装这些更新,也可以直接运行CLI命令apt-get:
apt-get更新
apt dist升级
该公寓的包管理系统非常灵活,提供了无数的功能-见人易于得到或[Hertzog13]以获取更多信息。 |
您应该定期进行此类更新,或者在我们发布具有安全性相关修补程序的版本时进行更新。主要系统升级将在Proxmox VE社区论坛上宣布。这些公告还包含详细的升级说明。
我们建议您定期进行升级,因为获取最新的安全更新非常重要。 |
3.3。网络配置
可以通过GUI或通过手动编辑文件/ etc / network / interfaces来完成网络配置,该文件包含整个网络配置。所述 接口(5)手动页面包含完整的格式描述。所有Proxmox VE工具都尽力保持直接的用户修改,但是仍然首选使用GUI,因为它可以保护您避免错误。
一旦配置了网络,就可以使用Debian传统工具ifup 和ifdown命令来启动和关闭接口。
Proxmox VE不会直接将更改写入 / etc / network / interfaces。相反,我们写入名为/etc/network/interfaces.new的临时文件,并在重新启动节点时提交这些更改。 |
3.3.1。命名约定
当前,我们对设备名称使用以下命名约定:
因为设备名称暗示了设备类型,所以这使调试网络问题更加容易。
系统网络接口名称
Systemd 对以太网网络设备使用两个字符前缀en。接下来的字符取决于设备驱动程序和最先匹配的架构。
最常见的模式是:
有关更多信息,请参见可预测的网络接口名称。
3.3.2。选择网络配置
根据您当前的网络组织和资源,您可以选择桥接,路由或伪装网络设置。
专用LAN中的Proxmox VE服务器,使用外部网关访问Internet
该桥接模式使得在这种情况下,最有意义,这也是新的Proxmox的VE安装的默认模式。您的每个Guest系统都会有一个虚拟接口连接到Proxmox VE桥。这实际上类似于将来宾网卡直接连接到LAN上的新交换机,Proxmox VE主机扮演交换机的角色。
托管服务提供商处的Proxmox VE服务器,为来宾提供公共IP范围
对于此设置,您可以使用桥接模型或路由模型,具体取决于您的提供商允许的范围。
托管提供者处的Proxmox VE服务器,具有一个公共IP地址
在这种情况下,获得来宾系统的传出网络访问权的唯一方法是使用伪装。为了访问来宾网络,您需要配置端口转发。
为了获得更大的灵活性,您可以配置VLAN(IEEE 802.1q)和网络绑定,也称为“链路聚合”。这样就可以构建复杂而灵活的虚拟网络。
3.3.3。使用网桥的默认配置
网桥就像用软件实现的物理网络交换机。所有VM可以共享一个网桥,或者您可以创建多个网桥来分离网络域。每个主机最多可以有4094个网桥。
安装程序将创建一个名为vmbr0的网桥,该网桥连接到第一个以太网卡。/ etc / network / interfaces中的相应配置可能如下所示:
自动搜索
iface lo inet回送
iface eno1 inet手册
自动vmbr0
iface vmbr0 inet静态
地址192.168.10.2
网络掩码255.255.255.0
网关192.168.10.1
bridge_ports eno1
bridge_stp关闭
bridge_fd 0
虚拟机的行为就像它们直接连接到物理网络一样。即使只有一根网线将所有这些VM连接到网络,网络也会将每个虚拟机视为具有自己的MAC。
3.3.4。路由配置
大多数托管服务提供商不支持上述设置。出于安全原因,一旦在单个接口上检测到多个MAC地址,它们就会禁用网络。
某些提供程序允许您在其管理界面上注册其他MAC。这样可以避免问题,但是配置起来很麻烦,因为您需要为每个VM注册一个MAC。 |
您可以通过单个接口“路由”所有流量来避免此问题。这样可以确保所有网络数据包使用相同的MAC地址。
常见的情况是,您拥有一个公共IP( 对于本示例而言,假设为198.51.100.5),并且为您的VM提供了一个额外的IP块(203.0.113.16/29)。对于这种情况,我们建议以下设置:
自动搜索
iface lo inet回送
自动eno1
iface eno1 inet静态
地址198.51.100.5
网络掩码255.255.255.0
网关198.51.100.1
后回显1> / proc / sys / net / ipv4 / ip_forward
后回显1> / proc / sys / net / ipv4 / conf / eno1 / proxy_arp
自动vmbr0
iface vmbr0 inet静态
地址203.0.113.17
网络掩码255.255.255.248
bridge_ports无
bridge_stp关闭
bridge_fd 0
3.3.5。iptables伪装(NAT)
伪装允许仅具有私有IP地址的访客通过使用主机IP地址进行传出流量来访问网络。iptables重写了每个传出数据包,使其看起来像是源自主机,并且响应也相应地进行了重写,以路由到原始发送者。
自动搜索
iface lo inet回送
自动eno1
#真实IP地址
iface eno1 inet静态
地址198.51.100.5
网络掩码255.255.255.0
网关198.51.100.1
自动vmbr0
#专用子网
iface vmbr0 inet静态
地址10.10.10.1
网络掩码255.255.255.0
bridge_ports无
bridge_stp关闭
bridge_fd 0
后回显1> / proc / sys / net / ipv4 / ip_forward
后续iptables -t nat -A POSTROUTING -s '10 .10.10.0 / 24'-o eno1 -j MASQUERADE
下向下iptables -t nat -D POSTROUTING -s '10 .10.10.0 / 24'-o eno1 -j MASQUERADE
3.3.6。Linux Bond
绑定(也称为NIC组或链接聚合)是一种用于将多个NIC绑定到单个网络设备的技术。可以实现不同的目标,例如使网络具有容错性,提高性能或同时提高两者。
诸如光纤通道之类的高速硬件和相关的交换硬件可能非常昂贵。通过进行链路聚合,两个NIC可以显示为一个逻辑接口,从而提高了速度。这是大多数交换机支持的本机Linux内核功能。如果您的节点有多个以太网端口,则可以通过将网络电缆连接到不同的交换机来分配故障点,如果网络出现问题,绑定的连接将故障转移到一根电缆或另一根电缆。
聚合的链接可以改善实时迁移延迟,并提高Proxmox VE群集节点之间的数据复制速度。
绑定有7种模式:
如果您的交换机支持LACP(IEEE 802.3ad)协议,那么我们建议使用相应的绑定模式(802.3ad)。否则,通常应使用主动备份模式。
如果打算在绑定接口上运行群集网络,则必须在绑定接口上使用主动-被动模式,否则不支持其他模式。
以下绑定配置可以用作分布式/共享存储网络。好处是可以提高速度,并且网络可以容错。
示例:使用具有固定IP地址的绑定
自动搜索
iface lo inet回送
iface eno1 inet手册
iface eno2 inet手册
自动邦定0
iface bond0 inet静态
奴隶eno1 eno2
地址192.168.1.2
网络掩码255.255.255.0
bond_miimon 100
bond_mode 802.3ad
bond_xmit_hash_policy layer2 + 3
自动vmbr0
iface vmbr0 inet静态
地址10.10.10.2
网络掩码255.255.255.0
网关10.10.10.1
bridge_ports eno1
bridge_stp关闭
bridge_fd 0
另一种可能是直接使用绑定作为桥接端口。这可用于使来宾网络容错。
示例:使用绑定作为桥接端口
自动搜索
iface lo inet回送
iface eno1 inet手册
iface eno2 inet手册
自动邦定0
iface bond0 inet手册
奴隶eno1 eno2
bond_miimon 100
bond_mode 802.3ad
bond_xmit_hash_policy layer2 + 3
自动vmbr0
iface vmbr0 inet静态
地址10.10.10.2
网络掩码255.255.255.0
网关10.10.10.1
bridge_ports bond0
bridge_stp关闭
bridge_fd 0
3.3.7。VLAN 802.1Q
虚拟LAN(VLAN)是在第二层网络中被分区和隔离的广播域。因此,一个物理网络中可能有多个网络(4096),每个网络彼此独立。
每个VLAN网络都由一个通常称为tag的数字标识。然后标记网络程序包以标识它们属于哪个虚拟网络。
访客网络的VLAN
Proxmox VE开箱即用地支持此设置。创建虚拟机时,可以指定VLAN标签。VLAN标记是访客网络配置的一部分。根据网桥配置,网络层支持不同的模式来实现VLAN:
主机上的VLAN
允许主机与隔离的网络通信。可以将VLAN标记应用于任何网络设备(NIC,Bond,Bridge)。通常,应在接口上配置VLAN,使其与物理NIC之间的抽象层最少。
例如,在默认配置中,您要将主机管理地址放置在单独的VLAN上。
示例:将VLAN 5用于具有传统Linux网桥的Proxmox VE管理IP
自动搜索
iface lo inet回送
iface eno1 inet手册
iface eno1.5 inet手册
自动vmbr0v5
iface vmbr0v5 inet静态
地址10.10.10.2
网络掩码255.255.255.0
网关10.10.10.1
bridge_ports eno1.5
bridge_stp关闭
bridge_fd 0
自动vmbr0
iface vmbr0 inet手册
bridge_ports eno1
bridge_stp关闭
bridge_fd 0
示例:将VLAN 5用于具有VLAN感知Linux桥的Proxmox VE管理IP
自动搜索
iface lo inet回送
iface eno1 inet手册
自动vmbr0.5
iface vmbr0.5 inet静态
地址10.10.10.2
网络掩码255.255.255.0
网关10.10.10.1
自动vmbr0
iface vmbr0 inet手册
bridge_ports eno1
bridge_stp关闭
bridge_fd 0
bridge_vlan_aware是
下一个示例是相同的设置,但是使用了绑定来使该网络失效保护。
示例:将VLAN 5与bond0一起用于具有传统Linux网桥的Proxmox VE管理IP
自动搜索
iface lo inet回送
iface eno1 inet手册
iface eno2 inet手册
自动邦定0
iface bond0 inet手册
奴隶eno1 eno2
bond_miimon 100
bond_mode 802.3ad
bond_xmit_hash_policy layer2 + 3
iface bond0.5 inet手册
自动vmbr0v5
iface vmbr0v5 inet静态
地址10.10.10.2
网络掩码255.255.255.0
网关10.10.10.1
bridge_ports bond0.5
bridge_stp关闭
bridge_fd 0
自动vmbr0
iface vmbr0 inet手册
bridge_ports bond0
bridge_stp关闭
bridge_fd 0
3.4。时间同步
Proxmox VE群集堆栈本身严重依赖于所有节点都具有精确同步时间的事实。如果节点上的本地时间不同步,其他一些组件(例如Ceph)也将拒绝正常工作。
节点之间的时间同步可以使用“网络时间协议”(NTP)实现。Proxmox VE 默认情况下使用systemd-timesyncd作为NTP客户端,并已预先配置为使用一组公共服务器。在大多数情况下,此设置均可用。
3.4.1。使用自定义NTP服务器
在某些情况下,可能不希望使用默认的NTP服务器。例如,如果您的Proxmox VE节点无法访问公共互联网(例如,由于防火墙规则的限制),则需要设置本地NTP服务器,并告诉systemd-timesyncd使用它们:
文件/etc/systemd/timesyncd.conf
[时间]
NTP = ntp1.example.com ntp2.example.com ntp3.example.com ntp4.example.com
重新启动同步服务后(systemctl restart systemd-timesyncd),您应该通过检查日志来验证是否使用了新配置的NTP服务器(journalctl --since -1h -u systemd-timesyncd):
...
10月7日14:58:36 node1 systemd [1]:正在停止网络时间同步...
10月7日14:58:36 node1 systemd [1]:正在启动网络时间同步...
10月7日14:58:36 node1 systemd [1]:开始了网络时间同步。
10月7日14:58:36 node1 systemd-timesyncd [13514]:使用NTP服务器10.0.0.1:123(ntp1.example.com)。
10月7日14:58:36 nora systemd-timesyncd [13514]:间隔/增量/延迟/抖动/漂移64s / -0.002s / 0.020s / 0.000s / -31ppm
...
3.5。外部指标服务器
从Proxmox VE 4.0开始,您可以定义外部指标服务器,并将向其发送有关主机,虚拟机和存储的各种统计信息。
目前支持:
服务器定义保存在/etc/pve/status.cfg中
3.5.1。石墨服务器配置
服务器的定义是:
石墨:您的ID
服务器您的服务器
港口港
走你的路
您的端口默认为2003,而您的路径默认为proxmox
Proxmox VE通过UDP发送数据,因此必须为此配置石墨服务器。
3.5.2。Influxdb插件配置
定义是:
influxdb:您的ID
服务器您的服务器
港口港
Proxmox VE通过UDP发送数据,因此必须为此配置influxdb服务器。
这是influxdb的示例配置(在influxdb服务器上):
[[udp]]
启用=真
绑定地址=“ 0.0.0.0:8089”
数据库=“ proxmox”
批量大小= 1000
批处理超时=“ 1s”
使用此配置,您的服务器将侦听端口8089上的所有IP地址,并将数据写入proxmox数据库中
3.5.3。多个定义和示例
该id是可选的,但是如果您要具有一个类型的多个定义,则必须定义这些id,并且它们必须彼此不同。
这是一个完成状态的示例。
石墨:
服务器10.0.0.5
influxdb:influx1
服务器10.0.0.6
端口8089
influxdb:influx2
服务器10.0.0.7
端口8090
3.6。磁盘健康状况监控
尽管建议使用健壮和冗余的存储,但它对监视本地磁盘的运行状况很有帮助。
从Proxmox VE 4.3开始, 已安装并需要软件包smartmontools [ 1 ]。这是一组监视和控制本地硬盘的SMART系统的工具。
您可以通过发出以下命令来获取磁盘的状态:
#smartctl -a / dev / sdX
/ dev / sdX是您的本地磁盘之一的路径。
如果输出显示:
SMART支持为:已禁用
您可以使用以下命令启用它:
#在/ dev / sdX上的smartctl -s
有关如何使用smartctl的更多信息,请参见man smartctl。
默认情况下,smartmontools守护程序smartd是活动的并已启用,并且每30分钟扫描一次/ dev / sdX和/ dev / hdX下的磁盘以查找错误和警告,并在检测到问题时向root发送电子邮件。
有关如何配置smartd的更多信息,请参见man smartd和 man smartd.conf。
如果将硬盘与硬件RAID控制器一起使用,则最有可能的工具可以监视RAID阵列中的磁盘以及阵列本身。有关此的更多信息,请咨询您的RAID控制器的供应商。
3.7。逻辑卷管理器(LVM)
大多数人将Proxmox VE直接安装在本地磁盘上。Proxmox VE安装CD提供了多个用于本地磁盘管理的选项,并且当前的默认设置使用LVM。安装程序让你选择用于这种设置单个磁盘,并使用该磁盘作为物理卷V olume ģ roup(VG)PVE。以下输出来自使用8GB小磁盘的测试安装:
#pvs
PV VG Fmt Attr PSize PFree
/ dev / sda3 pve lvm2 a-- 7.87g 876.00m
#vgs
VG #PV #LV #SN Attr VSize VFree
pve 1 3 0 wz--n- 7.87g 876.00m
安装程序分配3 大号 ogical V这个VG内部olumes(LV):
#lvs
LV VG Attr LSize池原始数据%Meta%
数据pve twi-a-tz-- 4.38g 0.00 0.63
根pve -wi-ao ---- 1.75g
交换pve -wi-ao ---- 896.00m
根
格式为ext4,并且包含操作系统。
交换
交换分区
数据
该卷使用LVM精简版,并用于存储VM映像。LVM-thin对于此任务更可取,因为它为快照和克隆提供了有效的支持。
对于4.1之前的Proxmox VE版本,安装程序会创建一个称为“ data”的标准逻辑卷,该逻辑卷安装在/ var / lib / vz上。
从4.2版开始,逻辑卷“数据”是一个LVM精简池,用于存储基于块的来宾映像,/ var / lib / vz只是根文件系统上的目录。
3.7.1。硬件
强烈建议使用硬件RAID控制器(带有BBU)进行此类设置。这样可以提高性能,提供冗余并简化磁盘更换(可热插拔)。
LVM本身不需要任何特殊的硬件,并且内存需求非常低。
3.7.2。引导程序
我们默认安装两个引导加载程序。第一个分区包含标准的GRUB引导加载程序。所述第二分区是Ë FI 小号 ystem P artition(ESP),这使得它能够引导上EFI系统。
3.7.3。创建一个卷组
假设我们有一个空磁盘/ dev / sdb,要在其上创建一个名为“ vmdata”的卷组。
请注意,以下命令将破坏/ dev / sdb上的所有现有数据。 |
首先创建一个分区。
#sgdisk -N 1 / dev / sdb
创建一个P物质环境的V没有确认和250K metadatasize olume(PV)。
#pvcreate --metadatasize 250k -y -ff / dev / sdb1
在/ dev / sdb1上创建一个名为“ vmdata”的卷组
#vgcreate vmdata / dev / sdb1
3.7.4。为/ var / lib / vz创建一个额外的LV
通过创建新的精简LV可以轻松完成此操作。
#lvcreate -n <名称> -V <大小[M,G,T]>
一个真实的例子:
#lvcreate -n vz -V 10G pve /数据
现在必须在LV上创建一个文件系统。
#mkfs.ext4 / dev / pve / vz
最后必须安装它。
确保/ var / lib / vz为空。在默认安装中不是。 |
要使其始终可访问,请在/ etc / fstab中添加以下行。
#echo'/ dev / pve / vz / var / lib / vz ext4默认为0 2'>> / etc / fstab
3.7.5。调整精简池的大小
调整LV的大小,并可以使用以下命令来实现元数据池。
#lvresize --size + <大小[\ M,G,T]> --poolmetadatasize + <大小[\ M,G]>
扩展数据池时,还必须扩展元数据池。 |
3.7.6。创建一个LVM精简池
必须在卷组顶部创建精简池。如何创建卷组,请参见第LVM节。
#lvcreate -L 80G -T -n vmstore vmdata
3.8。Linux上的ZFS
ZFS是由Sun Microsystems设计的组合文件系统和逻辑卷管理器。从Proxmox VE 3.4开始,ZFS文件系统的本机Linux内核端口被引入为可选文件系统,并且作为根文件系统的附加选择。无需手动编译ZFS模块-包括所有软件包。
通过使用ZFS,可以利用低预算的硬件来实现最大的企业功能,而且还可以利用SSD缓存甚至仅SSD设置来获得高性能的系统。ZFS可以通过适度的CPU和内存负载以及易于管理的功能来替代成本高昂的硬件RAID卡。
ZFS的一般优势
3.8.1。硬件
ZFS在很大程度上取决于内存,因此您至少需要8GB才能启动。在实践中,尽可能多地获取硬件/预算。为了防止数据损坏,我们建议使用高质量的ECC RAM。
如果使用专用的缓存和/或日志磁盘,则应使用企业级SSD(例如Intel SSD DC S3700系列)。这可以显着提高整体性能。
不要在具有自己的缓存管理的硬件控制器之上使用ZFS。ZFS需要直接与磁盘通信。要使用HBA适配器,或者以“ IT”模式闪烁LSI控制器之类的东西。 |
如果您正在尝试在VM(嵌套虚拟化)中安装Proxmox VE,请不要对该VM的磁盘使用virtio,因为ZFS不支持它们。请改用IDE或SCSI(也适用于virtio SCSI控制器类型)。
3.8.2。作为根文件系统安装
使用Proxmox VE安装程序进行安装时,可以为根文件系统选择ZFS。您需要在安装时选择RAID类型:
RAID0 |
也称为“条纹”。该卷的容量是所有磁盘容量的总和。但是RAID0不会添加任何冗余,因此单个驱动器的故障使该卷不可用。 |
RAID1 |
也称为“镜像”。数据以相同的方式写入所有磁盘。此模式至少需要2个相同大小的磁盘。产生的容量是单个磁盘的容量。 |
RAID10 |
RAID0和RAID1的组合。需要至少4个磁盘。 |
RAIDZ-1 |
RAID-5的变体,单个奇偶校验。需要至少3个磁盘。 |
RAIDZ-2 |
RAID-5的一种变体,双重奇偶校验。需要至少4个磁盘。 |
RAIDZ-3 |
RAID-5的一种变体,三重奇偶校验。需要至少5个磁盘。 |
安装程序将自动对磁盘进行分区,创建一个名为rpool的ZFS池,并将根文件系统安装在ZFS子卷 rpool / ROOT / pve-1上。
创建了另一个称为rpool / data的子卷来存储VM映像。为了与Proxmox VE工具一起使用,安装程序会在/etc/pve/storage.cfg中创建以下配置条目:
zfspool:本地zfs
池池/数据
疏
内容映像,rootdir
安装之后,可以使用zpool命令查看ZFS池状态 :
#zpool状态
池:池
状态:在线
扫描:无要求
配置:
名称状态读写CKSUM
rpool在线0 0 0
镜像0在线0 0 0
sda2在线0 0 0
sdb2在线0 0 0
镜像1联机0 0 0
sdc在线0 0 0
sdd在线0 0 0
错误:无已知数据错误
在ZFS命令用于配置和管理您的ZFS文件系统。以下命令列出了安装后的所有文件系统:
#zfs清单
姓名使用的头像参考备注
色相4.94G 7.68T 96K /色相
rpool / ROOT 702M 7.68T 96K / rpool / ROOT
rpool / ROOT / pve-1 702M 7.68T 702M /
rpool /数据96K 7.68T 96K / rpool /数据
同步/交换4.25G 7.69T 64K-
3.8.3。引导程序
根据系统是以EFI还是旧版BIOS模式引导,Proxmox VE安装程序会将grub或systemd-boot设置为主引导程序。有关详细信息,请参见Proxmox VE主机引导程序一章。
3.8.4。ZFS管理
本节为您提供一些常见任务的用法示例。ZFS本身确实功能强大,并提供许多选项。管理ZFS的主要命令是zfs和zpool。这两个命令都带有出色的手册页,可通过以下方式阅读:
#男人zpool
#man zfs
创建一个新的zpool
要创建新池,至少需要一个磁盘。所述ashift应具有相同的扇区大小(2的幂的ashift)或作为底层磁盘大。
zpool创建-f -o ashift = 12 <池> <设备>
激活压缩
zfs set compression = lz4 <池>
使用RAID-0创建新池
最少1个磁盘
zpool创建-f -o ashift = 12
使用RAID-1创建一个新池
最少2个磁盘
zpool create -f -o ashift = 12 <池>镜像<设备1> <设备2>
使用RAID-10创建新池
最少4个磁盘
zpool create -f -o ashift = 12
使用RAIDZ-1创建一个新池
最少3个磁盘
zpool创建-f -o ashift = 12
使用RAIDZ-2创建新池
最少4个磁盘
zpool创建-f -o ashift = 12
创建具有缓存的新池(L2ARC)
可以使用专用的缓存驱动器分区来提高性能(使用SSD)。
作为<设备>,可以使用更多设备,如“使用RAID创建新池*”中所示。
zpool create -f -o ashift = 12 <池> <设备>缓存<缓存设备>
使用日志创建新池(ZIL)
可以使用专用的缓存驱动器分区来提高性能(SSD)。
作为<设备>,可以使用更多设备,如“使用RAID创建新池*”中所示。
zpool创建-f -o ashift = 12 <池> <设备>日志<日志设备>
添加缓存并登录到现有池
如果您有一个没有缓存和日志的池。首先将SSD分为parted或gdisk 2个分区
始终使用GPT分区表。 |
日志设备的最大大小应约为物理内存的一半,因此通常很小。其余的SSD可用作缓存。
zpool add -f
更换故障设备
zpool replace -f <池> <旧设备> <新设备>
使用systemd-boot时更改发生故障的可启动设备
sgdisk <运行状况良好的可启动设备> -R <新设备>
sgdisk -G <新设备>
zpool replace -f <池> <旧zfs分区> <新zfs分区>
pve-efiboot-tool格式<新磁盘的ESP>
pve-efiboot-tool init <新磁盘的ESP>
ESP代表EFI系统分区,从5.4版开始,它由Proxmox VE安装程序在启动磁盘上设置为分区#2。有关详细信息,请参阅 设置新分区以用作同步的ESP。 |
3.8.5。激活电子邮件通知
ZFS带有事件守护程序,该守护程序监视ZFS内核模块生成的事件。守护程序还可以发送有关ZFS事件(如池错误)的电子邮件。较新的ZFS软件包将守护程序放在单独的软件包中,您可以使用apt-get进行安装:
#apt-get install zfs-zed
要激活守护程序,必须使用您喜欢的编辑器编辑/etc/zfs/zed.d/zed.rc,并取消注释ZED_EMAIL_ADDR设置:
ZED_EMAIL_ADDR =“ root”
请注意,Proxmox VE将邮件转发到root用户,该电子邮件地址是为root用户配置的电子邮件地址。
唯一需要的设置是ZED_EMAIL_ADDR。所有其他设置都是可选的。 |
3.8.6。限制ZFS内存使用量
最好将最多50%的系统内存(这是默认设置)用于ZFS ARC,以防止主机性能下降。使用您喜欢的编辑器来更改/etc/modprobe.d/zfs.conf中的配置 并插入:
选项zfs zfs_arc_max = 8589934592
此示例设置将使用量限制为8GB。
如果您的根文件系统是ZFS,则每次此值更改时必须更新initramfs: 更新initramfs -u |
3.8.7。ZFS上的SWAP
在zvol上创建的交换空间可能会产生一些问题,例如阻塞服务器或生成高IO负载,这通常在启动备份到外部存储时经常出现。
强烈建议使用足够的内存,以便通常不会遇到内存不足的情况。如果您需要或想要添加交换,最好在物理磁盘上创建一个分区并将其用作交换设备。为此,您可以在安装程序的高级选项中留出一些空间。此外,您可以降低“ swappiness”值。服务器的高价值是10:
sysctl -w vm.swappiness = 10
要使交换保持持久性,请使用您选择的编辑器打开/etc/sysctl.conf并添加以下行:
vm.swappiness = 10
表1. Linux内核swappiness参数值 |
|
值 |
战略 |
vm.swappiness = 0 |
内核只会交换以避免内存不足的情况 |
vm.swappiness = 1 |
最小交换量而不完全禁用它。 |
vm.swappiness = 10 |
当系统中存在足够的内存时,有时建议使用此值以提高性能。 |
vm.swappiness = 60 |
默认值。 |
vm.swappiness = 100 |
内核将积极进行交换。 |
3.8.8。加密的ZFS数据集
Linux 0.8.0版上的ZFS引入了对数据集本机加密的支持。从Linux上的先前ZFS升级之后,可以为每个池启用加密功能:
#zpool获取feature @ encryption tank
名称财产价值来源
坦克功能@加密禁用本地
#zpool set feature @ encryption = enabled
#zpool获取feature @ encryption tank
名称财产价值来源
坦克功能@加密启用本地
当前不支持使用Grub从具有加密数据集的池中启动,只有有限的支持在启动时自动解锁加密的数据集。没有加密支持的旧版ZFS将无法解密存储的数据。 |
建议在引导后手动解锁存储数据集,或者编写一个自定义单元将引导时解锁所需的密钥材料传递给zfs load-key。 |
在启用生产数据加密之前,请建立并测试备份过程。如果丢失了相关的密钥材料/密码/密钥文件,将无法再访问加密的数据。 |
创建数据集/ zvol时需要设置加密,并且默认情况下继承到子数据集。例如,要创建加密的数据集 tank / encrypted_data并将其配置为Proxmox VE中的存储,请运行以下命令:
#zfs create -o加密= on -o keyformat =密码短语tank / encrypted_data
输入密码:
重新输入密码:
#pvesm添加zfspool encryption_zfs -pool tank / encrypted_data
在此存储上创建的所有来宾卷/磁盘都将使用父数据集的共享密钥材料进行加密。
要实际使用存储,需要使用zfs load-key加载关联的密钥材料:
#zfs加载密钥箱/ encrypted_data
输入“ tank / encrypted_data”的密码:
通过在创建时或在现有数据集上使用zfs change-key设置keylocation和keyformat属性,也可以使用(随机)密钥文件来提示输入密码:
#dd if = / dev / urandom of = / path / to / keyfile bs = 32 count = 1
#zfs change-key -o keyformat =原始-o keylocation = file:/// path / to / keyfile tank / encrypted_data
使用密钥文件时,需要格外小心,以保护密钥文件免遭未经授权的访问或意外丢失。没有密钥文件,就无法访问明文数据! |
在加密数据集下创建的来宾卷将相应地设置其 cryptoroot属性。密钥材料每个加密根仅需要加载一次,以供其下面的所有加密数据集使用。
有关更多详细信息和高级用法,请参见man zfs的encryptionroot,encryption,keylocation,keyformat和 keystatus属性,zfs load-key,zfs unload-key和zfs change-key命令以及“ 加密”部分。
3.9。证书管理
3.9.1。集群内通信证书
每个Proxmox VE集群都会创建自己的(自签名)证书颁发机构(CA),并为每个节点生成证书,该证书由上述CA进行签名。这些证书用于与群集的pveproxy服务和Shell / Console功能(如果使用SPICE)进行加密通信 。
CA证书和密钥存储在Proxmox群集文件系统(pmxcfs)中。
3.9.2。API和Web GUI的证书
REST API和Web GUI由pveproxy服务提供,该服务在每个节点上运行。
pveproxy使用的证书具有以下选项:
对于选项2和3,使用文件/etc/pve/local/pveproxy-ssl.pem(和 /etc/pve/local/pveproxy-ssl.key,无需密码)。
证书通过Proxmox VE节点管理命令进行管理(请参阅pvenode(1)联机帮助页)。
不要替换或手动修改/etc/pve/local/pve-ssl.pem和 /etc/pve/local/pve-ssl.key中的自动生成的节点证书文件或/ etc / pve / pve中的群集CA文件 -root-ca.pem和/etc/pve/priv/pve-root-ca.key。 |
通过ACME获取受信任的证书
Proxmox VE包含的实现一个 utomatic ç ertificate 中号 anagement Ë nvironment ACME协议,允许Proxmox VE管理员与咱们的加密接口被上最先进的操作系统和浏览器接受了开箱信任的TLS证书易于安装。
当前,实现的两个ACME端点是Let's Encrypt(LE)及其暂存环境(请参阅https://letsencrypt.org),它们都使用独立的HTTP挑战。
由于速率限制,您应将LE 分级用于实验。
使用“加密”需要满足一些先决条件:
目前,GUI仅使用默认的ACME帐户。
示例:使用“让我们加密”证书的示例pvenode调用
root @ proxmox:〜#pvenode acme帐户注册默认[email protected]
目录端点:
0)让我们加密V2(https://acme-v02.api.letsencrypt.org/directory)
1)让我们加密V2分段(https://acme-staging-v02.api.letsencrypt.org/directory)
2)自定义
输入选择:
1个
尝试从“ https://acme-staging-v02.api.letsencrypt.org/directory”中获取服务条款。
服务条款:https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
您是否同意上述条款?[y | N] y
尝试使用“ https://acme-staging-v02.api.letsencrypt.org/directory”注册帐户。
生成ACME帐户密钥。
正在注册ACME帐户。
注册成功,帐户URL:'https://acme-staging-v02.api.letsencrypt.org/acme/acct/xxxxxxx'
任务确定
root @ proxmox:〜#pvenode acme帐户列表
默认
root @ proxmox:〜#pvenode配置集--acme domains = example.invalid
root @ proxmox:〜#pvenode acme证书顺序
正在加载ACME帐户详细信息
下订单ACME
订单网址:https://acme-staging-v02.api.letsencrypt.org/acme/order/xxxxxxxxxxxxxxxxx
从中获取授权详细信息
'https://acme-staging-v02.api.letsencrypt.org/acme/authz/xxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxx'
...待定!
设置网络服务器
触发验证
睡觉5秒钟
状态为“有效”!
所有域均已验证!
建立企业社会责任
完成订单
查看订单状态
有效!
下载证书
设置pveproxy证书和密钥
重新启动pveproxy
任务确定
从登台切换到常规ACME目录
不支持更改帐户的ACME目录。如果要将帐户从暂存 ACME目录切换到常规的受信任帐户,则需要停用该帐户并重新创建。
更改GUI中使用的默认ACME帐户也需要此过程。
示例:将默认 ACME帐户从登台更改为常规目录
root @ proxmox:〜#pvenode acme帐户信息默认
目录URL:https://acme-staging-v02.api.letsencrypt.org/directory
帐户网址:https://acme-staging-v02.api.letsencrypt.org/acme/acct/6332194
服务条款:https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
帐户信息:
编号:xxxxxxx
联系:
-mailto:[email protected]
创建日期:2018-07-31T08:41:44.54196435Z
初始IP:192.0.2.1
状态:有效
root @ proxmox:〜#pvenode acme帐户默认停用
将帐户文件从“ / etc / pve / priv / acme / default”重命名为“ / etc / pve / priv / acme / _deactivated_default_4”
任务确定
root @ proxmox:〜#pvenode acme帐户注册默认示例@ proxmox.com
目录端点:
0)让我们加密V2(https://acme-v02.api.letsencrypt.org/directory)
1)让我们加密V2分段(https://acme-staging-v02.api.letsencrypt.org/directory)
2)自定义
输入选择:
0
尝试从“ https://acme-v02.api.letsencrypt.org/directory”获取服务条款。
服务条款:https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
您是否同意上述条款?[y | N] y
尝试向“ https://acme-v02.api.letsencrypt.org/directory”注册帐户。
生成ACME帐户密钥。
正在注册ACME帐户。
注册成功,帐户URL:'https://acme-v02.api.letsencrypt.org/acme/acct/39335247'
任务确定
自动更新ACME证书
如果已使用ACME提供的证书(通过pvenode或GUI)成功配置了节点,则pve-daily-update.service将自动续订该证书。目前,如果证书已过期或将在接下来的30天内过期,则将尝试续订。
3.10。主机引导程序
Proxmox VE当前根据安装程序中选择的磁盘设置使用两个引导程序之一。
对于以ZFS作为根文件系统安装的EFI系统,使用systemd-boot。所有其他部署都使用标准的grub引导加载程序(这通常也适用于安装在Debian之上的系统)。
3.10.1。安装程序使用的分区方案
Proxmox VE安装程序在选择进行安装的可引导磁盘上创建3个分区。可引导磁盘为:
创建的分区是:
BIOS模式下的grub(-- target i386-pc)安装在所有可引导磁盘的BIOS引导分区上,以支持较旧的系统。
3.10.2。rub
grub多年来一直是引导Linux系统的事实上的标准,并且有据可查 [ 2 ]。
内核和initrd映像取自/ boot,其配置文件 /boot/grub/grub.cfg由内核安装过程更新。
组态
通过默认文件/ etc / default / grub或/etc/default/grub.d中的配置片段,可以完成对grub配置的 更改。要在更改配置后重新生成/boot/grub/grub.cfg,请执行以下操作:
`update-grub`。
3.10.3。系统启动
systemd-boot是轻型EFI引导程序。它直接从安装它的EFI服务分区(ESP)读取内核和initrd映像。从ESP直接加载内核的主要优点在于,它无需重新实现用于访问存储的驱动程序。在ZFS作为根文件系统的上下文中,这意味着您可以在根池上使用所有可选功能,而不是grub的ZFS实现中也存在的子集,或者必须创建单独的小型启动池 [ 3 ]。
在具有冗余设置(RAID1,RAID10,RAIDZ *)中,所有可引导磁盘(属于第一个vdev的一部分)均由ESP分区。即使第一个引导设备发生故障,这也可以确保系统引导。ESP通过内核安装后挂钩脚本/etc/kernel/postinst.d/zz-pve-efiboot保持同步。该脚本将某些内核版本和initrd映像复制到 每个ESP根目录下的EFI / proxmox /中,并在loader / entries / proxmox-*。conf中创建适当的配置文件 。在PVE-efiboot工具在管理同步的ESP自己和他们的内容都脚本助攻。
默认配置以下内核版本:
与grub相比,ESP 在常规操作期间不会保持安装状态,而grub会将ESP保持安装在/ boot / efi上。这有助于防止在系统崩溃时文件系统损坏到vfat格式的ESP,并且避免了在主引导设备发生故障时手动修改/ etc / fstab的需要。
组态
通过EFI系统分区(ESP)根目录中的loader / loader.conf文件配置systemd-boot。有关详细信息,请参见loader.conf(5)联机帮助页。
每个引导程序条目都放置在目录loader / entries /目录中的文件中
一个示例entry.conf看起来像这样(/表示ESP的根):
标题Proxmox
版本5.0.15-1-pve
选项root = ZFS = rpool / ROOT / pve-1 boot = zfs
linux /EFI/proxmox/5.0.15-1-pve/vmlinuz-5.0.15-1-pve
initrd /EFI/proxmox/5.0.15-1-pve/initrd.img-5.0.15-1-pve
手动保持内核可引导
如果您希望将某些内核和initrd映像添加到可启动内核列表中,请使用pve-efiboot-tool kernel add。
例如,运行以下命令,将ABI版本5.0.15-1-pve 的内核添加到要保持安装并同步到所有ESP的内核列表中:
pve-efiboot-tool内核添加5.0.15-1-pve
pve-efiboot-tool内核列表将列出当前选择用于引导的所有内核版本:
#pve-efiboot-tool内核列表
手动选择的内核:
5.0.15-1-pve
自动选择的内核:
5.0.12-1-pve
4.15.18-18-pve
运行pve-efiboot-tool remove从手动选择的内核列表中删除内核,例如:
pve-efiboot-tool内核删除5.0.15-1-pve
在手动添加或从上面删除内核后,需要运行pve-efiboot-tool refresh更新所有EFI系统分区(ESP)。 |
设置新分区以用作同步的ESP
到格式并作为ESP同步,例如,在rpool中更换发生故障的VDEV,或转换现有系统,该系统的预日期同步机构中,当经过初始化分区PVE-efiboot工具从PVE-内核助手可以使用。
的格式命令将格式化<分区>中,确保在正确的设备/分区通过! |
例如,要将空分区/ dev / sda2格式化为ESP,请运行以下命令:
pve-efiboot-tool格式/ dev / sda2
要设置位于/ dev / sda2上的现有未安装ESP 以便包含在Proxmox VE的内核更新同步机制中,请使用以下命令:
pve-efiboot-tool初始化/ dev / sda2
之后,/ etc / kernel / pve-efiboot-uuids应该包含一个新行,其中包含新添加分区的UUID。该初始化命令也将自动触发所有配置的ESP的刷新。
在所有ESP上更新配置
要复制和配置所有可启动内核,并使/ etc / kernel / pve-efiboot-uuids中列出的所有ESP保持 同步,您只需运行:
pve-efiboot-工具刷新
(等效于在使用grub引导的系统上运行update- grub)。
如果您要更改内核命令行,或者要在重新生成内核之后初始化所有内核和initrd,则必须这样做。
3.10.4。编辑内核命令行
您可以在以下位置修改内核命令行,具体取决于所使用的引导程序:
rub
内核命令行需要放置在文件/ etc / default / grub中的变量 GRUB_CMDLINE_LINUX_DEFAULT中。运行 update-grub将其内容附加到/boot/grub/grub.cfg中的所有linux条目中 。
系统启动
内核命令行需要作为行放置在/ etc / kernel / cmdline中 运行/etc/kernel/postinst.d/zz-pve-efiboot将其设置为loader / entries / proxmox-*。conf中所有配置文件的选项行。