tag 标签: 服务器

相关帖子
相关博文
  • 热度 3
    2024-10-31 16:16
    214 次阅读|
    0 个评论
    前言 当我们需要获取linux服务器的状态时,比如APP要获取服务器状态、网页要显示服务器状态,那么我们就可以用exec函数来命令linux,然后读取linux的数据,但是exec函数在PHP中都是推荐禁用的,因为exec函数可能会被注入恶意命令,从而导致服务器被攻击、数据泄露等安全问题。 所以本文不推荐使用exec函数,我们可以通过读取系统文件,来获取状态。 在Linux系统中,/proc目录是一个非常重要的特殊目录,它实际上是一个虚拟文件系统(proc文件系统),提供了对内核和系统进程信息的实时访问。 源码免费下载:https://mbb.eet-china.com/download/316368.html proc目录介绍 /proc目录中的数据并不占用磁盘空间,而是由内核动态生成的,内容实时反映了系统和进程的当前状态。 这个目录为用户和管理员提供了一个方便的接口,以监控和管理系统的状态。 (一)系统信息 ①/proc/cpuinfo:提供有关CPU的信息,包括型号、核心数量、频率 ②/proc/meminfo:显示有关内存使用情况的信息,包括总内存、可用内存、缓存 ③/proc/version:显示当前运行的Linux内核版本和编译信息 ④/proc/devices:列出所有已注册的设备及其驱动程序 ⑤/proc/partitions:显示磁盘分区的信息 ⑥/proc/stat: 系统性能的统计信息,如 CPU 使用情况、中断数量、上下文切换次数 (二)网络信息 ①/proc/net/:包含网络相关的信息,如网络连接、路由表、网络接口统计 ②/proc/net/tcp:显示TCP连接的信息 ③/proc/net/udp:显示UDP连接的信息 编写PHP接口 (一)内存信息/proc/meminfo ①我们先看一下文件的内容,发现由两部分组成,一部分是标签,另一部分就是标签对应的数值 所以思路就是将所需标签的数值提取出来就可以了 需要提取:总内存MemTotal、未使用内存MemFree、缓冲区内存Buffers、缓存Cached 可用内存 =未使用内存MemFree +缓冲区内存Buffers +缓存Cached 已用内存 = 总内存 - 可用内存 使用率 = (已用内存/总内存)* 100 ②代码展示 function getMemoryInfo ( ) { // 读取 /proc/meminfo 文件内容 $meminfo = file ( '/proc/meminfo' ); $freeMemory = 0 ; $availableMemory = 0 ; $totalMemory = 0 ; foreach ( $meminfo as $line ) { if ( strpos ( $line , 'MemTotal:' ) === 0 ) { // 获取总内存(MemTotal) list (, $memTotalKb ) = explode ( ':' , trim ( $line )); $totalMemory = ( int ) $memTotalKb * 1024 ; // 转换为字节 } elseif ( strpos ( $line , 'MemFree:' ) === 0 ) { // 获取完全没有被使用的内存(MemFree) list (, $memFreeKb ) = explode ( ':' , trim ( $line )); $freeMemory = ( int ) $memFreeKb * 1024 ; // 转换为字节 } elseif ( strpos ( $line , 'Buffers:' ) === 0 ) { // 获取被用作缓冲区的内存(Buffers) list (, $buffersKb ) = explode ( ':' , trim ( $line )); $buffersMemory = ( int ) $buffersKb * 1024 ; // 转换为字节 } elseif ( strpos ( $line , 'Cached:' ) === 0 ) { // 获取被用作缓存的内存(Cached) list (, $cachedKb ) = explode ( ':' , trim ( $line )); $cachedMemory = ( int ) $cachedKb * 1024 ; // 转换为字节 } } // 可用内存 = MemFree + Buffers + Cached $availableMemory = $freeMemory + $buffersMemory + $cachedMemory ; // 计算内存使用率(百分比) $usedMemory = $totalMemory - $availableMemory ; $memoryUsagePercent = ( $usedMemory / $totalMemory ) * 100 ; // 获取内存信息 $memoryInfo = getMemoryInfo (); // 打印空闲内存、可用内存、总内存和内存使用率(以MB为单位和百分比表示) echo "Free Memory: " . number_format ( $memoryInfo / ( 1024 * 1024 ), 2 , '.' , '' ) . " MB\n" ; echo "Available Memory: " . number_format ( $memoryInfo / ( 1024 * 1024 ), 2 , '.' , '' ) . " MB\n" ; echo "Total Memory: " . number_format ( $memoryInfo / ( 1024 * 1024 ), 2 , '.' , '' ) . " MB\n" ; echo "Memory Usage: " . number_format ( $memoryInfo , 2 , '.' , '' ) . " %\n" ; ③代码解析 foreach ( $meminfo as $line ) 使用foreach循环遍历$meminfo数组中的每一行。$line为当前的行 strpos ( $line , 'MemTotal:' ) === 0 strpos函数用于查找字符串在另一个字符串中首次出现的位置:strpos($line, 'MemTotal:') === 0,MemTotal在$line中首次出现 list (, $memTotalKb ) = explode ( ':' , trim ( $line )); trim($line);用于将$line首位的空白去掉 explode(':', trim($line));explode将处理后的line从冒号":"开始分割,分成数组 去空白:MemTotal: 16384256 kB 分割成数组: list(, $cachedKb);读取数组的信息,第一位是空字符,即忽略MemTotal,从第二位获取,则16384256 kB $cachedMemory = (int)$cachedKb * 1024; // 转换为字节 ,转不转都可以 return ; 返回函数,后续使用时,$memoryInfo = getMemoryInfo(); 调用$memoryInfo ,简洁明了 number_format ( $memoryInfo / ( 1024 * 1024 ), 2 , '.' , '' ) 由于我取值时转为了字节,所以字节转到MB时,要计算,要让字节/1024*1024 然后取值2位小数,小数标点符号位“.”,不使用千位分隔符 (二)网络信息/proc/net/dev ①观察文件,前两行都为无效内容,所以在遍历的时候要忽略前两行,我们需要的数据为lo和wlan0两行的接收、发送数据 用一秒后的数据,减去一秒前的数据,就可以得到1秒数据大小 ②代码展示 // 函数:获取所有网络接口的流量信息 function getAllNetworkTraffic ( ) { // 读取 /proc/net/dev 文件的内容 $stats = file ( '/proc/net/dev' ); $totalTraffic = ; // 遍历每一行,除了前两行(标题和汇总行) foreach ( $stats as $lineNum $line ) { // 跳过前两行 if ( $lineNum < 2 ) { continue ; } // 使用正则表达式匹配网络接口的行并提取接收和发送的字节数 if ( preg_match ( '/^\s*(\S+):\s+(\d+)\s+(\d+)/' , $line , $matches )) { $interface = $matches ; // 网络接口名称(可能包含冒号和数字,如 eth0:0) $receiveBytes = intval ( $matches ); $transmitBytes = intval ( $matches ); // 累积接收和发送的字节数 //因为要获取前1秒的数据 $totalTraffic += $receiveBytes ; $totalTraffic += $transmitBytes ; } } // 返回总流量信息 return $totalTraffic ; } // 获取初始的所有网络接口流量信息 $prevTotalTraffic = getAllNetworkTraffic (); // 等待一秒钟 sleep ( 1 ); // 获取当前的所有网络接口流量信息 $currTotalTraffic = getAllNetworkTraffic (); // 检查是否成功获取了流量信息 if ( $prevTotalTraffic && $currTotalTraffic ) { // 计算接收和发送的字节差异 $totalReceiveDiff = $currTotalTraffic - $prevTotalTraffic ; $totalTransmitDiff = $currTotalTraffic - $prevTotalTraffic ; // 将字节差异转换为 KB/s(千字节每秒),注意这里应该是 KBps 而不是 Kbps(因为 Kbps 通常指千比特每秒) $totalReceiveSpeedKBps = $totalReceiveDiff / 1024 ; $totalTransmitSpeedKBps = $totalTransmitDiff / 1024 ; // 输出结果 //echo "所有接口综合下行流量(接收): " . number_format($totalReceiveSpeedKBps, 2, '.', '') . " KB/s\n"; // echo "所有接口综合上行流量(发送): " . number_format($totalTransmitSpeedKBps, 2, '.', '') . " KB/s\n"; } else { // 如果无法获取流量信息,则输出错误信息 echo "无法获取所有网络接口的流量信息。\n" ; } ③代码解析 用foreach遍历同上,要注意的是,直接跳过前两行的遍历,从第三行开始 ( preg_match ( '/^\s*(\S+):\s+(\d+)\s+(\d+)/' , $line , $matches )) { $interface = $matches ; // 网络接口名称(可能包含冒号和数字,如 eth0:0) $receiveBytes = intval ( $matches ); $transmitBytes = intval ( $matches ); 正则如上图所示 ^\s*:匹配行首的任意数量的空白字符(空格、制表符等) (\S+):匹配一个或多个非空白字符,这通常代表网络接口的名称(可能包含冒号和数字,如eth0:0)。这个匹配项被捕获到$matches 中 :\s+:匹配一个冒号后跟任意数量的空白字符 (\d+):匹配一个或多个数字,这代表接收的字节数。这个匹配项被捕获到$matches 中 \s+(\d+):再次匹配任意数量的空白字符后跟一个或多个数字,这代表发送的字节数。这个匹配项被捕获到$matches 中 $totalTraffic += $receiveBytes ; $totalTraffic += $transmitBytes ; 将遍历的结果累计到变量 // 获取初始的所有网络接口流量信息 $prevTotalTraffic = getAllNetworkTraffic (); // 等待一秒钟 sleep ( 1 ); // 获取当前的所有网络接口流量信息 $currTotalTraffic = getAllNetworkTraffic (); 当前的流量 - 1秒前的流量 = 1秒内的流量 (三)硬盘信息 查询硬盘信息要关闭防跨站攻击 ①硬盘就简单很多,只需要获取根目录已经用的内存,和总内存,内存的使用率 ②代码展示 $directory = '/' ; // 获取总磁盘空间和可用磁盘空间 $totalSpace = disk_total_space ( $directory ); $freeSpace = disk_free_space ( $directory ); $totalSpaceGB = $totalSpace / ( 1024 * 1024 * 1024 ); // 或者使用 1073741824,但这种方式更清晰 $freeSpaceGB = $freeSpace / ( 1024 * 1024 * 1024 ); // 计算已用空间 $usedSpace = $totalSpace - $freeSpace ; $usedSpaceGB = $totalSpaceGB - $freeSpaceGB ; // 计算使用率(百分比) $usagePercentage = ( $usedSpace / $totalSpace ) * 100 ; ③代码解析 disk_total_space函数:获取目录所在磁盘的总空间(以字节为单位) disk_free_space函数:获取可用空间(同样以字节为单位) 将字节转换成GB,在字节上除以1024*1024*1024 (四)CPU使用率 ①CPU使用率比较复杂,但是也和上面的差不多,也是正则匹配问题 ②代码展示 function getCpuInfo ( ) { $stats = file ( '/proc/stat' ); $cpuInfo = ; if ( $cpu == '' ) { $cpu = 'total' ; } $values = preg_split ( '/\s+/' , $matches , - 1 , PREG_SPLIT_NO_EMPTY); $cpuInfo = array_map ( 'intval' , $values ); } } return $cpuInfo ; } function calculateCpuUsage ( $prev , $curr ) { $prevIdle = $prev + $prev ; // idle + iowait (Linux 2.5.41+) $currIdle = $curr + $curr ; $prevNonIdle = array_sum ( $prev ) - $prevIdle ; $currNonIdle = array_sum ( $curr ) - $currIdle ; $prevTotal = array_sum ( $prev ); $currTotal = array_sum ( $curr ); $totalDiff = $currTotal - $prevTotal ; $idleDiff = $currIdle - $prevIdle ; $cpuUsage = 100 * (( $totalDiff - $idleDiff ) / $totalDiff ); return $cpuUsage ; } // 获取初始 CPU 信息 $prevCpuInfo = getCpuInfo (); // 等待一秒(可以根据需要调整时间间隔) sleep ( 1 ); // 获取当前 CPU 信息 $currCpuInfo = getCpuInfo (); // 计算 CPU 使用率 $cpuUsage = calculateCpuUsage ( $prevCpuInfo , $currCpuInfo ); //echo "CPU Usage: " . number_format($cpuUsage, 2, '.', '') . "%\n"; ③代码讲解 使用 file('/proc/stat') 读取文件内容,每行作为数组的一个元素 遍历每行,使用正则表达式 '^cpu(\d*)\s+(.+)' 匹配 CPU 统计信息 cpu(\d*) 匹配 CPU 编号,如 cpu0, cpu1 等,没有编号的即为总体 CPU 信息(cpu) \s+(.+) 匹配该 CPU 的统计值,这些值之间用空格分隔 如果匹配成功,$cpu 变量存储 CPU 编号(或 total),$values 数组存储解析出的统计值(如用户态时间、系统态时间、空闲时间等),并将这些值转换为整数存储到 $cpuInfo 数组中。 计算空闲时间(idle)和 I/O 等待时间(iowait)的总和,这两个时间值分别位于 $prev 和 $curr 数组的索引 3 和 4 计算非空闲时间(non-idle),即总时间减去空闲时间 计算总时间的差值(totalDiff)和空闲时间的差值(idleDiff) CPU 使用率计算公式为:100 * (($totalDiff - $idleDiff) / $totalDiff) 执行流程: 调用 getCpuInfo 函数获取初始 CPU 信息($prevCpuInfo) 等待一秒(sleep(1)),以获取足够的时间间隔来观察 CPU 使用情况的变化 再次调用 getCpuInfo 函数获取当前 CPU 信息($currCpuInfo) 调用 calculateCpuUsage 函数计算 CPU 使用率
  • 热度 5
    2024-9-23 18:13
    279 次阅读|
    0 个评论
    1 方案背景和挑战 Openstack作为开源云计算领域的领军项目,凭借其强大的功能、灵活的架构以及活跃的社区支持,在全球范围内得到了广泛的采用。通过Openstack,企业和云服务提供商可以更加高效地管理和利用计算资源、存储资源和网络资源,实现业务的快速部署和灵活扩展,从而赢得市场竞争的先机。 Ironic作为Openstack的关键组件,提供了对裸金属服务的全面管理。通过Ironic,用户可以在云环境中直接控制和管理实体硬件,实现裸金属服务器的自动化部署、管理和监控。 原生的Ironic 采用本地物理盘进行启动,其首先将远程镜像下载并写入到本地物理盘中,然后再从本地盘启动进入系统。过程如下: 可以看到,其重点是通过方案具有以下问题和挑战: a. 部署启动周期长(20分钟左右),业务敏捷性低,用户体验差 (1)两次启动:在部署裸金属服务器时,首先会通过PXE启动一个小的、临时的系统环境,IPA会启动并执行部署任务。部署完成后,服务器会从已安装的操作系统启动。这两次启动过程增加了整体部署时间。 (2)镜像下载:IPA需要从Glance下载完整的用户镜像到内存中或临时存储,这个下载过程取决于镜像的大小和网络条件,可能会非常耗时。对于大型镜像或网络条件不佳的环境,这个步骤可能成为瓶颈。 (3)镜像写入本地盘:下载完镜像后,IPA还需要将这个镜像写入到服务器的本地磁盘上。这个过程也取决于磁盘的写入速度和镜像的大小,可能会进一步增加部署时间。 b. 消耗大量带宽,影响整体网络应用性能 全量下载系统镜像会消耗大量的网络带宽,尤其是在多节点部署或频繁更新镜像的场景下。这不仅增加了网络负载,还可能影响其他网络应用的性能。 c. 系统盘无法扩容,敏捷性和弹性低 在当前部署模型中,用户镜像被直接写入到服务器的本地磁盘上,并且通常是作为一个固定的分区或文件系统来配置的。这意味着如果后续需要增加系统盘的容量(例如,因为数据量增长或应用需求变化),可能需要重新部署整个服务器,这既耗时又复杂。 d. 依赖外部组件,增加系统复杂度和成本 部署过程依赖于多个外部组件,如PXE、TFTP、DHCP等,这些组件需要正确配置和维护。任何一个组件的故障都可能导致部署失败,增加了系统的复杂性和维护成本。 2 方案介绍 2.1 整体架构 为了解决OpenStack Ironic裸金属服务方案的问题,中科驭数基于DPU开发了ironic裸金属服务解决方案,整体架构图如下: 在本方案中,DPU支持裸金属服务器的网络和存储资源虚拟化,使得物理服务器能够像虚拟机一样灵活配置,动态添加或删除网卡、硬盘等资源。这为裸金属服务器提供了类似云服务的弹性,同时保持了物理机级别的性能。另外,DPU能够管理远程存储资源,如云盘,使得裸金属服务器可以使用云存储服务,同时通过DPU加速存储I/O,提高读写性能,使得云盘接近本地存储的体验。 本方案主要涉及glance、cinder、nova、neutron、ironic模块。仍然使用ironicnode资源管理裸金属实例。在开源ironic组件(ironic-api、ironic-conductor)之外,自研了ironic-dpu-agent组件,运行在每个裸金属节点的DPU Soc中,用于管理裸金属实例的存储、网络资源。本方案主要包含以下系统组件: Nova:对接ironic,为裸金属提供和虚拟机一致的操作。 Ironic-api:裸金属rest api服务。 Ironic-conductor:裸金属实例的任务控制服务,负责裸金属开关机、重启、部署等任务。 Ironic-dpu-agent:运行在DPU Soc上,与ironic-conductor通过RPC通信,负责管理本节点裸金属实例的存储、网络资源。在裸金属部署阶段,接收ironic-conductor下发的部署指令,在DPU内连接云盘并挂载到host。在裸金属运行时,接收ironic-conductor下发的添加、删除磁盘指令,为host动态添加、删除磁盘。\ Volume-attacher:负责裸金属磁盘的挂载、卸载操作。 Neutron:OpenStack网络服务,为裸金属实例提供network、subnet、port管理功能。 Cinder:OpenStack块存储服务,为裸金属实例提供云盘创建、删除等管理功能。 Glance:OpenStack镜像管理服务,为裸金属实例提供镜像上传、下载功能。 2.2 方案描述 在基于DPU的OpenStack裸金属服务方案下,实现了裸金属的部署启动、云盘热插拔、cloudinit、冷迁移等常用功能,以下对主要部分做详细描述,并和传统ironic方案进行部分对比。 2.2.1 基于DPU的无盘启动方案 在基于 DPU 的方案中,我们采用直接挂载云盘系统的方式,不使用本地盘,过程如下: nova-api接收到创建裸金属实例请求,调用nova-scheduler调度出ironic node。 nova-scheduler调用nova-compute孵化裸金属实例。 nova-compute根据指定的镜像,调用cinder创建出系统盘volume,cinder调用后端存储以快照方式克隆镜像卷,并不是完整拷贝,速度很快,一般在数秒内完成。 nova-compute的ironic virt driver根据指定的cinder volume在ironic中创建node的volume target,作为裸金属实例的云盘。之后调用ironic-api部署node。 ironic-conductor的dpu deploy driver调用node所对应的ironic-dpu-agent执行部署任务。 ironic-dpu-agent根据volume target在dpu内调用spdk映射云盘,给host侧挂载对应的系统盘。 系统盘挂载完成后,ironic-conductor通过BMC重启裸金属节点,此时BIOS能扫描到系统盘,启动进入系统,裸金属启动完成。 和 Ironic 传统方案相比,没有PXE过程,也只需启动一次。 2.2.2 存储对接 Ironic 原生存储对接方案: ironic的存储对接在host侧,host网络需和存储网络连通,且host中需安装相关组件,如下图: 为了完成云盘的挂载/卸载,host 中需要安装一个 ironic-agent,其调用 iscsi-initiator 或相应的存储客户端完成云盘的挂载/卸载操作。Ironic 的 StorageDriver 会配置好存储服务端,并调用 ironic-agent 完成云盘的操作。 基于DPU的存储对接方案: 在基于DPU 的方案中,系统盘和数据盘统一使用云盘,云盘由volume-attacher组件进行分配挂载。裸金属上看到的盘,是DPU 上的 spdk 通过 PCIE 模拟的设备。存储网络也是由 ovs 连接的和配置的。如下图所示: 相比于 Ironic 方案,DPU 方案有以下优势: 存储网络统一走DPU侧,隐藏了存储网络的细节,并可利用 DPU 进行网络加速; 兼容cinder后端存储,存储系统无需适配。云盘是通过cinder创建的,volume-attacher配置spdk连接云盘,模拟出对应的磁盘给到裸金属。 2.2.3 硬盘热插拔 如Ironic存储对接方案中所示,Ironic 中的 StorageDriver 调用 host 中的 ironic-agent 完成硬盘热插拔,用户镜像需安装相关依赖。 在基于DPU 的方案中,由于裸金属上的盘是 DPU 通过PCIE 模拟的,因此,通过动态调整 DPU 上的 spdk 配置,即可实现硬盘的热插拔。 3 方案测试结果 3.1 创建裸金属实例 与创建虚拟机流程类似,选择裸金属的flavor和镜像进行创建。 可以看到bm01、bm02两个裸金属实例,均为active状态。通过nova创建裸金属实例,ironic node中会关联instance uuid。 3.2 部署启动时间 我们定义裸金属的部署启动时间为:下发创建裸金属实例的命令,到裸金属实例网络IP可以ping通的时间。 在联创万通 LCWT R7220 服务器上,镜像 OS 为 Ubuntu 22.04 Server,内核版本为5.15.0-106-generic 时测得的启动时间:从创建到可 ping 通共耗时 161 秒(2min41s)。 基于 DPU 的裸金属服务方案启动时间在 2-3min 内,具体耗时取决于服务器类型和镜像版本。相比之下,我们测试传统 Ironic 本地盘方式在 20min 以上。 3.3 添加磁盘 添加磁盘前,裸金属系统内看到的磁盘列表: 添加磁盘后,裸金属系统内看到的磁盘列表,nvme2n1是新添加的磁盘: 3.4 删除磁盘 删除磁盘前,裸金属系统内看到的磁盘列表: 删除磁盘后,裸金属系统内看到的磁盘列表,nvme2n1被删除: 3.5 存储 iops 和吞吐 测试结果如下: 分类 测试项 写iops 写吞吐 读iops 读吞吐 随机读写 NVMe-OF+DPU+NVMe盘 682k 2662MiB/s 736k 2868MiB/s NVMe本地物理盘 684k 2667MiB/s 980k 3849MiB/s 顺序读写 NVMe-OF+DPU+NVMe盘 682k 2667MiB/s 705k 2761MiB/s NVMe本地物理盘 686k 2673MiB/s 991k 3892MiB/s 各测试项说明: 测试项中的NVMe-OF均指NVMe-OF over RDMA NVMe-OF+DPU+NVMe盘:基于 DPU 通过NVMe-OF协议连接Target,Target 后端是 NVMe物理盘 NVMe物理盘:直接对NVMe物理盘进行测试 可以看到,基于NVMe-OF的卸载方式下,DPU可以达到和NVMe本地盘近似的性能,几乎没有性能损耗。 4 方案优势 基于DPU的方案相较于传统的Ironic裸金属方案,在多个方面展现出了显著的优势。以下是这些优势的详细描述: a. 交付效率显著提升,大幅改善最终用户体验 云盘启动加速:传统Ironic方案多采用本地盘启动方式,这一过程涉及到镜像的下载、安装及配置,耗时较长,通常需要20分钟左右。而基于DPU的方案采用云盘启动,通过预先配置好的云盘镜像,可以极大地缩短启动时间至2-5分钟。这种快速启动能力对于需要快速部署和扩展的云环境尤为重要,能够显著提升资源交付的效率和灵活性。 b. 存算分离,提升服务敏捷性和弹性 基于DPU的方案实现了存储与计算资源的分离,这种设计使得计算和存储资源可以独立扩展和优化。当业务需求变化时,可以迅速调整计算或存储资源,而无需对整个系统进行大规模的调整,从而提升了服务的敏捷性和弹性。此外,存算分离还有助于实现资源的更高效利用,避免了资源瓶颈和浪费。这种特性对于需要快速响应市场变化和灵活调整业务规模的云环境尤为重要。 c. 控制面与数据面分离,提升安全性和资源利用率 控制面与数据面下沉至DPU:通过将控制面和数据面处理任务下沉到DPU,不仅减轻了Host CPU的负担,还实现了对存储网络和后端存储细节的隐藏。这种设计提升了系统的安全性,防止了潜在的安全威胁,还使得Host侧的资源能够完全专注于业务处理,从而提高了资源利用率。 不侵入用户镜像:基于DPU的方案不依赖于用户镜像进行功能实现,避免了因镜像更新或修改导致的兼容性问题,同时也简化了用户镜像的管理和维护工作。 d. 架构简化,降低复杂度和维护成本 不依赖PXE等组件:传统Ironic方案可能需要依赖PXE(预启动执行环境)等组件来实现网络启动和镜像部署。而基于DPU的方案则通过内置的网络和存储功能,实现了更为简洁的架构设计,降低了系统的复杂度和维护成本。 e. 性能优化,接近本地盘体验 硬件加速利用:DPU内置了多种硬件加速功能,能够充分利用这些特性来提升云盘的性能表现。从测试数据中可以看到,在基于DPU的方案中,云盘性能可以达到接近甚至等同于本地盘的性能水平,为用户提供了更加流畅和高效的数据访问体验。 综上所述,基于DPU的方案在交付效率、存储支持、安全性与资源利用率、架构简化以及性能优化等方面均展现出了显著的优势,为裸金属云服务的发展提供了新的动力和方向。 本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。
  • 热度 2
    2024-9-6 13:48
    214 次阅读|
    0 个评论
    AI应用浪潮袭来,服务器运算及储存效能的需求高涨 随着人工智能(Artificial Intelligence, AI)和机器学习(Machine Learning, ML)的爆炸性应用如雨后春笋般出现,这无疑对AI服务器的储存容量和储存性能迎来空前的需求高涨。数据中心与企业级服务器群集必须持续追求更高的运算效能,同时更低延迟的高速传输,才足以因应海量数据运算存取的庞大商机。 不论是数据中心还是企业级服务器群集,都是由一台一台的服务器所组成,并可概分为运算、储存与网络等三大主要部分。由于服务器本身目前的技术架构限制,导致指令周期(CPU, RAM)仍普遍远快于储存速度,因此各种研究及应用皆不断地投入在储存装置上,以期能够提升企业用服务器的整体效能。其中「固态硬盘」(SSD)由于其本质上具备电子讯号读写、多信道存取特性,以及无传统硬盘(HDD)的机械读取限制等特性,这也使得固态硬盘的读写速度不仅比传统的HDD快上许多,在耗电性上的表现也要来得更加出色。此外,受惠于NAND Flash制程技术近年来的不断提升,再加上各项控制器、韧体技术改进可靠性及使用寿命后,数据中心的固态硬盘的使用量也不断地随之成长。 在进行SSD效能的验证时,除了考虑数据吞吐量(Throughput)外,读写效能(IOPS, I/O Per Second)也务必是需要评估的一大关键。虽然坊间有不少评测软件可以量测SSD产品的读写效能,但是不同软件有各自的专长领域,要如何正确地使用评测软件来评量SSD效能,并且能快速地针对问题进行改善及排除,此时就必须仰赖专业的技术支持。 服务器SSD工作负载 (Storage Workload) 在服务器平台上的各种SSD工作负载(Storage workload),主要可分为以下三几个方向: ★ SQL 数据库工作负载 (Storage Workload) SQL作为企业使用的数据库系统已有多年历史,并在全球各地得到了广泛的使用。SQL最大的优点就是高效能、高可靠度且成本较低。目前市面上主流的SQL数据库产品为MySQL与 Microsoft SQL。在数据库环境中,SSD的效能好坏将直接影响到SQL数据库的反应速度以及同一时间内可处理的资料吞吐量。 目前在SQL数据库的企业应用中,对于在线事务处理 (OLTP)的处理效能尤为重视。Allion运用多线程基准的SQL数据库测试工具,使用OLTP的工作负载针对SSD储存区进行效能评估,帮助了解企业级SSD产品使用于SQL数据库中的真实效能。 ★ 文件服务器工作负载 (File Server Storage Workload) 文件服务器(File Server)几乎是每一个企业都必须要建置的服务器类型。但凡企业组织内的员工在进行档案储存、共享、分享及编辑时,都必须仰赖文件服务器作为储存的空间,也因为如此,文件服务器的效能好坏势必将直接影响到员工的工作效率。 企业型SSD作为文件服务器中的储存组件,更是需要特别注意在各种不同的文件服务器工作负载(File Server Storage workload) 下的性能表现,才足以提供足够的吞吐量(Throughput)与较短的反应时间 (Response time)。 Allion使用SPEC Storage套件来建置企业型的文件服务器应用环境,藉此模拟出各种不同的文件服务器工作负载 (File Server Storage workload),提供企业型SSD在各种工作负载 (Storage workload) 下的效能表现,以作为SSD制造商开发企业级SSD时的有力基准。 ★ 虚拟化服务器工作负载 (Virtualization Server Storage Workload) 传统的服务器架构让服务器一次只能运作一种操作系统,因此造成多数服务器的运作效益发挥仅不到20%,虚拟化系统则是将操作系统和应用程序从实体硬件中抽离,灵活且简化服务器环境,解决传统服务器的一对一架构问题,让服务器的资源达到最有效的运用。 企业型SSD在虚拟化服务器的应用环境中,主要负责虚拟机的布署、复制以及迁移。Allion运用VMWARE以及SPEC的虚拟化基准套件来模拟虚拟化的环境,透过仿真实际应用程序的工作负载,评估虚拟化基础架构中的储存区 (Storage pool)的效能。
  • 热度 2
    2024-7-11 16:51
    282 次阅读|
    0 个评论
    随着科技的成长,需要被存储、计算、传送等的数据会愈来愈多,因此,设置高密度的Data center / Server对于商业基础设施和国家基础建设来说变得格外重要。在物联网、云端存储、大数据运用、人工智能和5G等领域的加速发展下,数据中心的建置与需求也将越来越庞大,而数据中心在全年无休运行下会产生高密度的废热,这些废热主要是由每一柜中数个服务器所产生,若未能有效地进行散热,将容易导致系统过热无法正常运行,因此对数据中心的服务器性能的稳定性来说,运用风扇或水冷来达到散热这课题也相对重要。 服务器风扇过热会有哪些潜在风险? 在高温环境中长时间运作,服务器风扇所使用的塑料材质,可能会因热变质而变脆,进而造成破损,导致风扇有可能在持续运转,但效能已经降低;风扇效能降低,会影响服务器的散热效率,使服务器内部组件过热,造成组件损坏;组件损坏后,可能会导致服务器无法正常运作,甚至造成数据遗失或系统崩溃。这个结果将导致应用服务停摆,甚至是客户数据的流失,进而引起消费者客诉等负面的使用者体验。 实际案例分享 根据百佳泰多年实验经验,我们针对实际案例进行说明:客户的产品在进行长时间的可靠度验证时,我们发现在长时间运转下,虽然风扇依旧持续旋转,但其塑料材质已开始脆化进而出现裂纹。因此即使风扇虽仍旧在运转,但我们已经将这类的现象判为问题件了。 三大解决方案 百佳泰针对服务器风扇的可靠度验证有非常多丰富的项目经验,同时也设计了一套解决方案来提供服务。这套风扇专用的测试治具,此治具以模块化组成,最多可以支持15颗风扇同时测试。 另外,我们也自行开发测试自动化软件,能将治具支持的15颗风扇虚拟成三组,分别进行不同的测试项目,如:Full power mode 或是Power cycle mode。在测试的过程中软件也会监控并记录每颗风扇的电流、电压及转速等数据,若有异常的状况时还可以设定不同的通知方式。 最后,百佳泰也有不同规格的温箱来进行可靠度验证,不论是内部空间的大小或是温度及湿度的规格要求,都能满足客户的需求。
  • 热度 3
    2024-5-31 22:18
    867 次阅读|
    1 个评论
    备注:以上资料来自通信产业网。 1.电信服务器市场: 国产服务器-鲲鹏系(昆仑,长江,神码,湘江,宝德,黄河,华鲲,虹信,中科可控,中兴通讯30000台,清华同方,曙光信息) 总数大概23.6万台; X86服务器-(浪潮,华三,紫光,超聚变,宁畅,中移); 总数大概43.4万台。 依据数据,计算国产比例达到36%。 2.依据IDC 2023年数据,中国服务器市场ARM CPU比例达到12%,大概3800000*12%,大概45.6万台,应该有低估。 ARM大概95%以上来自华为鲲鹏。 在通信,金融和政府已经明确提升了对国产化比例要求,而三大块占据了服务器市场的接近半壁江山。 X86则是在互联网,制造业,其他分销,渠道和中小客户市场。 中国大部分传统服务器厂商重仓X86市场,而X86市场在逐步的萎缩,只会加剧市场的竞争烈度。 大部分的工程师停留在原X86的开发平台,依赖传统的商业套路去竞争,无法正视市场发生的变化。 与时俱进,和光同尘才是最佳选择。 跟大势硬刚,逆势而为,鸵鸟心态,只会加剧自身的困境。 国产化必然改变市场的格局,拭目以待。
相关资源