1、问题描述:重启机房服务器 119 开机的时候卡在这里吗,重启后还是卡这里。问题分析:由于前一段时间,tomcat 服务的一个错误代码导致 CPU 一直接近 100% 运行,并且在网上提问后发现是 /home 这个分区有错误,导致系统起不来。怀疑是前一段时间的磁盘的高速运行使得磁盘有坏道,导致在系统检测磁盘的时候(/etc/fstab )一直卡在这里。解决问题:百度后得知,网友是这样解决的,解决方法 1:1.首先在命令行输入(可选) #mount | grep on / 得到 root 用户所在分区 /dev/your_partition 2.修复文件系统(修复有可能损坏系统文件) #fsck
2、-y /dev/your_partition 注:检测并修复磁盘/dev/root ,-y 选项指定检测每个文件是自动输入 yes3.输入 reboot 进行重启,仍然报错4.继续在命令行输入修复命令 #fsck -y /dev/sda15.重启后,继续报错 Starting auditd:FAILED注:网上搜索的解释是“The auditd daemon will fail to start if its logfile is readable by anyone but root”,即由于 root 没有写 auditd 日志文件的权限,导致 auditd 启动失败输入如下命令:#cho
3、wn root.root /var/log/audit/audit.log#chmod 600 /var/log/audit/audit.log6.重启,成功进入系统小结:fsck 不仅可以对文件系统进行扫描,还能修正文件系统的一些问题,值得注意的是 fsck扫描文件系统时一定要在单用户模式、修复模式或把设备 umount 后进行!操作前一定先备份(使用 dd 命令备份)!解决方法 2:如果觉得这个检查很消耗时间,可以去掉,方法如下:1. 进入单用户执行 root# mount o remount,rw /然后修改 vi /etc/fstab2. 进入救援模式(光盘启动 按 F2 然后输入 L
4、inux rescue )vi /mnt/sysimage/etc/fstab修改方法:把错误的磁盘注释掉或者把根目录的最后一个域改为 0/dev/sda1 / ext3 defaults 1 0附最后两个域的意义:这两个数字分别位于/etc/fstab 文件的第五个域(fs_mntops)和第六个域(fs_passno)fs_mntops:用于规定文件系统的备份频率,系统的自动备份程序在执行时需要读取这个域的值,1 代表系统要求每天备份一次文件系统,2 代表每 2 天备份一次,余此类推.如果这个值是 0,那么意味着不备份这个文件系统.fs_passno:被 fsck 用来决定检查文件系统完整
5、性的次数, 在系统每次重启时系统将启动 fsck 对文件系统进行完整性检查.这个数字越小就越先得到检查,通常根文件系统的 fs_passno 被置 1,其他文件系统的被置 2,如果这个数字是 0,就意味着系统重启动时不进行完整性检查 。关于 FSCK 说明如下:说明 : 在 Linux 系统中,为了增加系统性能,通常系统默认一些数据写在内存中,并不会直接将数据写入硬盘,这是因为内存速度要比硬盘快若干倍。但是有个问题,万一由于“断电” 或者其他未知原因,造成系统死机,怎么办?系统就崩溃了。所以,我们需要在特定的时候让数据直接回存到硬盘中。这里提供几个常用的命令,其中,fsck 命令最重要. 当文
6、件系统发生错误时,可用 fsck 命令尝试加以修复.直接采用分区编号(如/dev/had3),或使用挂载点(Mount Point,如/、/usr 等)指定文件系统皆可。假设一次指定多个文件系统,而这些系统分别位于不同的物理磁盘上,则 fsck 将会尝试同步的方式去检查他们,以节省操作时间。 参数 :filesys : device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr)-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数-s : 依序一个一个地执行 fsck 的指令来检查-A : 对/etc
7、/fstab 中所有列出来的 partition 做检查-C : 显示完整的检查进度-d : 列印 e2fsck 的 debug 结果-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行-R : 同时有 -A 条件时,省略 / 不检查-V : 详细显示模式-a : 如果检查有错则自动修复-r : 如果检查有错则由使用者回答是否修复dd 命令使用详解1.命令简介 dd 的主要选项:指定数字的地方若以下列字符结尾乘以相应的数字:b=512, c=1, k=1024, w=2, xm=number mif=file #输入文件名,缺省为标准输入。 of=file #输出文件名,缺省为
8、标准输出。 ibs=bytes #一次读入 bytes 个字节(即一个块大小为 bytes 个字节) 。 obs=bytes #一次写 bytes 个字节(即一个块大小为 bytes 个字节)。 bs=bytes #同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。 cbs=bytes #一次转换 bytes 个字节,即转换缓冲区大小。 skip=blocks #从输入文件开头跳过 blocks 个块后再开始复制。 seek=blocks #从输出文件开头跳过 blocks 个块后再开始复制。 (通常只有当输出文件是磁盘或磁带时才有效)。 count=blocks #仅拷贝
9、blocks 个块,块大小等于 ibs 指定的字节数。 conv=conversion,conversion. #用指定的参数转换文件。转换参数: ascii 转换 EBCDIC 为 ASCII。 ebcdic 转换 ASCII 为 EBCDIC。 ibm 转换 ASCII 为 alternate EBCDIC. block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。 unblock 使每一行的长度都为 cbs ,不足部分用空格填充。 lcase 把大写字符转换为小写字符。 ucase 把小写字符转换为大写字符。 swab 交换输入的每对字节。 noerror 出错时不停止。
10、notrunc 不截短输出文件。 sync 把每个输入块填充到 ibs 个字节,不足部分用空(NUL)字符补齐。2.实例分析 2.1.数据备份与恢复2.1.1 整盘数据备份与恢复备份: dd if=/dev/hdx of=/dev/hdy #将本地的/dev/hdx 整盘备份到/dev/hdy dd if=/dev/hdx of=/path/to/image #将/dev/hdx 全盘数据备份到指定路径的 image 文件 dd if=/dev/hdx | gzip /path/to/image.gz #备份/dev/hdx 全盘数据,并利用 gzip 工具进行压缩,保存到指定路径恢复:dd
11、if=/path/to/image of=/dev/hdx #将备份文件恢复到指定盘 gzip -dc /path/to/image.gz | dd of=/dev/hdx #将压缩的备份文件恢复到指定盘2.1.2.利用 netcat 远程备份 dd if=/dev/hda bs=16065b | netcat 1234 #在源主机上执行此命令备份/dev/hdanetcat -l -p 1234 | dd of=/dev/hdc bs=16065b #在目的主机上执行此命令来接收数据并写入/dev/hdcnetcat -l -p 1234 | bzip2 partition.img netc
12、at -l -p 1234 | gzip partition.img #以上两条指令是目的主机指令的变化分别采用 bzip2 gzip 对数据进行压缩,并将备份文件保存在当前目录。2.1.3.备份 MBR 备份: dd if=/dev/hdx of=/path/to/image count=1 bs=512 备份磁盘开始的 512Byte 大小的 MBR 信息到指定文件恢复: dd if=/path/to/image of=/dev/hdx 将备份的 MBR 信息写到磁盘开始部分2.1.4.备份软盘 dd if=/dev/fd0 of=disk.img count=1 bs=1440k 将软驱
13、数据备份到当前目录的 disk.img 文件2.1.5.拷贝内存资料到硬盘 dd if=/dev/mem of=/root/mem.bin bs=1024 将内存里的数据拷贝到 root 目录下的 mem.bin 文件2.1.6.从光盘拷贝 iso 镜像 dd if=/dev/cdrom of=/root/cd.iso 拷贝光盘数据到 root 文件夹下,并保存为 cd.iso 文件2.2.增加 Swap 分区文件大小 dd if=/dev/zero of=/swapfile bs=1024 count=262144 #创建一个足够大的文件(此处为 256M) mkswap /swapfile
14、 #把这个文件变成 swap 文件 swapon /swapfile #启用这个 swap 文件 /swapfile swap swap defaults 0 0 #在每次开机的时候自动加载 swap 文件, 需要在 /etc/fstab 文件中增加一行2.3.销毁磁盘数据 dd if=/dev/urandom of=/dev/hda1 利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1 将无法挂载,创建和拷贝操作无法执行。2.4.磁盘管理2.4.1.得到最恰当的 block size dd if=/dev/zero bs=1024 count=100
15、0000 of=/root/1Gb.file dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file 通过比较 dd 指令输出中所显示的命令执行时间,即可确定系统最佳的 block size 大小2.4.2 测试硬盘读写速度 dd if=/root/1Gb.file bs=64k | dd of=/dev/null dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000 通过上两个命令输出的执行时间,可以计算出测试硬盘的读写速度2.4.3.修复硬盘 dd if=/dev/sda of=/dev/sda 当硬盘较长时间(比如 1,2 年)放置不使用后,磁盘上会产生 magnetic flux point。当磁头读到这些区域时会遇到困难,并可能导致 I/O 错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。总结: