解决八种Linux硬盘问题的技巧

解决八种Linux硬盘问题的技巧

不能在Linux或者类UNIX系统的硬盘上写入数据?想解决服务器上磁盘损坏的问题吗?想知道你为什么总是在屏幕上看到“磁盘已满”的字眼吗?想学习处理这些问题的办法吗?试试一下这8个解决Linux及UNIX服务器硬盘问题的小贴士吧。

#1 - 错误: 设备上无剩余空间

当你的类UNIX系统磁盘写满了时你会在屏幕上看到这样的信息。本例中,我运行fallocate命令然后我的系统就会提示磁盘空间已经耗尽:


  1. $ fallocate -l 1G test4.img
  2. fallocate: test4.img: fallocate failed: No space left on device

第一步是运行df命令来查看一个有分区的文件系统的总磁盘空间和可用空间的信息:


  1. $ df

或者试试可读性比较强的输出格式:


  1. $ df -h

部分输出内容:


  1. Filesystem Size Used Avail Use% Mounted on
  2. /dev/sda6 117G 54G 57G 49% /
  3. udev 993M 4.0K 993M 1% /dev
  4. tmpfs 201M 264K 200M 1% /run
  5. none 5.0M 0 5.0M 0% /run/lock
  6. none 1002M 0 1002M 0% /run/shm
  7. /dev/sda1 1.8G 115M 1.6G 7% /boot
  8. /dev/sda7 4.7G 145M 4.4G 4% /tmp
  9. /dev/sda9 9.4G 628M 8.3G 7% /var
  10. /dev/sda8 94G 579M 89G 1% /ftpusers
  11. /dev/sda10 4.0G 4.0G 0 100% /ftpusers/tmp

使用df命令输出可以清楚地发现,在 /dev/sda10 分区下总共4.0Gb的空间被全部写满了。

修复磁盘写满的问题

1.用gzip,bzip2或tar命令压缩未压缩的日志和其它文件


  1. gzip /ftpusers/tmp/*.log
  2. bzip2 /ftpusers/tmp/large.file.name

2.在类UNIX系统中用rm命令删除不想要的文件


  1. rm -rf /ftpusers/tmp/*.bmp

3.用rsync命令移动文件至其它系统或外置硬盘:


  1. rsync --remove-source-files -azv /ftpusers/tmp/*.mov /mnt/usbdisk/
  2. rsync --remove-source-files -azv /ftpusers/tmp/*.mov server2:/path/to/dest/dir/

4.在类UNIX系统中找出最占磁盘空间的目录或文件


  1. du -a /ftpusers/tmp | sort -n -r | head -n 10
  2. du -cks * | sort -rn | head

5.清空指定文件。这招对日志文件很有效:


  1. truncate -s 0 /ftpusers/ftp.upload.log
  2. ### bash/sh等 ##
  3. >/ftpusers/ftp.upload.log
  4. ## perl ##
  5. perl -e'truncate "filename", LENGTH'

6.在Linux和UNIX中找出并删除显示着但已经被删除的大文件:


  1. ## 基于Linux/Unix/OSX/BSD等系统 ##
  2. lsof -nP | grep '(deleted)'
  3.  
  4. ## 只基于Linux ##
  5. find /proc/*/fd -ls | grep '(deleted)'

清空它:


  1. ## 基于Linux/Unix/OSX/BSD等所有系统 ##
  2. > "/path/to/the/deleted/file.name"
  3. ## 只基于Linux ##
  4. > "/proc/PID-HERE/fd/FD-HERE"

#2 - 文件系统是只读模式吗?

当你尝试新建或保存一个文件时,你可能最终得到诸如以下的错误:


  1. $ cat > file
  2. -bash: file: Read-only file system

运行mount命令来查看被挂载的文件系统是否处于只读状态:


  1. $ mount
  2. $ mount | grep '/ftpusers'

在基于Linux的系统中要修复这个问题,只需将这个处于只读状态的文件系统重新挂载即可:


  1. # mount -o remount,rw /ftpusers/tmp

(LCTT 译注:如果硬盘由于硬件故障而 fallback 到只读模式,建议不要强制变回读写模式,而是赶快替换硬盘)

另外,我是这样用rw模式重新挂载FreeBSD 9.x服务器的根目录的:


  1. # mount -o rw /dev/ad0s1a /

#3 - Am I running out of inodes?

有时候,df命令能显示出磁盘有空余的空间但是系统却声称文件系统已经写满了。此时你需要用以下命令来检查能在文件系统中识别文件及其属性的索引节点


  1. $ df -i
  2. $ df -i /ftpusers/

部分输出内容:


  1. Filesystem Inodes IUsed IFree IUse% Mounted on
  2. /dev/sda8 6250496 11568 6238928 1% /ftpusers

如上 /ftpusers 下有总计62,50,496KB大小的索引节点但是只有11,568KB被使用。你可以在 /ftpusers 位置下另外创建62,38,928KB大小的文件。如果你的索引节点100%被使用了,试试看以下的选项:

  • 找出不想要的文件并删除它,或者把它移动到其它服务器上。
  • 找出不想要的大文件并删除它,或者把它移动到其它服务器上。

(LCTT 译注:如果一个分区存储了太多的小文件,会出现 inode 用完而存储扇区还有空闲的情况,这种情况下要么清除小文件或在不需要独立访问的情况下将它们打包成一个大文件;要么将数据保存好之后重新分区,并设置分区的 -t news 属性,增加 inode 分配)

#4 - 我的硬盘驱动器宕了吗?

日志文件中的输入/输出错误(例如 /var/log/messages)说明硬盘出了一些问题并且可能已经失效,你可以用smartctl命令来查看硬盘的错误,这是一个在类UNIX系统下控制和监控硬盘状态的一个命令。语法如下:


  1. smartctl -a /dev/DEVICE
  2. # 在Linux服务器下检查 /dev/sda
  3. smartctl -a /dev/sda

你也可以用"Disk Utility"这个软件来获得同样的信息。

图 01: Gnome磁盘工具(Applications > System Tools > Disk Utility)

注意: 不要对S.M.A.R.T.工具期望太高,它在某些状况下无法工作,我们要定期做备份。

#5 - 我的硬盘驱动器和服务器是不是太热了?

高温会引起服务器低效,所以你需要把服务器和磁盘维持在一个平稳适当的温度,高温甚至能导致服务器宕机或损坏文件系统和磁盘。用hddtemp或smartctl功能,通过从支持S.M.A.R.T.功能的硬盘上读取数据的方式,从而查出你的Linux或基于UNIX系统上的硬盘温度。只有现代硬驱动器有温度传感器。hddtemp功能也支持从SCSI驱动器读取S.M.A.R.T.信息。hddtemp能作为一个简单的命令行工具或守护程序来从所有服务器中获取信息:


  1. hddtemp /dev/DISK
  2. hddtemp /dev/sg0

部分输出内容如下:

图 02: hddtemp正在运行

你也可以像下面显示的那样使用smartctl命令:


  1. smartctl -d ata -A /dev/sda | grep -i temperature

我怎么获取CPU的温度

你可以使用Linux硬件监控工具,例如像用基于Linux系统的lm_sensor功能来获取CPU温度


  1. sensors

Debian服务器的部分输出内容:

图 03: sensors命令提供了一台Linux计算机的CPU核心温度和其它信息

#6 - 处理损坏的文件系统

服务器上的文件系统可能会因为硬件重启或一些其它的错误比如坏的扇区而损坏。你可以用fsck命令来修复损坏的文件系统


  1. umount /ftpusers
  2. fsck -y /dev/sda8

来看看怎么应对Linux文件系统故障的更多信息。

#7 - 处理Linux中的软阵列

输入以下命令来查看Linux软阵列的最近状态:


  1. ## 获得 /dev/md0 上磁盘阵列的具体内容 ##
  2. mdadm --detail /dev/md0
  3.  
  4. ## 查看状态 ##
  5. cat /proc/mdstat
  6. watch cat /proc/mdstat

部分输出内容:

图 04: 查看Linux软阵列状态命令

你需要把有故障的硬件驱动器更换掉,别删错了。本例中,我更换了 /dev/sdb (RAID 6中的第二个硬件驱动器)。没必要依靠离线存储文件来修复Linux上的磁盘阵列,因为这只在你的服务器支持热插拔硬盘的情况下才能工作:


  1. ## 从一个md0阵列中删除磁盘 ##
  2. mdadm --manage /dev/md0 --fail /dev/sdb1
  3. mdadm --manage /dev/md0 --remove /dev/sdb1
  4.  
  5. # 对 /dev/sdbX 的剩余部分做相同操作 ##
  6. # 如果不是热插拔硬盘就执行关机操作 ##
  7. shutdown -h now
  8.  
  9. ## 从 /dev/sda 复制分区表至新的 /dev/sdb 下 ##
  10. sfdisk -d /dev/sda | sfdisk /dev/sdb
  11. fdisk -l
  12.  
  13. ## 添加 ##
  14. mdadm --manage /dev/md0 --add /dev/sdb1
  15. # 对 /dev/sdbX 的剩余部分做相同操作 ##
  16.  
  17. # 现在md0会再次同步,通过显示屏查看 ##
  18. watch cat /proc/mdstat

来看看加快Linux磁盘阵列同步速度的小贴士来获取更多信息。

#8 - 处理硬阵列

你可以用samrtctl命令或者供应商特定的命令来查看磁盘阵列和你所管理的磁盘的状态:


  1. ## SCSI磁盘
  2. smartctl -d scsi --all /dev/sgX
  3.  
  4. ## Adaptec磁盘阵列
  5. /usr/StorMan/arcconf getconfig 1
  6.  
  7. ## 3ware磁盘阵列
  8. tw_cli /c0 show

对照供应商特定文档来更换你的故障磁盘。

原文发布时间:2014-12-01

本文来自云栖合作伙伴“linux中国”

时间: 2024-09-20 06:44:13

解决八种Linux硬盘问题的技巧的相关文章

保存网页图片的八种方法小结_应用技巧

1.最简单的方法:利用鼠标右键菜单  这种方法是最简单的,就是对着你要保存的图片按鼠标右键,在弹出菜单中选择"图片另存为",然后选择好你要保存的路径和文件名就可以了.  2.保存网页中所有图片的方法:利用文件菜单中的"另存为"  如果你想保存整个网页中的所有图片时可以采用本方法,因为它可以一次性的把所有图片文件都保存下来.方法是:看到你想保存的图片网页后,在IE浏览器中点击"文件"菜单中的"另存为",把整个网页保存到硬盘,然后

菜鸟必备的96种linux操作技巧(下)

此为菜鸟必备的96种linux操作技巧的下篇,如果你还不了解下篇的内容,可以点击<菜鸟必备的96种linux操作技巧(上)>链接进行查看! 51. 显示文件的类型 用命令 file 可以使你知道某个文件究竟是ELF格式的可执行文件,还是shell script文件或是其他的什么格式. file filehttp://www.aliyun.com/zixun/aggregation/11696.html">name 52. 解压.tar.gz文件 xxxx.tar.gz文件使用t

win7系统突然重启的八种原因和解决方法

win7系统突然重启的八种原因和解决方法   1.病毒 ,解决方法:清除病毒,木马. 2.电压不稳,当市电电压低于170V时,计算机就会自动重启或关机,机箱电源功率不足,当运行占用CPU资源较大的大型的3D游戏或软件时,CPU 需要大功率供电,电源功率不够而超载就会电源保护而自动重启.解决方法:换成高质量大功率130-260V的宽幅开关电源. 3.内存出现松动,热稳定性不良.芯片损坏或者设置错误也会造成重启.解决方法:重插内存或换个插槽,加大内存,更换质量高的内存. 4.系统文件被破坏造成系统启

完美实现八种js焦点轮播图(下篇)_javascript技巧

继续上一篇的学习完美实现八种js焦点轮播图(上篇),供大家参考,具体内容如下 5.定时上下无缝滚动 思路: 1.思路1: 将ul复制一份,但滚动一半距离重新归位:(大型网站性能略低): 2.思路2: 通过相对定位,将第一个li移动到最后,再将ul和Li归位. window.onload=function(){ var oBox=document.getElementById('box'); var oUl=document.getElementById('ul'); var aLi_u=oUl.

菜鸟必备的96种linux操作技巧(上)

今天风信网的编辑为Linux菜鸟带来96种linux实际操作的必备技巧,用心的学习,可以让Linux菜鸟也掌握一些必杀技能啦!详情我们往下细看吧! 1. 查看man文件... nroff -man man/libnet.3 | less有时候man文件不在系统目录..这时候就可以用上面的方式来查看非标准的man文件 2. 以不同的用户身份运行程序... su - userhttp://www.aliyun.com/zixun/aggregation/11696.html">name -c

完美实现八种js焦点轮播图(上篇)_javascript技巧

本文分为上下篇为大家分享了js焦点轮播图八种经典效果,供大家参考,具体内容如下 基本布局: <div id="box"> <ul id="ul"> <li style='display:block;'><img src="images/1.jpg" alt=""></li> <li><img src="images/2.jpg"

新手建设网站必须要知道的八种技巧

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 很多人都说建设网站容易,推广网站难,可是实际上建设网站并没有想象中那么容易的,很多到后期发现推广网站很困难最主要的原因还是前期网站没有建设好,下面就让笔者来给大家介绍一下建设网站必须要知道的八种方法! 一:选择域名 域名是网站最重要的元素,所以一个域名的选择甚至能够决定一个网站的成败,我们应该能够从域名中发现网站的内容,同时也非常的好记,比如

值得收藏的20个Linux服务器性能优化技巧_Linux

    Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要目的是高效处理非交互式进程,响应时间并不是那么重要,相反,能够长时间处理高负载才是最关键的.Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级.     Linux

八种常见Excel错误提示及问题解决方法

  八种常见Excel错误提示及问题解决方法          1.#####! 原因:如果单元格所含的数字.日期或时间比单元格宽,或者单元格的日期时间公式产生了一个负值,就会产生#####!错误. 解决方法:如果单元格所含的数字.日期或时间比单元格宽,可以通过拖动列表之间的宽度来修改列宽.如果使用的是1900年的日期系统,那么Excel中的日期和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导致#####!错误.如果公式正确,也可以将单元格的格式改为非日期和时间型来显示该值