免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

曙光ParaStor分布式存储架构解析与部署调优实战

曙光ParaStor分布式存储架构解析与部署调优实战 简介曙光 ParaStor 云存储系统设计方案以 PDF 文档形式呈现面向存储规划、系统架构与售前方案设计人员系统讲解国产分布式文件系统的定位与落地思路。文档从 2015 年存储市场格局切入给出中国区 NAS IDC 排名、Scale-out NAS 增速等关键数据帮助读者理解传统阵列向分布式架构演进的必然性随后展开 ParaStor 的集群 NAS 形态、索引控制器与数据控制器分离的非对称架构并与 Lustre、Ceph、GlusterFS、GPFS 等主流方案比较清晰界定分布式与 SAN 共享式、全对称与非对称四种架构的优劣。内容预览中还包含 2U24/4U36 等硬件规格、多副本与纠删码冗余机制以及科研计算、视频监控、云计算等适用场景整体实用性较强。资源包共 1 个 PDF 文件大小 3.39MB轻量易读目前已吸引 207 人浏览学习适合作为分布式存储技术调研与方案选型的快速参考。1. 曙光 ParaStor 云存储系统的真正定位它解决的是“共享”和“扩展”两个问题很多人在第一次翻阅《曙光 ParaStor 云存储系统》这份技术文档时会被里面 MDS、OSS、MS、NFS、POSIX 这一堆缩写拦住以为这是一套要在机房从零搭起来的“私有云网盘”。实际上 ParaStor 是典型的分布式共享存储系统核心解决的是两个问题多台服务器同时读写同一份数据以及容量和性能可以横向叠加。和普通 NAS 相比它把元数据服务和数据存储拆开部署控制节点挂掉不会影响已经打开的数据通道和本地盘相比它从协议层就支持多副本和强一致策略。适合 HPC 超算、AI 训练集群、广电渲染、云计算资源池这类对带宽和并发有硬性要求的场景。本文按照一名系统工程师从选型、部署到调优的视角把文档之外真正需要执行的步骤串一遍。2. 先拆 ParaStor 的架构与数据通路配置前心里才有底2.1 ParaStor 的四种节点类型与管理面分工ParaStor 遵循分布式并行文件系统的经典三段式管理面、元数据面、数据面。在标准部署里这三类面的职责由不同类型节点承担搞清楚它们各自的边界是后续一切配置的前提。节点类型角色常见部署形态故障影响管理节点MS集群配置、用户/权限、告警、监控2 台做 HA或部署在 KVM/VMware 虚机上只影响管理和新连接建立不阻断已建立的数据 I/O元数据节点MDS维护目录树、文件属性、锁、配额2~N 台按文件数量横向扩元数据涉及的文件路径会间歇不可用数据面不受影响存储节点OSS保存数据块处理读写请求多台通常每台挂多块 NL-SAS/SSD 盘单台故障时对应副本仍在读写由其他节点接管业务基本不感知把元数据服务层单独拆出来是 ParaStor 与“多台服务器拼一个分布式文件系统”这种简化方案的重要区别。元数据节点不参与数据搬移只应答路径解析、属性查询、锁申请这类轻量请求数据流量全部直接跑在客户端与存储节点之间。基于这个架构你才能在不影响已有数据访问的前提下逐个替换磁盘、扩容节点这也是它经常被用于七成在线数据、三成归档数据的混合云资源池里的原因。管理面的命令行一般以 eshow / ecli 这套前缀开头工程上最常用的一个检查命令就是拉全量节点状态eshow node -a输出会列出集群内每个节点的 IP、角色、状态UP/DOWN/UNKNOWN和最近心跳时间。即使你平时习惯用 Web GUI 管理 ParaStor也建议习惯这个命令因为排障时大量操作是 SSH 进管理节点之后在命令行里完成的而不是等页面刷新。参数说明-a表示 all把所有节点不分角色全部列出。如果你的环境节点多可以换成-n nodeXX只看某个节点输出更短。看到 UNKNOWN 状态时优先查管理网交换机和时间同步而不是去存储节点上重装服务。时钟漂移在分布式存储里最容易暴露成心跳中断NTP 服务务必在初始化前就配好。2.2 客户端读写的实际路径先问元数据再直连数据节点在云存储或 NAS 共享场景里使用方最关心的是“读写的路到底怎么走”。ParaStor 的读写路径分两段客户端先向任何一个 MDS 发起路径解析请求拿到文件所在 OSS 的地址和对象 ID随后客户端直接与该 OSS 建立数据连接完成真正的读或写。中间不经过 MDS 转发数据所以 MDS 只承担元数据操作带来的压力数据流量都分布在 OSS 之间。提示客户端挂载后用mount | grep parastor看到的挂载点信息里只包含 MDS 地址而不含 OSS 地址这就是因为 OSS 地址是动态下发的每次打开文件都可能拿到不同节点。这条路径的直接效果是MDS 上不会出现大量网络包堆积只要 OSS 的网卡和磁盘带宽够客户端几乎能把存储节点的端口跑满。另一个隐含点是客户端需要足够高的并发连接数才能把多个 OSS 节点都用起来。所以在后面的调优环节里客户端挂载参数和网卡队列长度往往比服务端调优更先见效。这条路径也解释了为什么 ParaStor 对外既能兼容 POSIX给 Linux 直接挂载又能通过 NFS 提供给 Kubernetes 或 OpenStack 使用。本质上这些协议都在处理同一套全局命名空间区别只在于客户端侧用哪个协议翻译工具来发起请求。理解这一点就不会在“到底是建文件系统还是建对象存储”这种选择上纠结太久ParaStor 的文件系统层是通用的对象接口只是加在文件系统之上的另一种访问方式。3. 部署 ParaStor从控制端初始化到云存储网络挂载的六个关键动作3.1 安装前的网络规划业务、存储、管理三网隔离ParaStor 部署中最容易返工的不是软件安装而是网络规划。文档里一般会要求规划三类网段但实际项目里很多人偷懒只用一套 10GbE结果后期一扩容就被广播和拥塞拖慢。网络平面承载流量推荐带宽是否允许跨交换机管理网集群心跳、GUI、命令行1GbE 起步可以但延迟要稳定存储网MDS 与 OSS 之间、OSS 之间复制25GbE 起步AI/渲染建议 100GbE不建议跨三层二层直连最佳业务网客户端到 MDS/OSS 的访问至少 10GbE按业务分区尽量收敛具体操作时先给每个节点配好管理 IP然后确认存储网交换机端口的 MTU 统一改成 9000。MTU 不匹配导致的性能劣化在 ParaStor 上表现得很隐蔽小文件读写正常大文件顺序读写吞吐只有预期的一半。这类问题查起来非常费时间所以建议在初始化前把交换机、节点网卡以及最终要挂载的客户端网卡全部设置成一致的 jumbo frame。做完之后的验证命令如下ping -M do -s 8972 192.168.100.10命令里-M do表示不切片直接发送-s 8972加上 IP 头 28 字节正好是 9000 的 MTU。如果客户端到任一存储节点都能 ping 通说明二层路径上的 MTU 是通的任何一段不通都先查交换机端口配置不要急着改存储服务参数。3.2 初始化集群与创建存储池的命令步骤拿到已经烧录好系统的 ParaStor 节点在管理节点上用初始化脚本把存储节点拉进集群是第一步。常见做法是先在管理节点上配置主机清单再执行集群初始化命令把存储节点拉入集群。# 在管理节点上添加存储节点并初始化集群 esecret cluster init --node-list 192.168.100.11,192.168.100.12,192.168.100.13 \ --storage-net 192.168.200.0/24 --admin-user admin # 查看初始化后集群状态 eshow cluster status参数里--node-list写的是存储节点的管理 IP--storage-net是存储数据网段。这一步完成后每个存储节点的本地盘还处于未加入存储池的状态后续创建存储池时才真正把盘纳管进来。创建存储池的命令形态通常是这样的# 创建一个名为 fast_pool 的存储池副本数 2使用 SSD 盘 ecli pool create --name fast_pool --replica 2 --media ssd创建完成后再用文件系统创建命令把它暴露成可挂载的共享文件系统。这里有一个关键选择副本数建议至少 2不要为了省容量开单副本除非你接受丢数据的可能性。容量规划里要把副本数直接乘进总容量估算比如业务需要 500TB 裸容量副本 2 的实际占用就是 1PB。这个数字要在项目立项阶段就写进方案否则后期扩容申请会让你很被动。3.3 导出文件系统并在 Linux 客户端完成挂载ParaStor 把“存储池”和“文件系统”分开管理文件系统建立在存储池之上。创建完文件系统后需要在管理端配置共享/导出规则才能在客户端挂载# 创建共享把 fs1 以 POSIX 协议导出给 10.0.0.0/24 网段可读写 ecli export create --fs fs1 --protocol posix --client 10.0.0.0/24 --rw然后客户端侧执行mkdir -p /mnt/para mount -t parastor -o rw,noatime,rsize1M,wsize1M 10.10.0.1:/fs1 /mnt/pararsize和wsize是读写块大小默认可能是 4K 或 1M顺序读写场景务必调成 1M 或更高。挂载成功后用df -h看到容量并不代表配置完成强烈建议先跑一轮 fio 或 dd 确认实际读写吞吐再通知业务方接入。很多人挂载成功就直接把应用迁上去结果等到晚上备份任务一跑才发现只有一台存储节点在干活吞吐完全不对。把共享配置写入开机自动挂载时记得在/etc/fstab里加上_netdev选项避免系统在存储网络就绪前就尝试挂载导致启动报错。如果你是给 K8s 用则建议用 PV/PVC 方式接入不要在宿主机上直接改 fstab否则节点重建后容易留下孤立的挂载点。4. ParaStor 性能与数据保护的关键参数照着调不踩坑4.1 客户端侧的三类关键参数ParaStor 的性能瓶颈多数不在磁盘而在客户端与存储之间的链路。这里给出排序后的检查优先级。第一是挂载块大小。前面提到过顺序吞吐场景把 rsize/wsize 设为 1M小文件随机读场景反而要调小到 256K避免一次请求拉取太多无关块。这个参数不要求全局统一可以按客户端角色差异化配置。跑 AI 训练的节点用大块跑数据库的节点用小一点各自挂载参数独立设置。第二是网卡队列。对比一下默认值和调优后的表现# 查看网卡队列数 ethtool -l eth0 # 提高队列数到 8需要网卡驱动支持 ethtool -L eth0 combined 8 # 开启网卡硬中断自适应合并 ethtool -C eth0 adaptive-rx on adaptive-tx on命令里的combined是收发的合并队列数量。ParaStor 多节点并发访问时队列太少会出现单核软中断打满的情况表现为吞吐上不去但 CPU 占用很低。adaptive-rx/tx让网卡根据流量自动合并中断减少 CPU 开销。确认修改是否生效用ethtool -l eth0再看一次如果显示的数量仍是旧的说明驱动不支持不用强求。第三是挂载方式的选择。如果只是给 Kubernetes 或 OpenStack 提供存储NFS 挂载最省事但并发大时建议切换到原生 parastor 文件系统协议能省掉一层协议转换开销。三种连接方式的取舍如下方式适用场景吞吐表现运维难度parastor 原生挂载Linux 物理机/虚拟机内部最佳需要装客户端包NFS/CIFSKubernetes、传统应用、Windows中低S3归档、对象存储场景中高低4.2 服务端副本数、条带宽度和回收站策略服务端最容易踩坑的是条带宽度和数据块大小设置。在创建文件系统时可以根据文件大小分布预判如果文件平均在 4KB 到 64KB 之间属于小文件场景数据块设 512KB 以下、条带宽度加大把元数据压力分散到多个 MDS如果文件平均在 10GB 以上属于大文件场景数据块建议 4MB条带宽度设为集群存储节点数让单文件切到所有节点。注意条带宽度和数据块大小是文件系统创建时决定的后期调整可能涉及数据重分布。生产环境建文件系统前先用fio测一下目标业务的文件大小分布再决定参数而不是按文档默认值拍脑袋。另一个在生产环境必开的是回收站和配额。很多人初期图省事不开回收站删除操作一失误只能找备份恢复。开回收站后的默认保留期建议先设 7 天确认业务稳定后再压缩到 3 天以释放空间。配额推荐按目录组做限额防止某个应用写满整个文件系统把同集群里的其他应用拖垮。这类参数在管理图形界面的“文件系统”和“目录管理”页签下都可以直接修改改完会即时生效不需要重启集群。需要特别提醒的是除非官方明确说明某项参数支持在线调整否则修改条带宽度和副本策略这种涉及数据布局的参数都要选业务低峰期走变更流程。这是分布式存储线上事故最高的一个来源宁可多约一次窗口也不要图省事在线改。5. 进阶技巧用系统侧工具把 ParaStor 的瓶颈直接抓出来5.1 一个 15 行的健康巡检脚本运维 ParaStor 集群除了自带告警平台我习惯在管理节点上留一个精简巡检脚本每天定时把状态落盘避免等到告警邮件才被动处理。#!/bin/bash # 每日 02:00 通过 crontab 执行输出集群健康快照 LOG/var/log/parastor_daily_check.log echo $(date %F %T) $LOG # 节点在线状态 eshow node -a | grep -E DOWN|UNKNOWN echo [WARN] node abnormal $LOG # 存储池容量使用率超过 80% 触发提醒 ecli pool list | awk $3 80 {print [POOL] $1 usage $3 %} $LOG # 检查回收站占用超过 50% 触发提醒 ecli trash show --summary | awk NR3 $250 {print [TRASH] $1 size $2} $LOG # 服务端网卡丢包率采样每节点只取第一块存储网卡 for ip in 192.168.200.11 192.168.200.12 192.168.200.13; do ssh $ip ethtool -S eth0 | grep -E drop|err | head -4 $LOG 21 done脚本里的awk $3 80是按“存储池名称 使用率% 状态”这种典型输出来写的实际字段顺序以你所用版本的命令帮助为准。这里至少有两点值得借鉴一是把容量阈值定在 80%低于这个线不需要人为干预二是把回收站占用和网络丢包率一起巡这两项是最容易被慢查询表面现象掩盖的跨节点问题。配合crontab -e每天 02:00 跑一次日志保留 30 天即可。5.2 当客户反馈“变慢”时按三条线索逆推接到性能变慢的反馈不要上来就查存储。先在客户端侧测一遍本地磁盘和网络的基准值锁定是不是存储引起的然后按下面三条线索排查。线索一是看 MDS 负载。如果某台 MDS 的 CPU 长时间超过 80%多半是目录层次太深或小文件数量太多。此时用eshow mds -l看每个 MDS 的元数据请求数把请求最高的目录做扁平化处理或者拆分到不同路径下。线索二是看存储节点的磁盘等待时间iostat -x 1里如果 util 超过 95 且 await 明显高于正常值说明单盘或单节点过热先确认是否为慢盘再走磁盘替换流程。线索三是检查回收站和配额。回收站积累过多过期文件时删除操作会频繁写元数据配额接近上限的目录同理。这两处是最容易忽略的隐性瓶颈。把这三条线索的判定标准写进前面那个巡检脚本里就是一套轻量但完整的 ParaStor 健康检查闭环。运行半年后再回头看绝大多数线上问题都能在业务投诉之前被拦下来。本文还有配套的精品资源点击获取
返回列表