当前位置:首页>Linux>9、Linux调优存储设备的IO

9、Linux调优存储设备的IO

  • 2026-03-27 03:49:38
9、Linux调优存储设备的IO

Linux调优存储设备的IO

一、评估I/O模式和调度算法

1、机械盘发展史

据说,要充分了解一个行业、一款产品、一种文化最好的方式就是了解它的历史。SSDFans们如此 热衷于SSD,自然会对它的前世今生非常感兴趣。SSD逐渐取代了传统的机械硬盘,占领市场,或 许可以说机械硬盘就是它的前世吧。不如今天就借历史的眼光,来挖掘一下硬盘的发展史。 在SSD出现之前,所有的计算机都是安装的机械硬盘,机械硬盘的诞生自然是为了解决数据存储问 题。 1956年,第一块硬盘诞生 世界上第一块硬盘诞生于1956年,名为IBM 350 RAMAC(Random Access Method of Accounting and Cotrol),由IBM设计并制造。它和现代意义上的硬盘还是有很大区别的,这 体现在它庞大的占地面积和现在看起来落后的机械组建。这款产品使用了50张24英寸的表面涂有 磁浆的盘片,而存储容量仅为5MB,但这在当时也足以令人震惊。 1968年,温彻斯特(Winchester)技术出世 1968年,IBM成功研发出温彻斯特技术,这一技术奠定了之后硬盘的发展方向。温彻斯特技术的主 要内容包括:**将磁头、盘片、主轴等运动部分密封起来,形成一个头盘组合件(HDA),密封状 态保证了内部组件不会受到灰尘污染;磁头悬浮快采用小型化轻浮力的磁头浮动块,盘面涂润滑 剂,实行接触起停。**即盘片不转时,磁头停靠在盘片上,盘片转速达到一定高度是,磁头浮起, 与盘片保持一定距离。其精髓在于提出了:“密封、固定并高速旋转的镀磁盘片,磁头悬浮在高速 转动的盘片上方,而不与盘片直接接触,避免摩擦”,现代磁盘也沿用了这一方法。 1973年,第一块温彻斯特硬盘诞生 1973年,IBM发布了一款新型硬盘IBM 3340。这是IBM公司制造出的第一台采用“温彻斯特”技术 的硬盘,实现了硬盘制造的巨大突破。不过这款产品规格仍为14英寸,由两个分离的盘片构成,每 张碟片容量为30MB。在之后的发展过程中,硬盘容量虽然扩大了不知多少倍,但一直沿用“温彻斯 特”硬盘的工作模式,可以说“温彻斯特硬盘”是“现代硬盘之父”。 1979年,薄膜磁头 1979年,IBM发明了薄膜磁头(Thinfilm Head)技术,这项技术能显著减少磁头和磁片的距 离,为进一步缩小硬盘体积、增大容量、提高读写速度提供了可能。同年,IBM推出IBM3370,存 储容量达571MB。 80年代末,MR磁头 IBM 又一次向前迈进了一大步,推出了一款名为MR HEAD(Magneto Resistive)的产品,这种 磁头在读取数据时对信号变化相当敏感,使得盘片的存储密度能够比以往提高数十倍,他工作方式 在于将读写两个磁头分开,读写磁头不再具电感特性,而是对磁场变化相当敏感的电阻特性磁头。 MR磁头是通过阻值变化而并不是电流变化来感应信号的幅度,因而对信号变化相当敏感,读取数据 的准确性也大大提高。并且由于读取信号的幅度与磁道宽窄无关,所以磁道可以做得很窄,从而提 高了盘片密度,达到200MB/平方英寸,而使用传统的磁头只能达到20MB/平方英寸,这也是MR磁 头的先进之处,因此,这一技术后来也被广泛应用。 1991年,3.5英寸硬盘 1991年,IBM推出来容量为1GB的3.5英寸硬盘——0663-E12,这款硬盘使用了MR磁头,使普通用户 使用的硬盘容量首次达到了1GB,标志着硬盘进入GB时代。 1997年,GMR巨磁阻效应磁头 GMR(GiantMagnetoresistive)和MR磁头一样,采用了特殊材料的电阻值随磁场变化的原理来 读取盘片上的数据,不同之处在于,巨磁阻磁头使用了磁阻效应更好的材料和多层薄膜结构。如果 说MR磁头能够达到35Gb每平方英寸的存储密度,那么使用GMR之后,存储密度可以达到1040Gb每 平方英寸,相对于以前提高了8倍之多,这使硬盘的存储密度又上了一个台阶。 1999,ATA硬盘 1999年,迈拓(Maxtor)推出了其DiamondMax40产品,即钻石九代,单碟容量高达10.2GB。这 促使了大容量硬盘的诞生,也加快了硬盘发展的脚步,直到2003年,经历了一些波折之后,基本 上达到民用硬盘一个暂时的顶峰。 2000年,新材质硬盘 2000 年2月23日,希捷又推出转速高达15000RPM的Cheetah X15系列硬盘,其平均寻道时间只 有3.9ms,这可算是当时世界上最快的硬盘了,同时它也是到目前为止转速最高的硬盘。当时来讲 家用硬盘已经开始攀比速度,希捷的这次SCSI速度革命除了树立自己在SCSI行业中形象之外,还 有就是要彻底拉开SCSI硬盘与IDE家用硬盘之间的差别,以来保证 SCSI硬盘在行业中的地位和利 润增长点。 2000 年3月16日,IBM将自己苦心研究多年的“玻璃盘片”拿出台面,并且推出了两款采用这个盘 片的硬盘,Deskstar 75GXP及Deskstar 40GV,其中Deskstar 75GXP系列产品的最高容量达 75GB,是当时最大容量的硬盘,而Deskstar 40GV的数据存储密度则高达14.3十亿数据位/每平 方英寸,这再次涮新数据存储密度世界记录。这两款硬盘均使用玻璃取代传统的铝作为盘片材料, 这能为硬盘带来更大的平滑性及更高的坚固性,而玻璃材料在高转速状态下具有更高的稳定性。 不过可惜的是,两年之后腾龙系列的硬盘纷纷出现问题,暴露出了玻璃盘片的严重质量缺陷。虽然 此时IBM开始悬崖勒马,开始当腾龙5推出的时候继续采用了铝质盘片,却无法挽回这一品牌带给 消费者的心理阴影。 2001年,仙尘技术 2001年5月,IBM发布“仙尘”技术(Pixie Dust),这种技术通过一种名为AFC的抗铁磁耦合介 质,在硬盘内部存储数据的盘面上加上一层薄薄的钌元素。它能够克服当存储设备的存储密度到达 一定限度的时候所出现的超磁效应。这样磁盘的存储密度就能进一步上升,能使磁盘存储更多的数 据 2007年,TB级硬盘 2007年,日立推出其第一款突破TB级容量的硬盘,利用了垂直记录技术,在磁盘区域密度达到极 限,磁盘容量受到超顺磁效应限制的情况下,实现了磁盘容量的进一步提升。 2012,难以突破的瓶颈 随着固态硬盘的兴起,机械硬盘似乎大势已去,而且受制于物理规则,机械硬盘的瓶颈难以突破, 从2012年起,机械硬盘的发展几乎停滞了,各大厂商也纷纷将注意力转向固态硬盘,但近年来, 随着存储需求增大,又有人打起了机械硬盘的主意。毕竟和固态硬盘相比,机械硬盘存在着价格和 容量上的优势。希捷宣布的几项技术:热辅助磁记录存储技术(HAMR)、多致动器技术(multiactuator)都是致力于提升机械硬盘性能。

2、SSD

固态硬盘(SSD)已经取代磁性硬盘驱动器成为磁盘存储的标准。ssd使用集成电路存储器,没有移 动部件。与硬盘相关的许多行为,如自旋启动时间、寻道时间、旋转延迟、机械故障和磁化率,都 不会发生在ssd上。由于整个设备对ssd的访问时间是一致的,因此不需要分片和跟踪优化过程。 ssd通常比硬盘更小、更轻、更节能。 然而,固态硬盘也有局限性,比如更高的成本。尽管软件设计补偿(如磨损均衡)允许SSD写生存时 间与硬盘驱动器故障预期相似,但固态驱动器的写数量受到限制。 大多数传统的硬盘通用调优过程并不适用于ssd。例如,ssd不需要使用预读和后写缓存。缓存应 该配置为透写。Red Hat不建议在SSD设备上使用日志记录,因为这会增加SSD的磨损,并且不必 要的双重写入会导致速度变慢。

3、选择IO调度器

1 Noop算法 Noop调度算法是内核中最简单的IO调度算法。Noop调度算法也叫作电梯调度算法,它将IO请求放 入到一个FIFO队列中,然后逐个执行这些IO请求,当然对于一些在磁盘上连续的IO请求,Noop算 法会适当做一些合并。这个调度算法特别适合那些不希望调度器重新组织IO请求顺序的应用。 这种调度算法在以下场景中优势比较明显: 1)在IO调度器下方有更加智能的IO调度设备。如果你的Block Device Drivers是Raid,或者 SAN,NAS等存储设备,这些设备会更好地组织IO请求,不用IO调度器去做额外的调度工作; 2)上层的应用程序比IO调度器更懂底层设备。或者说上层应用程序到达IO调度器的IO请求已经是 它经过精心优化的,那么IO调度器就不需要画蛇添足,只需要按序执行上层传达下来的IO请求即 可。 3)对于一些非旋转磁头氏的存储设备,使用Noop的效果更好。因为对于旋转磁头式的磁盘来说, IO调度器的请求重组要花费一定的CPU时间,但是对于SSD磁盘来说,这些重组IO请求的CPU时间 可以节省下来,因为SSD提供了更智能的请求调度算法,不需要内核去画蛇添足。 2 Deadline算法 Deadline算法的核心在于保证每个IO请求在一定的时间内一定要被服务到,以此来避免某个请求 饥饿。 Deadline算法中引入了四个队列,这四个队列可以分为两类,每一类都由读和写两类队列组成, 一类队列用来对请求按起始扇区序号进行排序,通过红黑树来组织,称为sort_list;另一类对请 求按它们的生成时间进行排序,由链表来组织,称为fifo_list。每当确定了一个传输方向(读或 ),那么将会从相应的sort_list中将一批连续请求dispatch到requst_queue的请求队列里, 具体的数目由fifo_batch来确定。只有下面三种情况才会导致一次批量传输的结束: 1)对应的sort_list中已经没有请求了 2)下一个请求的扇区不满足递增的要求 3)上一个请求已经是批量传输的最后一个请求了。 所有的请求在生成时都会被赋上一个期限值(根据jiffies),并按期限值排序在fifo_list中,读 请求的期限时长默认为为500ms,写请求的期限时长默认为5s,可以看出内核对读请求是十分偏心 的,其实不仅如此,在deadline调度器中,还定义了一个starved和writes_starved, writes_starved默认为2,可以理解为写请求的饥饿线,内核总是优先处理读请求,starved表 明当前处理的读请求批数,只有starved超过了writes_starved后,才会去考虑写请求。因此, 假如一个写请求的期限已经超过,该请求也不一定会被立刻响应,因为读请求的batch还没处理 完,即使处理完,也必须等到starved超过writes_starved才有机会被响应。为什么内核会偏袒 读请求?这是从整体性能上进行考虑的。读请求和应用程序的关系是同步的,因为应用程序要等待 读取的内容完毕,才能进行下一步工作,因此读请求会阻塞进程,而写请求则不一样,应用程序发 出写请求后,内存的内容何时写入块设备对程序的影响并不大,所以调度器会优先处理读请求。 默认情况下,读请求的超时时间是500ms,写请求的超时时间是5s。 3 Anticipatory算法 Anticipatory算法的核心是局部性原理,它期望一个进程做完一次IO请求后还会继续在此处做IO 请求。在IO操作中,有一种现象叫“假空闲”(Deceptive idleness),它的意思是一个进程在 刚刚做完一波读操作后,看似是空闲了,不读了,但是实际上它是在处理这些数据,处理完这些数 据之后,它还会接着读,这个时候如果IO调度器去处理另外一个进程的请求,那么当原来的假空闲 进程的下一个请求来的时候,磁头又得seek到刚才的位置,这样大大增加了寻道时间和磁头旋转 时间。所以,Anticipatory算法会在一个读请求做完后,再等待一定时间t(通常是6ms),如果 6ms内,这个进程上还有读请求过来,那么我继续服务,否则,处理下一个进程的读写请求。 在一些场景下,Antocipatory算法会有非常有效的性能提升。 值得一提的是,Anticipatory算法从Linux 2.6.33版本后,就被移除了,因为CFQ通过配置也 能达到Anticipatory算法的效果。 4,CFQ算法 CFQ(Completely Fair Queuing)算法,顾名思义,绝对公平算法。它试图为竞争块设备使用 权的所有进程分配一个请求队列和一个时间片,在调度器分配给进程的时间片内,进程可以将其读 写请求发送给底层块设备,当进程的时间片消耗完,进程的请求队列将被挂起,等待调度。 每个 进程的时间片和每个进程的队列长度取决于进程的IO优先级,每个进程都会有一个IO优先级,CFQ 调度器将会将其作为考虑的因素之一,来确定该进程的请求队列何时可以获取块设备的使用权。IO 优先级从高到低可以分为三大类:RT(real time),BE(best try),IDLE(idle),其中RT和BE又 可以再划分为8个子优先级。实际上,我们已经知道CFQ调度器的公平是针对于进程而言的,而只 有同步请求(read或syn write)才是针对进程而存在的,他们会放入进程自身的请求队列,而所 有同优先级的异步请求,无论来自于哪个进程,都会被放入公共的队列,异步请求的队列总共有 8(RT)+8(BE)+1(IDLE)=17个。 从Linux 2.6.18起,CFQ作为默认的IO调度算法。 对于通用的服务器来说,CFQ是较好的选择。 对于使用哪种调度算法来说,还是要根据具体的业务场景去做足评估(benchmark)然后再来选 择,不能仅靠别人的文字来决定。 RHEL8包括新的多队列I/O调度器,以取代基于单队列的I/O调度器。新的调度器使用多队列块I/O 排队机制(blk-mq),它支持将I/O操作映射到多个硬件或软件请求队列。

Blk-mq将I/O操作映射到不同的队列和执行线程。线程由每个CPU上的不同core执行,当多个执行 线程对单个设备执行I/O时,减少了锁争用。Non-Volatile Memory Express, NVMe协议,利 用了该特性,本机支持多个硬件提交和完成队列,并具有低延迟的性能特征。性能的提高取决于硬 件特性和工作负载行为。 RHEL8包含四种多队列I/O调度器设置:mq-deadline、kyber、bfq和none。每种调度器在特定设 备上都具有性能优势,选择调度器必须基于生产存储系统上的基准测试。 mq-deadline mq-deadline调度器实现了传统deadline I/O调度器的多队列版本。该调度器通过使用按过期时 间排序的两个队列(一个用于写,另一个用于读)来缓解I/O操作短缺的问题,以确保I/O操作(写或 )在过期之前被执行。如果没有即将到来的过期时间,则从第三个队列执行I/O操作,该队列按 扇区对请求进行排序。mq-deadline调度器是RHEL8的默认设置,它为到达的写操作提供了排序保 证,而其他多队列调度器还没有处理这些操作。 kyber Kyber支持具有两个队列的快速设备,一个用于同步()请求,另一个用于异步()请求。这些队 列通过严格限制发送到队列的请求操作的数量来管理每个请求的延迟。这限制了等待发送请求的时 间,并为高优先级的请求提供了快速完成时间。kyber调度器是吞吐量敏感的服务器负载的首选, 特别是在ssd上,主要是因为它是一个更简单的调度器,应该会导致更快的请求处理。 1.3使用tuned配置文件调优存储 bfq BFQ是完全公平排队(CFQ)调度程序的改进,在CFQ调度程序中,CFQ是基于请求的扇区数量而不是 时间片。BFQ提供一致的交互响应,特别是在较慢的设备和硬盘设备上。BFQ的每个操作开销相对 较高,当I/O操作较慢且成本较高时,这可能是可以接受的。在I/O操作成本低且吞吐量优先的情 况下不需要BFQ,例如在cpu速度较慢的情况下。这个I/O调度器是cfq基于单队列的I/O调度器的 替代品。当将ssd用于服务器工作负载时,首选更简单的调度器,例如Kyber。关心交互系统响应 的用户,以及可能使用较慢设备的用户,将会选择BFQ。 none 通过不重新排序I/O请求,该设置支持快速随机I/O设备,如NVMe磁盘。这个I/O调度器是noop基 于单队列的I/O调度器的替代品。 NVMe磁盘默认使用none I/O调度器。不能更改NVMe磁盘的I/O 调度器。 在sys文件系统中,/sys/block/disk_device/queue/调度器列出了设备可用的I/O调度器。下 面的例子说明mq-deadline是vda设备的 活动I/O调度器。

磁盘上的活动I/O调度器的可调参数在/sys/block/disk_device/queue/iosched目录中可用。 你可以在参考资料中找到关于每个I/O调度器可用的可调项的更多信息。下面的示例显示了vda上 mq-deadline调度器可用的可调参数。

你可以使用scsi_mod在启动时启用传统的单队列I/O调度器(deadline、cfq、noop)。 use_blk_mq=0内核参数。

4、使用tuned配置文件调优存储

调优服务具有预定义的调优配置文件,以支持各种用例。存储示例包括latency-performance和 throughput-performance配置文件。你可以创建自定义调优概要文件来支持特定于环境的需 求。一些调优的插件支持存储调优,例如: 1.disk插件通过elevator参数配置I/O调度器(elevator)在设备上使用。 2.sysfs插件使用键=值定义配置I/O调度器可调项。 下面的示例将vda设备上的fifo_batch可调参数配置为1。

5、使用fio模拟负载

测试存储系统需要模拟真实的工作负载。fio命令使用多个线程和进程模拟工作负载。场景包括顺 序的、随机的读写和混合的I/O类型。该工具支持在单个文件上创建多线程I/O请求。 将此程序与你选择的测量工具结合使用。使用fio可以重复创建一致的工作负载,同时收集量化正 在测试的资源配置更改的指标。建议使用/usr/share/doc/fio/HowTo来了解fio的使用方法。 下面示例在/tmp/testfile文件上执行一系列的随机写入,写到512M。它采用直接IO,使用两个 jobs执行同样的操作。 fio--name=randwrite --ioengine=libaio --iodepth=--rw=randwrite --bs=4k -- direct=--size=512M--numjobs=--group_reporting--filename=/tmp/testfile --filename 写入指定的文件名。要谨慎,因为在测试期间使用块设备文件将覆盖设备。 --name,--size 如果现有的文件没有使用--filename指定,fio将使用这些参数指定的文件名和大小创建文件。 --rw=read/write/randread/randwrite/readwrite/randrw 指定工作负载应该是顺序访问还是随机访问。所列的选项包括顺序读取、顺序写入、随机读取、随 机写入、顺序混合和随机混合。还可以使用其他选项设置混合时读和写工作负载的确切百分比。 --bs,--bsrange 指定要用于读写的确切块大小或大小范围 --direct=1 2.RAID 2.1回顾RAID 设置使用直接I/O,它绕过页缓存,直接写入磁盘。当将该选项设置为0时,fio将使用页缓存和内 存,并返回统计信息,这些统计信息实际上是内存速度的度量,而不是磁盘速度。 --ioengine=libaio,--iodepth libaio库支持异步应用程序工作负载,可用于生成并行请求。iodepth选项指定请求的数量。使 用该选项强制使用直接I/O选项,因为页面缓存不是异步寻址的。ioengine还有用于多种形式的 同步I/O、内存映射文件活动、rdma内存活动甚至网络活动的参数。 --numjobs,--group_reporting 为测试指定执行相同工作负载的处理器线程数。默认值为1。如果指定了numjobs,则使用 group_reporting显示综合统计信息,而不是每个作业的统计信息。

二、RAID

1、回顾RAID

RAID(Redundant Array of Inexpensive Disks)是一种虚拟化的数据存储技术,它将存储 驱动器组合成一个逻辑存储单元,提供更高的性能、冗余和容错能力。RAID是基于单个、大且昂 贵磁盘的存储系统的替代方案。RAID支持RAID盘故障,不会造成数据停机和数据丢失。 RAID将写入阵列不同磁盘上的数据分割成小块。Red Hat Enterprise Linux 8默认定义了 512kB的块大小。数据分布在RAID盘中,以满足以下一种或多种数据策略:数据分条、数据镜像和 数据校验。 数据分条是将数据以条带的形式分布在RAID组内部的多个硬盘上。这种策略提高了吞吐量,因为 数据是从多个磁盘而不是单个磁盘检索的。数据镜像提供了将条带复制到至少两个不同的RAID硬 盘上的冗余功能,因此在硬盘故障的情况下,RAID阵列可以使用其他可用的数据副本提供数据, 而不会出现数据停机或丢失的情况。RAID 1的读吞吐量低于最快的硬盘。写吞吐量总是较慢,因 为每个驱动器都要更新,最慢的驱动器决定写性能。 数据奇偶校验通过在分条上添加奇偶校验来支持数据冗余,从而可以使用工作数据及其相关的奇偶 校验位重构与同一数据卷相关的其他分条。 在不同的RAID级别上,一个RAID组可以支持其中的一种或多种策略。下表包含了一些最常用的 RAID级别。

#为RAID调优SSD 与基于hdd的raid相比,基于ssd的raid需要一些特定的调优。如果是基于硬件的RAID,请使用最 新的硬件固件版本。最新的RAID固件版本提供了更好的SSD支持。许多基于硬件的RAID阵列还包 括缓存来增强读(写缓存)和写(预读)。SSD驱动器不会从使用这种缓存中受益,因为SSD是由与缓 存类似的组件组成的,没有旋转延迟。通常,SSD驱动器应该禁用后写和前读功能,以消除冗余开 销。 SSD驱动器包括一个额外块的备用区域,以替代发生故障的坏块。空闲区域越大,SSD的随机写性 能越好。创建RAID时,可以只使用SSD盘的一部分可用空间进行扩展。 作为最佳实践,请确保SSD制造商提供适当的SMART属性,以简化SSD运行状况监视,并确保定期 检查RAID一致性

2、软RAID创建RAID阵列

Red Hat Enterprise Linux支持使用mdadm实用程序创建和管理软件RAID。多磁盘和设备管理 (mdadm)实用程序支持创建任何RAID级别的软件RAID阵列。下面的命令在/dev/mde中创建一个 RAID 0,包含两个RAID盘vdb和vdc。 mdadm-C /dev/md0 -l raid0 -n 2 /dev/vd[b-c]当RAID组处于就绪状态时,不能直接访问作为RAID盘的硬盘。如果需要移除RAID,需要先使用命 令mdadm--stop停止RAID。 mdadm--stop /dev/md0 操作完成后,需要拆卸RAID,操作步骤如下。 mdadm--remove /dev/md0 当RAID被拔出时,需要拔出每个RAID盘上的超级块。mdadm实用程序使用这个报头将磁盘标识为 RAID磁盘。 mdadm--zero-superblock /dev/vdb mdadm--zero-superblock /dev/vdc Red Hat Enterprise Linux 8还支持通过web控制台管理软件RAID阵列。 #条带单位和宽度 在条带阵列(RAID 0、RAID 4、RAID 5、RAID 6)中,文件系统元数据在磁盘上的对齐对性能有 很大影响。如果写请求大于条带大小,则从第一个磁盘继续写。如果文件系统的写行为没有调整到 与RAID布局相匹配,I/O请求可能需要每个磁盘写两次而不是一次,或者将所有元数据放在一个磁 盘上,导致该磁盘成为热点。 为了解决这个问题,在创建过程中布局你的文件系统,以匹配它所驻留的RAID阵列的布局。对于 XFS文件系统,条带分配的优化需要以下信息。 RAID组的chunk(块)大小。 RAID组中硬盘的个数 RAID组中校验盘的个数。 从磁盘总数中减去校验磁盘的数量就得到阵列中的数据磁盘的数量。然后,可以将RAID阵列的块 大小和阵列中的数据磁盘数量传递给mkfs命令,以便在创建XFS文件系统时对其进行对齐。su和 sw数据节选项分别用于指定RAID组的块大小和数据盘的数量。 mkfs-t xfs -d su=64k,sw=4 /dev/san/lun1 对于ext4文件系统,文件系统对齐需要以下信息。 1.所需的文件系统块大小 2.RAID组的chunk大小 3.RAID组中硬盘的个数 4.RAID组中校验盘的个数 然后使用该信息计算文件系统的步幅和条带宽度。 stride(跨步)是一个块(chunk)中容纳的文件系统块的数量。例如,对于一个文件系统块大小 为4 KiB和一个chunk大小为64 KiB的文件系统,步幅将为64 KiB/4 KiB = 16块。 同样,条带宽度是指RAID阵列中一个条带上可以容纳的文件系统块的数量。例如,假设有一个6盘 的RAID 6阵列。根据定义,RAID 6的每个分条中有两块硬盘包含校验数据。对于条带宽度,需要 知道每个条带中实际承载数据块的磁盘数量,即6个磁盘- 2个校验磁盘=4个数据磁盘。这四个磁 盘中的每个磁盘每个块都有文件系统块的跨步数,因此计算4(磁盘)x 16(跨步数)= 64个文件系 统块每个分条。 这些数字在文件系统创建时提供给mkfs,以便使用stride和条纹宽度扩展选项布局文件系统。 mkfs-t ext4 -E stride=16,stripe-width=64 /dev/san/lun1 

3、在逻辑卷上配置RAID

Red Hat Enterprise Linux 8支持使用RAID方式创建逻辑卷。RAID类型的逻辑卷通过关联的 卷组使用物理卷作为其RAID盘。每个RAID逻辑卷都有条带数和条带大小。redhat Enterprise Linux 8对逻辑卷支持RAID O、1、4、5、6、10。 当一个RAID逻辑卷创建了一定数量的条带时,LVM将创建与条带相同数量的数据子卷,如果该 RAID类型启用了parity(奇偶校验),则LVM将创建一个奇偶校验子卷。除了这些数据和奇偶校 验子卷之外,LVM还为每个数据或奇偶校验子卷创建一个元数据子卷。 创建一个容量为3GB的RAID 0逻辑卷。这个逻辑卷使用三条条带,因此它假定底层卷组(在本例中 为raidvg)使用三个磁盘作为它们的物理卷。 lvcreate--type raid0 -L 3G --stripes 3 --stripesize 4 -n raidlv raidvg #lvconvert命令用来将非RAID逻辑卷转换为RAID逻辑卷。

三、选择IO分析工具

1、诊断存储IO场景

诊断存储系统上的性能问题是一项复杂的任务,可能需要多个团队的参与。通常,存储问题是在应 用程序级别检测到的,执行时间非常长。应用程序可能正在使用SAN或NAS设备或系统,其响应时 间可能看起来正常。为了确定性能问题的根本原因,RHEL8包含了一些工具来帮助识别来自访问存 储的客户机系统(本地或远程)的问题。 首先,使用(例如,top命令)识别系统的当前状态。与存储系统相关的问题通常显示与可用内核数 量相比的高CPU平均负载,同时存在较低的CPU使用率(us字段)和较高的CPU等待(wa字段),如这 个双核示例中所示。

该示例行为可能表明存储系统中存在I/O瓶颈(本地或远程)。存储无法为操作系统的数据读写提供 合适的I/O操作速率。这些I/O操作的积压导致CPU负载增加,因为Linux平均负载包括磁盘等待活 动。该行为将影响所有使用该故障存储系统的应用程序。 确认I/O瓶颈后,确认受影响的存储设备,以及是哪些应用程序导致了瓶颈(例如,日志条目过多 写入存储设备)。RHEL 8提供了一组工具来分析存储I/O,并识别受影响的设备和应用程序。

2、iostat工具

接下来,识别受I/O瓶颈影响的存储设备。通过使用存储系统提供的工具进行通用测试,验证存储 系统的正常运行。如果存储服务器响应正常,则关注客户端系统。使用能够洞察每个映射到系统的 存储设备的I/O负载的工具。RHEL8包含iostat实用程序。-x选项提供每个存储设备的I/O统计信 息的扩展报告。

你还可以使用-d选项指定每个设备的统计信息。 sysstat包实用程序的第一行输出是最近一次引导以来的摘要,它显示了系统一直处于启动状态的 整个时间的平均值。后续的行按每秒统计数据显示,使用命令行上指定的间隔计算。 使用iostat,查看%util统计信息。该统计信息反映了存储设备的利用率。utilization超过 100%可能反映该存储设备有问题,可能是I/O瓶颈行为。前面的输出显示了一个利用率高于100% 的存储设备,似乎表明了l/O瓶颈。

3、iotop工具

iotop实用程序可以帮助将I/O统计数据与系统上当前运行的进程或线程关联起来。调用不带选项 的iotop将显示每个进程总的系统I/O操作的百分比。

使用选项来聚焦iotop输出。选项-o(--only)显示当前正在执行I/O操作的进程和线程,-P(-- processes)显示进程,-a(--accumulated)显示自iotop启动以来进程或线程执行的总I/O操 作。在前面的示例中,检查磁盘读写速度,以确定瓶颈的根本原因是低性能磁盘,还是应用程序以 不可持续的方式写入存储设备(例如保存大型日志文件)

4、blktrace工具集

使用选项来聚焦iotop输出。选项-o(--only)显示当前正在执行I/O操作的进程和线程,-P(-- processes)显示进程,-a(--accumulated)显示自iotop启动以来进程或线程执行的总I/O操 作。在前面的示例中,检查磁盘读写速度,以确定瓶颈的根本原因是低性能磁盘,还是应用程序以 不可持续的方式写入存储设备(例如保存大型日志文件)。 blktrace工具集用于观察块I/O请求内部的I/O操作。该工具集包括blktrace(用于记录二进制格 式的日志)、块I/O请求中与每个I/O操作相关的事件、blkparse实用程序(用于解析blktrace生 成的二进制文件)和btt实用程序(用于从blkparse输出生成聚合统计信息)。 通过使用-d选项,blktrace工具集提供了识别特定设备的I/O操作的有用信息。btt命令提供有用 的队列到完成的Q2C聚合,它报告总I/O时间,包括I/O操作等待时间、总I/O操作服务时间和设备 到完成的D2C聚合,这是设备的服务时间。另一个工具blkiomon生成每个设备的请求大小和延迟 blktrace output.

5、使用CO-PILOT分析存储性能

Performance Co-pilot工具集还提供了一些分析存储系统性能的实用工具。PCP工具集中的工具 通常比systat实用程序中的同名版本更强大。 pcp-atop:pcp-atop提供类似于tp的信息,包括iotop和atop命令。PCP-atop是PCP api的实 际atop源的端口。该命令列出正在执行I/O的进程,以及它们所使用的磁盘带宽。该命令区分从磁 盘块设备驱动程序读取或写入的数据总量和实际值,实际值是实际硬件磁盘I/O的数字。文件系统 缓存是显示值差异的原因之一。 pcp-atop有助于快速掌握系统中发生的更改。它在总结每个区间的变化方面做得很好。pcp-atop 可以列出在指定的时间间隔内导致任何系统级更改的所有进程,比如执行磁盘I/O。 pmiostat:pmiostat命令报告本地主机的活动磁盘I/O统计数据,但当使用-h选项时,也可以报 告远程主机的活动磁盘I/O统计数据,或者使用-a选项重放PCP归档日志。使用-R选项指定正则表 达式,将统计信息限制在匹配该表达式的存储设备上。默认情况下,该命令报告SCSI设备。使用- x dm选项报告设备映射器逻辑设备的统计信息。使用-x noidle从输出中消除空闲设备

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 11:50:15 HTTP/2.0 GET : https://f.mffb.com.cn/a/482295.html
  2. 运行时间 : 0.209764s [ 吞吐率:4.77req/s ] 内存消耗:4,888.70kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8be7c8e98fab542c11147df3c13e9c8a
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001155s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001895s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000820s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000784s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001568s ]
  6. SELECT * FROM `set` [ RunTime:0.000555s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001638s ]
  8. SELECT * FROM `article` WHERE `id` = 482295 LIMIT 1 [ RunTime:0.001529s ]
  9. UPDATE `article` SET `lasttime` = 1774583415 WHERE `id` = 482295 [ RunTime:0.014036s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.002613s ]
  11. SELECT * FROM `article` WHERE `id` < 482295 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.006235s ]
  12. SELECT * FROM `article` WHERE `id` > 482295 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001139s ]
  13. SELECT * FROM `article` WHERE `id` < 482295 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.009199s ]
  14. SELECT * FROM `article` WHERE `id` < 482295 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005384s ]
  15. SELECT * FROM `article` WHERE `id` < 482295 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004875s ]
0.214518s