大家好,又见面了,我是你们的朋友全栈君。
Linux环境—-多客户联机运行
注意,此时会出现avahi-daemon服务的报错日志信息:
关闭即可:systemctl stop avahi-daemon
avahi-daemon是一种Linux操作系统上运行在客户机上实施查找基于网络的Zeroconf service的服务守护进程。 该服务可以为Zeroconf网络实现DNS服务发现及DNS组播规范。 用户程序通过Linux D-Bus信息传递接收发现到网络服务和资源的通知。该守护进程配合缓存用户程序的答复,以帮助减少因答复而产生的网络流量。 每个客户的都需要安装vdbench,路径保持一致
SSH互联,选一个客户的为父节点,把每个子节点都信任父节点
父节点为93.93.41.5,子节点为93.93.41.6
ssh-keygen -t rsa 生成秘钥
chmod 755 /root/.ssh/ 修改生成秘钥的权限
scp /root/.ssh/id_rsa.pub 93.93.41.6:/root/.ssh/authorized_keys 拷贝公钥
3. 验证SSH互信
在父节点上ssh每一个子节点,如果不需要输入秘钥就能登录,则互信成功。
4 多客户端配置文件
hd=default,dbench=/home/Vdbench/,user=root,shell=ssh
hd=hd1,system=93.93.31.7
hd=hd2,system=93.93.41.8
hd=hd3,system=93.93.41.9
fsd=fsd1,anchor=/tmp/yht/client1,depth=2,width=100,files=2000,size=100m,shared=yes
fsd=fsd2,anchor=/tmp/yht/client2,depth=1,width=1000,files=2000,zies=(20m,40,100m,60),shared=yes
fsd=fsd3,anchor=/tmp/yht/client3,depth=1000,width=1,files2000,size=1m,shared=yes
fwd=fwd1,fsd=fsd1,host=hd1,operation=read,xfersize=(1m,40,64k,60),fileio=random,fileselect=sequantial,threads=32
fwd=fwd2,fsd=fsd2,host=hd2,operation=write,xfersize=64k,fileio=random,fileselect=sequantial,threads=32
fwd=fwd3,fsd=fsd3,host=hd3,rdpct=60,xfersize=4k,fileio=random,fileselect=sequantial,threads=32
rd=rd1,fwd=(fwd1-fwd3),fwdrate=max,format=restart,elapesed=600,interval=10
注:fsd中shared,vdbench不允许不同的slave之间共享同一个目录结构下的所有文件,因为这样会带来很大的开销,但是它们允许共享同一个目录结构。加入设置了shared=yes,那么不同的slave可以平分一个目录下所有的文件来进行访问,相当于每个slave有各自等分的访问区域,因此不能测试多个客户的对同一个文件的读写。 vdbench的数据一致性校验参数
推荐参数:-jn
打开vdbench校验数据的参数为-v或-j,这个过程会为每一次写操作记录日志用于后续校验。
使用-v参数,则生成的校验日志直接保存于内存中,使用-j参数则生成一个校验日志的文件,第二次校验时,-jr即可进行日志恢复进行校验。-v直接记录于内存之中,速度更快,但如果存储系统出现重启或内存清理,那么-v参数记录的校验日志就丢失了;-j直接写到磁盘上,安全有保证但速度会慢一下,此时可选择-jn,异步写到磁盘上,速度和安全都有一定的保证。 数据校验原理
数据校验的工作流程如下:每一个在存储系统中的第一次写操作记录在一个表中,假定写操作的块大小是1m,那么这个块大小中的每512字节中包含的两项–8字节的逻辑字节地址(LBA)和一个字节的数据校验key值(标记是第几次写,范围为0-125,00代表创建写,01代表第一次覆盖写,以此类推,当到达126后折返00,重新来一轮)会被记录,这个过程为生成校验日志;第二次重新运行脚本(使用参数-jr或者-vr)则根据第一次记录的日志进行数据校验 vdbench 过滤多余系统日志
messagescan=no 参数说明—vdbench常见问题(转载整理)
1、-f参数后面多个配置文件是同时执行还是顺序执行;
-f后面的配置文件里的参数通过parseParameterLines()函数进行顺序解析,写入并生成输出文件parmfile.html和parmscan.html(包含了完整的参数配置)。
执行时,首先运行rd,进入RD中调用的wd或fwd,然后进入WD或FWD中的sd或fsd(若有HD,同上调用)。
2、-v校验中逻辑字节地址/数据校验关键字是存储在哪个位置;
数据块的大小是xfersize的值,数据校验时,每写入数据块512个字节包含一个8字节的lba和一个1字节的key值。
其中lba指的是字节地址,与文件系统的偏移量和文件的偏移量有关。
Key值记录了写入块的次数,每写入块一次,key值加1,加到126后直接返回1。
3、-v校验中的校验是发生在什么时候;
每写入一次数据块时,先读后写,写前写后内容进行校验。
进行数据校验需要执行-v,也可以在参数文件中写入Validate=yes,也就是说,在配置文件执行生成系统文件后,校验一直进行。
4、-vt时间戳显示在哪,是什么意思,是否可以查看;
内存中最后一次写入或读取成功的时间戳。可以在输出结果中查看:
5、逻辑地址有啥用。
Lba记录了每个数据块的地址,校验时根据lba方便查找校验错误的地方。
6、校验错输出script_name什么意思,data_errors参数的作用;
返回校验错误,描述出错的位置,方便测试人员定位查阅。如问题5,定位在fsd=fsd1文件系统中出错及第二行中显示的文件名字及出错的位置。
7、-v该末尾一个字节。是否能校验么,报错的位置是否正确;
在文件末尾插入字节,可以被校验出。报错位置正确,定位在文件的结尾位置。
8、lba后面的值有什么意思;
lba指的是逻辑字节地址,与文件系统的偏移量和文件的偏移量有关。校验错误返回的lba指的是在文件中的出错位置。
9、-j和-v之间的区别;
-v的数据校验,校验文件会输出到内存中,但是一旦vdbench关闭或者系统重启,校验就会失败。而-j能进行持续校验,等下次重启时,会恢复原始数据重新校验。如果只写-j而不加-v,也会进行-v操作。
10、-j中有几个fsd就有几个jnl文件map文件
是的
运行./vdbench –j –f testcount ,生成日志文件所在的目录如下:
11、jnl和map文件有什么区别么?
开始执行时,vdbench会生成两个文件Map backup file 和journal file。系统出现故障时(仅仅丢失了内存映射表中的数据),这两个文件由于保留了原始数据(恢复数据时首先读取journal文件的数据,如果失败,再从Map backup文件中写入),方便测试人员继续进行读写和校验。
(1)正常时:内存中数据校验映射表的内容写入到backup和journal文件。日志更新内容持续写入到journal文件结尾部分并生成日志记录。
(2)系统出现问题时: Vdbench重启并进行数据修复,从journal文件开始部分读出原始数据,并把数据更新到内存映射表中。一旦journal到达文件结尾,读取并验证用“modified” 标记的所有数据块。接着执行(1)过程。
如果由于系统崩溃,journal文件的原始数据写入内存映射表中失败,直接读取backup文件内容并写入。
综上,可以看出,map backup文件修复数据性能更高。
12、命令之间有没有冲突
没有,但是命令设置时必须-f后面加 parmfile文件,如果有-s命令则会模拟执行文件。如果命令中只有-j却无-v,则隐含着进行数据校验生成日志文件。
13、count参数的意思
count=(nn,mm) 快速创建SD序列(nn是开始数字,mm是数字个数)
如fsd=fsd,anchor=/ww,count=(1,5)在/ww1-/ww5中创建fsd1-fsd5
如运行:
/mnt目录下显示的目录结构如下:
若在wd中限定fsd1,则只显示wwz1一个目录:
若在fsd中限定fsd1,则会出错,如下
14、range的wd的寻找范围,是否可以运用到fsd中
文件系统中不可用, 测试过程如下:
15、rdpct-rhpct-whpct区别
Sd中: rdpct=nn 读操作的比例,默认为100%。rdpct=80代表读写比例4:1。
rhpct=nn 只在读裸设备时使用,读缓存命中率,默认值为0。
whpct=nn 只在写裸设备时使用,写缓存命中率,默认值为0。
Fsd中不存在rhpct及whpct参数:
rdpct在文件上的读写操作比例。rdpct=80代表读写比例4:1。必须同时添加fileio=random参数,不能留空(系统默认fileio=sequential)
计算公式如下:
rdpct = read.operations * 100. / (read.operations write.operations);
16、缓存命中,rhpct部分,1M的意思。
只针对sd而言。
每一个存储体积被分成两部分:hit area指用于缓存命中部分(这由hitarea=nn设定,hitarea默认为1M),miss area 指SD剩下的部分缓存未命中的部分。
17、xfersize=(1-64k,d)执行顺序
在文件系统中不支持这种方式。只支持xfersize=nn或xfersize=(x1,nn1,x2,nn2,…)其中nn1 nn2 …=100,报错如下:
18、xfersize=(1k,10)这种格式,是报错还是按照4k块大小执行剩余的90%
19、skew,IO倾斜比,没有IOrate参数时,参数是否生效;
直接会报错
在fsd中,fwdrate不存在时
20、skew对IOPS生效还是对带宽生效
iops生效,skew时对fwdrate或iorate的分配
21、iorate指的是带宽还是iops
iops
22、rd的名字是否有要求
没有要求,可以任意定义,只是个名字而已。
23、count中,是否创建多个fsd?还是创建了5个目录?
多个fsd,每个fsd下又存在多个目录,见问题13
24、count中,rd引入部分fsd是否可以?
可以,见问题13
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144465.html原文链接:https://javaforall.cn