
https://github.com/e7db/docker-diskmark/actions/workflows/codeql.yml/badge.svg](https://github.com/e7db/docker-diskmark/actions/workflows/codeql.yml) https://github.com/e7db/docker-diskmark/actions/workflows/tests.yml/badge.svg](https://github.com/e7db/docker-diskmark/actions/workflows/tests.yml) https://github.com/e7db/docker-diskmark/actions/workflows/docker-image.yml/badge.svg](https://github.com/e7db/docker-diskmark/actions/workflows/docker-image.yml)
一个基于https://github.com/axboe/fio%E7%9A%84%E7%A3%81%E7%9B%98%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95https://hub.docker.com/r/e7db/diskmark%EF%BC%8C%E5%8A%9F%E8%83%BD%E7%B1%BB%E4%BC%BC%E4%BA%8ECrystalDiskMark%E3%80%82
bash# 从Docker Hub获取 docker pull e7db/diskmark docker run -it --rm e7db/diskmark # 从GitHub Container Registry获取 docker pull ghcr.io/e7db/diskmark docker run -it --rm ghcr.io/e7db/diskmark
!https://github.com/e7db/docker-diskmark/raw/main/assets/diskmark.png?raw=true "Docker DiskMark"
所有选项可通过CLI参数(推荐)或环境变量配置。CLI参数优先级高于环境变量。
容器支持多种CLI格式:--key value、--key=value和-k value。
| 短选项 | 长选项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|---|
-h | --help | 显示帮助信息并退出 | ||
-v | --version | 显示版本信息并退出 | ||
-t | --target | TARGET | /disk | 基准测试的目标目录 |
-p | --profile | PROFILE | auto | 基准测试配置文件:auto、default、nvme |
-j | --job | JOB | 自定义任务定义(如RND4KQ32T16),覆盖配置文件 | |
-i | --io | IO | direct | I/O模式:direct(同步)、buffered(异步) |
-d | --data | DATA | random | 数据模式:random(随机)、zero(全零) |
-s | --size | SIZE | 1G | 测试文件大小(如500M、1G、10G) |
-w | --warmup | WARMUP=1 | 1 | 启用预热阶段 |
--no-warmup | WARMUP=0 | 禁用预热阶段 | ||
--warmup-size | WARMUP_SIZE | (配置文件默认) | 预热块大小(默认8M,NVMe为64M) | |
-r | --runtime | RUNTIME | 5s | 每个任务的运行时间(如500ms、5s、2m) |
-l | --loops | LOOPS | 测试循环次数 | |
-n | --dry-run | DRY_RUN=1 | 0 | 验证配置而不实际运行测试 |
-f | --format | FORMAT | 输出格式:json、yaml、xml | |
-u | --no-update-check | UPDATE_CHECK=0 | 1 | 禁用启动时的更新检查 |
--color | COLOR=1 | 强制彩色输出 | ||
--no-color | COLOR=0 | 禁用彩色输出 | ||
--emoji | EMOJI=1 | 强制表情符号输出 | ||
--no-emoji | EMOJI=0 | 禁用表情符号输出 |
容器包含两种不同的测试配置文件:
bash# 4 GB文件,2次循环,启用预热,全零数据模式 docker run -it --rm e7db/diskmark --size 4G --warmup --loops 2 --data zero docker run -it --rm e7db/diskmark -s 4G -w -l 2 -d zero # 混合模式:3次循环,每次最多运行10秒 docker run -it --rm e7db/diskmark --loops 3 --runtime 10s # 自定义预热块大小 docker run -it --rm e7db/diskmark --warmup --warmup-size 128M
驱动器检测会自动选择合适的配置文件(default或nvme),如有需要可手动覆盖:
bashdocker run -it --rm e7db/diskmark --profile nvme
使用格式[RND|SEQ][size][Q depth][T threads]运行自定义任务:
RND或SEQ — 随机或顺序访问xxK或xxM — 块大小(如4K、1M)Qyy — 队列深度Tzz — 线程数示例:RND4KQ32T16 = 随机4K块,队列深度32,16线程。
bashdocker run -it --rm e7db/diskmark --job RND4KQ32T16
默认情况下,基准测试使用Docker卷挂载的/disk目录。挂载其他路径可测试不同磁盘:
bashdocker run -it --rm -v /path/to/disk:/disk e7db/diskmark
输出JSON、YAML或XML格式以便脚本处理(会自动禁用颜色、表情符号和更新检查):
bashdocker run -it --rm e7db/diskmark --format json docker run -it --rm e7db/diskmark --format yaml docker run -it --rm e7db/diskmark --format xml
JSON输出示例
json{ "configuration": { "target": "/mnt", "drive": { "label": "NVMe", "info": "Samsung SSD 990 PRO 2TB" }, "filesystem": { "type": "ext4", "partition": "/dev/nvme0n1p1", "size": "1.8T" }, "profile": "nvme", "io": "direct", "data": "random", "size": "1G", "warmup": 1, "runtime": "5s" }, "results": [ {"name": "SEQ1MQ8T1", "status": "success", "read": {"bandwidth_mb": 524, "iops": 499, "latency_ms": 2.15}, "write": {"bandwidth_mb": 498, "iops": 475, "latency_ms": 1.89}}, {"name": "SEQ1MQ1T1", "status": "success", "read": {"bandwidth_mb": 512, "iops": 488, "latency_ms": 0.52}, "write": {"bandwidth_mb": 487, "iops": 464, "latency_ms": 0.48}}, {"name": "RND4KQ32T1", "status": "success", "read": {"bandwidth_mb": 45, "iops": 11691, "latency_ms": 2.73}, "write": {"bandwidth_mb": 42, "iops": 10839, "latency_ms": 2.95}}, {"name": "RND4KQ1T1", "status": "success", "read": {"bandwidth_mb": 41, "iops": 10583, "latency_ms": 0.09}, "write": {"bandwidth_mb": 38, "iops": 9814, "latency_ms": 0.10}} ] }
YAML输出示例
yamlconfiguration: target: "/mnt" drive: label: "NVMe" info: "Samsung SSD 990 PRO 2TB" filesystem: type: "ext4" partition: "/dev/nvme0n1p1" size: "1.8T" profile: "nvme" io: "direct" data: "random" size: "1G" warmup: 1 runtime: "5s" results: - name: "SEQ1MQ8T1" status: "success" read: bandwidth_mb: 524 iops: 499 latency_ms: 2.15 write: bandwidth_mb: 498 iops: 475 latency_ms: 1.89 - name: "SEQ1MQ1T1" status: "success" read: bandwidth_mb: 512 iops: 488 latency_ms: 0.52 write: bandwidth_mb: 487 iops: 464 latency_ms: 0.48 - name: "RND4KQ32T1" status: "success" read: bandwidth_mb: 45 iops: 11691 latency_ms: 2.73 write: bandwidth_mb: 42 iops: 10839 latency_ms: 2.95 - name: "RND4KQ1T1" status: "success" read: bandwidth_mb: 41 iops: 10583 latency_ms: 0.09 write: bandwidth_mb: 38 iops: 9814 latency_ms: 0.10
XML输出示例
xml<?xml version="1.0" encoding="UTF-8"?> <benchmark> <configuration> <target>/mnt</target> <drive label="NVMe">Samsung SSD 990 PRO 2TB</drive> <filesystem type="ext4" partition="/dev/nvme0n1p1" size="1.8T" /> <profile>nvme</profile> <io>direct</io> <data>random</data> <size>1G</size> <warmup>1</warmup> <runtime>5s</runtime> </configuration> <results> <job name="SEQ1MQ8T1" status="success"> <read bandwidth_mb="524" iops="499" latency_ms="2.15" /> <write bandwidth_mb="498" iops="475" latency_ms="1.89" /> </job> <job name="SEQ1MQ1T1" status="success"> <read bandwidth_mb="512" iops="488" latency_ms="0.52" /> <write bandwidth_mb="487" iops="464" latency_ms="0.48" /> </job> <job name="RND4KQ32T1" status="success"> <read bandwidth_mb="45" iops="***" latency_ms="2.73" /> <write bandwidth_mb="42" iops="***" latency_ms="2.95" /> </job> <job name="RND4KQ1T1" status="success"> <read bandwidth_mb="41" iops="***" latency_ms="0.09" /> <write bandwidth_mb="38" iops="9814" latency_ms="0.10" /> </job> </results> </benchmark>
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务