3.1.1 存储基础概念与术语

3.1.1 存储基础概念与术语#

存储是计算与数据持久化的基础,运维需要理解数据从应用写入到介质的全过程以及常见术语的含义,以便正确选择方案与排障。Linux环境下常见存储形态包括本地磁盘、块存储与网络存储,涉及性能、容量、可靠性与成本等权衡。

存储层次与I/O关系示意

文章图片

核心概念与术语
- 容量(Capacity):存储介质可用的总空间,常用单位为GB/TB。需区分标称容量与实际可用容量(格式化、冗余后会减少)。
- 性能(Performance):主要指标为IOPS、吞吐量(MB/s)与延迟(Latency)。随机读写强调IOPS,顺序读写强调吞吐量。
- IOPS:每秒完成的I/O请求数,受磁盘类型、队列深度与随机性影响。
- 吞吐量(Throughput):单位时间内传输的数据量,顺序读写场景重要。
- 延迟(Latency):单次I/O完成所需时间,应用响应的关键指标。
- 块大小(Block Size):文件系统或存储设备的最小读写单位,影响空间利用率与I/O效率。
- 顺序/随机I/O:顺序I/O适合大文件读写,随机I/O常见于数据库与日志。
- 读/写比例(Read/Write Ratio):影响缓存策略与介质选择。
- 可靠性(Reliability):常用MTBF、AFR评估;可通过RAID与冗余提升。
- 一致性(Consistency):数据在缓存与持久化之间的同步保证,涉及写回与写直达策略。
- 可用性(Availability):系统持续提供服务的能力,常与冗余与故障切换相关。
- 数据冗余与校验:如RAID校验、复制、纠删码等手段提升数据安全。
- 存储层次(Storage Hierarchy):从CPU缓存、内存到SSD/HDD及网络存储,越靠近CPU延迟越低。

常见介质与场景
- HDD:容量大、成本低,适合冷数据、顺序读写。
- SSD/NVMe:低延迟、高IOPS,适合数据库、日志与高并发业务。
- 网络存储:集中管理、易扩展,适合共享与高可用场景,但依赖网络性能。


示例:基础容量与性能指标查看#

1)安装常用工具(iostat/fio/lsblk)

# CentOS/RHEL
yum -y install sysstat fio util-linux

# Ubuntu/Debian
apt-get update && apt-get -y install sysstat fio util-linux

2)查看磁盘与分区容量

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,ROTA,MODEL

# 说明:
# NAME: 设备名
# SIZE: 容量
# TYPE: disk/part/lvm
# MOUNTPOINT: 挂载点
# ROTA: 1为HDD,0为SSD

3)查看文件系统容量

df -hT

# 说明:
# -h: 友好显示
# -T: 显示文件系统类型

4)查看I/O性能概况(IOPS/吞吐/延迟)

iostat -x 1 3

# 关键字段:
# r/s, w/s     : 读/写IOPS
# rkB/s, wkB/s : 读/写吞吐量
# await        : 平均I/O延迟(ms)
# svctm        : 设备服务时间
# %util        : 设备繁忙度

示例:使用fio模拟随机与顺序I/O#

# 在 /data 目录下创建测试文件,模拟随机读写
fio --name=randrw_test \
    --filename=/data/fio_test.dat \
    --size=1G \
    --bs=4k \
    --rw=randrw \
    --rwmixread=70 \
    --iodepth=16 \
    --numjobs=2 \
    --direct=1 \
    --runtime=60 \
    --group_reporting

# 说明:
# --bs=4k             : 块大小
# --rw=randrw         : 随机读写
# --rwmixread=70      : 读写比例 70/30
# --direct=1          : 绕过页缓存
# --iodepth=16        : 队列深度

预期效果(示例输出要点)
- 关注 IOPSBWclat/lat(延迟),用于估算业务I/O需求。
- 对比顺序读写可用 --rw=read--rw=write 进行测量。


排错要点(基础存储性能问题)#

  1. 延迟高但%util不高:检查是否是应用同步写、fsync过频繁,或网络存储抖动。
  2. %util长期100%:磁盘瓶颈明显,考虑升级介质或增加并发磁盘。
  3. 随机IOPS低:HDD随机性能受限,考虑SSD/NVMe或增加缓存。
  4. 吞吐低:确认是否有小块I/O或队列深度过浅。
  5. 疑似缓存问题:对比 direct=1 与默认缓存模式的差异。

练习#

  1. 使用 lsblkdf -hT 列出系统磁盘与文件系统类型,并判断哪些为SSD或HDD。
  2. iostat -x 1 5 观察空闲与高负载下的 await%util 变化。
  3. 分别使用 fio 进行顺序写与随机写测试,记录 IOPSBW,对比结果并解释原因。
  4. 修改 fio--bs 从 4k 改为 64k,观察吞吐与延迟的变化并分析原因。