PVE
Proxmox VE是一个运行虚拟机(KVM)和容器(LXC)的平台。基于 Debian Linux,完全开源,具有强大灵活性。免费。
安装PVE
下载地址:Index of /iso/
安装完成,通过浏览器8006端口访问。
开始使用:↓↓
查看硬件配置
浏览器
neofetch 命令
修改.bashrc
默认的终端太素了,可以把 ubuntu 主机的 .bashrc
拿过来用。
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# 如果不是交互式运行,不执行任何操作
case $- in
*i*) ;;
*) return;;
esac
# 不要在历史记录中放入重复的行或以空格开头的行。
# 参见bash(1)获取更多选项
HISTCONTROL=ignoreboth
# 追加到历史文件,不要覆盖它
shopt -s histappend
# 设置历史长度,请参阅bash(1)中的HISTSIZE和HISTFILESIZE
HISTSIZE=1000
HISTFILESIZE=2000
# 在每个命令后检查窗口大小,并在必要时,更新LINES和COLUMNS的值。
shopt -s checkwinsize
# 让less对非文本输入文件更友好,请参阅lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# 设置变量,标识你工作的chroot环境(在下面的提示符中使用)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# 设置一个花哨的提示符
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# 如果这是一个xterm,将标题设置为user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# 启用ls的颜色支持,并添加一些便捷的别名
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# 一些更多的ls别名
alias ll='ls -lFh'
alias la='ls -AlFh'
alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
# 自定义别名
alias qc='bash /usr/local/query_command.sh'
alias free='free -h'
alias iostat='iostat -h'
定义脚本
#!bash
curl cheat.sh/$1
修改后的终端,支持颜色,能够使用自定义命令 qc
查询不同命令的用法。
修改软件源
默认源太慢了,修改国内源。
#(任选一个源)
#1.1.1 清华源
# 参考: https://mirrors.tuna.tsinghua.edu.cn/help/debian/
sed -i.bak "s#ftp.debian.org/debian#mirrors.tuna.tsinghua.edu.cn/debian#g" /etc/apt/sources.list
sed -i "s#security.debian.org#mirrors.tuna.tsinghua.edu.cn/debian-security#g" /etc/apt/sources.list
#apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing
#1.1.2 中科大源
# 参考: https://mirrors.ustc.edu.cn/help/proxmox.html
sed -i.bak 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
#apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing
#1.1.3 aliyun源
sed -i.bak "s#ftp.debian.org/debian#mirrors.aliyun.com/debian#g" /etc/apt/sources.list #修改文件的同时, 会创建一个.bak后缀的备份文件
sed -i "s#security.debian.org#mirrors.aliyun.com/debian-security#g" /etc/apt/sources.list #阿里Debian源
#apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing
#1.1.4 163源
sed -i.bak "s#ftp.debian.org/debian#mirrors.163.com/debian#g" /etc/apt/sources.list #163Debian源
sed -i "s#security.debian.org#mirrors.163.com/debian-security#g" /etc/apt/sources.list #163Debian源
#apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing
# 2. PVE 软件源
# 删除默认企业源
rm -rf /etc/apt/sources.list.d/pve-enterprise.list
#(任选一个源)
# 2.1.1 清华源
echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
# 2.1.2 中科大源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
#3 CEPH分布式源
#3.1.1 中科大源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list #中科大源
sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm #中科大源
# --------------------------------------------------------
# 更新索引, 升级安装软件包, 重启系统
# --------------------------------------------------------
# 如果无法拉取https软件源时安装
apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing
apt update && apt dist-upgrade
#4.LXC容器仓库源(CT)
# 4.1.1 中科大源
sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.ustc.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm
systemctl restart pvedaemon # 稍等下手动刷新webui 页面
# 删除订阅弹窗
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service
# 执行完成后,需注销PVE登录后, 重新启动浏览器
参考:
升级PVE版本
apt update
apt dist-upgrade
或者
apt update
apt upgrade
了解 PVE
PVE 架构
PVE命令行工具
PVE提供了两种管理方式,一是对用户友好的 Web 界面:
二是更加灵活强大的命令行工具:
序号 | 命令 | 用途 |
---|---|---|
1 | qm | 虚拟机管理器。管理虚拟机的生命周期,包括创建、克隆、修改、启动、停止和迁移虚拟机等操作。 |
2 | pvesm | 存储管理器。用于管理存储,包括扫描、添加、删除、设置存储,以及分配和释放存储卷等。 |
3 | pveum | 用户管理器。用于管理用户、用户组、权限和认证域。通过这个工具可以创建和修改用户账户,以及分配权限。 |
4 | ha-manager | 高可用管理器。用于配置和管理虚拟机的高可用性。它允许设置虚拟机的故障切换和故障恢复选项 。 |
5 | pct | 容器工具箱(PVE Container Toolkit)。用于管理LXC容器。它提供了创建、配置、启动和停止容器的功能。 |
6 | pvecm | 集群管理器(pvecm)用于管理Proxmox集群的配置和状态。它允许您加入或离开集群,以及查看集群信息。 |
7 | pveceph | Proxmox VE Ceph管理器。用于管理Ceph存储集群。它提供了创建和配置Ceph存储的命令。 |
8 | pve-firewall | 防火墙管理器(pve-firewall)用于配置和管理虚拟机的网络防火墙。它允许您设置入站和出站规则,以及管理防火墙的宏。 |
PVE 系统服务
Proxmox Virtual Environment (PVE) 的系统服务是 PVE 正常运行的关键组成部分。以下是 PVE 中一些主要系统服务的介绍:
- pveproxy: PVE 的代理服务,负责处理通过 Proxmox VE Web 界面进行的所有管理任务。它是一个安全的 HTTPS 前端,用于提供 Web 界面和 API 服务。用户通过 Web 界面或 API 发出的请求首先由 pveproxy 处理,然后转发到后端的 pvedaemon 服务。
- pvedaemon: PVE 的核心守护进程,负责处理所有通过 pveproxy 转发的 API 请求。它执行实际的虚拟机管理任务,如创建、修改、启动和停止虚拟机等。pvedaemon 还负责处理用户认证和授权。
- pvestatd: PVE 的统计守护进程,负责收集和提供系统资源使用统计信息,如 CPU、内存、磁盘和网络使用情况。这些统计数据可以在 Proxmox VE 的 Web 界面中查看,帮助管理员监控系统性能和资源消耗。
- pve-ha-lrm: PVE 的高可用性本地资源管理器(Local Resource Manager)。这个服务是 PVE 集群中高可用性的关键组件,负责监控和管理虚拟机和其他资源的状态,以确保高可用性。它根据配置的策略在节点之间进行故障切换和故障恢复操作。
- pve-cluster: PVE 的集群服务,负责维护集群的通信和状态信息。它确保集群中的所有节点都能够相互通信,并且保持数据一致性。pve-cluster 使用 Corosync 和 Pacemaker 来提供集群管理和高可用性功能。
这些服务共同工作,确保 Proxmox VE 集群稳定、可靠地运行,并且提供高效的管理接口和资源监控。在维护和操作 Proxmox VE 集群时,了解这些服务的作用和相互关系是非常重要的。
QEMU虚拟化
QEMU是一个著名的硬件虚拟化解决方案,它可以通过仿真或者硬件虚拟化提供虚拟机监控器(VMM)的功能。Proxmox VE(PVE)使用QEMU作为其底层虚拟化技术之一(另一个是LXC容器),以支持全虚拟化的虚拟机(VMs)。 以下是PVE使用QEMU的一些关键点:
- 全虚拟化:QEMU可以模拟整个硬件环境,允许在没有硬件虚拟化支持的CPU上运行不同的操作系统和架构。这意味着可以在x86_64的主机上运行ARM、MIPS或其他架构的操作系统。
- 硬件加速:当主机CPU支持硬件虚拟化扩展(如Intel VT-x或AMD-V)时,QEMU可以利用这些技术来提高虚拟机的性能。通过硬件加速,虚拟机的CPU指令可以直接在物理CPU上执行,减少了仿真层带来的性能开销。
- KVM集成:PVE中的QEMU与Linux内核的KVM(Kernel-based Virtual Machine)模块紧密集成。KVM提供了一种在Linux内核中运行的虚拟化基础设 施,当与QEMU结合使用时,可以提供高性能的虚拟化解决方案。
- 网络和存储:QEMU支持多种网络和存储选项,使得虚拟机可以连接到物理网络,或者使用虚拟网络,如bridged、NAT、host-only等。存储方面,QEMU支持多种磁盘映像格式,如qcow2、raw、vmdk等,并且可以访问本地存储、网络存储(如NFS、iSCSI)和分布式存储(如Ceph)。
- 图形和显示:QEMU支持多种显示选项,包括VNC、SPICE、SDL等,允许用户通过图形界面访问虚拟机。
- 设备模拟:QEMU可以模拟多种硬件设备,如网络适配器、声卡、USB控制器等,使得虚拟机能够使用这些设备。
- 虚拟化安全:PVE通过QEMU提供了一系列安全特性,如虚拟机隔离、网络隔离、安全启动等,以确保虚拟化环境的安全性。
在PVE中,QEMU通常通过qm命令行工具或Web界面进行管理。qm命令提供了创建、配置、启动和监控虚拟机所需的所有功能。通过这些工具,管理员可以轻松地管理虚拟机的整个生命周期,并且可以利用QEMU的高级功能来满足不同的虚拟化需求。
LXC 虚拟化
LXC(Linux Containers)是一种操作系统级别的虚拟化技术,它允许在一个单一的内核上运行多个隔离的Linux操作系统环境。LXC不是模拟硬件,而是利用内核的命名空间(namespaces)和控制组(cgroups)来隔离进程和资源,从而实现轻量级的虚拟化。 以下是LXC虚拟化的一些关键特点:
- 操作系统级隔离:LXC允许你在同一个内核上运行多个隔离的Linux系统。每个容器都有自己的文件系统、进程空间、网络接口和IP地址,看起来就像是运行在自己的独立系统上一样 。
- 轻量级:由于LXC不需要模拟硬件和运行额外的内核,因此它的开销非常低。容器启动快,资源占用少,适合需要快速部署和大规模扩展的应用场景。
- 性能:LXC提供了接近物理硬件的性能,因为容器直接运行在主机的内核上,没有传统虚拟化解决方案中的性能损耗。
- 资源管理:LXC使用cgroups来限制和分配资源,如CPU、内存、磁盘I/O等。这使得容器可以根据需要分配和限制资源,提高了资源利用率和系统性能。
- 灵活性:LXC容器可以运行几乎所有的Linux发行版,支持多种存储后端和网络配置,可以根据需求进行定制。
- 工具和生态系统:LXC有一个成熟的工具集和生态系统,包括LXD(LXC的下一代工具和守护进程)和其他管理工具,使得容器的管理和操作变得简单。
- 安全:LXC利用内核的命名空间来隔离容器,提供了不同级别的隔离,包括进程、网络、挂载点等。虽然容器共享同一个内核,但它们之间的隔离可以防止一个容器访问或影响另一个容器的数据和进程。
Proxmox VE集成了LXC,允许用户通过其Web界面或命令行工具(如pct)来管理LXC容器。这使得Proxmox VE成为一个强大的平台,可以同时提供全虚拟化的虚拟机和轻量级的LXC容器,满足不同类型的工作负载需求。
KVM虚拟化
KVM(Kernel-based Virtual Machine)是一个内置于Linux内核的虚拟化基础设施,它将Linux内核转化为一个超级虚拟机监控器(VMM)。KVM允许用户利用Linux内核的功能来运行多个隔离的虚拟环境,每个环境都有自己的虚拟硬件,如CPU、内存、网络设备等。 以下是KVM虚拟化的一些关键特点:
- 硬件虚拟化支持:KVM需要CPU和其他硬件的支持,特别是Intel VT-x或AMD-V等硬件虚拟化扩展。这些扩展允许KVM创建的虚拟机直接在物理硬件上运行,从而提高了性能。
- 全虚拟化与半虚拟化:KVM支持两种虚拟化模式。在全虚拟化模式下,KVM可以运行未经修改的操作系统,但可能会有一些性能开销。在半虚拟化模式下,通过使用特定的驱动程序和虚拟化感知的操作系统,可以减少性能开销,提高性能。
- 高性能:由于KVM是内置于Linux内核的,它能够提供接近物理硬件的性能。在全虚拟化模式下,性能开销很小,而在半虚拟化模式下,性能可以与物理硬件相当。
- 安全性:KVM利用内核的命名空间和控制组(cgroups)来隔离虚拟机,提供了不同级别的隔离,包括进程、网络、挂载点等。这确保了虚拟机之间的安全性和数据保护。
- 灵活性:KVM支持多种操作系统和硬件架构,可以运行Windows、Linux、Unix等操作系统。它还支持多种存储和网络选项,如本地存储、网络存储(如NFS、iSCSI)和分布式存储(如Ceph)。
- 集成和管理:KVM与Linux生态系统紧密集成,可以使用标准的Linux工具和应用程序来管理虚拟机。此外,还有许多管理和自动化工具,如Libvirt、Virt-Manager和Proxmox VE,可以简化KVM虚拟机的部署和管理。
- 社区和生态系统:KVM有一个活跃的社区和丰富的生态系统,提供了大量的文档、工具和资源,使得KVM的使用和维护变得更加容易。
Proxmox VE利用KVM作为其全虚拟化解决方案的一部分,允许用户通过其Web界面或命令行工具(如qm)来管理KVM虚拟机。这使得Proxmox VE成为一个功能强大的虚拟化平台,可以满足不同类型的工作负载需求,同时提供高性能和灵活性。
Cgroups特性
Cgroups(Control Groups)是Linux内核的一个特性,它允许您将进程组织成层级化的组,并限制和隔离它们使用的资源,如CPU、内存、磁盘I/O和网络带宽等。Cgroups是Linux容器(如Docker和LXC)和系统级虚拟化(如KVM)等技术的关键组件。 以下是Cgroups的一些关键特点:
- 资源限制:Cgroups允许您为进程组设置资源限制。例如,您可以限制一个组的内存使用量,或者分配给它的CPU时间。
- 资源分配:除了限制资源使用外,Cgroups还可以确保进程组获得一定的资源。这对于保证重要进程的运行性能非常有用。
- 优先级:Cgroups可以设置进程的优先级,影响它们在资源分配中的权重。例如,您可以设置某些进程组的CPU使用优先级高于其他组。
- 隔离:Cgroups提供了一种隔离进程的方式,使得一个进程组的活动不会影响到其他组。这有助于提高系统的稳定性和安全性。
- 层次结构:Cgroups以层次结构的形式组织进程。您可以在现有的cgroup中创建子cgroup,从而创建一个树状结构,每个节点都可以有自己的资源限制和配置。
- 性能监控和统计:Cgroups提供了监控和统计功能,可以跟踪进程组的资源使用情况,这对于性能分析和优化非常有用。
- 系统级虚拟化支持:Cgroups是系统级虚拟化技术(如KVM)的关键组成部分,它允许虚拟机监控器(VMM)为虚拟机设置资源限制。
- 容器化技术支持:Cgroups是容器化技术(如Docker和LXC)的基础,它允许容器运行时为容器设置资源隔离和限制。 Cgroups通过一系列子系统实现资源管理,每个子系统负责一种资源类型的管理。例如,cpu子系统负 责CPU时间分配,memory子系统负责内存使用限制,blkio子系统负责磁盘I/O控制等。
Cgroups是Linux内核的一个强大特性,它为系统管理员和开发者提供了一种灵活和有效的资源管理方式,有助于提高系统的性能、稳定性和安全性。