您有没有碰到过:没有运行任何程序,磁盘却不断执行读写动作,io指示灯常亮,各种操作迟缓甚至卡顿。碰到这种状况往往会感到束手无策,因为并不是 cpu 居高不下,可以立即结束相关进程。而突然结束进程中断磁盘 io 操作甚至可能导致正在写入的数据丢失。

什么进程在读写磁盘?

可能是 firefox,可能是 updatedb,也可能是正在运行的 pacman -Syu,一切皆有可能 ……

怎么查看是什么进程在不断的读写磁盘呢?

请使用 iotop 命令查看:

1234 # iotop        // 您需要从 Community 安装它后才能使用: sudo pacman -S iotop

通过输出结果,我们可以清楚地知晓是什么程序在读写磁盘,速度以及命令行,pid 等信息。

使用 arrow 键移动表头焦点,使列表排序

从截图中可以看到,pacman 在升级系统的时候,io 竟然占到了 99.99%。因为 pacman 的数据库是零散的小文件,所以读取速率不大,但是 io 却很高。通过 iotop,我们可以轻松辨识频繁读写磁盘的程序。

进一步思考:该程序在读写什么文件?

这个问题其实很简单,通过 lsof 命令我们就可以达到目的:

1 # lsof -c APPNAME

同样,如果我们知道了被频繁读取的文件是哪个,也可以反查程序:

123      # lsof FILE # lsof | grep PATH    // 也可以根据目录进行查询

12345678 # iotop    // 查看用户的进程    # lsof -p PID    // 按该用户进程 pid 查看所打开的文件 # lsof -u USERNAME    // 按用户名查看打开的文件       // 列出某用户的某进程打开的文件 # lsof -u USERNAME -c APPNAME

123 $ top      // 亦可使用 iostat 命令查看,请安装 sysstat 以使用该命令

在 cpu(s) 一行,我们可以看到 wa 项,它就是 io waiting,如果该值过大且持续很久,就证明遇到了 io 瓶颈。需要对软件进行优化,或对硬件进行升级。

如何进行 io 瓶颈测试?

大文件 io 测试:

12 $ time dd if=/dev/zero of=test.file bs=1G count=5    // 生成 5g 大小的文件并输出时间,执行速度等信息

1234567 #!/bin/bash  var1=1  while test $var1 -le $1  do touch $var1  var1=`expr  $var1 + 1`  done

执行该 shell 脚本前,请先运行 iotop 等程序监控 io 状况。运行脚本:

1 $ sh ./test.sh NUM    //    NUM 为生成的文件数

为什么会产生 io 瓶颈?

原因是多种多样的,可能是坏道,也可能是程序 bug,甚至是电压不稳。。。

曾经碰到 io 100%,读写速率却只有 2m/s 的移动硬盘,经过检测,大概有 80% 以上区域是坏道部分;还有可能是因为 pv 的直线上升,服务器无法承受如此大的荷载而导致 io 增高;或者 gnome 的 tracker 正在制作索引;也许您忘记了后台正在 making 的程序

由于原因是多种多样的,在此不能一一列举。读者发现 io 瓶颈后,可以对症下药,先软后硬排除问题,使系统恢复到最佳状态。

查看磁盘读速度:[root@localhost ~]# /sbin/hdparm -t /dev/sda

/dev/sda:

Timing buffered disk reads:   84 MB in  4.21 seconds =  19.95 MB/sec

磁盘坏道检测

建议使用livecd或者liveusb对本地磁盘进行检测。如果是对移动存储设备进行检测,请umount后再进行检测,以免数据受损。

umount /dev/sd*

对磁盘进行read-only检测:

sudo badblocks -s  -v  /dev/sd*

因为需要对磁盘进行检测,所以速度非常缓慢,在检测过程中注意不要断电,不要对硬盘进行任何操作,不要移除硬盘,不要物理损伤,不要震动等。

检测过程可以中途终止,也可以指定区块重新开始。

sudo badblock -s -v  /dev/sd*   last  start

如果您检测完成后看到

Pass completed, 0 bad blocks found.那么恭喜,此磁盘通过测试,没有坏道(坏块)。您可以放心使用。

坏道的修复/屏蔽

常见坏道分为以下几种类型:

逻辑坏道

0磁道损坏

物理坏道

坏道一般以单独或者组合形式出现。

逻辑坏道修复:fsck -a /dev/sd*

就这么简单。

更多fsck用法您可以查看这里或者查看man手册。

0磁道损坏修复:

使用1磁道代替零磁道(操作危险需谨慎)

大致流程就是全盘格式化,然后重新分区,编辑分区表使用1磁道,从而复活硬盘。

操作手册(1,2,3)

物理坏道

物理坏道没有修复可能性,只能进行屏蔽。

如果您已经进行了坏道检测,那么您肯定已经知道坏道(坏块)大致位置以及坏块大小,您需要:

备份硬盘数据

删除所有硬盘分区

根据坏块位置以及大小,估算出所占空间(例如共100个区块,磁盘大小为100g,20-30损坏,则坏块在20-30g这个区间)

进行分区(接上:分区应为 0-15|15-35|35-100,中间的15-35g为有坏道的分区。要对有坏道的分区进行扩容处理,数值不要过小,以免坏道被分到其他分区。)

隔离15-35g这个分区(即不挂载,不读写,不操作)

您的磁盘可用空间减少,但是剩余空间均可用(坏道已经屏蔽)

由于物理坏道具有扩散性,所以建议尽早让磁盘“退休”才是……

分区表修复工具

如果您的分区表已经被损坏,建议使用testdisk进行修复。他可以快速回复分区表,真的非常好用(修复我的硬盘n次!利器也~)

安装

sudo pacman -S testdisk

基本用法(1,2)

oracle 查询磁盘读写,监控磁盘读写状况相关推荐

  1. python磁盘io_python监控磁盘io

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. zabbix自动发现监控磁盘(iops和读写量)

    2019独角兽企业重金招聘Python工程师标准>>> 对于磁盘有个iops的概念比较奇怪,想监控起来看下,利用zabbix的自动发现把每个磁盘的iops监控起来,思路:自动发现所有 ...

  3. 磁盘的顺序读写与随机读写详解

    磁盘的顺序读写与随机读写详解 1.磁盘的基本概念 2.磁盘的读写方式 3.磁盘读取时间 4.顺序读写与随机读写 5 参考链接 1.磁盘的基本概念  盘片与盘面 : 一块硬盘一般有多块盘片,盘片分为上下 ...

  4. python读写磁盘扇区数据_[Win32] 直接读写磁盘扇区(磁盘绝对读写)

    正讲着驱动开发呢,这里突然插一篇Win32的博文.事实上.还是做引子,上一篇博文"IRP与派遣函数"中,我们知道了驱动程序须要处理I/O请求.我们先来看看怎么发出一个I/O请求. ...

  5. MySQL顺序读写和随机读写磁盘_随机读写与顺序读写的深入理解

    随机读写与顺序读写的深入理解 分类:数据恢复常见问题|最后更新:2018年11月6日 关于磁盘的读写性能曾经一直是我头疼的地方,涉及研发或者测试时不清楚过程导致结果不尽人意.一起认识下关于磁盘的读写原 ...

  6. 从磁盘原理理解文件读写优化

    目录 案例背景 磁盘结构 盘面 磁道 柱面 启停区或着陆区(LandingZone) 扇区 读写过程 磁盘碎片的产生(1) 希捷硬盘读写性能测试报告 文件碎片 文件碎片定义 产生 原因 文件碎片和连续 ...

  7. [Win32] 直接读写磁盘扇区(磁盘绝对读写)

    本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article ...

  8. linux磁盘读写缓存,linux读写缓存

    1. 操作系统缓存 在linux世界里,一切可读写设备都可看作是文件.文件cache设计的好坏直接影响着文件系统和磁盘的性能.最直观的是使用free命令看到的cached列. 这里面的cached列就 ...

  9. 苹果磁盘目录不具有读写权限怎么办

    在使用苹果的macOS系统时,如果在磁盘目录内显示不具有读写权限,有可能是磁盘本身设置了用户的访问权限.或者是连接了NTFS格式的磁盘,这种格式在macOS系统具有天然不可写入数据的特性. 首先,我们 ...

最新文章

  1. python在中小学教学中的应用-Python编程已经走进中小学课堂
  2. 2.7 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授
  3. c语言初学者百题大战答案七,C语言百题大战2405how many minutes
  4. 【数据库系统概论】考研附加部分重点分析【附加】
  5. 一步步构建大型网站架构(转)
  6. .NET 编码的基础知识
  7. fastjson转换时有大括号或者冒号或者有中括号_[Python Basic] 字符串处理以及类型转换 1...
  8. 我眼中的GaussDB——参加华为合伙伙伴赋能会有感
  9. python \uxxxx转中文,Python列表中的字典 \uxxxx转中文,
  10. 文献参考文献著录规则
  11. php怎麼用jabber,class.jabber
  12. 按键消抖(并联0.1uf电容)
  13. 10个免费图片站点(2020年最新)
  14. 【详细】阿里云Accesskey创建步骤记录
  15. 016.从中序与后序遍历序列构造二叉树
  16. VS开发Qt应用时遇到“找不到VCRUNTIME140D_APP.dIl,无法继续执行代码”的错误
  17. 微信小程序中苹果iOS手机显示时间格式NaN不正确的问题
  18. 一文搞懂go并发编程设计原理
  19. eclipse配置python django环境_windows下python+Django+eclipse开发环境的配置
  20. 海量数据的存储和访问解决方案

热门文章

  1. 一场互联网金融云的技术盛筵
  2. 【论文分享】Clothes-Changing Person Re-identification with RGB Modality Only
  3. Request Respone
  4. [创业基础笔记] 第3章-识别创业机会
  5. 南航金城学院计算机科学与技术怎么样,南京航空航天大学金城学院计算机科学与技术专业2016年在江苏理科高考录取最低分数线...
  6. MiniGUI更换键盘皮肤
  7. Barsetto百胜图美式全自动磨豆咖啡机,好“咖”多磨
  8. posix消息队列和systemV消息队列
  9. 【Android语音】百度混合离线语音合成
  10. 12月份工作总结暨2014年度总结