MoreRSS

site iconLxn | 泠泫凝修改

主要是ACGN内容和科技类内容
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Lxn | 泠泫凝的 RSS 预览

Citrix XenApp 云应用交付

2025-01-23 16:24:00

在上一篇文章已部署好DDC的基础上部署XenApp。Citrix ® XenApp™是一种按需应用交付解决方案,能够在数据中心对所有Windows ®应用实现虚拟化、集中部署和管理,并能作为一项服务、通过任何设备向所有用户交付应用。

环境介绍

请参见Citrix XenDesktop 云桌面部署的“环境介绍”部分。

这里假定已安装好域控和DDC,准备进行XenApp的交付。主机分配、IP地址、域控状态与上一篇文章一致。

准备 Windows Server 主机

首先部署一台Windows Server虚拟机,我这里为了方便仍使用Windows Server 2012 R2。该虚拟机是XenApp的运行环境,运行时所有分发出去的应用程序本质上都运行在该虚拟机上。这里要求必须使用Windows Server系统,因为只有Windows Server才能支持远程桌面服务。

该XenApp运行环境也可以使用物理机安装Windows Server后安装VDA作为运行环境,但要求能够加入DDC所在域。

  1. 首先我们先准备一台Windows Server虚拟机,我这里就直接跳过安装环节了。
    然后安装Guest Tools,固定IP,DNS指向域控服务器。
  2. 修改计算机名并将计算机加入域,然后重启。
    修改计算机名的作用主要是方便区分,默认的计算机名比较长且随机,可以不改
  3. 在域控服务器上新建一个专用于XenApp虚拟机的用户,然后在虚拟机上将这个账户添加到Administrators组
    注意:安全起见建议不要将该专用用户加入到Administrators组,因为这样的话使用应用的人就对XenApp所在虚拟机具备了完整的管理员权限,甚至可以关闭其他人的程序。
  4. 注销本机账户,然后使用域账户登录到虚拟机
    进入虚拟机之后,禁用本机账户(非必需)
  5. 禁用防火墙并禁用UAC,然后重启
    注意:安全起见建议手动放通对应端口而不是直接禁用防火墙。
  6. 挂载“XenApp_and_XenDesktop”iso镜像,启动安装程序并选择“XenApp”
    选择Virtual Delivery Agent for Windows Server OS(也就是VDA)

    然后选择“启用与服务器计算机的连接”

    核心组件保持默认,附加组件全选,然后输入DDC地址

    功能全选

    防火墙的规则这里无所谓,这里已经禁用过防火墙了

    检查摘要,没问题之后安装即可,中间可能要求重启1-2次

    不参与Call Home,完成安装后重启虚拟机。
  7. 最后在虚拟机上安装需要分发的软件,我这里以WPS Office为例

分发XenApp

创建计算机目录

  1. 首先打开Citrix Studio,左侧选中“计算机目录”,然后选择创建计算机目录
  2. 操作系统选择服务器操作系统
  3. 计算机管理部分按照图中选择
  4. 选择刚才部署的虚拟机,并输入该虚拟机在域中注册的计算机账户
  5. 计算机目录名称随意填写即可

创建交付组

  1. 首先打开Citrix Studio,左侧选中“交付组”,然后选择创建交付组
  2. 计算机选择刚才创建的计算机目录
  3. 权限这里根据实际情况选择和配置即可
  4. 应用程序这里按需添加。
    我这里需要添加WPS Office,需要将四件套都加入交付中。同时因为这些程序都在开始菜单里面,所以我这里直接从开始菜单添加

    也可以手动添加可执行文件路径和参数
  5. 分配这里按需选择即可,需要注意的是这里我们交付的是XenApp,因此是无需交付桌面的,所以启用桌面交付这里没有勾选
  6. 最后填写交付组名称即可。

查看效果

登录到Store Front,然后查看账户中的应用程序,直接点击对应程序图标即可开启,使用体验与本地使用几乎无异

添加应用程序

  1. 打开Citrix Studio,左侧选择“交付组”,然后选择需要添加应用程序的交付组,右侧点击“添加应用程序”
  2. 按创建交付组节中第4步方法添加应用程序,我这里以firefox为例
  3. 下一步保存即可,客户端刷新即可看到新添加的应用程序

RD授权

Citrix XenApps 依赖的其实是Windows Server的Remote Desktop Service。但该服务并不是免费的,这里讲一下怎么激活。我们其实也能在Citrix Studio里面看到授权无效的消息。

  1. 打开XenApp所在服务器的服务器管理器,右上角管理-添加角色和功能,勾选“远程桌面授权”,然后下一步
    其余不变,然后等待安装完成,然后打开远程桌面授权管理器
  2. 右键计算机名,启动激活向导,选择Web浏览器激活
    然后在另外一台电脑上打开http://activate.microsoft.com,选择“启用许可证服务器”

    产品ID输入刚才服务器上的产品ID,其余随便填即可

    然后把生成的许可证ID输入到刚才的服务器上

  3. 许可证程序处选择“企业协议”,然后下一步
  4. 然后数量处随便输入,最大为500,协议号码填下述三个中的任意一个:6565792495443868793215296992,产品类型选择“Windows Server 2012 远程桌面服务每用户客户端访问许可证”,最后在服务器上安装该许可证密钥包ID即可。
  5. 我们可以在服务器名称上看到一个叹号,右键然后选择复查设置,会提示你当前服务器不是许可证组的成员,需要将当前用户加入到许可证组。点击“添加到组”然后输入域管理员的用户名密码即可。
    最后两个都是绿色对勾即可。
  6. 打开“RD授权诊断程序”,提示“未配置远程桌面会话主机服务器的授权模式。”
  7. 打开组策略管理器,展开“本地计算机策略>计算机配置>管理模板>windows组件>远程桌面服务>远程桌面会话主机>授权”,在右侧找到 “使用指定的远程桌面许可服务器”和“设置远程桌面授权模式”两项策略。
    然后启用使用指定的远程桌面许可服务器,在许可证服务器输入服务器地址,我这里就是本机所以直接输入了本机地址
    启用设置远程桌面授权模式,然后选择授权模式,我这里选择了按用户
  8. 最后重新打开“RD授权诊断程序”,刷新后查看到没有问题了

Citrix XenDesktop 云桌面部署

2025-01-17 16:24:00

从零开始部署一套生产环境可用的XenDesktop云桌面基础架构

环境介绍

服务器:Dell PowerEdge R410
CPU:2×Intel Xeon E5504(4 Cores 4 Threads Per CPU)
内存:4×8G non-ECC DDR3
存储:1×1TB Seagate HDD
网卡:板载BCM5716双口千兆电口网卡

Tips:真不是故意用这种电子垃圾,是手头真没有闲着的机器了。这里面唯一的一块硬盘甚至还重摔过…本次部署过程中也是难受的很,随机读写性能基本等同于没有,IO Wait最高的时候高达8772%…唉

XenServer版本:7.5(buildDate: 2018-05-21)
XenDesktop版本:3.15
域控服务器操作系统:Windows Server 2012 R2
SQL Server版本:2014.120.5000.0

需要注意的是本文所部署的方法在安全方面并非最佳实践,如需强安全性还需做各种用户权限和网络的隔离等,以及最新版本的软件更新。

主机分配

序号 用途 IP地址 操作系统 配置
1 虚拟化 192.168.50.101 XenServer 7.5 2c4g
2 授权服务器
(本文不涉及)
3 域控服务器 192.168.50.161 Windows Server 2012 R2 2c4g
4 DDC与数据库 192.168.50.162 Windows Server 2012 R2 2c4g
5 客户机 192.168.50.171-180 Windows 10 LTSC 2c4g

上述分配均为本次实验环境的分配,如果并发数量比较大环境比较多,建议将域控、SQL、DDC、授权服务、StoreFront等均分开部署。

本次部署中我对所有主机的IPv6功能均进行了关闭。

部署XenServer

详见Citrix XenServer 7.2 部署教程

其中激活服务器可以先不弄,XenServer默认拥有30天的试用期,激活服务器可以稍后和DDC做在一起(最佳实践也是如此),最后再激活即可。

部署Active Directory(域控)服务器

如果生产环境已经有了域控服务器则可以使用现成的域控制器。

  1. 新建Windows Server 2012 R2的虚拟机,命名为“AD Server”

    接下来就是正常安装Windows Server 2012,安装带GUI的Standard版本即可。

    正常进系统之后安装Guest-Tools,如果是Windows Server 2016及以上版本可能会要求重启1-2次。

    随后固定IP地址,禁用防火墙,随后重启。

    此时虚拟机应该已经可以切换到RDP模式了。
  2. 启用AD域控服务
    打开服务器管理器,选择右上角“管理”,选择“添加角色和功能”。
    勾选安装“Active Directory 域服务”,然后下一步。
    随后一直下一步等待直至安装完成。
  3. 配置域控
    点击服务器管理器右上角带叹号的小旗子,选择配置域控制器,然后在第一步选择“添加新林”。
    根域名随便输入,规则是尽量不要与实际存在的域名重合,但也不要太古怪。
    域控制器选项中设置还原模式的密码,其余选项保持默认。

    其余选项均保持默认,进入先决条件检查,通过后直接安装即可。

    直接点击安装,安装后会自动重启。

    重启后登录方式自动变为域登录,密码仍是一开始设置的Administrator账户的密码。
  4. 新建DDC服务器的用户
    打开Active Directory用户和计算机,展开自己的域,在Users下面创建一个新用户,该用户之后将用于DDC服务器和SQL服务器。

    在下一个设置密码的页面中勾选“用户不能更改密码”和“密码永不过期”

    下一步等待该用户创建好即可。
  5. 打开控制面板-Windows 防火墙,将“域网络”的防火墙也关闭。

域控服务器的部署到这里先告一段落。

部署DDC服务器基础环境

另起一台Windows Server服务器,我这里仍然使用虚拟机和Windows Server 2012 R2,Windows安装过程不再赘述,详见上一节第一步。

  1. 修改网络配置,固定IP,将域控服务器的IP作为DNS。
  2. 加入域

    出现“欢迎加入xxxx域。”的提示即成功,然后重启。
  3. 禁用原账户并将域账户加入管理员
    在重启后,登录时会让你登录到域账户,此时不要登录,选择返回箭头(Windows Server 2016及以上版本是左下角登录到其他账户),然后选择其他用户,在用户名处输入“计算机名\Administrator”,密码输入一开始设置的密码,随后点击登录。
    登录进桌面之后右键开始按钮,选择“计算机管理”,找到“本地用户和组”,“组”,然后双击右侧“Administrator”组,下方添加,输入对象名称处输入刚才在域控服务器上创建的用户名,然后点击“检查”补全。中间可能会要求输入域账户的密码,输入刚才在域控服务器上创建的用户名密码即可。

    随后注销Administrator账户,使用域账户登录:

    重复上述登录后操作,禁用Administrator账户
  4. 禁用防火墙
  5. 禁用UAC
    启用UAC的状态下在安装DDC时有概率失败,这里提前禁用掉。
  6. 启用.NET 3.5功能
    这一步是SQL Server Studio需要的,如果不安装Studio此步可以跳过。
    打开服务器管理器,右上角管理,添加角色和功能,勾选“.NET Framework 3.5”

    此时在确认页面先停留,在XenCenter中挂载Windows Server的ISO镜像文件,然后添加备用源

    添加好后等待安装完成即可,这一步无需重启。

部署SQL Server

SQL服务器我们这一步安装在DDC服务器上,如果环境比较庞大建议单独部署。

  1. 首先在虚拟机上挂载XA和XD的iso镜像,我们使用镜像中的SQL Server版本。
    如果需要自行下载或需要额外下载SQL Server 2014 Management Studio可以到Download Microsoft® SQL Server® 2014 Express from Official Microsoft Download Center下载。
  2. 选择全新安装
  3. 前面步骤都保持默认选项即可,在Feature Selection部分把右侧所有组件都勾选,其余保持不变,下一步即可
  4. 选择实例名称的时候选择默认实例
  5. 更改服务账户
  6. 修改验证模式为混合模式,然后输入默认的sa账户的密码。如果下面SQL Server Administrator里面是空的的话再点一下Add Current User。
  7. 下一步等待安装完成
  8. 在开始菜单中找到SQL Server 2014 Configuration Manager
    找到Network Configuration,将TCP/IP启用

以下部分为安装SQL Server 2014 Management Studio,不需要可以跳过。

  1. 将安装文件复制到虚拟机中,双击打开,默认是个自解压文件,点击确定提取,然后会自动启动SQL Server的安装向导
  2. 选择向已有实例中添加功能
  3. 勾选Management Tools,然后下一步
  4. 等待安装完成即可

安装好后重启虚拟机

部署DDC

这一步部署Critix XenDesktop的Desktop Delivery Controller(DDC)。

安装DDC

  1. 首先在虚拟机挂载XenDesktop的ISO镜像,然后启动安装。
  2. 选择安装Delivery Controller
  3. 全选核心组件,我这里提前额外单独起了License Manager所以这里就不安装了
  4. 功能保持默认安装Windows远程协助
  5. 因为我这里已经提前禁用了防火墙所以这里选择哪个都不重要,建议选择自动将规则添加到防火墙,以便后续再开启防火墙时保持端口是放通的
  6. 检查安装配置,没有问题就直接安装即可

    中间可能会要求重启1-2次,重启后安装会自动继续,中间不要卸载ISO镜像
  7. 安装成功后选择不连接到Citrix
  8. 最后安装成功,勾选启动Studio进入初始化设置

初步配置DDC

  1. 在Citrix Studio中,选择“向用户交付应用程序和桌面”
  2. 选择“完整配置”并填入站点名称,站点名称可以随意填写
  3. 数据库配置中选择在Studio中创建和设置数据库,然后将本机IP加一个反斜杠填入“位置”处。由于我们安装SQL数据库时使用了默认实例,因此斜杠后留空。然后点击下一步,然后稍等片刻。
  4. 连接到许可服务器,因为我这里许可服务器单独部署了,所以会额外询问;不清楚跟随DDC一起安装的话会不会询问。
  5. 连接服务器位置选择服务器类型,我这里是XenServer;连接地址输入XenServer管理IP;用户名和密码填入XenServer的用户名和密码;连接名称随便写;其余保持默认。
  6. 存储部分我们选择本地存储,如果有共享存储则选择共享存储。
  7. 选择数据存储位置的部分按照自己实际情况选择,一般来说是系统放在固态硬盘,个人数据放在机械硬盘。我这里就一块盘所以保持默认了。
  8. 选择出口网卡,我这里选择了eth1作为出口网卡,也是按照实际情况选择即可。
  9. 附加功能是否启用对实际使用关系不大,如果需要用就启用,我这里就跳过了。
  10. 最后检查摘要,没问题确认安装等待安装完成即可,安装过程相对漫长,可以稍等片刻。

部署客户虚拟机模板

按正常流程新建虚拟机然后安装操作系统,此处略过。

  1. 安装好操作系统后先安装Guest Tools

    中间可能会有1-2次重启。
  2. 修改网卡IP,DNS修改为域控制器的IP
  3. 回到AD域控制器,新建一个用户,该用户仅用于模板机
  4. 将模板机加域,使用刚才创建的账户登录,然后重启
  5. 重启后仍使用原账户登录,打开计算机管理-本地用户和组-组,将刚才在域控上新建用于模板机的账户加入Administrators组
  6. 注销原账户,使用刚才在域控上新建用于模板机的账户登录
  7. 使用域账户登录后禁用原机账户防止误登录到原账户
  8. 禁用防火墙
  9. 挂载XenDesktop的ISO镜像,选择XenDesktop启动,安装代理(VDA)
  10. 选择创建主映像
  11. 核心组件保持默认
  12. 附加组件全选就行
  13. 输入DDC的地址,仅接受域名,不支持IP地址
  14. 客户端功能根据实际情况选择
  15. 防火墙规则自动添加或者手动添加无所谓,因为我们前面已经禁用防火墙了
  16. 检查摘要没问题直接下一步安装即可,最后Smart Tools不连接到Citrix,安装完成后重启即可。
  17. 重启完成后进入模板机,正常安装软件和个性化配置,完成后关闭虚拟机。

虚拟云桌面交付

创建DHCP服务

该步骤仅用于没有DHCP的网络环境,如果你的网络环境中已经有了能够自动下发DHCP地址的DHCP服务器,请跳过此步。

本节将在当前网络环境中创建一个基于Windows Server的DHCP服务器。Citrix虚拟机云桌面下发时依靠DHCP分配地址,连接时依靠网络进行连接。

  1. 在任意具备与客户虚拟机在同一网络平面的网卡的服务器(我这里使用域控服务器)上打开“服务器管理器”,右上角管理-添加角色和功能,在“服务器角色”页面找到“DHCP服务器”,勾选并完成安装。
  2. 随后在服务器管理器-左侧栏找到DHCP,默认状态下要求配置安全组
    默认情况下使用默认配置即可
  3. 打开服务器管理器-右上角工具-DHCP,可见如下界面
    右键IPv4,新建作用域,下一步之后输入作用域名称和说明,随便写就可以

    随后配置IP分配范围和子网掩码

    配置排除范围,一般不需要配置

    设置租期,一般按照云桌面的使用频次和轮换次数确定

    现在配置网关和DNS,这个建议选择现在配置以便将网关和DNS都分发下去,一个是方便加域,一个是方便上网

    配置网关,就一个网关的话就写一个就行

    域名和DNS会继承本机网卡的值,一般没有问题的话用默认获取的就行,直接下一步

    WINS服务器一般用不到也没有,直接全留空下一步

    配置好后激活作用域就开始分发地址了
  4. 开始分发后即可在对应作用域下面的“地址租用”部分查看已经分配的IP地址和计算机信息

调整权限

这一步主要是解决后面可能无法创建虚拟机,提示“没有权限在默认OU或者指定OU创建计算机”的问题。

在域控服务器上打开“Active Directory用户和计算机”,将刚才创建的ddc用户加入Domain Admins组,然后确定保存,最后重启DDC服务器

创建计算机目录

  1. 在DDC服务器上打开Citrix Studio,创建计算机目录,操作系统选择桌面操作系统
  2. 选择“进行电源管理的计算机”和Citrix MCS
  3. 桌面体验按照实际需求选择
  4. 主映像选择刚才创建的模板机
  5. 创建多少台虚拟机按照自己的需求填写,我这里物理机性能不太行,就先创建两台测试了
  6. 计算机账户位置保持默认即可,账户命名方案按提示输入
  7. 最后检查摘要,填写计算机目录名称
    然后等待虚拟机创建完成

创建交付组

  1. 在Citrix Studio中右键点击左侧“交付组”,“创建交付组”,选择刚才创建好的计算机目录
  2. 选择“交付桌面”
  3. 用户部分根据实际情况选择OU,因为我这里的AD域专用于云桌面所以选择了允许全部用户
  4. 分配规则按照实际情况选择分配给哪个用户或者所有可登录的用户都能得到分配
  5. 检查摘要,没问题直接点击完成

检查StoreFront设置

在DDC服务器上,打开Citrix Studio,左侧栏选择“Citrix StoreFront”,右侧应该默认已经配置好了一个Store Service,然后在下面详细信息中可以查看Receiver for Web站点,下面的http://xxxxx/Citrix/StoreWeb就是云桌面的入口。

在浏览器打开它就可以看到Receiver for Web的页面。

创建用户

云桌面交付的最后一步是创建最终用户的账户,在AD域控服务器上新建账号,用于登录云桌面。

至此,部署完成。

其他问题

客户机上无管理员权限

确实是没有,我的解决办法是在制作模板机的时候把Domain Users组加入模板机的Administrators组,这样客户机自己也有管理员权限了。不过如此操作是否有安全风险还有待考虑

USB重定向

打开DDC服务器上的Citrix Studio,转到策略,编辑右侧默认策略(Unfiltered),找到“客户端USB设备重定向”,编辑为“启用”。

随后重新连接云桌面,此时在Desktop Viewer上即可看到设备重定向及设备管理选项。

Citrix Receiver 无法添加 HTTP 商店

打开Citrix Receiver后添加http连接的StoreFront提示无法添加,需要额外操作。

那么额外操作是什么呢?

这里分两种情况,客户机是32位还是64位。

  1. 打开注册表编辑器,定位到如下路径:
    x86
    1
    HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\Dazzle
    x64
    1
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\Dazzle
    其中AllowAddStore值更改为AAllowSavePwd值更改为A
  2. 再定位到如下路径:
    x86
    1
    HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\AuthManager
    x64
    1
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\AuthManager
    然后新建字符串ConnectionSecurityMode,值设定为Any

最后重启Citrix Receiver即可。

PVE LVM 扩容

2024-12-24 16:24:00

PVE 中 LVM 卷的扩容全过程以及相关解释。

环境介绍

目前服务器具备4块硬盘:2×1TB + 2×4TB,计划取出一块做系统盘(及ISO镜像、CT卷等),余下三块硬盘做LVM用于VM磁盘存储。硬件上不具备RAID卡,PVE版本为Linux 6.8.4-2-pve。

准备硬盘

目前服务器上所有硬盘均有数据,但数据不再需要将清零处理;其中1块1TB硬盘(/dev/sdb)已安装好系统,分区拓扑参考下表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@dell_t30:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 3.6T 0 disk
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 1007K 0 part
├─sdb2 8:18 0 1G 0 part /boot/efi
└─sdb3 8:19 0 930.5G 0 part
├─pve-swap 252:0 0 8G 0 lvm [SWAP]
├─pve-root 252:1 0 96G 0 lvm /
├─pve-data_tmeta 252:2 0 8.1G 0 lvm
│ └─pve-data 252:4 0 794.3G 0 lvm
└─pve-data_tdata 252:3 0 794.3G 0 lvm
└─pve-data 252:4 0 794.3G 0 lvm
sdc 8:32 0 931.5G 0 disk
sdd 8:48 0 3.6T 0 disk

可见其中pve-root分区仅被分到96GB,余下空间均分配给pve-data

下面来准备磁盘,其中sda、sdc、sdd三块硬盘需要组LVM,那么先对这三块盘进行准备,主要就是初始化分区表和建立空分区。新建立的分区不必格式化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@dell_t30:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): g
Created a new GPT disklabel (GUID: 89644091-xxxx-xxxx-xxxx-F1651C2CDBBA).

Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-7814037134, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-7814037134, default 7814035455):

Created a new partition 1 of type 'Linux filesystem' and of size 3.6 TiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

对余下两块盘做同样操作,这里不再赘述。

创建LVM及扩容

  1. 首先创建物理卷(PV):
    1
    2
    root@dell_t30:~# pvcreate /dev/sda1
    Physical volume "/dev/sda1" successfully created.
  2. 创建卷组(VG):
    1
    2
    root@dell_t30:~# vgcreate datastore0 /dev/sda1
    Volume group "datastore0" successfully created
    其中datastore0是我这里对VG的命名,可以随意修改;/dev/sda1是刚才创建好PV的磁盘
  3. 看一下VG状态及信息,确认卷组创建成功以及状态正常(vgdisplay
    1
    2
    3
    4
    root@dell_t30:~# vgs
    VG #PV #LV #SN Attr VSize VFree
    datastore0 1 0 0 wz--n- <3.64t <3.64t
    pve 1 3 0 wz--n- <930.51g 16.00g
  4. 扩容VG,把剩余磁盘都加入该VG
    1
    2
    3
    4
    5
    6
    root@dell_t30:~# vgextend datastore0 /dev/sdc1
    Physical volume "/dev/sdc1" successfully created.
    Volume group "datastore0" successfully extended
    root@dell_t30:~# vgextend datastore0 /dev/sdd1
    Physical volume "/dev/sdd1" successfully created.
    Volume group "datastore0" successfully extended
    看一下当前VG状态,确保所有硬盘都加入了:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    root@dell_t30:~# vgdisplay
    --- Volume group ---
    VG Name datastore0
    System ID
    Format lvm2
    Metadata Areas 3
    Metadata Sequence No 4
    VG Access read/write
    VG Status resizable
    MAX LV 0
    Cur LV 1
    Open LV 1
    Max PV 0
    Cur PV 3
    Act PV 3
    VG Size <8.19 TiB
    PE Size 4.00 MiB
    Total PE 2146188
    Alloc PE / Size 38400 / 150.00 GiB
    Free PE / Size 2107788 / 8.04 TiB
  5. 将新建LVM加入到PVE
    Web首页左侧点数据中心,中间点存储,添加,LVM,ID随便写,卷组选刚才创建的,启用勾选,内容按实际需求选择,添加即可。

系统卷扩容

我这里直接在Web里面把自动创建的LVM-Thin销毁掉,然后执行如下命令扩容pve-root

1
2
3
4
5
6
7
root@dell_t30:~# lvextend -rl +100%FREE /dev/mapper/pve-root
Size of logical volume pve/root changed from 96.00 GiB (24576 extents) to <922.51 GiB (236162 extents).
Logical volume pve/root successfully resized.
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/pve-root is mounted on /; on-line resizing required
old_desc_blocks = 12, new_desc_blocks = 116
The filesystem on /dev/mapper/pve-root is now 241829888 (4k) blocks long.

我这里resize2fs是自动的,如果没有自动执行可以手动执行一下。

Linux 网络聚合(bond方式)

2024-11-14 16:24:00

使用bond方式将四个千兆电口聚合为一个4Gbps的聚合口的记录。

环境介绍

  • 服务器:Dell R720
  • 系统:openEuler 20.03 (LTS-SP4)
  • 网卡:BCM5720 双口千兆电 LOM 网卡 * 2
  • 交换机:锐捷 S5760C-24GT8XS-X (S5760X_RGOS 12.5(4)B0701)

聚合操作

  1. 看一下网卡是否都正常:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [root@localhost ~]# lspci | grep Ethernet
    01:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
    01:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
    02:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
    02:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    2: eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master nm-bond state UP group default qlen 1000
    link/ether 90:b1:1c:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    3: eno2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master nm-bond state UP group default qlen 1000
    link/ether 90:b1:1c:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    4: eno3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master nm-bond state UP group default qlen 1000
    link/ether 90:b1:1c:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    5: eno4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master nm-bond state UP group default qlen 1000
    link/ether 90:b1:1c:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    可见网卡都在线、状态均为UP。
  2. 设置交换机启用聚合

    我这里使用了21-24共4个口用于聚合,端口类型为二层口,LACP为开启。
    另外“全局配置”的“流量平衡算法”我选择了“源目的IP和源目的L4端口”,这个暂时不清楚有什么影响,我选哪个感觉都不影响。

    最后给新创建的Ag聚合口配置VLAN(如有)即可。
  3. 使用nmtui将网卡加入bond组并设置必要参数

    这块主要操作就是添加bond类型的配置文件,然后把需要聚合的网卡加入到slave中,最后设置聚合(逻辑)接口的网络配置即可。
    按照逻辑上来讲此时设备应该已经可以正常联网了。
  4. 调整xmit_hash_policy参数
    首先通过ip -d link show查看当前分流策略:
    1
    2
    3
    6: nm-bond: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 90:b1:1c:xx:xx:xx brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 65535
    bond mode 802.3ad miimon 100 updelay 0 downdelay 0 peer_notif_delay 0 use_carrier 1 arp_interval 0 arp_validate none arp_all_targets any primary_reselect always fail_over_mac none xmit_hash_policy layer2 resend_igmp 1 num_grat_arp 1 all_slaves_active 0 min_links 0 lp_interval 1 packets_per_slave 1 lacp_rate slow ad_select stable ad_aggregator 1 ad_num_ports 4 ad_actor_key 9 ad_partner_key 66 ad_partner_mac ec:b9:70:xx:xx:xx ad_actor_sys_prio 65535 ad_user_port_key 0 ad_actor_system 00:00:00:00:00:00 tlb_dynamic_lb 1 addrgenmode none numtxqueues 16 numrxqueues 16 gso_max_size 65536 gso_max_segs 65535
    其中xmit_hash_policylayer2,即使用二层哈希进行流量分配。这里我们需要给它调整为layer3+4
    1
    nmcli connection modify "Bond connection 1" +bond.options xmit_hash_policy=layer3+4
    重启接口
    1
    nmcli d reapply nm-bond

资料补充

聚合方式简介

Linux网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6。

第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)
特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降

第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N

第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

第四种模式:mod=3,即:broadcast(广播策略)
特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

第五种模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的 是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应 性。
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定
条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
该模式的必要条件:ethtool支持获取每个slave的速率

第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达 时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上
当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答 不会被switch(交换机)阻截。
必要条件:
条件1:ethtool支持获取每个slave的速率;
条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管
其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量。

我这里只使用了mode4(802.3ad)方式聚合。

xmit_hash_policy 参数

在 bond 模式为 2、4、5 的情况下,支持通过修改传输 hash 策略改变数据包发送方式。在 debain9 系统上,就是通过修改 bond-xmit-hash-policy 改变 bond out 流量负载方式。

Linux 内核说明文件(英文)

参考资料

排名不分先后。

Citrix XenServer 7.2 部署教程

2024-11-05 16:24:00

部署 XenServer 7.2 。

部署环境简介

本次用于部署 XenServer 的是一台拼凑起来的 Dell R710 ,具备 2*Xeon E5504 + 96GB RAM + 2T SATA HDD + 140G SAS HDD。

XenServer 部署

安装 XenServer

  1. 挂载 XenServer 安装 CD 到服务器,我这里是在iDRAC里面挂载的
  2. 启动到XenServer的安装程序。
    我这里直接使用了UEFI模式安装,无需修改磁盘格式为MBR。
    如需修改GPT磁盘格式支持和(或)root分区大小可参考下方附录“调整磁盘 GPT 支持和 root 分区大小”。
  3. 选择键盘布局,这里默认美式键盘
  4. 同意EULA
  5. 选择主硬盘
  6. 选择存储
    Thin Provision是精简置备,如果需要为云桌面优化则需要勾选。
  7. 选择安装来源,这里是Local Media(本地媒体)
  8. 是否需要验证安装源,因为我这里iso肯定没问题且 iDRAC 6 的挂载特别慢,所以就跳过了
  9. 设置密码,这个密码是root密码
  10. 选择网卡
  11. 设置IP地址,我这里使用静态IP地址
  12. 设置DNS地址
  13. 选择区域
  14. 设置时间同步服务器(NTP),我这里就手动设置了
  15. 开始安装,等待安装完成。
  16. 是否安装补充包,这里没有就跳过了

    扩充包一般指的是Citrix的官方功能包、驱动盘或OEM、云厂商等制作的包含自动化安装脚本的镜像文件。

  17. 等待完成安装
    安装完成后卸载iso,然后回车重启即可

安装XenCenter

随后访问刚才设置的XenServer服务器的IP地址,里面可以下载XenCenter,XenCenter是XenServer的管理工具。

  1. 下载XenCenter
  2. 添加服务器
  3. 输入用户名和密码,然后等待连接完成即可

部署激活服务器

激活服务器是一个Windows的服务器,里面安装了授权工具和License。该授权服务器既可以是物理机也可以是虚拟机。这里我将授权服务器安装在XenServer里面。

准备CIFS服务器

首次在XenServer上创建虚拟机需要先准备一个用于存储ISO镜像的存储服务器,我这里以另外一台Windows Server 2019的物理机为例,如果是非服务器版本这一步骤还需要给服务器添加一个密码以启用共享。

  1. 打开服务器管理器,找到管理-添加角色和功能
  2. 勾选“SMB 1.0/CIFS File Sharing Support”组件,然后一直下一步直至完成,最后重启即可。

注意:

  1. 启用SMB 1.0协议可能在某些场景中造成严重的安全问题,生产环境请做好网络隔离;
  2. 在非服务器版本中可通过控制面板->程序和功能->启用或关闭Windows功能中找到并启用该功能。

最后只需要共享包含iso镜像的文件夹即可。

添加CIFS服务器

打开XenCenter,左侧选择当前服务器,右侧选择“Storage”选项卡,然后下面点击“New SR”,然后选择“Windows File Sharing(SMB/CIFS)”,然后下一步

存储库名称可以随便写,介绍也可以自动生成。

最后填写地址、用户名和密码即可。

安装激活服务器虚拟机的操作系统

激活服务器需要的性能并不高,我这里创建了 1c 1.5g 的虚拟机用于激活程序,打算安装 Windows Server 2012 R2 。

创建过程中会自动扫描存储库内的镜像文件,创建过程中选择正确的镜像即可。

创建好后切换到“Console”选项卡即可看到虚拟机的控制台,随后正常安装操作系统、配置网络和一些必备项即可。

注意修改服务器计算机名为CTXLic

安装激活服务器

  1. 挂载含有授权服务器程序的iso镜像到虚拟机。
  2. 安装Citrix Licensing
  3. 安装基本上的话就是一直下一步就行
  4. 导入License即可

最后激活的话就是选中服务器,然后Tools -> License Manager

然后“Assign License”,最后输入IP地址和端口号,选择正确的License类型,如果 License 正确且有效,随后点击“OK”即可激活。

附录

调整磁盘 GPT 支持和 root 分区大小

  1. 启动按F2,进入高级模式安装
  2. 键入shell进入高级安装模式命令行
  3. 调整磁盘GPT支持和root分区大小。输入命令,编辑文档
    1
    vi /opt/xensorce/installer/constants.py
  4. 按↓方向键,一直浏览到大约60%,找到红色框线的值
  5. 修改成下面的值
    • 关闭对 GPT 磁盘的支持,使用MBR磁盘
      1
      GPT_SUPPORT = False
    • 把默认的 root 分区 4096 默认值修改成 20480 MB
      1
      root_size = 20480
  6. 保存退出后正常安装即可。

在 Windows Server 2019 上安装 AMD 显卡驱动

2024-10-31 16:24:00

不知道为啥AMD显卡驱动不能安装在Windows Server上,真无语…

  1. 首先从AMD官网正常下载你显卡的驱动包,然后双击点开等待出现错误。
  2. 打开电脑设备管理器,找到显卡然后查看一下硬件ID

    把圈红框的一整行复制出来,粘贴保存,之后要用。
  3. 显卡驱动正常安装出现报错后找到一开始解压的位置,按如下路径找到INF文件:
    1
    .\amd_Radeon_27.20.20913.2000_w1064\Packages\Drivers\Display\WT6A_INF\
  4. 该文件夹下有一个U0382934.inf文件,使用文本编辑器打开该文件。
    拿出刚才保存的硬件ID,我的硬件ID是这样的:
    1
    PCI\VEN_1002&DEV_683F&SUBSYS_A013174B&REV_00
    其中VEN指的是制造商,DEV指的是设备ID,我这里是683F,那么先在刚才的U0382934.inf文件中搜索一下683F,得到如下行:
    1
    %AMD683F.1%" = ati2mtag_R575A, PCI\VEN_1002&DEV_683F
    将该行最后一段修改为上面记录的硬件ID:
    1
    "%AMD683F.1%" = ati2mtag_R575A, PCI\VEN_1002&DEV_683F&SUBSYS_300D1043
    保存退出。
  5. 因为我们现在修改过驱动文件,原签名已经失效,因此需要执行如下命令将系统置于禁用驱动签名检测和测试模式:
    1
    2
    bcdedit -set loadoptions DISABLE_INTEGRITY_CHECKS
    bcdedit -set TESTSIGNING ON
    随后立即重启。
  6. 打开设备管理器,更新驱动程序:

    选择“可用驱动程序”

    选择“从磁盘安装”,找到刚才修改的INF文件,最后选择新出来的设备型号等待安装完成。

    中间可能会提示“无法验证软件发布者”,选择“始终安装”即可。
  7. 安装完成后退出测试模式重启
    1
    2
    bcdedit -set loadoptions ENABLE_INTEGRITY_CHECKS
    bcdedit -set TESTSIGNING OFF