Vdbench 是一个命令行实用程序,旨在生成用于验证存储性能和存储数据完整性的磁盘 I/O 负载。还可通过输入文本文件指定 Vdbench 执行参数,下面是使用vdbench批量创建目录和文件的示例,创建3600万个文件示例
Vdbench工具的安装
- Vdbench的运行依赖java环境,请务必先安装java运行环境
- 安装java
# Ubuntu OS环境安装java
apt-get install openjdk-8-jdk
# Centos OS环境安装java
yum install openjdk-8-jdk
检查是否安装成功
root@infokist:~# java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_362-8u362-ga-0ubuntu1~20.04.1-b09)
OpenJDK 64-Bit Server VM (build 25.362-b09, mixed mode)
- 安装vdbench,下载vdbench50407.zip包,上传至服务器上
解压unzip vdbench50407.zip -d vdbench50407/
- 进入vdbench解压后的目录中,修改vdbench文件的权限
chmod 777 vdbench
- 执行./vdbench -t 成功运行即vdbench安装成功
root@infokist:/home/scutech/vdbench50407# ./vdbench -t
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50407 Tue June 05 9:49:29 MDT 2018
For documentation, see 'vdbench.pdf'.
17:29:23.603 input argument scanned: '-f/tmp/parmfile'
17:29:23.638 Starting slave: /home/scutech/vdbench50407/vdbench SlaveJvm -m localhost -n localhost-10-230511-17.29.23.530 -l localhost-0 -p 5570
17:29:23.840 All slaves are now connected
17:29:25.002 Starting RD=rd1; I/O rate: 100; elapsed=5; For loops: None
May 11, 2023 interval i/o MB/sec bytes read resp read write read write resp queue cpu% cpu%
rate 1024**2 i/o pct time resp resp max max stddev depth sys+u sys
17:29:26.026 1 90.0 0.09 1024 54.44 0.008 0.006 0.009 0.02 0.03 0.004 0.0 4.8 1.4
17:29:27.006 2 95.0 0.09 1024 51.58 0.008 0.006 0.010 0.01 0.03 0.004 0.0 1.5 0.3
17:29:28.007 3 101.0 0.10 1024 49.50 0.008 0.006 0.009 0.02 0.02 0.003 0.0 1.3 0.0
17:29:29.005 4 94.0 0.09 1024 48.94 0.009 0.007 0.011 0.02 0.02 0.004 0.0 0.8 0.3
17:29:30.007 5 89.0 0.09 1024 56.18 0.008 0.006 0.010 0.01 0.02 0.004 0.0 0.8 0.3
17:29:30.016 avg_2-5 94.8 0.09 1024 51.45 0.008 0.006 0.010 0.02 0.03 0.004 0.0 1.1 0.2
17:29:31.011 Vdbench execution completed successfully. Output directory: /home/scutech/vdbench50407/output
root@infokist:/home/scutech/vdbench50407#
- 最后准备配置文件parmfile,内容如下:
hd=default,vdbench=/home/scutech/vdbench50407/,user=root,shell=ssh
hd=hd_1,system=infokist
fsd=fsd_1,anchor=/data/vdbench,depth=1,width=36,files=10,size=1k,shared=no
fwd=format,threads=40,xfersize=32k
fwd=fwd_1,fsd=fsd_1,host=hd_1,xfersize=32k,fileio=sequential,fileselect=sequential,operation=read,threads=40,openflags=o_direct
rd=rd1,fwd=(fwd*),fwdrate=max,format=restart,elapsed=10,interval=5
备注:
- system: 系统主机名,可用hostname来获得
- vdbench: 放置的安装目录
- anchor: 要生成文件夹目录,必须自己创建
- depth: 文件夹深度,1的话,代表只有一级子目录
- width: 文件夹广度, 36则代表文件夹个数为36个
- files: 最底层每个文件夹个数
- threads: 线程个数
- xfersize: 数据传输(读取和写入操作)处理的数据大小
s3fs挂载对象存储到本地
S3FS是Google开发的一款支持将对象存储中的bucket以文件形式导出的文件系统接口,兼容POSIX语法
S3FS基于FUSE开发的文件系统,允许Linux和Mac OS 挂载S3的存储桶到本地文件系统,并保持对象原来格式。
只要支持S3存储协议的都支持挂载,比如minio、华为云OBS、阿里云OSS等
- 安装 s3fs
# Ubuntu OS环境安装s3fs
apt-get install s3fs
# Centos OS环境安装s3fs
yum install s3fs-fuse
- 创建访问密钥文件
# 命令格式:echo [IAM用户访问密钥ID]:[ IAM用户访问密钥] >[密钥文件名]
echo "username:password" > /data/s3fs/.passwd-s3fs
# 设置密钥智能被当前用户访问
chmod 600 /data/s3fs/.passwd-s3fs
# 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://s3.cn-north-1.amazonaws.com.cn -o endpoint=cn-north-1
# 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://obs.cn-north-4.myhuaweicloud.com
- 挂载minio存储
# 需要加上 use_path_request_style进行兼容
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://www.mydomain.com:9001 -o use_path_request_style
# 可以使用 -o dbglevel=info -f 进行输出调试信息
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://www.mydomain.com:9001 -o use_path_request_style -o dbglevel=info -f
- 开机自动挂载,写入到
/etc/fstab
# 命令格式:s3fs#[S3存储桶名] [本地目录名] fuse _netdev,[options1],[optins2]... 0 0
s3fs#prodfile-bucket /data/s3fs/s3mnt fuse _netdev,passwd_file=/data/s3fs/.passwd-s3fs,url=http://obs.cn-north-4.myhuaweicloud.com 0 0
- S3FS参数说明
命令: s3fs BUCKET:[/PATH] MOUNTPOINT [OPTION]…
OPTIONS:
passwd_file: 指定要使用的s3fs密码文件
url: 设置用于访问对象存储的 url
endpoint: 存储端点,默认值为us-east-1
umask: 为装载目录设置umask
no_check_certificate: 不检查认证
use_path_request_style: 使用路径请求样式(使用传统API调用),兼容支持与不支持S3的类似api的虚拟主机请求
nonempty: 允许挂载点为非空目录
default_acl: 默认private,取值有private,public-read
ensure_diskfree: 设置磁盘可用空间。如果磁盘空闲空间小于此值,s3fs不适用磁盘空间
allow_other: 允许所有用户访问挂载点目录,可将该挂载点用于创建NFS共享
use_cache: 指定本地文件夹用作本地文件缓存。默认为空
del_cache: 在S3FS启动和退出时删除本地缓存
enable_noobj_cache: 减少s3fs发送的列举桶的请求,从而提升性能
dbglevel: 设置消息级别,默认关键(critical), 可以使用 info 进行调试输出
multireq_max: 列出对象的并行请求的最大数据
parallel_count: 上传大对象的并行请求数
retries: 默认值为5,传输失败重试次数
storage_class: 存储类(默认为标准) ,值有 standard,standard_ia , onezone_ia , reduced_redundancy
connect_timeout: 连接超时时间,默认为300秒
readwrite_timeout: 读写超时,默认值为60秒
max_stat_cache_size: 最大静态缓存大小,默认值为100000个条目(约40MB)
stat_cache_expire: 为stat缓存中条目指定过期时间(秒)。此过期时间表示自stat缓存后时间
-f : 前台输出执行信息
-d: 将dubug消息输出到 syslog中
执行vdbench造数据
./vdbench -f parmfile