Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)

2.2. ZFS文件系统安装方式

从Proxmox VE 3.4开始,Proxmox VE增加了ZFS文件系统作为可选的文件系统和根文件系统。Proxmox VE官方提供的ISO镜像已经集成了ZFS所需的软件包,用户无须手动编译就可以直接使用ZFS。

2.2.1. ZFS安装

Proxmox VE 7.0支持ZFS安装,与ext4/xfs安装不同,ZFS不使用卷管理器(LVM)物理存储,而是使用存储池(ZFS pool)来管理物理存储。

ZFS将存储设备统一汇聚到存储池中,而不是强制要求创建虚拟卷。存储池具备存储设备的物理特征,如RAID等级,并充当可以从其创建文件系统的任意数据存储库。文件系统不再仅限于单个设备,而是与存储池的所有文件系统共享磁盘空间。

第一步:选择zfs(RAID1)

选择文件系统“zfs(RAID1)”来进行系统安装,如图1所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第1张图片

图1. zfs(RAID1)安装

ZFS提供多种软级别的RAID,如果你的服务器没有硬件RAID卡,那么ZFS将会特别方便。通过Options按钮可以设置ZFS的RAID级别,并在磁盘列表里根据需要选择硬盘设备组成ZFS文件系统。注意:ZFS 不支持任何硬件RAID,可能会导致数据丢失。

选择zfs(RAID1),RAID1至少需要两个应该硬盘(关于RAID1的特性,可通过搜索引擎去搜索相关内容去了解),也就是说,图3中的目标硬盘是一组RAID1硬盘,使用空间只有1个硬盘,用作启动盘,另外一个硬盘用作备份盘。

当你使用Proxmox VE 安装程序安装时,可以选择使用ZFS 作为根文件系统。同时你需要在安装过程中选择配置RAID 级别。在Proxmox VE 7.0中,ZFS文件系统支持的RAID级别有六个类型,如图2所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第2张图片

图2. RAID级别类型

zfs(RAID0):也称为“条带”模式。该模式下ZFS卷的容量为所有硬盘容量的总和。但是RAID0 不提供任何冗余性,ZFS卷中任何一块硬盘故障都会导致整个卷不可用。该模式下,至少需要1块硬盘。

zfs(RAID1):也称为“镜像”模式。该模式下,数据会以复制方式同时写入所有硬盘。该模式下,至少需要2块容量一样的硬盘,而整个卷的容量就等于单块硬盘的容量。

zfs(RAID10):该模式是RAID0和RAID1的组合模式。该模式下,至少需要4块硬盘。

zfs(RAIDZ-1):该模式是RAID5的变体模式,提供单奇偶校验,即允许1块硬盘故障冗余。该模式下,至少需要3块硬盘。

zfs(RAIDZ-2):该模式是RAID5的变体模式,提供双奇偶校验,即允许2块硬盘故障冗余。该模式下,至少需要4块硬盘。

zfs(RAIDZ-3):该模式是RAID5的变体模式,提供三重奇偶校验,即允许3块硬盘故障冗余。该模式下,至少需要5块硬盘。

如果选择使用高级选项“Advanced Optinos”进行安装,可以进一步设置ZFS高级配置参数。

第二步:ZFS高级配置参数

Proxmox VE 7.0安装程序会自动创建名为rpool的ZFS存储池。使用ZFS时,默认不会创建swap空间,所以强烈建议你为ZFS配置足够的物理内存,避免系统出现可用内存不足的情形。如果实在是要建立swap分区,可以预留部分未分区空间以创建swap,也可以在安装完成后手工创建一个swap zvol卷,但是要注意手工创建swap可能会导致问题(详见《pve-admin-guide-7》用户手册第53页的SWAP on ZFS章节)。

如果你希望Proxmox VE自动对目标硬盘进行分区与格式化,可以不用理会“Advanced Optinos”高级选项,直接点击“Next”进行安装即可。

如果你要做ZFS参数调整,你也可以选择“Advanced Optinos”高级选项,“Advanced Optinos”会根据你的目前硬盘空间大小进行自动配置,否则可以不做改动,直接进行安装即可,如图3所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第3张图片

图3. ZFS告警配置参数

ZFS的高级配置参数如下:

ashift:定义存储池的ashift值。ashift值至少设置为存储池中的磁盘扇区大小(2次ashift的幂是扇区大小),或任何新加入存储池的磁盘扇区大小(例如,更换故障磁盘时)。

在这里插入图片描述
例如,扇区是512字节的,那么ashift就等于9,扇区是4096字节的,那么ashift就等于12.
compress:定义是否为 rpool 启用压缩。

checksum:定义rpool使用的校验和算法类型。

copies:定义 rpool 的副本参数。 该参数不能替代磁盘冗余功能,具体原因及配置语法参加man手册。

hdsize:定义目标硬盘的容量大小。通过设置该参数,可以在硬盘上预留部分空间给他用(如创建swap分区)。hdsize仅适用于引导磁盘(启动盘),例如RAID0,RAID1 或RAID10 中的第一个磁盘或镜像,或RAID-Z[123]中的所有磁盘。

第三步:ZFS性能提示

ZFS非常消耗内存资源,如果要使用ZFS作为存储,一般最少需要为ZFS配置8GB内存。在实际生产中,最好基于预算配置尽可能多的内存,建议以8GB为基础,每1TB裸硬盘容量需要增加1GB容量内存。如果你要为ZFS 配置独立的缓存盘或文件系统日志盘,最好使用企业级的SSD 盘,这能够极大的提升整体性能表现。

2.2.2. ZFS安装磁盘分区参数查看

Proxmox VE 7.0安装完成之后,我们来看一下Proxmox VE服务器主机的磁盘分区,如图4、图5和图6所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第4张图片

图4. 默认磁盘分区-Web UI

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第5张图片

图5. 默认磁盘分区-系统盘

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第6张图片

图6. 默认磁盘分区-未分区盘

从图5和图6中,我们可以看到,只有/dev/sda这样实际存储的硬盘设备及分区信息了,不存在一些类似/dev/mapper的逻辑设备了。

我们从WEB UI上也发现,在LVM和LVM-thin中已经没有逻辑卷分区,这主要是ZFS不使用LVM进行管理,而是使用存储池进行管理,如图7所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第7张图片

图7. ZFS不再使用LVM管理

2.2.3.默认存储位置

在ZFS安装方式情况下,Proxmox VE使用ZFS作为储存方式,在安装时将目标硬盘划分出BIOS boot、EFI分区后,在第三个分区/dev/sda3自动创建名为rpool的ZFS存储池。换言之,rpool是一个物理磁盘组,是一个分区,是一个物理设备,如图8、图9所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第8张图片

图8. ZFS存储池建立在sda3分区之上

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第9张图片

图9. ZFS存储池

接着在/dev/sda3这个rpool存储池的基础上,Proxmox VE建立两个存储点,一个名为local的目录,主要用来保存VZDump备份文件, ISO镜像, 容器模板等;一个名为local-zfs的ZFS存储池,主要用于保存基于块存储的虚拟机镜像、容器卷等,亦即作为虚拟机的磁盘。

存放路径如下所示:

ISO镜像存放的路径:/var/lib/vz/template/iso

备份存放路径:/var/lib/vz/dump/

虚拟机文件存放:/dev/rpool/data

WEB UI界面中的local和local-lzfs存储点的信息如图10、图11和图12所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第10张图片

图10. local和local-zfs的存储内容

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第11张图片

图11. local的存储内容和空间

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第12张图片

图12. local-zfs的存储内容和空间

我们在上面曾说到,local和local-zfs都是在/dev/sda3这个rpool存储池的基础上建立的,换句话来说,rpool存储池是一个共享存储池,是由local和local-zfs共同使用的。那实际情况是不是这样呢?我们来使用这个方法去验证一下:在local中上传一个镜像,在local-zfs中建立一个虚拟机,那么local占用的容量与local-zfs占用的容量之和等于rpool存储池所被占用的容量。用公式表示如下:

在这里插入图片描述
第一步:查看local已使用的空间容量

在local中,我们来查看一下上传一个ubuntu操作系统的镜像之后,所使用的空间容量为3.43GB,如图13所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第13张图片

图13. local已使用的容量

第二步:查看local-zfs已使用的空间容量

在local-zfs中,我们来创建一个虚拟机,并给虚拟机安装操作系统,然后查看local-zfs所使用的空间容量为0.46GB,如图14所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第14张图片

图14. local-zfs已使用的容量

第三步:查看rpool已使用的空间容量

在rpool存储池中,我们来查看一下rpool存储池的空间容量,已经使用的空间容量为3.91GB,如图15所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第15张图片

图15. rpool已使用的容量

根据上述数据,我们可以得出结论,local使用的空间容量与local-zfs使用的空间容量之和等于rpool使用的空间容量。从而进一步验证了,local和local-zfs共享rpool存储池。

2.2.4. 新建ZFS存储池zfs-pool

我们刚才已经验证了,local使用容量与local-zfs使用容量之和等于rpool所使用容量,所以rpool存储池是一个共享存储池,由local和local-zfs共享。那么,local和local-zfs在rpool存储中所占的比例是多少?可不可以手动设置?到目前为止,在WEB UI中和在命令行是无法做设置的。我也查了官网相关资料,也爬到网上去扒拉资料,发现没有这方面的相关介绍。

其实,local和local-zfs共用一个rpool存储池的方式不能说不好,主要的问题是这个rpool存储池是创建在启动盘的/dev/sda3上,这种方式不是很好的方式。我们可以这样来进行分区,local独享rpool存储池,即独享/dev/sda3,而local-zfs则在其他硬盘上创建就可以了。

第一步:先清空local-zfs中的虚拟机文件,如图16和图17所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第16张图片

图16. 删除虚拟机文件

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第17张图片

图17. 确认删除虚拟机文件

第二步:删除local-zfs存储池

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第18张图片

图18. 删除local-zfs存储池

删除local-zfs存储池之后,我们再来看rpool这个大的存储池,这个rpool存储池不会被删除,因为local还在使用,如图19所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第19张图片

图19. rpool存储池仍保留

当local-zfs删除之后,local就会独享整个rpool存储池了,这样的话,local就有足够的空间来存放ISO镜像、容器模板等。

第三步:查看有哪些没有使用的硬盘

在为虚拟机文件创建存储池之前,我们需要知道有哪些没有使用的硬盘,然后将这些硬盘汇聚起来,创建一个存储池,如图20所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第20张图片

图20. 当前没有被使用的硬盘

第四步:创建lisq-zfs存储池,用于存放虚拟机文件

如图21所示,在ZFS存储池的界面中,点击“创建:ZFS”按钮,创建ZFS存储池。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第21张图片

图21. 创建新的ZFS存储池

在创建模板中,存储池名称输入“lisq-zfs”,RAID级别输入“RAIDZ2”,勾选当前4块未使用的硬盘,如图22所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第22张图片

图22. 创建lisq-zfs存储池

存储池lisq-zfs创建好之后,在右侧窗口会出现lisq-zfs的详细信息,在左侧导航窗口会出现lisq-zfs的存储标识,如图23、图24所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第23张图片

图23. lisq-zfs存储池

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第24张图片

图24. lisq-zfs存储池详细信息

在“数据中心→存储”的界面中,我们可以发现,lisq-zfs自动添加上去了,如图25所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第25张图片

图25. lisq-zfs自动添加

第五步:lisq-zfs存储池中创建虚拟机

在lisq-zfs存储池中创建虚拟机,虚拟机文件存放在lisq-zfs存储中,如图26、图27和图28所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第26张图片

图26. 在lisq-zfs中创建虚拟机

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第27张图片

图27. 虚拟机文件存放在lisq-zfs中

在这里插入图片描述

图28. 虚拟机文件存放在lisq-zfs中

2.2.5. PVE默认存储总结

local是一个目录,存放路径是/var/lib/vz,通过/var/lib/vz就可以把ISO镜像存放到rpool存储池中,路径对应关系如图29所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第28张图片

图29. local存储路径

local-zfs是一个存储池,一个磁盘池,物理设备,系统在创建虚拟机的时候,从local-zfs存储池中分配磁盘空间给虚拟机的硬盘,虚拟机的硬盘相当于local-zfs存储池中的块存储,如图30所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第29张图片

图30. local-zfs存储在rpool中

从这里我们可以发现,local-zfs有一个存放路径,就是数据存储在/dev/rpool/data中,如图31所示。

在这里插入图片描述

图31. local-zfs存放路径

是不是感觉这些映射关系很乱?其实可以理解,因为无论是Proxmox VE的WEB UI的界面还是CLI界面,对这部分内容的显示都有些不太完整,搞得很多人在理解方面有点蒙圈,得靠想象。下面,我把这些映射关系整理出来,做成一个表格,希望对大家学习Proxmox VE有所帮助,如图32所示。

Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)_第30张图片

图32. 默认存储点关系

参考资料:Proxmox VE官网的《pve-admin-guide-7》用户手册;

你可能感兴趣的:(Proxmox,VE随笔,云计算,debian,linux)