本文包含内容:
CentOS7 系统格式化数据盘分区
CentOS 评估磁盘I/O性能读写极限测试
CentOS7 挂载新硬盘的方法
CentOS7 查看磁盘io ,找出占用io读写很高的进程
CentOS6 调整硬盘分区大小
第一步,先卸载分区
umount /dev/vdb1
第二步,格式化分区
mkfs -t ext3 /dev/vdb1
第三步,挂载分区到/www
mount /dev/vdb1 /www
用一个fio工具
安装
yum -y install fio
二,FIO用法:
随机读:
fio -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=20G -numjobs=10 -runtime=1000 -group_reporting -name=mytest
说明:
filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=16k 单次io的块文件大小为16k
bsrange=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30 本次的测试线程为30.
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息。
此外
lockmem=1g 只使用1g内存进行测试。
zero_buffers 用0初始化系统buffer。
nrfiles=8 每个进程生成文件的数量。
顺序读:
fio -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
随机写:
fio -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
顺序写:
fio -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
混合随机读写:
fio -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop
三,实际测试范例:
[root@localhost tmp]# fio -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=5 -group_reporting -name=mytest
mytest: (g=0): rw=randread, bs=16K-16K/16K-16K/16K-16K, ioengine=psync, iodepth=1
...
fio-2.2.8
Starting 10 threads
mytest: Laying out IO file(s) (1 file(s) / 2048MB)
mytest: Laying out IO file(s) (1 file(s) / 2048MB)
mytest: Laying out IO file(s) (1 file(s) / 2048MB)
Jobs: 10 (f=10): [r(10)] [100.0% done] [3152KB/0KB/0KB /s] [197/0/0 iops] [eta 00m:00s]
mytest: (groupid=0, jobs=10): err= 0: pid=15442: Thu Sep 24 16:51:05 2015
read : io=14784KB, bw=2918.3KB/s, iops=182, runt= 5066msec
clat (msec): min=3, max=460, avg=54.41, stdev=63.26
lat (msec): min=3, max=460, avg=54.41, stdev=63.26
clat percentiles (msec):
| 1.00th=[ 5], 5.00th=[ 9], 10.00th=[ 11], 20.00th=[ 16],
| 30.00th=[ 19], 40.00th=[ 24], 50.00th=[ 31], 60.00th=[ 43],
| 70.00th=[ 56], 80.00th=[ 80], 90.00th=[ 128], 95.00th=[ 184],
| 99.00th=[ 338], 99.50th=[ 379], 99.90th=[ 461], 99.95th=[ 461],
| 99.99th=[ 461]
bw (KB /s): min= 98, max= 593, per=10.18%, avg=297.06, stdev=109.73
lat (msec) : 4=0.76%, 10=7.03%, 20=25.76%, 50=32.03%, 100=19.59%
lat (msec) : 250=12.77%, 500=2.06%
cpu : usr=0.01%, sys=0.13%, ctx=942, majf=0, minf=41
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=924/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: io=14784KB, aggrb=2918KB/s, minb=2918KB/s, maxb=2918KB/s, mint=5066msec, maxt=5066msec
Disk stats (read/write):
dm-1: ios=905/2, merge=0/0, ticks=53056/149, in_queue=53856, util=98.12%, aggrios=928/3, aggrmerge=0/0, aggrticks=55020/149, aggrin_queue=55168, aggrutil=97.95%
sda: ios=928/3, merge=0/0, ticks=55020/149, in_queue=55168, util=97.95%
一、使用命令查看当前的磁盘信息
#fdisk -l //查看磁盘信息
二、查看磁盘格式
# df -T /
三、fdisk sdb 进行分区,输入 p 查看新硬盘分区,如图:
五、用m命令来看fdisk命令的内部命令;n命令创建一个新分区;d命令删除一个存在的分区;p命令显示分区列表;t命令修改分区的类型ID号;l命令显示分区ID号的列表;a命令指定启动分区;w命令是将对分区表的修改存盘让它发生作用。
我们这里是创建新分区,所以输入 n 然后 e 是扩展分区,p 是主分区,我们输入 p
接下来的块数什么的,都输入 1 ,最后选择大小,Last cylinder or +size or +sizeM or +sizeK (1-60801, default 60801):+500GB //我们输入这个意思是分区大小为500G
最后输入 w 保存,如图:
六、格式磁盘mkfs -t ext3 /dev/sdb1 命令进行对sdb1格式化
七、挂载硬盘
格式化完了之后,我们就可以进行挂载分区了,我们先创建一个目录叫data然后把 /dev/sdb1 挂载到 /data 目录下,命令如下
mkdir /data
mount -t ext4 /dev/vdb1 / data
最后使用 df -h 命令进行查看,修改 /etc/fstab 来进行自动加载。如图:
# /dev/vdb1 /mnt ext4 defaults 0 0
然后保存x 退出。
1,先用iostat查看磁盘io 是否读写负载很高
用iostat -x 1 10
如果 iostat 没有,要 yum install sysstat安装这个包,第一眼看下图红色圈圈的那个如果%util接近100%,表明I/O请求太多,I/O系统已经满负荷,磁盘可能存在瓶颈,一般%util大于70%,I/O压力就比较大,读取速度有较多的wait,然后再看其他的参数,
rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s
wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/0设备次数。即delta(wio)/s
rsec/s:每秒读扇区数。即delta(rsect)/s
wsec/s:每秒写扇区数。即delta(wsect)/s
rKB/s:每秒读K字节数。是rsec/s的一半,因为每扇区大小为512字节
wKB/s:每秒写K字节数。是wsec/s的一半
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。即delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)
await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)
svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的
2,找出使用io高的进程的工具 iotop
yum install iotop -y
直接执行 iotop 命令,然后看下图的显示,查看那个进程的读写,找出进程
想增加root空间,减少home空间。
[root@npm ~]# df -h Filesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root 48G 45G 17M 100% /tmpfs 246M 0 246M 0% /dev/shm/dev/sda1 485M 33M 427M 8% /boot/dev/mapper/VolGroup-lv_home 50G 180M 47G 1% /home
[root@npm ~]# umount /home[root@npm ~]# e2fsck -f /dev/mapper/VolGroup-lv_home e2fsck 1.41.12 (17-May-2010)第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/mapper/VolGroup-lv_home: 11/3303104 files (0.0% non-contiguous), 253351/13207552 blocks[root@npm ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 2G resize2fs 1.41.12 (17-May-2010)Resizing the filesystem on /dev/mapper/VolGroup-lv_home to 524288 (4k) blocks. Begin pass 2 (max = 32768)正在重定位块 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Begin pass 3 (max = 404)正在扫描inode表 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX The filesystem on /dev/mapper/VolGroup-lv_home is now 524288 blocks long.[root@npm ~]# mount /home[root@npm ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 48G 45G 17M 100% / tmpfs 246M 0 246M 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot /dev/mapper/VolGroup-lv_home 2.0G 152M 1.8G 8% /home
[root@npm ~]# lvreduce -L 2G /dev/mapper/VolGroup-lv_home WARNING: Reducing active and open logical volume to 2.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce lv_home? [y/n]: y Reducing logical volume lv_home to 2.00 GiB Logical volume lv_home successfully resized [root@npm ~]# df -h Filesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root 48G 45G 16M 100% / tmpfs 246M 0 246M 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot /dev/mapper/VolGroup-lv_home 2.0G 152M 1.8G 8% /home [root@npm ~]# vgdisplay --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 99.51 GiB PE Size 4.00 MiB Total PE 25474 Alloc PE / Size 13088 / 51.12 GiB Free PE / Size 12386 / 48.38 GiB VG UUID ILLwIo-pQ0o-2Ayw-fYcP-QhcW-A1id-Sozp1f
[root@npm ~]# lvextend -L +48.38G /dev/mapper/VolGroup-lv_root Rounding size to boundary between physical extents: 48.38 GiB Extending logical volume lv_root to 96.54 GiB Logical volume lv_root successfully resized [root@npm ~]# resize2fs -p /dev/mapper/VolGroup-lv_rootresize2fs 1.41.12 (17-May-2010) Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required old desc_blocks = 4, new_desc_blocks = 7Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 25307136 (4k) blocks. The filesystem on /dev/mapper/VolGroup-lv_root is now 25307136 blocks long. [root@npm ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root 96G 45G 46G 50% / tmpfs 246M 0 246M 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot /dev/mapper/VolGroup-lv_home 2.0G 152M 1.8G 8% /home