Ansible 自動化測試工具實際應用IO Benchmark

硬體環境

16GB FC target H12-100(R610) + SAS DAS MD1200 * 2
8 *32GB FC target H6-203(R740)
4 * 32GB FC Initiator H4-52(R730) and H4-57(R730)
32Gb Brocade 6100

軟體環境

OEL7U6
Ansible VM 172.22.16.46
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ihv epel-release-latest-7.noarch.rpm
yum install ansible
ssh-keygen -t rsa -P ”
ssh-copy-id 192.168.10.1
Repeat ssh-copy-id to each VM

vim /etc/ansible/hosts
[fio]
172.22.4.52172.22.4.57
[fss]
172.22.6.203
[all:vars]
ansible_python_interpreter=/usr/bin/python2.7

測試主機回應
ansible fio -m ping

The ansible playbook format
YAML sample

新建ansible playbook file
vim playbook.yml

– hosts: fio
   remote_user: root
   tasks:
   – name: run fio
       shell: cd /root/FIO ; ./fio.sh 1

檢查playbook file正確
ansible-playbook –syntax-check playbook.yml

測試同步IO fio指定
ansible fio -m shell -a “cd /root/FIO ; ./fio.sh 1”

主流程控制bash script

vim benchmark_32g.sh
#!/bin/bash
for i in seq 65
do
ssh 172.22.6.203 “mpstat 1 > /root/FIO/mptstat.$i.log &”
ssh 172.22.6.203 “vmstat 1 > /root/FIO/vmstat.$i.log &”
ansible fio -m shell -a “cd /root/FIO ; ./fio.sh $i”
ssh 172.22.6.203 “/root/kill_p.sh”
done

停止mpstat程序bash script

vi /root/kill_p.shkill -15 pgrep mpstat

At H4-52 & H4-57 side, for upload file fio.sh

vi /root/FIO/fio.sh

#!/bin/bashcase $1 in1)fio –name=read_4k_1D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.4k.1.fiov3.csv;;

2)fio –name=read_4k_4D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.4k.4.fiov3.csv;;

3)fio –name=read_4k_16D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.4k.16.fiov3.csv;;

4)fio –name=read_4k_64D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.4k.64.fiov3.csv;;

5)fio –name=read_8k_1D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.8k.1.fiov3.csv;;

6)fio –name=read_8k_4D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.8k.4.fiov3.csv;;

7)fio –name=read_8k_16D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.8k.16.fiov3.csv;;

8)fio –name=read_8k_64D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.8k.64.fiov3.csv;;

9)fio –name=read_32k_1D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.32k.1.fiov3.csv;;

10)fio –name=read_32k_4D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.32k.4.fiov3.csv;;

11)fio –name=read_32k_16D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.32k.16.fiov3.csv;;

12)fio –name=read_32k_64D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.32k.64.fiov3.csv;;

13)fio –name=read_2048k_1D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.2048k.1.fiov3.csv;;

14)fio –name=read_2048k_4D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.2048k.4.fiov3.csv;;

15)fio –name=read_2048k_16D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.2048k.16.fiov3.csv;;

16)fio –name=read_2048k_64D –rw=read –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.read.2048k.64.fiov3.csv;;

17)fio –name=randread_4k_1D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.4k.1.fiov3.csv;;

18)fio –name=randread_4k_4D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.4k.4.fiov3.csv;;

19)fio –name=randread_4k_16D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.4k.16.fiov3.csv;;

20)fio –name=randread_4k_64D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.4k.64.fiov3.csv;;

21)fio –name=randread_8k_1D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.8k.1.fiov3.csv;;

22)fio –name=randread_8k_4D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.8k.4.fiov3.csv;;

23)fio –name=randread_8k_16D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.8k.16.fiov3.csv;;

24)fio –name=randread_8k_64D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.8k.64.fiov3.csv;;

25)fio –name=randread_32k_1D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.32k.1.fiov3.csv;;

26)fio –name=randread_32k_4D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.32k.4.fiov3.csv;;

27)fio –name=randread_32k_16D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.32k.16.fiov3.csv;;

28)fio –name=randread_32k_64D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.32k.64.fiov3.csv;;

29)fio –name=randread_2048k_1D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.2048k.1.fiov3.csv;;

30)fio –name=randread_2048k_4D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.2048k.4.fiov3.csv;;

31)fio –name=randread_2048k_16D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.2048k.16.fiov3.csv;;

32)fio –name=randread_2048k_64D –rw=randread –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randread.2048k.64.fiov3.csv;;

33)fio –name=write_4k_1D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.4k.1.fiov3.csv;;

34)fio –name=write_4k_4D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.4k.4.fiov3.csv;;

35)fio –name=write_4k_16D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.4k.16.fiov3.csv;;

36)fio –name=write_4k_64D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.4k.64.fiov3.csv;;

37)fio –name=write_8k_1D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.8k.1.fiov3.csv;;

38)fio –name=write_8k_4D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.8k.4.fiov3.csv;;

39)fio –name=write_8k_16D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.8k.16.fiov3.csv;;

40)fio –name=write_8k_64D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.8k.64.fiov3.csv;;

41)fio –name=write_32k_1D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.32k.1.fiov3.csv;;

42)fio –name=write_32k_4D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.32k.4.fiov3.csv;;

43)fio –name=write_32k_16D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.32k.16.fiov3.csv;;

44)fio –name=write_32k_64D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.32k.64.fiov3.csv;;

45)fio –name=write_2048k_1D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.2048k.1.fiov3.csv;;

46)fio –name=write_2048k_4D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.2048k.4.fiov3.csv;;

47)fio –name=write_2048k_16D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.2048k.16.fiov3.csv;;

49)fio –name=write_2048k_64D –rw=write –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.write.2048k.64.fiov3.csv;;

50)fio –name=randwrite_4k_1D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.4k.1.fiov3.csv;;

51)fio –name=randwrite_4k_4D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.4k.4.fiov3.csv;;

52)fio –name=randwrite_4k_16D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.4k.16.fiov3.csv;;

53)fio –name=randwrite_4k_64D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=4k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.4k.64.fiov3.csv;;

54)fio –name=randwrite_8k_1D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.8k.1.fiov3.csv;;

55)fio –name=randwrite_8k_4D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.8k.4.fiov3.csv;;

56)fio –name=randwrite_8k_16D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.8k.16.fiov3.csv;;

57)fio –name=randwrite_8k_64D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=8k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.8k.64.fiov3.csv;;

58)fio –name=randwrite_32k_1D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.32k.1.fiov3.csv;;

59)fio –name=randwrite_32k_4D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.32k.4.fiov3.csv;;

60)fio –name=randwrite_32k_16D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.32k.16.fiov3.csv;;

61)fio –name=randwrite_32k_64D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=32k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.32k.64.fiov3.csv;;

62)fio –name=randwrite_2048k_1D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=1 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.2048k.1.fiov3.csv;;

63)fio –name=randwrite_2048k_4D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=4 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.2048k.4.fiov3.csv;;

64)fio –name=randwrite_2048k_16D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=16 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.2048k.16.fiov3.csv;;

65)fio –name=randwrite_2048k_64D –rw=randwrite –direct=1 –ioengine=libaio –runtime=30s –size=100G –ioscheduler=noop –filename=/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde –bs=2048k –iodepth=64 –numjobs=1 –group_reporting –minimal >> FalconStor.Linux.randwrite.2048k.64.fiov3.csv;;

esac

Read more

How to document Home Lab and Network

運維機房和跨域的網路,會遇到各式需求與問題,用對工具才能分析問題,個人覺得最重要的是使用能處理問題的工具。 推薦目前想學和正在使用的平台與軟體,協助將公司/家用機房文件化 佈告欄任務管理 Focalboard 白板可管理任務指派 網路架構文件編寫 netbox 精細管理網路設備與連接線路 IP 資源管理 phpipam 專注網路IP分配 邏輯塊文件編寫 draw.io 視覺化概念圖 機房設備管理 ITDB 管理設備生命週期與使用者

By Phillips Hsieh

如何在Raspberry Pi4上安裝Proxmox for ARM64

第一步 準備好Raspberry Pi 4 / CM4 4GB RAM,這裡要留意CM4如果是買有內建eMMC storage會限制不能使用SD卡開機而限制本地空間容量,如果沒有NAS外接空間或使用USB開機的話,建議買CM4 Lite插上大容量SD卡 第二步 去Armbian官網下載最小化Debian bookworm image https://www.armbian.com/rpi4b/ Armbian 25.2.2 Bookworm Minimal / IOT 然後寫入SD/USB開機碟,寫入方法參考官方文件 https://github.com/raspberrypi/usbboot/blob/master/Readme.md Note: 官方提供的預先設定系統方法,可以在Armbian初次啟動自動化完成系統設定。連結在此 https://docs.armbian.com/User-Guide_Autoconfig/

By Phillips Hsieh

世界越快心越慢

在晚飯後的休息時間,我特別享受在客廳瀏灠youtube上各樣各式創作者的影音作品。很大不同於傳統媒體,節目多是針對大多數族群喜好挑選的,在youtube上我會依心情看無腦的動畫、一些旅拍記錄、新聞時事談論。 尤其在看了大量的Youtube的分享後,我真的感受到會限制我的是我的無知,特別是那些我想都沒想過的實際應用,在學習後大大幫助到我的生活和工作層面。 休息在家時,我喜歡想一些沒做過的菜,動手去設計生活和工作上的解決方案,自己是真的很難閒著沒事做。 如創作文章,陪養新的習慣都能感覺到成長的喜悅,是不同於吃喝玩樂的快樂的。 創作不去限制固定的形式,文字是創作、影像聲音也是創作,記錄生活也是創作,我想留下的就是創造—》實現—》回憶,這樣子的循環過程,在留下的足跡面看到自己一路上的成長、失敗、絕望、重新再來。 雖然大部份的時候去做這些創作也不明白有什麼特別的意義,但不去做也不會留下什麼,所以呀不如反事都去試試看,也許能有不一樣的水花也許有意想不到的結果,投資自己永遠不會是失敗的決定,不是嗎?先問問自己再開始計畫下一步,未來沒人說得準。 像最近看youtube仍大一群人在為DOS開

By Phillips Hsieh

知識管理的三個步驟:一小時學會把知識運用到生活上

摘錄瓦基「閱讀前哨站」文章作為自己學習知識管理的內容 Part1「篩選資訊」 如何從海量資訊中篩選出啟發性、實用性和相關性的精華,讓你在學習過程中不再迷失方向。 1. 實用性 2. 啟發性 Part2「提高理解」 如何通過譬喻法和應用法,將抽象的知識與日常生活和工作緊密結合,建立更深刻的理解。 1. 應用法 2. 譬喻法 Part3「運用知識」 如何連結既有知識,跟自己感興趣的領域和專案產生關聯,讓你在運用知識的路途上游刃有餘。 1. 跟日常工作專案、人際活動產生連結 # 為什麼要寫日記? * 寫日記是為了忘記,忘卻瑣碎事情,保持專注力 * 寫日記就像在翻譯這個世界,訓練自己的解讀能力 * 不只是透過日記來記錄生活,而是透過日記來發展生活 #如何寫日記? * 不要寫流水帳式的日記,而是寫覆盤式的日記 當我們試著記錄活動和感受之間的關聯,有助於辦認出真正快樂的事 日記的記錄方式要以過程為主,而非結果 * 感恩日記的科學建議,每日感恩的案例

By Phillips Hsieh