深信服超融合平台部署Ubuntu 22.04 LTS实战指南与深度优化
1. 项目缘起:为什么要在深信服超融合上部署Ubuntu 22.04 LTS?
最近在帮一个做边缘计算项目的团队做基础环境搭建,他们选型了深信服超融合平台作为底层基础设施,而业务应用则计划跑在Ubuntu 22.04 LTS上。这个组合听起来挺常规,但真上手部署时,我发现从官方文档到社区经验,关于在深信服超融合上部署Ubuntu的细节分享并不多,尤其是针对22.04这个长期支持版本。很多朋友可能觉得,这不就是在虚拟化平台上装个Linux嘛,有什么难的?但实际操作下来,从镜像准备、虚拟机配置、驱动兼容到网络存储的优化,每一步都有一些“坑”和“最佳实践”值得说道。特别是深信服超融合平台(HCI)本身的一些特性,比如它集成的分布式存储、虚拟网络和安全策略,与Ubuntu系统结合时,需要一些特别的配置才能发挥出“1+1>2”的效果。这篇文章,我就把自己从零开始,在深信服超融合上成功部署并优化Ubuntu 22.04 LTS的完整过程、踩过的坑以及最终验证有效的配置方案,详细地梳理出来。无论你是IT运维、系统架构师,还是正在评估超融合方案的开发者,希望这份实战记录都能给你带来直接的参考价值。
2. 部署前的核心准备:镜像、平台与规划
在点击“创建虚拟机”按钮之前,充分的准备工作能避免后续80%的麻烦。这一部分,我们重点解决三个问题:用什么镜像、平台环境什么样、虚拟机怎么规划。
2.1 Ubuntu 22.04 LTS镜像的选择与预处理
首先,镜像的来源至关重要。强烈建议从Ubuntu官方镜像站(例如releases.ubuntu.com)下载ubuntu-22.04.4-live-server-amd64.iso这个服务器版本的ISO文件。为什么不选桌面版?对于服务器环境,桌面版会引入大量不必要的GUI组件,消耗更多资源且增加潜在的安全风险。服务器版默认没有图形界面,更轻量、更安全,也符合大多数生产环境的需求。
下载完成后,一个容易被忽略但极其重要的步骤是:验证镜像的完整性。你可以通过对比官方提供的SHA256校验和来完成。在Linux或Mac终端,使用sha256sum ubuntu-22.04.4-live-server-amd64.iso命令计算你下载文件的哈希值,并与官网公布的校验和进行比对。这一步能确保你下载的镜像在传输过程中没有损坏或被篡改,是从源头保证系统安全的第一步。
接下来,你需要将这个ISO文件上传到深信服超融合平台。登录超融合管理平台,进入“存储”或“资源”相关菜单,找到“镜像管理”或“ISO库”的功能。在这里创建一个新的镜像仓库(如果尚未有的话),然后通过Web界面上传你的Ubuntu ISO文件。上传速度取决于你的网络和平台性能,耐心等待即可。上传成功后,该镜像会出现在平台的镜像列表中,供创建虚拟机时挂载使用。
2.2 深信服超融合平台环境确认
在部署前,你需要对目标超融合集群有一个清晰的了解。登录到深信服超融合的管理控制台(通常是一个Web地址),你需要确认以下几点:
- 集群资源状态:查看集群总体的CPU、内存、存储使用情况,确保有足够的空闲资源用于部署新的Ubuntu虚拟机。超融合的魅力在于资源池化,但物理资源终究是有限的。
- 存储策略:了解平台提供的存储类型,例如是高性能的SSD存储池,还是大容量的SATA存储池。Ubuntu系统盘建议放在高性能存储上以获得更快的IO响应。同时,确认存储的冗余策略(如副本数),这关系到数据的可靠性。
- 网络配置:确认你计划将虚拟机接入哪个虚拟交换机或端口组。这个网络需要能够访问互联网(用于安装过程中下载更新和软件包),以及与你内部的管理网络、业务网络互通。记录下网络的名称、VLAN ID(如果有)以及网关、DNS服务器地址。这些信息在安装Ubuntu配置网络时会用到。
- 平台版本:记录下深信服超融合平台的详细版本号。不同版本可能在虚拟硬件支持、驱动集成或管理接口上有细微差别。当遇到问题时,准确的版本信息有助于快速定位。
2.3 虚拟机规格的详细规划
创建虚拟机不是简单地分配资源,而是要根据业务负载进行精细化规划。以下是我的规划思路,你可以根据实际情况调整:
- CPU与内存:对于初始的Ubuntu 22.04服务器,2核4GB内存是一个不错的起点,足以运行Web服务、数据库或应用中间件。如果后续运行Docker或内存密集型应用,可以预留更多。在深信服平台上,可以设置“预留”、“限制”和“份额”。对于生产环境,我建议为CPU和内存设置“预留”,以保证虚拟机在任何时候都能获得承诺的资源,避免资源争抢导致服务不稳定。
- 系统磁盘:系统盘大小建议不少于40GB。虽然最小安装可能只需要10GB左右,但考虑到日志增长、软件安装和系统更新,预留充足的空间是明智的。磁盘格式选择平台推荐的即可(如Thin Provision,即精简配置),它可以按需分配物理空间,提高存储利用率。但要注意监控实际使用量,避免过度承诺。
- 数据磁盘:如果你的应用需要单独存储数据(比如数据库文件、网站静态资源),强烈建议添加额外的独立数据磁盘。这样做的好处是,系统盘和数据盘分离,便于后续的备份、扩容和迁移。例如,你可以添加一块100GB的独立磁盘,挂载到
/data目录。 - 虚拟硬件版本与类型:选择平台推荐的、兼容性最好的虚拟硬件版本。对于网卡型号,在深信服平台上,
VMXNET3是首选。它是一种准虚拟化网卡,性能远高于默认的E1000模拟网卡,能提供接近物理网卡的吞吐量和更低的CPU占用率。确保在创建虚拟机时选中它。 - 引导选项:确认虚拟机的引导顺序设置为从CD/DVD(即你上传的ISO镜像)优先启动,以便进行系统安装。
3. 步步为营:Ubuntu 22.04 LTS安装与初始配置详解
万事俱备,现在可以开始创建并安装虚拟机了。这个过程虽然大部分是图形化操作,但有几个关键选择点直接影响后续使用的便利性和安全性。
3.1 创建虚拟机与安装过程的关键选择
在深信服超融合管理平台,找到“虚拟机”或“计算”菜单,点击“创建虚拟机”。按照上一步的规划,填写虚拟机名称(如ubuntu-2204-prod-01),选择正确的操作系统系列(Linux)和版本(Ubuntu Linux 64位),分配CPU、内存,选择系统盘和ISO镜像,网络选择配置了VMXNET3网卡的端口组。
创建完成后,打开虚拟机控制台,启动虚拟机。系统会从ISO镜像引导,进入Ubuntu Server安装界面。
- 语言与键盘:选择English(United States)作为安装语言。这可以避免后续在终端中遇到非英文字符路径或软件包依赖的潜在编码问题。键盘布局根据实际情况选择。
- 网络连接:这是第一个关键点。安装程序会自动探测网络。请务必在此处配置正确的IP地址、网关和DNS。不要选择DHCP,除非你的环境有稳定的DHCP服务并能保证分配固定IP。手动配置静态IP可以确保虚拟机在重启后网络配置不变,这对于服务器至关重要。填入你在平台规划阶段记录的网络信息。
- 镜像地址:为了加速安装过程中的软件包下载,建议将默认的
archive.ubuntu.com替换为国内的镜像源,例如阿里云镜像mirrors.aliyun.com。这能极大提升安装速度。 - 存储配置:通常选择“使用整个磁盘”并设置LVM(逻辑卷管理)。LVM提供了巨大的灵活性,允许你在未来动态调整分区大小而无需重启。在分区方案中,我建议创建一个单独的
/boot/efi分区(如果采用UEFI引导,约500MB),一个/boot分区(约1GB),剩下的空间全部给根分区/。对于有数据盘的情况,可以在系统安装完成后,再对额外的磁盘进行分区和挂载。 - 用户设置:设置服务器的主机名(hostname),创建一个具有sudo权限的非root用户(例如
admin)。绝对不要启用自动登录,也不要设置空密码。为root用户和新建的用户设置强密码。 - SSH服务器:在软件选择环节,务必勾选“Install OpenSSH server”。这样安装完成后,你就可以直接通过SSH远程连接服务器,无需再依赖平台的控制台,操作和管理会方便得多。其他软件包如Docker、Web服务器等,可以根据需要选择,但为了系统纯净,我通常只选SSH,其他软件后续按需安装。
- 安装GRUB:最后,选择将GRUB引导程序安装到系统磁盘(通常是
/dev/sda)。
安装完成后,系统会提示重启。重启前,记得在深信服超融合平台的管理界面中,将虚拟机的CD/DVD驱动器与ISO镜像断开连接,否则虚拟机会再次从ISO启动,进入安装循环。
3.2 首次启动后的“必做”清单
系统重启并首次登录后,不要急于部署应用。先完成下面这几项基础优化和配置,能让系统更安全、更高效。
更新系统与安装必备工具:
sudo apt update && sudo apt upgrade -y sudo apt install -y vim net-tools htop curl wget gitvim是高效的文本编辑器,net-tools包含ifconfig等传统网络工具(虽然ip命令更现代),htop是增强版的进程查看器,curl、wget、git则是开发运维的常用工具。配置静态IP(复查与固化):尽管安装时配置了网络,但安装程序配置的
netplan文件有时可能不完美。检查/etc/netplan/目录下的YAML配置文件(如00-installer-config.yaml),确保其内容与你规划的静态IP一致。一个典型的配置如下:network: version: 2 ethernets: ens192: # 网卡名,请使用 `ip a` 命令查看实际名称,VMXNET3网卡可能显示为ens开头 addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114] dhcp4: no修改后,应用配置:
sudo netplan apply。然后使用ip addr show和ping命令测试网络连通性。优化APT镜像源:将系统软件源永久更换为国内镜像,大幅提升后续软件安装和更新的速度。备份原有源列表后,编辑
/etc/apt/sources.list文件,将archive.ubuntu.com和security.ubuntu.com替换为mirrors.aliyun.com或你偏好的其他国内镜像站。配置SSH安全加固:
- 禁用root用户SSH登录:编辑
/etc/ssh/sshd_config,设置PermitRootLogin no。 - 修改SSH默认端口(可选但推荐):将
Port 22改为一个非标准端口(如Port 2222),可以减少自动化攻击脚本的扫描。 - 使用密钥对认证:生成SSH密钥对,将公钥上传到服务器的
~/.ssh/authorized_keys文件中,并设置PasswordAuthentication no。这是比密码更安全的方式。 每次修改SSH配置后,都需要重启服务:sudo systemctl restart sshd。重要提示:在禁用密码登录和修改端口前,务必确保密钥认证已经成功配置,并且新端口防火墙已放行,否则可能导致自己无法登录。
- 禁用root用户SSH登录:编辑
配置防火墙:Ubuntu默认使用
ufw防火墙。启用并配置它:sudo ufw enable # 启用防火墙 sudo ufw allow 2222/tcp # 允许新的SSH端口 sudo ufw allow 80/tcp # 如果运行Web服务,放行80端口 sudo ufw allow 443/tcp # 放行HTTPS端口 sudo ufw status verbose # 查看规则
4. 深度调优:让Ubuntu在超融合平台上跑得更稳更快
基础系统装好了,但这只是开始。要让Ubuntu 22.04在深信服超融合环境中发挥最佳性能,并满足企业级应用的稳定性要求,还需要进行一系列深度调优。
4.1 安装与优化VMware Tools(open-vm-tools)
虽然深信服超融合不完全等同于VMware,但其虚拟化层通常高度兼容VMware的接口。因此,安装open-vm-tools是至关重要的一步。这个工具集提供了虚拟机与宿主机(超融合平台)之间更好的集成功能,包括:
- 优雅关闭与重启:允许从超融合平台控制台向虚拟机发送关机信号。
- 时间同步:使虚拟机与宿主机保持时间同步,避免时间漂移。
- 性能监控:向宿主机报告虚拟机的性能数据(CPU、内存、磁盘IO等)。
- 剪贴板共享(在桌面版中)等。
安装命令非常简单:sudo apt install -y open-vm-tools。对于服务器,通常还需要安装open-vm-tools-desktop(如果不需要图形功能则不必装)。
安装后,需要重点优化时间同步。默认情况下,Ubuntu使用systemd-timesyncd进行时间同步。但在虚拟化环境中,更推荐使用open-vm-tools自带的时间同步机制,并禁用其他同步服务,以避免冲突。
- 编辑
/etc/vmware-tools/tools.conf文件(如果不存在则创建):[guestinfo] primary-nics=ens192 # 替换为你的主网卡名 [timesync] syncTime=1 - 禁用
systemd-timesyncd:sudo timedatectl set-ntp false。 - 重启
open-vm-tools服务:sudo systemctl restart open-vm-tools。
你可以通过vmware-toolbox-cmd命令来检查工具运行状态,例如vmware-toolbox-cmd timesync status。
4.2 内核参数与系统性能调优
针对服务器负载,调整一些内核参数可以提升网络性能和系统稳定性。
调整文件描述符与进程数限制:对于高并发应用(如Web服务器、数据库),需要增加系统允许打开的文件数量和进程数量。编辑
/etc/security/limits.conf文件,在末尾添加:* soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536这将对所有用户生效。更精细的控制可以针对特定用户(如
www-data)设置。网络参数优化:编辑
/etc/sysctl.conf文件,添加或修改以下参数,以提升TCP连接性能和应对高并发:# 避免TIME_WAIT状态过多 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 # 注意:在NAT环境下建议为0,避免问题 # 扩大端口范围 net.ipv4.ip_local_port_range = 1024 65535 # 增大TCP缓冲区大小 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # 应对SYN Flood攻击 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 8192 # 允许转发(如果做网关或Docker主机需要) # net.ipv4.ip_forward = 1使配置生效:
sudo sysctl -p。
4.3 存储与磁盘I/O优化
在超融合环境中,存储通常是分布式和网络化的。虽然平台层面已经做了很多优化,但在操作系统层面,我们仍可以做一些事情来提升磁盘IO表现。
调整I/O调度器:对于SSD或高速存储,将I/O调度器设置为
none(noop) 或kyber通常能获得更好的性能。你可以通过以下命令查看和修改:# 查看当前磁盘的调度器 cat /sys/block/sda/queue/scheduler # 临时修改为none(重启失效) echo none | sudo tee /sys/block/sda/queue/scheduler为了永久生效,可以创建udev规则。新建文件
/etc/udev/rules.d/60-io-scheduler.rules,添加:ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="none"挂载选项优化:在
/etc/fstab中配置数据盘的挂载选项时,可以考虑添加noatime,nodiratime选项。atime是每次访问文件时更新其访问时间戳,这会导致大量的额外磁盘写操作。禁用它可以减少IO压力,提升性能。例如:/dev/sdb1 /data ext4 defaults,noatime,nodiratime 0 2注意:对于系统根分区,谨慎修改挂载选项,避免影响系统功能。
安装并配置性能监控工具:安装
iostat(sudo apt install sysstat) 来监控磁盘IO性能。使用iostat -dx 2可以每2秒刷新一次磁盘的详细使用情况,包括await(平均等待时间)、util(利用率) 等关键指标,帮助你判断存储是否成为瓶颈。
5. 实战场景集成:Docker与常见服务部署指南
一个纯净、优化过的Ubuntu服务器是完美的画布。接下来,我们看看如何在这上面部署一些常见的服务,特别是结合超融合环境的特点。
5.1 Docker引擎的安装与配置
Docker几乎是现代应用部署的标准。在Ubuntu 22.04上安装Docker官方版本是最佳选择。
卸载旧版本(如果有):
sudo apt remove docker docker-engine docker.io containerd runc设置Docker的APT仓库:
sudo apt update sudo apt install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null安装Docker引擎:
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin验证安装:
sudo docker run hello-world。如果能看到欢迎信息,说明安装成功。优化Docker配置:
- 使用国内镜像加速:编辑或创建
/etc/docker/daemon.json,添加镜像加速器地址(以阿里云为例,需注册获取专属加速地址):{ "registry-mirrors": ["https://your-mirror.mirror.aliyuncs.com"], "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } - 调整存储位置(可选):默认Docker镜像和容器存储在
/var/lib/docker,如果系统盘空间紧张,可以将其迁移到数据盘。更推荐的做法是,在创建数据盘时就直接规划一个分区或逻辑卷,在安装Docker前,将其挂载到/var/lib/docker。 - 重启Docker:
sudo systemctl restart docker。
- 使用国内镜像加速:编辑或创建
5.2 在超融合环境下部署有状态服务的考量
在超融合平台上运行数据库(如MySQL、PostgreSQL)、消息队列(如Redis)等有状态服务时,需要特别关注数据持久化和高可用。
数据持久化:永远不要将数据库数据目录放在容器内部或临时存储中。必须通过Docker的
-v参数或Compose文件中的volumes映射,将宿主机上的一个持久化目录(最好是独立的数据盘分区)挂载到容器内的数据目录。例如:docker run -d \ --name mysql \ -v /data/mysql:/var/lib/mysql \ # 将宿主机/data/mysql映射到容器内 -e MYSQL_ROOT_PASSWORD=your_strong_password \ mysql:8.0这里的
/data/mysql就是宿主机上独立数据盘的一个目录。利用超融合存储特性:深信服超融合的分布式存储通常提供快照、克隆、复制等高级功能。你可以结合这些功能来增强数据保护。例如,定期对运行数据库的虚拟机创建一致性快照,作为数据备份的一种手段。但请注意,这不能替代应用层的定期逻辑备份。
资源隔离与限制:对于数据库这类关键服务,在创建Docker容器时,可以使用
--cpus、--memory、--memory-swap等参数来限制其资源使用,防止单个容器耗尽宿主机资源,影响同一虚拟机上的其他服务。这与在超融合平台层面为虚拟机设置资源限制是相辅相成的。
5.3 一个示例:使用Docker Compose部署Web应用栈
假设我们要部署一个典型的Web应用栈:Nginx + Python (Django/Flask) + PostgreSQL。使用Docker Compose可以轻松管理。
- 在宿主机上创建一个项目目录,例如
/opt/myapp。 - 在该目录下创建
docker-compose.yml文件:version: '3.8' services: db: image: postgres:15 container_name: postgres_db restart: unless-stopped environment: POSTGRES_DB: myappdb POSTGRES_USER: myappuser POSTGRES_PASSWORD: strong_db_password volumes: - /data/postgres:/var/lib/postgresql/data # 持久化数据 networks: - app-network web: build: ./web # 假设你的Python应用Dockerfile在此目录 container_name: django_app restart: unless-stopped depends_on: - db environment: DATABASE_URL: postgres://myappuser:strong_db_password@db:5432/myappdb volumes: - ./web/static:/app/static # 开发时挂载代码,生产环境建议直接构建进镜像 networks: - app-network nginx: image: nginx:alpine container_name: nginx_proxy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./nginx/conf.d:/etc/nginx/conf.d:ro # Nginx配置 - ./web/static:/usr/share/nginx/html/static:ro # 静态文件 - /etc/letsencrypt:/etc/letsencrypt:ro # SSL证书(如果启用HTTPS) depends_on: - web networks: - app-network networks: app-network: driver: bridge - 配置好各个服务的文件(Dockerfile, Nginx配置等)。
- 在
/opt/myapp目录下运行docker compose up -d,整个应用栈就会在后台启动。
这种部署方式清晰地将服务隔离在独立的容器中,通过自定义网络通信,并通过卷(volumes)将关键数据(数据库、静态文件、配置)持久化在宿主机上。在深信服超融合平台上,你可以轻松地为这个Ubuntu虚拟机创建快照,或者在资源不足时,利用平台的弹性扩容功能,为虚拟机增加CPU、内存或存储,而Docker Compose编排的服务可以无缝适应这些底层资源的变化。
