【VMware vSAN】全新vSAN 8 ESA快速存储架构配置文件服务并创建文件共享。
早在2020年,VMware就发布了vSphere7、vSAN7、VCF4等等产品的更新,当时随着云原生的火热,基于容器技术的现代应用程序快速发展,Docker、Kubernetes这些容器平台被广泛使用,用于构建、运行、管理、连接和保护这些现代化容器应用程序,随后,VMware 也发布了自己的云原生Tanzu平台,而当时在vSAN7的更新中也新增了这样一个基于容器服务的功能,也就是vSAN 文件服务。
官方解释,vSAN 文件服务由vSAN分布式文件系统(vDFS)和存储服务平台组成,前者通过聚合vSAN对象来提供可扩展文件系统,后者提供弹性文件服务器端点和控制平面以用于部署、管理和监控。在配置vSAN文件服务的时候,会在每个主机上放置一个文件服务虚拟机(FSVM)。FSVM用于管理vSAN数据存储中的文件共享。每个FSVM都包含一个可同时提供NFS和SMB服务的文件服务器。
vSAN 文件服务利用了这个代理或Appliance虚拟机,并且在每个代理虚拟机中都运行一个容器或“Protocol Stack”,而这个“Protocol Stack”将文件系统公开为NFS或SMB文件共享所访问的内容。
vSAN 文件服务是作为vSAN的一部分进行管理、监控和更新的。可以为每一个文件共享提供基于现有vSAN存储策略的管理,与vSAN虚拟对象和Skyline Health完全集成,并针对文件服务器代理和实际文件共享本身进行一组健康检查。
vSAN 文件服务在vSAN7,也就是vSphere7.0才提供该功能,如果你是之前的版本,则需要升级到7.0及更新的版本,其实7.0初版本的文件服务功能并不完善,比如在7.0 U1之后才支持SMB文件共享,在7.0 U2之后才支持双节点和延伸vSAN集群。所以,如果是传统的vSAN架构,VMware叫Original Storage Architecture(OSA)原始存储架构,可以直接升级到vSAN 7.0 U3及更新的版本,不过本次的主题不是OSA,而是VMware在最新的vSphere8、vSAN8中支持的全新一代vSAN架构,叫Express Storage Architecture(ESA)快速存储架构,关于两种架构的区别可以看这篇VMware中文博客的文章(VMware vSAN OSA & ESA 技术简介),vSAN 8 ESA架构在vSAN 8.0 U2才支持vSAN 文件服务。
我们知道,早在vSAN7之前,vSAN服务就提供了基于块存储的iSCSI功能,现在基于文件存储的FS文件服务功能也在vSAN得以实现,也算是弥补了vSAN分布式存储的功能缺失吧,当然这些应用并不是说每个人都能用到,可能现在有点鸡肋,也不是所有能力都能实现,我想既然存在即合理吧,未来某一天万一恰巧需要呢,也许有总比没有好是吧?!
本文主要涉及以下内容:
- vSAN文件服务限制和注意。
- 配置和启动vSAN文件服务。
- vSAN文件服务相关信息。
- 创建和使用vSAN文件共享。
- vSAN文件服务升级更新。
一、vSAN文件服务限制和注意
在配置和使用vSAN 文件服务时,需要考虑以下限制和注意事项:
- vSAN7.0仅支持NFS v3和NFS v4.1。
- vSAN7.0 U1支持Kerberos身份认证、SMB v2.1和v3、Active Directory目录服务身份验证。但不支持以下选择:
- 用于加入域的只读域控制器 (Read-Only Domain Controller, RODC),因为 RODC 无法创建计算机帐户。最佳的安全做法是,在 Active Directory 中预先创建一个专用组织单位,并且这里提到的用户名应控制该组织。
- 非连续命名空间。
- 组织单位 (Organizational Unit, OU) 名称中使用空格。
- 多域和单域 Active Directory 林环境。
- vSAN7.0 U2在双节点和延伸集群受支持。
- vSAN7.0 U2开始支持传输中数据加密。
- vSAN7.0 U2开始支持SCSI剪裁/取消映射空间回收。
- vSAN7.0 U2开始支持每个集群的文件共享最大数为100个。
- vSAN7.0 U2开始及更高版本中,最多只能置备64个活动FSVM虚拟机代理。
- 使用vSAN7.0 U1,最多32个活动FSVM虚拟机代理。
- 使用vSAN7.0,最多8个活动FSVM虚拟机代理。
- vSAN7.0 U3开始支持基于访问的枚举。
- vSAN8.0 支持使用IPv6网络创建文件服务域。
- vSAN8.0 U1支持挂载用作vSphere 内容库和ISO的存储库。
- vSAN8.0 U2在ESA快速存储架构中受支持。
- FSVM虚拟机代理预配了4个vCPU和8GB内存。
- ESXi主机可以挂载NFS文件共享,但是上面不能运行虚拟机(同iSCSI服务一样)。
- ESXi主机进入维护模式时,FSVM虚拟机将关闭电源,文件服务将转移至其他FSVM,并且不再被删除(7.0 U3之后)。主机退出维护模式时,FSVM虚拟机自动打开电源。
- vSAN 文件共享的最大大小等于vSAN集群存储的最大大小。
- vSAN 文件服务不支持同时使用NFS 和 SMB访问单个共享。
- vSAN 文件服务通过软共享配额和硬共享配额来管理容量消耗,达到硬共享配额后将不支持写操作。
- vSAN 文件服务在具有“仅计算”节点的群集上不受支持。
- vSAN 文件服务可用于为云原生容器工作负载和传统工作负载置备文件共享。
- vSAN 文件服务开启要求vSAN标准集群中至少需要3台主机,至多64台主机(主要受集群主机数量的限制)。
- vSAN 文件服务虚拟机(FSVM)Docker 内部网络使用了172.17.0.0/16网段,不应该将文件服务网络与之重叠。
- vSAN 文件服务虚拟机(FSVM)服务网络:
- 如果使用的是基于VSS标准交换机的网络,则会在vSAN文件服务启用过程中启用混杂模式和伪传输。
- 如果使用的是基于DVS的网络,则DVS版本6.6.0或更高版本支持vSAN文件服务。请在DVS中为vSAN文件服务创建专用端口组。在vSAN文件服务启用过程中会为提供的DVS端口组启用MacLearning和伪传输。
- 如果使用的是基于NSX的网络,请确保从NSX管理控制台为提供的网络实体启用MacLearning,并将所有主机和文件服务节点连接到所需的NSX-T网络。
二、配置和启动vSAN文件服务
vSAN 8 ESA标准集群环境准备了4台主机,每台主机的ESXi版本是8.0 U2(内部版本号22380479),vCenter Server的版本是8.0 U2b(内部版本号23319993)。
点击集群配置-vSAN-服务,展开文件服务,点击启用。
选择FSVM代理虚拟机所使用的网络,文件服务代理选择手动加载OVF-浏览-添加vSAN 8 U2文件服务OVF部署模板,点击启用。
如果添加的OVF模板不受ESA支持,则会提示报错。
如果想要删除上传的OVF模板,默认OVF模板存储在vCenter上的/storage/updatemgr/vsan/fileService/目录当中,直接使用rm -rf /storage/updatemgr/vsan/fileService/ovf-8.0.2.1000-22380479命令删除即可。
点击启动后,OVF模板完成上传,如果集群配置了DRS,则会自动创建名为ESX Agents的资源池,并开始为集群内每台主机部署一个FSVM文件服务虚拟机。
下面开始配置文件服务,展开集群配置-vSAN-服务-文件服务,点击配置文件服务域。
设置文件服务域名字,通常情况一个集群为一个服务域。
设置FSVM代理虚拟机的网络,包含静态IP地址、网关、子网掩码、DNS服务器等,需要提前配好域名解析,默认情况下,IP池的第一行地址为文件服务的主服务地址,也就是说默认情况会以这个地址作为对外提供文件共享的单一访问地址,可根据需要自行进行设置。
配置是否开启Active Directory目录服务,在文件服务域中使用基于Kerberos身份验证的SMB共享或NFS共享需要Active Directory配置。如果不勾选,则文件服务域只能配置使用基于AUTH_SYS身份验证的NFS共享,当然也可以在后期去重新勾选以启用支持目录服务。
最后,检查配置,点击完成。
稍等片刻,文件服务完成配置并启动。
三、vSAN文件服务相关信息
我之前给FSVM虚拟机选择的网络基于标准交换机,所以可以看到混杂模式和伪传输被配置为了接受。
FSVM虚拟机代理由 vSphere ESX Agent Manager 完全管理,你不应该对这些代理进行任何干预操作。
FSVM虚拟机代理有自己的存储策略(FSVM_Profile_DO_NOT_MODIFY),它是RAID-0,不受跨主机保护,弹性由容器层自动处理,你不应修改该策略!
可以通过vSAN虚拟机对象查看FSVM虚拟机代理和文件服务根文件系统的详细放置信息,查看哪些主机和哪些物理存储设备用于放置文件共享对象的组件。
vSAN 文件服务的健康状况已被集成在Skyline Health统一监控告警界面,运行检查可以更加直观的查看文件服务的状态。
vSAN 性能监控面板查看文件共享的I/O、延迟等,目前还没有文件共享。
标准的vSAN 虚拟机对象的Object class是vmnamespace。
如果是vSAN 文件服务发布的文件共享虚拟对象的Object class被标识为了vdfs。
四、创建和使用vSAN文件共享
目前环境中,准备了一台131centos-vm01的虚拟机(CentOS 7.9)充当文件共享的客户端进行测试。
对于Linux发行版以最小化方式进行安装的话默认没有安装NFS服务,需要手动在Linux当中安装NFS:
yum install -y nfs-utils //安装nfs服务
systemctl start nfs //启动nfs服务
systemctl enable nfs //将nfs服务加入开机自启
systemctl status nfs //查看nfs服务状态
firewall-cmd --add-service=nfs --permanent //防火墙放开nfs
注:对于基于 RHEL 的 Linux 分发版,RHEL 7.3 和运行内核 3.10.0-514 或更高版本的 CentOS 7.3-1611 中均提供了 NFS 4.1 支持。对于基于 Debian 的 Linux 分发版,Linux 内核版本 4.0.0 或更高版本中提供了 NFS 4.1 支持。所有 NFS 客户端都必须具有唯一的主机名,这样 NFSv 4.1 才能正常工作。
下面开始创建vSAN 文件共享,展开集群配置-vSAN-文件共享,点击添加。
填入文件共享的名字,选择文件共享的协议(支持NFS和SMB)和版本(默认选NFS 4.1和NFS 3都支持即可),安全模式没法选择(支持AUTH_SYS 或 Kerberos),因为目前没有启动目录服务,选择文件共享的存储策略,我这里按vSAN 8 ESA选择的最佳默认存储策略即可,我这里4台主机,最佳的是RAID5(2+1),支持更少的主机(3台),与RAID1相媲美的性能。存储空间配额设置,因为是测试所以硬配额设为10GB,软配额也就是告警阈值为8GB即可,标签可设可不设,我这里设置Linux:CentOS就行。
配置文件共享的网络访问权限,可以设置为无权访问、允许任何IP进行访问或者指定某个网段进行访问,以及访问权限是无权访问、只读还是读取/写入,根权限压缩(Root Squash)是可选项,该选项是NFS当中的一项安全功能,可以配置文件共享客户端是否具有同服务器端相同的root用户的权限。
检查确定没问题,点击完成。
创建完后,点击查看刚刚创建好的文件共享的详细信息(名称左边的小长方形),可以看到文件共享配置的信息。
查看vSAN文件共享的实际物理存储位置。
性能面板暂时没有数据,目前还没有客户端访问使用。
可以对该文件共享创建快照,这是在vSAN 7 U2中引入的快照机制,允许VMware的备份合作伙伴和独立软件供应商(ISV)在其备份解决方案中提供vSAN 文件服务共享中文件的时间点备份和恢复功能。快照机制的全部功能可通过API访问。使用文件共享快照作为备份源需要支持该功能的备份产品。备份供应商目前正在努力为vSAN 文件共享提供支持。在此之前,组织可以使用PowerCLI和备份供应商的PowerShell模块将新创建的快照添加为备份源。有关演示此功能的精彩博客文章,请参阅“备份 vSAN 文件共享”。
如果想添加、修改、删除文件共享,可以随时在这个界面操作即可;如果客户端要挂载共享,可以点击上面的复制路径即可在客户端进行配置,非常方便。
现在服务端文件共享已经完成,下面在客户端上配置和使用该NFS文件共享。
我们先来看一下,我们在配置文件服务域的时候为FSVM配置了静态IP地址(一般建议是主机多少台配置多少个),这里面会设置一个主服务地址,一般配置了这个主服务地址后,所有的文件共享都通过这个单一地址进行访问。
我们在客户端上使用showmount -e命令来看一下我们刚刚创建好的文件共享是怎么分配的(如下图)。可以发现,只有在主服务地址下才有文件共享,其他的地址下面没有。
我们再来看一下NFS v3和NFS v4.1的文件共享有什么区别,通过上面的链接复制,你可以看到以下内容:
vsan8fs1.lab.com:/fs-to-centos-test01 //NFS v3文件共享的链接
vsan8fs1.lab.com:/vsanfs/fs-to-centos-test01 //NFS v4.1文件共享的链接
当我们使用NFS v4.1进行文件共享时,我们需要加上根共享(/vsanfs)挂载路径;如果使用NFS v3进行共享时,则不用,当我们挂载的时候不指定共享协议时,则客户端和服务端和自动进行协商选择使用那个协议进行连接,默认会使用高版本的共享协议。
我在客户端新建一个目录,将刚刚创建的fs-to-centos-test01文件共享以NFS 4.1协议挂载给这个目录进行使用。
mkdir /test01
mount -t nfs -o vers=4.1 vsan8fs1.lab.com:/vsanfs/fs-to-centos-test01 /test01
df -hT
mount | grep /test01
如果想将挂载的文件共享加入开机自启动,需要将以下信息加入开启启动配置文件:
echo "mount -t nfs -o vers=4.1 vsan8fs1.lab.com:/vsanfs/fs-to-centos-test01 /test01" > /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
我们在test01目录里使用dd命令创建几个空文件来测试硬配额和软配额及相关的警告事件。
dd if=/dev/zero of=file01 bs=1024 count=5000000
使用dd命令创建5G左右的文件后,在vSAN 文件共享配置信息里也显示使用量达到快50%了。但是并没有达到软配额。
再次使用dd命令创建空文件file02,查看系统空间占用情况,可以看到系统里已经占用92%了。
dd if=/dev/zero of=file02 bs=1024 count=4500000
在vSAN 文件共享配置信息里查看发现已经占用91%了,提示“超过80%已用。可能很快达到上限。”,即达到设置的软配额限制。
再次使用dd命令创建空文件file03,查看系统空间占用情况,可以看到系统里已经占用100%了。它这里没有创建完,因为已经没有空间了,没法继续往里面写了,提示“dd: error writing ‘file03’: Disk quota exceeded”错误。
dd if=/dev/zero of=file03 bs=1024 count=2000000
在vSAN 文件共享配置信息里查看发现已经占用99%了,还是提示“超过80%已用。可能很快达到上限。“。已经达到设置的硬配额限制。此时平台出现告警,提示”vSAN 文件服务警报“共享运行状况”“。
看一下文件服务的性能。
我们重新调整一下这个文件共享,将硬配额修改为20GB,软配额15GB。
在文件共享详细信息里面,使用量/配额立刻就改变了。
在客户端系统里面也变了,又可以继续往里写文件了。
下面测试一下,在vSAN 分布式文件系统中的取消映射回收vSAN存储空间。默认情况下,最新的vSphere8、vSAN8上可以在高级选项里面去启用客户机剪裁/取消映射功能,ESA架构则为默认开启。
如果是vSAN7及之前的vSAN版本,默认未启用该功能,vSphere Client也没有提供该选项的设置,需要在vCenter Server上使用RVC命令启用该功能。
vsan.unmap_support -e
先看一下,vSAN存储目前所占用的空间。待会儿在客户端系统里删除文件后,可以对比占用空间的变化。
为了更好的测试,我重新将文件共享的硬配额加到100GB,在系统里面查看一下空间已经增加了。
我这里创建了60GB左右的空文件,系统里面已经显示占用58GB,占用全部空间58%左右。
再来看一下vSAN存储的总空间占用情况,可以看到,实际写入空间才10GB左右,而压缩就节省了50多个GB的空间,看来vSAN ESA的空间效率很厉害啊!(当然我这里不是真实的数据写入)
执行命令删除文件后,找到虚拟机客户端所在的主机,在主机监控-vSAN-性能里找到虚拟机/后端板块,可以看到有一个剪裁/取消映射吞吐量的面板有流量显示,表示刚刚执行删除后已经自动开始执行空间回收了。
再来看一下vSAN存储整体空间的占用情况,可以看到整体的以及vSAN文件共享类别的占用空间已经减少了。
五、vSAN文件服务升级更新
vSAN 文件服务的升级过程中,正在进行升级的虚拟机上运行的文件服务器容器将故障切换到其他虚拟机。文件共享在升级过程中仍可访问。在升级过程中,您可能会在访问文件共享时遇到一些中断情况。
升级vSAN 文件服务之前,请确保提前升级了ESXi、vCenter、vSAN磁盘格式(产品互操作性和升级路径),升级的先后顺序是vCenter>ESXi>vSAN磁盘格式>vSAN文件服务。
由于环境中,vCenter Server已经是8.0 U2b了,所以只需要使用vLCM升级ESXi从8.0 U2到8.0 U2b即可,然后下载对应的vSAN 文件服务OVF模板即可进行升级。
展开集群配置-vSAN-服务-文件服务,点击编辑-检查升级。
选择手动加载 OVF,浏览添加OVF升级文件,点击升级。
在任务控制台中抓取了一部分升级过程的记录。
升级完成。
如果升级后,想要删除旧的vSAN 文件服务OVF来释放空间,可以到vCenter Server以下目录并使用rm命令进行删除即可。