PVE初始化及硬盘部分操作
一、PVETooles
中国用户:
方式一:命令行安装
需要用root账号来运行
在终端中按行分别执行以下内容:
强烈建议先删除企业源:
rm /etc/apt/sources.list.d/pve-enterprise.list
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
方式二:下载zip安装
- 建议使用方式一来安装,不建议直接下载单sh脚本使用,因为那样更新的功能会无法使用!
- 如果网络无法使用,或命令行使用有困难,可以使用方式二下载zip包拷入系统中使用。
运行
在shell中进入pvetools目录,输入 ./pvetools.sh
- 如果提示没有权限,输入
chmod +x ./*.sh
二、pve_source
方式一:命令行安装
稳定版
wget -q -O /root/pve_source.tar.gz 'https://bbs.x86pi.cn/file/topic/2023-11-28/file/01ac88d7d2b840cb88c15cb5e19d4305b2.gz' && tar zxvf /root/pve_source.tar.gz && /root/./pve_source
开发版 (PVE 系统配置 IOMMU、核显直通、核显 SR-IOV 调整为定制向导+推荐方案)
wget -q -O /root/pve_source.tar.gz 'https://bbs.x86pi.cn/file/topic/2024-01-06/file/24f723efc6ab4913b1f99c97a1d1a472b2.gz' && tar zxvf /root/pve_source.tar.gz && /root/./pve_source
方式二:下载压缩包安装
使用方法:
①下载后改名为 pve_source.tar.gz
②上传到 /root
③解压压缩包 tar zxvf pve_source.tar.gz
④执行程序./pve_source
三、手动更换PVE源
更换源前将原配置文件备份
cp /etc/*/*.* /etc/*/*.*_bak
Debian源(清华大学源)
大部分 Debian 的软件源配置文件使用传统的 One-Line-Style,路径为 /etc/apt/sources.list
;但是对于容器镜像,从 Debian 12 开始,其软件源配置文件变更为 DEB822 格式,路径为 /etc/apt/sources.list.d/debian.sources
。一般情况下,将对应文件中 Debian 默认的源地址 http://deb.debian.org/
替换为镜像地址即可。
Debian Buster 以上版本默认支持 HTTPS 源。如果遇到无法拉取 HTTPS 源的情况,请先使用 HTTP 源并安装:
apt install apt-transport-https ca-certificates
- 传统格式(
/etc/apt/sources.list
)
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
# deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
- DEB822 格式(
/etc/apt/sources.list.d/debian.sources
)
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: bookworm bookworm-updates bookworm-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
# Types: deb-src
# URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
# Suites: bookworm bookworm-updates bookworm-backports
# Components: main contrib non-free non-free-firmware
# Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
Types: deb
URIs: https://security.debian.org/debian-security
Suites: bookworm-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# Types: deb-src
# URIs: https://security.debian.org/debian-security
# Suites: bookworm-security
# Components: main contrib non-free non-free-firmware
# Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
- 备用源
- 阿里云源
deb http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb http://mirrors.aliyun.com/debian-security buster/updates main
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security buster/updates main
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
-
- 中科大源
# 默认注释了源码仓库,如有需要可自行取消注释
deb http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
# deb-src http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
deb http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware
# deb-src http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware
PVE软件源(清华大学源)
- 删除或屏蔽默认软件源
rm -rf /etc/apt/sources.list.d/pve-enterprise.list
# 删除企业源
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
#屏蔽企业源
- 新建
/etc/apt/sources.list.d/pve-no-subscription.list
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
- 备用源:中科大源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
CT容器源(清华大学源)
如果你需要加速 Proxmox 网页端下载 CT Templates,可以替换 CT Templates 的源。
具体方法:将 /usr/share/perl5/PVE/APLInfo.pm
文件中默认的源地址 http://download.proxmox.com
替换为
https://mirrors.tuna.tsinghua.edu.cn/proxmox
或直接用命令
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
中科大源
sed -i.bak 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
更新CEPH分布式源(修复源401错误)
nano /etc/apt/sources.list.d/ceph.list
#注释原语句,增加
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription
#或直接用命令
if [ -f /etc/apt/sources.list.d/ceph.list ]; then
CEPH_CODENAME=`ceph -v | grep ceph | awk '{print $(NF-1)}'`
source /etc/os-release
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME $VERSION_CODENAME no-subscription" > /etc/apt/sources.list.d/ceph.list
fi
更新索引并升级安装软件包
apt update
sudo apt-get update 或
apt dist-upgrade 升级软件包
删除无效订阅弹窗
- 备份源文件
cd /usr/share/javascript/proxmox-widget-toolkit
#备份原文件,一定要记得备份哈!要不就惨了
cp proxmoxlib.js proxmoxlib.js.bak
- 修改proxmoxlib.js文件
#可以用nano、vim、vi,总之随便一种文本编辑器就行
vi proxmoxlib.js
- 查找包含orig_cmd的这句话
#找到如下现实的这行
checked_command: function(orig_cmd) {
- 在后面加上orig_cmd();和return;即可,如下
checked_command: function(orig_cmd) {
orig_cmd(); #<-----这里是第一个加的地方
return; #<-----这里是第二个加的地方,后面的不要动
Proxmox.Utils.API2Request(
{
url: '/nodes/localhost/subscription',
method: 'GET',
failure: function(response, opts) {
重启服务等
重启PVE代理服务,注销PVE,重启浏览器
systemctl restart pveproxy.service
四、pve的loval和local-lvm
PVE的默认安装磁盘分区结构
fdisk -l
Disk /dev/sdd: 111.79 GiB, 120034123776 bytes, 234441648 sectors
Disk model: ADATA SP550 120G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B398B161-5590-4C7F-9BEA-526CA1CE1BD9
Device Start End Sectors Size Type
/dev/sdd1 34 2047 2014 1007K BIOS boot #
/dev/sdd2 2048 2099199 2097152 1G EFI System #
/dev/sdd3 2099200 234441614 232342415 110.8G Linux LVM #
lsblk
lvs
cat /etc/pve/storage.cfg
删除lvm-thin
- 编辑local,勾选内容里所有项目,并确认
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
#删除分区
root@pve:~# lvextend -rl +100%FREE /dev/pve/root
#转移空间到pve-root
- 在web端,数据 中心存储里删除local-lvm,在终端里检查一下
root@pve:~# tree /var/lib/vz/
六、pve硬盘类操作和虚拟机磁盘类操作
挂载已有数据硬盘
web端只能添加新盘,pve支持brtfs-ext-xfs-ntfs-EXFAT-FAT等文件系统,可以手动挂载。以NTFS为例。
#查看连接到pve上的NTFS硬盘
root@pve:~# lsblk -f /dev/sdb
#安装NTFS识别
root@pve:~# apt install ntfs-3
#创建挂载点
root@pve:~# mkdir /mnt/pve/hdd
#修复磁盘(有错误提示时)
root@pve:~# ntfsfix /dev/sdb2
#挂载磁盘
mount /dev/sdb2 /mnt/pve/hdd
之后在web端添加目录存储。选择/mnt/pve/hdd。pve重启后需重新挂载。需开机挂载,需需将硬盘PARTUUID写进fstab.
root@pve:~# blkid /dev/sdb2
#编辑/etc/fstab,通过查看硬盘的PARTUUID将对应的条目添加到fstab
PARTUUID=96568858-ed5c-4705-8ab9-e6833ff64232 /mnt/hdd_softwares ntfs-3g nofail,x-systemd.device-timeout=15s
PARTUUID=b31e969a-e11a-4d9d-adb7-409c59627442 /mnt/hdd_fnos ntfs-3g nofail,x-systemd.device-timeout=15s
PARTUUID=d44906a9-4e31-4346-a492-b0c2bb020ecf /mnt/hdd_photosvideos ntfs-3g nofail,x-systemd.device-timeout=15s
PARTUUID=e2cab0a2-90f3-4d2c-b4f6-ae4a9f83fba0 /mnt/hdd_self_photos ntfs-3g nofail,x-systemd.device-timeout=15s
PARTUUID=6f0c6749-435c-4b96-adcc-832fab0bd319 /mnt/hdd_self_videos ntfs-3g nofail,x-systemd.device-timeout=15s
#重启服务或重启主机
systemctl daemon-reload
PARTUUID:96568858-ed5c-4705-8ab9-e6833ff64232
/mnt/hdd_photos 挂载位置
ntfs-3g 硬盘分区格式
nofail,x-systemd.device-timeout=15s 设置超时时间15秒,防止挂在失败启动不了系统—重新加载fstab
systemd自动挂载硬盘或分区
Systemd是一个强大的Linux管理工具,可以用来进行硬盘分区,或者也称作文件系统的挂载。相较于使用fstab文件来进行管理,采用systemd不会发生因为配置错误而无法开机的问题,所以比较适合折腾。
假设我们新增加了1个硬盘sda,并且将它划分了3个分区, sda1、sda2、sda3,则需要为这3个分区选择挂载点,以便开机后可以直接使用。 我们建立了3个文件夹 /home/disk1、 /home/disk2 、/home/disk3,分别对应上述的3个硬盘分区
要想使用systemd实现自动挂载,必须要建立对应的“.mount”文件,放置在/etc/systemd/system/这个文件夹下面就可以,文件的命名方式,是将要挂载到的目的文件夹的绝对路径中的斜杠给成横线, 例如 /home/disk1 则对应的.mount文件
就是:home-disk1.mount,可以有更多层的目录,如xxx-xxx-xxx.mount
以/dev/sda1 开机挂载到 /home/disk1为例
vi /etc/systemd/system/home-disk1.mount
[Unit]
Description=mount a local disk
[Mount]
What=/dev/sda1
Where=/home/disk1
Type=ext4
Options=defaults
[Install]
WantedBy=local-fs.target
或
[Unit]
Description=mount a local disk
[Mount]
What=UUID=daf79ec6-d3a9-4aec-b46d-95f1edc5a275
Where=/home/disk1
Type=ext4
Options=defaults
[Install]
WantedBy=local-fs.target
#设置开机自启
systemctl enable home-disk1.mount
#重启守护进程
systemctl daemon-reload
What:要挂载的设备,可以使用UUID或设备路径。
Where:挂载点目录。
Type:文件系统类型,根据实际情况设置(如ext4、ntfs等)。
Options:挂载选项,defaults通常足够,但可以根据需要添加其他选项。
查看uuid
lsblk -f
qm importdisk 及 qm 命令
qm importdisk 是用来将创建好的镜像文件导入到虚拟机中,并可指定磁盘格式。
qm importdisk <vmid> <images-name> <storage pool> --format=<disk-fs>
vmid:vm的id 例如102
images-name:磁盘镜像的名字
storage pool: 存储磁盘镜像的位置,如lvm-thin local
disk-fs: 磁盘镜像格式 raw/vmdk/qcow2
qm
是 Proxmox Virtual Environment (PVE) 中用于管理虚拟机的命令行工具
#启动虚拟机
qm start VMID
#停止虚拟机
qm stop VMID
#重启虚拟机
qm reset VMID
#查看虚拟机状态
qm status VMID
#列出虚拟机
qm list
#从PVE终端进入虚拟机终端
qm terminal VMID
退出虚拟机终端用 ctrl+o
#重启虚拟机
qm reboot VMID
#查看虚拟机配置信息
qm config VMID
#克隆虚拟机
qm clone <vmid> <newid> --name <name>
qm clone 111 112 --name newvm 例子
qemu命令
QEMU是一种开源的虚拟机监视器
-
安装
#Debian/Ubuntu #pve不用装 sudo apt-get update sudo apt-get install qemu-kvm qemu-system-x86 #CentOS/RHEL sudo yum install qemu-kvm qemu-img virt-install
-
主要用法qemu-img convert
qemu-img convert -p -f qcow2 -O vmdk .\my_centos7.qcow2 .\my_centos7.vmdk -p : 显示镜像的转换进度 -f : 指定被转换的镜像是什么格式 -O: 指定转换后的镜像格式
硬盘直通
RDM 直通:CPU性能越好,性能越趋近于宿主机,磁盘由PVE宿主机管理
控制器直通:性能接近裸机,磁盘由虚拟机管理。
-
RDM直通
#查看磁盘ID ls -l /dev/disk/by-id/ nvme开头的是nvme硬盘,ata开头是走sata或者ata通道的设备。,scsi是scsi设备-阵列卡raid或者是直通卡上的硬盘 #直通 qm set <vm_id> –<disk_type>[n] /dev/disk/by-id/<type>-$brand-$model_$serial_number <disk_type>[n]: 导入后的磁盘的总线类型及其编号,总线类型可以选择IDE、SATA、VirtIO Block和SCSI类型,编号从0开始,最大值根据总线接口类型有所不同,IDE为3,SATA为5,VirTIO Block为15,SCSI为13。/dev/disk/by-id/-brand-brand−model_$serial_number : 为磁盘ID的具体路径和名称。 #例 qm set 102 -sata2 /dev/disk/by-id/ata-ST4000VX000-2AG166_ZGY163KG update VM 102: -sata2 /dev/disk/by-id/ata-ST4000VX000-2AG166_ZGY163KG #显卡上述信息为正常 #取消直通 qm set <vmid> -delete –<disk_type>[n]
-
控制器直通(需开启IOMMU)
#查看本机PCI设备 lspci #查看直通硬盘的控制器 ls -la /sys/dev/block/|grep -v loop |grep -v dm #直通 web端添加PCI设备给虚拟机