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

2.3. Btrfs文件系统安装方式

2.3.1. 关于Btrfs

Btrfs是一个写时复制(COW,copy on write)的文件系统,通过数据和元数据的校验,可以实现快照、内置RAID和自我修复功能。从Proxmox VE 7.0开始,Proxmox VE引入了Btrfs文件系统作为可选的文件系统和根文件系统。

根据Proxmox VE官方提供的《pve-admin-guide-7》用户手册(详见第112页的存储类型章节内容),Proxmox VE 7.0支持的存储类型如表1所示。

表1. Proxmox VE 7.0支持的存储类型

选项 PVE类型 存储类型 是否共享 是否快照 是否稳定
目录 dir 文件 否1
LVM lvm 否2
LVM-thin lvmthin
BTRFS brtfs 文件 技术预览
NFS nfs 文件 否1
CIFS cifs 文件 否1
GlusterFS glusterfs 文件 否1
iSCSI/kernel iscsi
iSCSI/libiscsi iscsidirect
CephFS cephfs 文件
Ceph/RBD rbd
ZFS over iSCSI zfs
ZFS(local) zfspool 文件
Proxmox Backup pbs 文件、块 不适用

1:在基于文件系统的存储上,可通过使用qcow2 格式虚拟磁盘来实现快照。
2:可以在iSCSI 存储上配置LVM,从而获得共享LVM 存储。

Proxmox VE官方提供的表1显示,Btrfs还不能达到生产级所需的稳定性能,Proxmox VE官方在“是否稳定”方面,给出的建议是“技术预览”,其实就等于说是Btrfs是一个测试版本或者说是试用版本。

与ext4和xfs文件系统比起来,Btrfs文件系统能够提供更好的性能(Btrfs没有使用日志),使用Btrfs最主要的一个优点是支持写时复制和可写的快照,这对于虚拟机的部署和克隆非常有用。在文件系统中它还支持透明的压缩、普遍的校验和多设备的统一管理。Btrfs还支持高效的XATTR、对于小文件的合并,还有SSD上所熟知的集成卷管理,并支持在线fsck的特性。然而,尽管有这么多的优势和特性,Btrfs到目前为止还不具备应用与生产系统的条件,但对于测试场景而言Btrfs却是一个很好的选择。

Btrfs的优势如下:

  1. Btrfs的设置与传统的ext4设置几乎相同;
  2. 快照和克隆;
  3. 文件系统级别的数据压缩;
  4. 写时复制;
  5. RAID0, RAID1 and RAID10;
  6. 防止数据损坏;
  7. 自愈;
  8. Linux原生支持;

Btrfs的警告如下:

  1. Btrfs的RAID5和RAID6代码存在安全隐患,强烈建议不要在Btrfs中使用RAID5和RAID6。

2.3.2. Btrfs安装

第一步:选择btrfs(RAID1)

在Proxmox VE 7.0安装程序进行安装时,选择Btrfs作为根文件系统,同时还需要选择RAID级别,如图1所示。

在这里插入图片描述

图1. btrfs(RAID1)安装

在支持软RAID特性方面,Btrfs与ZFS比较相似,也提供多种级别的软RAID,同样的也不支持任何硬RAID,因为这样可能会导致数据丢失。

在软RAID级别方面与ZFS相比,Btrfs缺少RAID-Z功能,主要原因是RAID-Z属于RAID5的变体模式,而在Btrfs中RAID5和RAID6代码存在安全隐患。在解决RAID5和RAID6代码安全隐患问题之前,Proxmox VE不会支持RAID-Z功能。

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

在Proxmox VE 7.0中,Btrfs文件系统支持的软RAID级别有3个类型,如图2所示。

在这里插入图片描述

图2. 软RAID级别

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

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

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

2.3.3. Btrfs磁盘分区参数查看

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

在这里插入图片描述

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

系统盘有两个,一个是启动盘,一个是备份盘,因为我们在安装的时候,选择的RAID1级别进行安装。根据RAID1机制,备份盘的数据与启动盘的数据相同,一模一样。

在这里插入图片描述

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

在这里插入图片描述

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

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

Btrfs特性一:禁用默认本地存储local,以支持local-btrfs子卷的btrfs特性

Proxmox VE 7.0安装完成之后,会禁用默认本地存储local,以支持local-btrfs子卷的btrfs特性,这一点Btrfs与ext4、xfs以及zfs不同。另外还有一点不同,就是local-btrfs在存储内容方面,支持更多类型的存储格式,同时在WEB UI中也直接建立存放路径,如图6所示。

在这里插入图片描述

图6. Btrfs禁用默认存储local

我们也可以通过Proxmox VE 7.0的存储配置文件去查看local和local-btrfs信息,如图7所示。

在这里插入图片描述

图7. 存储配置文件

Btrfs特性二:WEB UI界面无法直接创建Btrfs存储,只能通过CLI命令创建

在Proxmox VE 7.0的WEB UI界面中,还没有Btrfs配置的功能,无法通过WEB UI界面上无法直接创建Btrfs存储,只能通过后台CLI命令进行创建。

这可能是Proxmox觉得Btrfs目前还不稳定,无法在生产级中使用,所以Proxmox VE 7.0在WEB UI中就没有增加Btrfs配置功能。相信随着Btrfs变稳定(似乎很遥远),Proxmox VE会在WEB UI界面中增加创建Btrfs的配置功能,如图8所示。

在这里插入图片描述

图8. WEB UI界面不支持Btrfs配置功能

在WEB UI界面中,LVM和LVM-Thin支持创建ext4和xfs存储,目录支持创建ext4和xfs存储,ZFS支持创建ZFS存储,但是不支持Btrfs配置功能。

2.2.3. 默认存储位置

在Btrfs安装方式下,Proxmox VE使用Btrfs作为存储方式,在安装时将目标硬盘划分出BIOS boot、EFI分区后,在第三个分区/dev/sda3自动创建名为local-btrfs的Btrfs存储池。在local-btrfs中,既可以划分磁盘空间给存放虚拟机和容器文件,又可以建立存放路径用来存放ISO镜像和容器模板等,这么看起来,local-btrfs具有“物理设备”和“目录”的双重特性。我们来上传ISO镜像、创建虚拟机、上传容器模板、创建容器,看看是不是这样。

● ISO镜像存放路径:/var/lib/pve/local-btrfs/template/iso

在local-btrfs中,选择“ISO镜像→上传”,然后从本地电脑上传一个ubuntu的ISO镜像,如图9所示。

在这里插入图片描述

图9. 上传ISO镜像

ISO镜像上传完成之后,在“local-btrfs→ISO镜像”的界面中,会出现ubuntu的ISO镜像,如图10所示。

在这里插入图片描述

图10. ISO镜像上传成功

ISO镜像的存放路径位于/var/lib/pve/local-btrfs/template/iso,如图11所示。

在这里插入图片描述

图11. ISO镜像存放路径

● 虚拟机文件存放路径:/var/lib/pve/local-btrfs/images

在local-btrfs中创建虚拟机,选择“创建虚拟机”按钮,然后输入虚拟机信息,如图12所示。

在这里插入图片描述

图12. 在local-btrfs中创建虚拟机

虚拟机创建成功之后,在“local-btrfs→VM磁盘”中会出现虚拟机文件,如图13所示。

在这里插入图片描述

图13. 虚拟机文件

在创建虚拟机时,从local-btrfs存储池中划分磁盘空间给虚拟机的硬盘使用,也就是说local-btrfs相当于虚拟机的磁盘池,虚拟机的硬盘相当于local-btrfs的块存储。

虚拟机文件的存放路径是/var/lib/local-btrfs/images,如图14所示。

在这里插入图片描述

图14. 虚拟机文件存放路径

● 容器模板存放路径:/var/lib/pve/local-btrfs/template/cache

方式一:在Proxmox VE界面中下载容器模板

使用Proxmox VE界面下载容器模板的方式,优点是方便简单,缺点是下载较慢,而且容器模板只能存放在Proxmox VE主机中,不能迁移到其他Proxmox VE主机重复使用。

在Proxmox VE 7.0界面中,选择“local-btrfs→CT模板→模板”,在弹出的模板界面中选择需要下载的容器模板。注意,每次只能选择1个容器模板下载,可以同时多个容器下载,如图15所示。

在这里插入图片描述

图15. 下载容器模板

在下载过程中,下载速度比较慢,尤其是过个容器模板同时下载,在Proxmox VE 7.0界面中,无法看到下载进度,可以在容器模板的存放路径中去刷看下载进度,不过用处不太大,如图16所示。

在这里插入图片描述

图16.容器模板下载中-CLI

容器模板下载完成之后,Proxmox VE 7.0底部的“任务”栏中,会提示下载完成,但是无法看到下载进度,如图17所示。

在这里插入图片描述

图17.容器模板下载中-WEB UI

下载完之后,Proxmox VE 7.0的CT模板界面中,容器模板会自动出现在容器模板界面中,如图18所示。

在这里插入图片描述

图18.容器模板下载完成

方式二:使用迅雷下载容器模板到本地,在Proxmox VE界面中上传容器模板

使用Proxmox VE界面中直接下载容器模板,除了只有方便这个优点之后,缺点实在太多,尤其是下载慢和不能重复利用,建议直接使用迅雷下载到本地电脑保存,然后在通过Proxmox VE界面上传容器模板。

在Proxmox中文社区上,地址https://www.proxmox.wiki,可以直接下载容器模板,如图19所示。

在这里插入图片描述

图19. Proxmox中文社区

在容器模板下载界面中,选择你想要的容器模板,然后点击下载即可,如图20所示。使用迅雷或者浏览器进行下载,速度非常快。

在这里插入图片描述

图20. 容器模板下载界面

这是下载到本地电脑的容器模板,Proxmox容器模板的文件格式基本上以tar.gz和tar.xz为主要格式,如图21所示。

在这里插入图片描述

图21. 容器模板文件格式

接下来,我们将本地电脑的容器模板上传到Proxmox VE 7.0中,如图22所示。注意,Proxmox VE 7.0界面中,还不能批量上传容器模板,只能一次上传一个容器模板。

在这里插入图片描述

图22. 上传容器模板

容器模板上传完成之后,在容器模板界面中,会出现我们刚才上传的容器模板,如图23所示。
在这里插入图片描述

图23. 容器模板上传成功

容器模板的存放路径是/var/lib/pve/local-btrfs/template/cache,如图24所示。

在这里插入图片描述

图24. 容器模板存放路径

● 容器文件存放路径:/var/lib/pve/local-btrfs/images

第一步:安装容器

在local-btrfs中创建容器,选择“创建CT”按钮,然后输入容器信息,如图25所示。

在这里插入图片描述

图25. 设置容器登录密码

选择local-btrfs存储,选择您要安装的容器模板,然后点击“下一步”,继续按需填入容器的配置信息,如图26所示。

在这里插入图片描述

图26. 填入容器配置信息

容器创建成功之后,在最底部会出现“TASK OK”字样,如图27所示。

在这里插入图片描述

图27. 容器创建成功

容器创建过程中,会输出容器配置信息,如下所示:

Creating filesystem with 2097152 4k blocks and 524288 inodes
Filesystem UUID: 28b88c1f-a123-4867-91f9-b58861e23b43
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Use of uninitialized value $format in string eq at /usr/share/perl5/PVE/Storage/BTRFSPlugin.pm line 183.
Use of uninitialized value $format in string eq at /usr/share/perl5/PVE/Storage/BTRFSPlugin.pm line 189.
Use of uninitialized value $format in string eq at /usr/share/perl5/PVE/Storage/BTRFSPlugin.pm line 183.
Use of uninitialized value $format in string eq at /usr/share/perl5/PVE/Storage/BTRFSPlugin.pm line 189.
extracting archive '/var/lib/pve/local-btrfs/template/cache/debian-10-standard_10.7-1_amd64.tar.gz'
Total bytes read: 671672320 (641MiB, 4.9MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_dsa_key' - this may take some time ...
done: SHA256:dTHd/QKq1a0vd67wJkVjwMqkc+c7JsmTE+3KEw2Fr10 root@localhost
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
done: SHA256:gDTMIBUpIAUxpiEd8GhJ02VZMhCMBVVnwVhmkwkaEmw root@localhost
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
done: SHA256:JiLCYaJFnAJ99vkp+fdLlHitKNFbRDC0u+8fK41SVGE root@localhost
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
done: SHA256:xWhlh6tStLeaSC1ikxLIX4VIU45kJUEcReimy7uuG8E root@localhost
TASK OK

第二步:启动容器

选择刚才创建的容器,点击“启动”按钮,启动容器,容器启动成功之后,在控制台中,会出现登录入口,如图28所示。

在这里插入图片描述

图28. 容器启动成功

输入默认用户root,输入在创建容器是设置的密码,然后就可以登录容器了,如图29所示。

在这里插入图片描述

图29. 容器登录成功

第三步:容器文件存放路径

容器文件格式与虚拟机文件格式相同,都是以raw格式保存,如图30所示。

在这里插入图片描述

图30. 容器文件格式

容器文件的存放路径与虚拟机文件的存放路径相同,都是/var/lib/pve/local-btrfs/images,如图31所示。

在这里插入图片描述

图31. 容器文件存放路径

2.3.4. 新建Btrfs存储池

在默认情况下,备份、虚拟机和容器文件、ISO镜像、容器模板都存储在local-brtfs中,根据图4的默认分区,local-brtfs是创建在系统盘的第三分区/dev/sda3上的。把备份、虚拟机和容器文件、ISO镜像、容器模板等都保存在系统盘中的local-brtfs上,这样的规划是不合理:

  • 系统盘的空间很快会被不断增长的虚拟机文件和容器文件占满空间,从而影响Proxmox VE系统的稳定性;
  • 备份往往会占用比较大的空间,把备份存放到系统盘也不合理;
  • 系统盘发生故障后,或者损坏之后,Proxmox VE系统无法启动,导致系统盘的虚拟机文件和容器文件无法提取出来,造成业务数据丢失。

除非是在演示场景或者测试场景,否则备份、虚拟机和容器文件不要保存在系统盘中。在生产场景中,强烈建议把备份、虚拟机和容器文件保存在非系统盘中。

第一步:查看Proxmox VE 7.0主机中有哪些未使用的业务盘

在创建新的Btrfs存储池之前,我们需要知道有哪些没有使用的硬盘,然后将这些硬盘汇聚起来,创建一个Btrfs存储池,如图32所示。

在这里插入图片描述

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

第二步:创建Btrfs之前,擦除硬盘数据和分区

在创建Btrfs之前,硬盘如果有数据或者其他分区,一定要先擦除掉。在Proxmox VE 7.0界面中,选择“Wipe Disk”按钮可以对硬盘进行逐个擦除,这里不能批量擦除。注意,一旦对硬盘进行了擦除,硬盘所有数据和分区都会被擦除掉。通过图32可以看到,4个未使用的硬盘并没有数据,也没有被GPT初始化(GPT初始化会产生分区),可以直接在这四个硬盘上创建Btrfs。

第三步:创建Btrfs文件系统

使用mkfs.btrfs命令创建Btrfs文件系统,-d和-m参数用于分别设置元数据和数据的配置文件,使用可选的-L参数,可以设置磁盘标签。Proxmox VE 7.0中,Btrfs支持以下模式:single、raid0、raid1、 raid10。

3.1)在带有标签 My-Storage的单个磁盘/dev/sdc上创建Btrfs文件系统:

root@pve-btrfs:~# mkfs.btrfs -m single -d single -L My-Storage /dev/sdc
btrfs-progs v5.10.1 
See http://btrfs.wiki.kernel.org for more information.

Label:              My-Storage      #磁盘标签
UUID:               8866c15a-efa3-4396-836b-8630aaec482f
Node size:          16384
Sector size:        4096
Filesystem size:    20.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         single            8.00MiB
  System:           single            4.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Runtime features:   
Checksum:           crc32c
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1    20.00GiB  /dev/sdc

查看系统下磁盘的文件系统:

root@pve-btrfs:~# lsblk -fp
NAME        FSTYPE  FSVER LABEL      UUID                                 FSAVAIL FSUSE% MOUNTPOINT
/dev/loop0  ext4    1.0              28b88c1f-a123-4867-91f9-b58861e23b43                
/dev/sda                                                                                 
├─/dev/sda1                                                                              
├─/dev/sda2 vfat    FAT32            F141-2C9D                                           
└─/dev/sda3 btrfs                    21f64b58-1a6d-4ff7-a8ff-76a7b139efe6   31.3G    18% /
/dev/sdb                                                                                 
├─/dev/sdb1                                                                              
├─/dev/sdb2 vfat    FAT32            F141-9A86                                           
└─/dev/sdb3 btrfs                    21f64b58-1a6d-4ff7-a8ff-76a7b139efe6                
/dev/sdc    btrfs         My-Storage 8866c15a-efa3-4396-836b-8630aaec482f                
/dev/sdd                                                                                 
/dev/sde                                                                                 
/dev/sdf                                                                                 
/dev/sr0    iso9660       PVE        2021-07-05-19-15-41-00

在Proxmox VE 7.0界面中,也可以看到/dev/sdc变成了Btrfs文件系统格式了,如图33所示。

在这里插入图片描述

图33. /dev/sdc格式化成功

3.2)在/dev/sdd、/dev/sde、/dev/sdf和/dev/sdg这4个硬盘上创建一个 RAID10的Btrfs

我这里的虚拟机硬盘不够,稍等我再增加一块硬盘/dev/sdg,很快的哈,如图34所示。

在这里插入图片描述

图34. 新增/dev/sdg硬盘

root@pve-btrfs:~# mkfs.btrfs -m raid10 -d raid10 -L My-Storage /dev/sdd /dev/sde /dev/sdf /dev/sdg
btrfs-progs v5.10.1 
See http://btrfs.wiki.kernel.org for more information.

Label:              My-Storage
UUID:               8ca7cea3-298a-4039-a5b1-376db7707bb7
Node size:          16384
Sector size:        4096
Filesystem size:    80.00GiB
Block group profiles:
  Data:             RAID10            2.00GiB
  Metadata:         RAID10          512.00MiB
  System:           RAID10           16.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Runtime features:   
Checksum:           crc32c
Number of devices:  4
Devices:
   ID        SIZE  PATH
    1    20.00GiB  /dev/sdd
    2    20.00GiB  /dev/sde
    3    20.00GiB  /dev/sdf
    4    20.00GiB  /dev/sdg

查看系统下磁盘的文件系统:

root@pve-btrfs:~# lsblk -fp
NAME        FSTYPE  FSVER LABEL      UUID                                 FSAVAIL FSUSE% MOUNTPOINT
/dev/sda                                                                                 
├─/dev/sda1                                                                              
├─/dev/sda2 vfat    FAT32            F141-2C9D                                           
└─/dev/sda3 btrfs                    21f64b58-1a6d-4ff7-a8ff-76a7b139efe6   31.2G    19% /
/dev/sdb                                                                                 
├─/dev/sdb1                                                                              
├─/dev/sdb2 vfat    FAT32            F141-9A86                                           
└─/dev/sdb3 btrfs                    21f64b58-1a6d-4ff7-a8ff-76a7b139efe6                
/dev/sdc    btrfs         My-Storage 889f5539-8144-418c-94c3-d450b862dd0c                
/dev/sdd    btrfs         My-Storage 8ca7cea3-298a-4039-a5b1-376db7707bb7                
/dev/sde    btrfs         My-Storage 8ca7cea3-298a-4039-a5b1-376db7707bb7                
/dev/sdf    btrfs         My-Storage 8ca7cea3-298a-4039-a5b1-376db7707bb7                
/dev/sdg    btrfs         My-Storage 8ca7cea3-298a-4039-a5b1-376db7707bb7                
/dev/sr0    iso9660       PVE        2021-07-05-19-15-41-00                         

在Proxmox VE 7.0界面中,也可以看到/dev/sdd、/dev/sde、/dev/sdf、/dev/sdg变成了Btrfs文件系统格式了,如图35所示。

在这里插入图片描述

图35. Btrfs格式化成功

第四步:挂载 BTRFS 文件系统

然后可以手动挂载新的文件系统,如下所示:

root@pve-btrfs:~# mkdir /my-storage              #在根目录下创建文件夹
root@pve-btrfs:~# mount /dev/sdc /my-storage     #把/dev/sdc挂载到文件夹上

注意,mount /dev/sdc /my-storage命令只是临时挂载,当Proxmox VE重启之后,就会被自动卸载,我这里因为是演示环境,就使用临时挂载。如果是生产环境,请使用/etc/fstab文件来完成永久挂载。

关于如何创建多个硬盘设备的Btrfs存储池,在后续的Proxmox VE后端存储的文章中会讲到,这里限于篇幅暂不讲。

挂载成功之后,就可以通过/my-storage这个目录来实现对硬盘/dev/sdc的数据存取操作。

第五步:将BTRFS文件系统添加到Proxmox VE 7.0中

选择“数据中心→存储→添加→BTRFS”之后,Proxmox VE 7.0界面自动弹出“添加:BTRFS”界面,如图36所示。

在这里插入图片描述

图36. 添加Btrfs

在“添加:BTRFS”界面中,输入存储名称,输入存储路径,选择存储内容,然后点击“添加”按钮,如图37所示。

在这里插入图片描述

图37. Btrfs路径配置

左侧导航树出现了“lisq-btrfs存储标识”,说明了lisq-btrfs存储启用成功,可以正常使用了,可以在lisq-btrfs存储中创建虚拟机和容器,如图38所示。

在这里插入图片描述

图38. 新建Btrfs存储启用成功

2.3.5. PVE默认存储总结

这部分不再多说了,直接上个表格伺候就可以了,希望这个表格对大家学习Proxmox VE有所帮助,如图39所示。

在这里插入图片描述

图39. 默认存储点关系

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

猜你喜欢

转载自blog.csdn.net/jianghu0755/article/details/129652852