Vdbench 是一个命令行实用程序,旨在生成用于验证存储性能和存储数据完整性的磁盘 I/O 负载。还可通过输入文本文件指定 Vdbench 执行参数,下面是使用vdbench批量创建目录和文件的示例,创建3600万个文件示例

Vdbench工具的安装

  1. Vdbench的运行依赖java环境,请务必先安装java运行环境
  2. 安装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)
  1. 安装vdbench,下载vdbench50407.zip包,上传至服务器上
    解压unzip vdbench50407.zip -d vdbench50407/
  2. 进入vdbench解压后的目录中,修改vdbench文件的权限 chmod 777 vdbench
  3. 执行./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# 
  1. 最后准备配置文件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等

  1. 安装 s3fs
# Ubuntu OS环境安装s3fs
apt-get install s3fs

# Centos OS环境安装s3fs
yum install s3fs-fuse
  1. 创建访问密钥文件
# 命令格式:echo [IAM用户访问密钥ID]:[ IAM用户访问密钥] >[密钥文件名]
echo "username:password" > /data/s3fs/.passwd-s3fs 

# 设置密钥智能被当前用户访问
chmod 600 /data/s3fs/.passwd-s3fs
  1. 挂载 S3存储

    利用S3fs在Amazon EC2 Linux实例上挂载S3存储桶
# 命令格式: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
  1. 挂载华为云OBS
# 命令格式: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 
  1. 挂载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
  1. 开机自动挂载,写入到 /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
  1. 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