免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 927 | 回复: 0

考点 16.03 RHCE 排错技巧 [复制链接]

论坛徽章:
0
发表于 2008-09-24 08:59 |显示全部楼层
考点 16.03 RHCE 排错技巧
有些时候你可能会成为 Red Hat Enterprise Linux 管理员,甚至对于 Red Hat考试,你可能遇到一个系统无法启动。这需要你确定出现问题的原因并修复。有些时候,可能是硬件的问题:系统供电电源有问题或硬盘崩溃。
通常情况,一个失败的系统,开机可以追溯到行动的用户:你的系统管理员!当你编辑系统配置文件,书写错误会导致系统无法启动。
任何时候你对系统做出更改或更改关键配置文件,首先要备份它们。配置完成后,你需要重启系统以验证更改,不要假设下次重启时能正常启动。最好是在你遇到问题能记得你所做的所以更改。最好是,你能将配置文件恢复到原工作状态。
在前面章节提到的,最主要的工具就是第一章光盘提供的 linux rescue 环境。考试指导中指出,你需要知道如何“diagnose and correct boot failures arising from bootloader, module, and filesystem errors”;它分解成3个部分。此外,一些 “diagnose and correct problems with network services”关键工具,前些章节提到的会在这里汇总。一些关键工具运行你 “add, remove, and resize logical volumes”。最后使用 Setroubleshoot 浏览器(在第15章有描述),诊断并更正 SELinux 下的网络服务问题。
启动加载排错
RHEL5 的启动加载程序是 GRUB。在第3章有更广泛的讨论。它可以帮助你:
*确认/boot 目录下的根分区定义
*开机进入指定的非默认运行级别
*进入 GRUB 命令行
*测试不同 GRUB 命令
*使用命令查找内核和启动 RAM 磁盘
你不需要知道所有的技巧,他们仅帮你快速的诊断考试中的问题。
练习 16-6:启动加载排错
这个练习你需要一个搭档。让搭档更改你的系统。让他在你系统上单独工作,直到系统重新启动。不要看实验直到你解决你的搭档制造的问题为止。
使用 RHEL 系统的 VMware 快照是相当有用的。练习中的问题类似于管理员搞砸了他的系统。你同样需要 RHEL 第一张安装盘。
1、备份启动加载程序相关文件,/boot/grub/grub.conf。确定将文件备份到其他位置,保证你的搭档在更改任何文件前做了备份。
2、用文本编辑器编辑 /boot/grub/grub.conf。关注内核命令行,类似下面所示:
kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00

kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/
3、在内核命令的根分区制造一个书写错误。
4、重启你的系统,让你的搭档回到电脑前。告诉他错误消息。将 RHEL5 第一张安装盘给你的搭档。
5、告诉你的搭档,在更改任何文件前,将其备份到家目录下。
6、当你的搭档完成实验,无论发生什么,恢复原配置文件 /boot/grub/grub.conf。(另外,你可以从 VMware快照中恢复配置。)
模块错误
大多内核是有加载模块编译的。当前的发行版 Linux, 包括 RHEL,在开始的 RAM 上配置模块,将其编译为 /boot 目录下的 initrd-* 文件。你可以查看 GRUB的配置文件,在最后一行有与 RAM 相关的配置。如在第8章描述的,你可以使用 mkinitrd 命令建立一个起始 RAM 配置文件。当然也可能会出现一些问题,见下面的练习。
练习 16-7:启动加载模块的派错
这个练习你需要一个搭档。让搭档更改你的系统。让他在你系统上单独工作,直到系统重新启动。不要看实验直到你解决你的搭档制造的问题为止。
使用 RHEL 系统的 VMware 快照是相当有用的。练习中的问题类似于管理员搞砸了他的系统。你同样需要 RHEL 第一张安装盘。
1、备份启动加载程序相关文件,/boot/grub/grub.conf。确定将文件备份到其他位置,保证你的搭档在更改任何文件前做了备份。
2、用文本编辑器编辑 /boot/grub/grub.conf。关注 initrd 命令行,类似下面所示:
initrd /initrd-2.6.18-8.el5.img
3、将 initrd 改写(随便写)。
4、重启你的系统,让你的搭档回到电脑前。告诉他错误消息。将 RHEL5 第一张安装盘给你的搭档。
5、告诉你的搭档,在更改任何文件前,将其备份到家目录下。
6、当你的搭档完成实验,无论发生什么,恢复原配置文件 /boot/grub/grub.conf。(另外,你可以从 VMware快照中恢复配置。)
文件系统错误及检查
虽然有很多问题会导致系统无法启动,但这些问题大多由硬件错误或软件和配置错误产生的。最常见的硬件错误是磁盘损坏;像移动某些器件,它们的寿命是有限的,这可能导致错误。幸运的是,Red Hat 考试不会要求你处理硬件错误。
另外,需要知道如何挂载磁盘分区,编辑文件和处理文件,同时你要掌握一些命令以在救援模式或单用户模式下修复错误。最有用的模式是 df,fdisk和fsck 命令。要诊断问题,你至少要知道这些命令的最低工作水平。
df
df 命令在第4章有介绍。当你使用 df命令,你可以看到挂载的目录,每个分区的容量以及分区的利用率。显示结果如下:
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda7              9920592   4096804   5311720  44% /
/dev/sda6             18868344   8838344   9056064  50% /all
/dev/sda5              4956284   2774720   1925732  60% /home
/dev/sda3             29753588  17951924  10265852  64% /data
/dev/sda2              9920624   7349992   2058564  79% /install
/dev/sda1               101086     11653     84214  13% /boot
显示结果以字节为单位,这里有一些变量,你可以看到以 M 和节点为单位的输出:
# df -m
# df -i
fdisk 和 parted
fdisk 和 parted 工具在第4章也有描述。你使用 fdisk 或 parted,你可以找到你的可用分区。例如,使用 fdisk -l /dev/hda (或 parted /dev/hda print)命令会列出第一块硬盘的分区列表:
# fdisk -l /dev/hdaDisk /dev/hda: 15.0GB, 15020457984 bytes
240 heads, 63 sectors/track, 1940 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
   Device    Boot   Start     End     Blocks    Id  System
/dev/hda1    *      1         949    7174408+   b   Win95 FAT32
/dev/hda2           950       963    105840     83  Linux
/dev/hda3           964       1871   6864480    83  Linux
/dev/hda4           1872      1940   521640     f   Win95 Ext'd (LBA)
/dev/hda5           1872      1940   521608+    82  Linux swap
通过 fdisk 的输出结果,你可以很容易确定分区为 Linux的分区有:/dev/hda,/dev/hda3和/dev/hda5。鉴于分区的容量, /dev/hda2 与 /boot 相关联, /dev/hda3 与 / 相关联。 parted 输出与上面类似:
# parted /dev/sda printModel: ATA HDS728080PLA380 (scsi)
Disk /dev/sda: 82.3GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start   End     Size    Type     File system  Flags
1     32.3kB  197MB   197MB   primary  ext3         boot
2     197MB   15.2GB  15.0GB  primary  ext3
3     15.2GB  16.2GB  1003MB  primary  linux-swap
4     16.2GB  82.3GB  66.1GB  extended
5     16.2GB  16.3GB  107MB   logical  ext3
6     16.3GB  26.8GB  10.5GB  logical  ext3
7     26.8GB  41.8GB  15.0GB  logical  fat32        lba
8     41.8GB  51.8GB  10.0GB  logical  ext3
9     51.8GB  82.3GB  30.5GB  logical  ext3
Information: Don't forget to update /etc/fstab, if necessary.
在这个例子中,可以轻易的确定 Linux的交换分区。/boot 分区通常很小,而且配置于第一块硬盘(通常标签为 boot),同常是 /dev/sda1。
对于简单的分区方案是很容易的。当你有很多分区时就会变的很复杂。你应该总是有一些文件可以清楚地识别文件系统的分区表:
# fdisk -l /dev/hdaDisk /dev/hda: 26.8 GB, 26843545600
255 heads, 63 sectors/track, 3263 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device   Boot   Start      End     Blocks     Id  System
/dev/hda1   *      1          13      104391     83  Linux
/dev/hda2          14         268     2048287+   b   Win95 FAT32
/dev/hda3          269        396     1028160    83  Linux
/dev/hda4          397        3263    23029177+  f   Win95 Ext'd (LBA)
/dev/hda5          397        1097    5630751    83  Linux
/dev/hda6          1098       1734    5116671    83  Linux
/dev/hda7          1735       1989    2048256    83  Linux
/dev/hda8          1990       2244    2048256    83  Linux
/dev/hda9          2245       2372    1028218+   83  Linux
/dev/hda10         2373       2499    1020096    82  Linux swap
/dev/hda11         2500       2626    1020096    83  Linux
/dev/hda12         2627       2753    1020096    83  Linux
/dev/hda13         2754       2880    1020096    83  Linux
/dev/hda14         2881       3007    1020096    83  Linux
/dev/hda15         3008       3134    1020096    83  Linux
/dev/hda16         3135       3236    1020096    83  Linux
在这个例子中,可以轻易的确定 Linux的交换分区。/boot 分区通常很小,而且配置于第一块硬盘(通常标签为 boot),同常是 /dev/hda1。
然而,这只是猜测;有时一些实验可能需要这样。例如,将 /dev/hda2 挂载到一个空目录,你可以检查其文件内容是否与 /boot 下内容相符。
e2label
基于前面 fdisk -l 的输出结果,你可能还需要一点帮助来确定与各个分区相关的文件系统。 e2label 能够帮助你。当你建立一新的文件系统时,为将分区添加一个标签。例如,下面的命令回告诉你 /usr 文件系统挂载在 /dev/hda5 上。
# e2labelUsage: e2label device [newlabel]
# e2label /dev/hda5
/usr
dumpe2fs
你可以使用 dumpe2fs 获得更多分区的信息,如下:
[root@dyq ~]# dumpe2fs /dev/sda1 |more
dumpe2fs 1.40.2 (12-Jul-2007)
Filesystem volume name:   /boot1
Last mounted on:         
Filesystem UUID:          6aa23bab-c3c2-4536-b274-a45594ffd3b5
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype n
eeds_recovery sparse_super
Filesystem flags:         signed directory hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              26104
Block count:              104388
Reserved block count:     5219
Free blocks:              89433
Free inodes:              26072
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
--More--
dumpe2fs 不仅完成了 e2label的工作,还能告诉你分区的格式,是否有日志以及块的大小。进一步通过输出,你可以找到备份超级块的位置,这能帮助你使用 fsck 或 e2fsck 命令为 Linux选择合适的超级块。
在工作中
fsck 是 e2fsck 的前端程序,用来检查分区格式化的ext2和ext3文件系统。
文件系统检测
你同样要知道如何使用 fsck 命令。这条命令是 Linux 下大多数文件系统格式的前端处理程序,如:ext2、ext3、reiserfs、vfat等等。 这条命令用了检测分区上文件系统的一致性。要想高效的使用 fsck 命令,你需要知道文件系统是如何在分区上设置的。
当你在 Linux 下使用 mkfs 命令格式化磁盘分区时,它分配一定的空间来存储 inodes(节点),这是数据的结果,包括磁盘上数据所在位置的块地址。mkfs 命令同样将文件系统大小、标签和节点数量存储在分区开始的一个特殊地方,叫做 superblock(超级块)。如果超级块被损坏,则磁盘上保存的信息将不可读。因为超级块对磁盘数据的完整性是至关重要的,mkfs 命令制作两个超级块的副本,放在分区上固定间隔的地方,你可以用前面提到的 dumpe2fs 命令找到它们。
fsck 命令能够通过一致性检查修复文件系统的错误,即查找如虽然闲置但被表明在使用的磁盘块,不具备相应目录选项的节点,错误连接数的节点和其他问题。fsck 命令同样可以修复超级块的错误。如果 fsck 因修复超级块失败,你可以使用 -b 参数指定另外一个超级块。例如,下面的命令利用存储在 8193 位置的超级块来检查 /dev/hda5 分区的一致性:
# fsck -b 8193 /dev/hda5
考试预览
了解磁盘和分区检测的关键命令和相关参数,如fdisk,e2label,dumpe2fs和 fsck。在你的测试电脑让,使用这些命令检查你的分区(有些命令会损坏数据)。
文件损坏
你可能会发现一些关键的命令或文件被损坏,如 bash 或 init。如果是这样,一个解决办法是重新安装原 RPM 包。例如,如果 init命令损坏或别移除,你可以重新安装 SysVinit RPM。
当你启动系统进入 linux rescue 环境时,你可能需要联系到网络以获得要安装的 RPM。那么你需要根据前面描述的在进入 linux rescue 环境时设置启动网络。假设 /bin/bash 命令被损坏或丢失需要重置。这样的话,参考下面的步骤:
1、运行 df 命令。你应该能看到 linux rescue 环境挂载了你的分区。
2、如果可以,挂载网络资源。如果在 server.example.com 系统上的 /inst 目录提供 NFS 共享,你可以使用下面的命令将其挂载到 /mnt 目录下。
# mount -t nfs server.example.com:/inst /mnt/source
3、从 /mnt 目录下复制 bash RPM。这不是必须的,但可以帮助你应付网络连接丢失。使用下面命令:
# cp /mnt/source/Server/bash-*.rpm .
4、安装 bash RPM,注意安装到当前的文件:
# rpm -Uvh --force --root=/mnt/sysimage bash-*.rpm
5、运行 chroot 命令,进入标准目录树:
# chroot /mnt/sysimage
6、检查 bash命令状态。
# rpm -Vf /bin/bash
如果你没有看到输出,那么这可能不是 bash 命令的问题了。(你可以在启动时使用这个命令以确定是否存在问题。)在文件解决后,你现在应该使用 exit 命令两次来重启你的计算机。
网络服务问题
Red Hat考试指南中提到,你要在 RHCE 考试的排错和系统维护部分能够“diagnose and correct problems with network services”。有一些服务你需要在安装与配置部分进行配置。例如下面的案例与解决方案。不用说,解决方案还远远没有完成,例如:防火墙和网络配置的问题可能阻止对任何网络服务的访问。
案例解决方案
1、连接本地 Web服务器,返回 404 文件没有找到错误。
确定在 DocumentRoot目录下有合适的 index.html,以及 index.html的 SELinux权限与 ls -Z/var/www/html命令输出一致。
2、你无法在远程系统上连接到 Samba的家目录。
检查 /etc/samba/smb.conf 文件中的 [homes] 共享设置。使用 testparm 来检查配置文件的错误。
3、你不能连接到远程 NFS 共享。
确定 /etc/exports 中有相应目录,并用 showmount -e hostname 命令检查相应服务是否运行。
4、你不能用匿名用户登录远程 FTP 服务器。
确定 /etc/vsftpd/vsftpd.conf 中匿名用户访问启用。
5、你无法联系到 Web代理服务器。
确定 /etc/squid/squid.conf 中允许对正确网络的相应访问。
6、无法通过本地网络服务器想外发送 e-mail。
确定送出的邮件服务器(sendmail 或 Postfix)被激活和适当配置。
7、你无法通过本地网络接收 POP3 e-mail。
确定 Dovecot 服务配置文件 /etc/dovecot.conf 被适当配置。如果你使用了其他的服务,配置相应的文件。
8、你想限制指定用户对 SSH 访问。
在 /etc/ssh/sshd_config 中使用 AllowUsers 选项。
添加、移除和调整逻辑卷大小
首先使用 lvdisplay,pvdisplay和vgdisplay 命令检查当前 LVs(逻辑卷),PVs(物理卷)和VGs(卷组)的当前状态。这些命令利用 mount 命令和 /etc/fstab 文件内容以确定当前挂载的 LVs(逻辑卷)的配置。
添加逻辑卷
如果你要添加一个 LV,但你的 PV/VGs 没有相应的空余空间,你需要使用 fdisk 或 parted 命令建立新的分区并配置相应的分区格式。这一节检测了添加一个 LV的过程。如果你的现有 PVs 或 VGs有空间,你可以略过前面的步骤,快速的添加 LV。
使用 pvcreate 命令在配置好的分区上建立新的 PV。例如,如果你为此建立了 /dev/hda9 和 /dev/hda10,使用下面命令:
# pvcreate /dev/hda9 /dev/hda10
反之,这中情况你可以使用 pvremove 命令完成:
# pvremove /dev/hda9 /dev/hda10
如果你已经将空间分配给了某个 LV,pvcreate 命令会返回错误消息。
使用 vgcreate命令,从一个或多个未使用的 PV上建立一个新的 VG。例如,你想从前面提到的 PVs建立名为 myvg 的 VG,使用下面命令:
# vgcreate myvg /dev/hda9 /dev/hda10
如果命令正常工作,你会在 /dev/myvg 找到 VG 设备。
使用 lvcreate 命令从可用的 VG 上建立一个新的 LV。例如,你要从 myvg VG上建立一个 1000MB 的新 LV,运行下面命令:
# lvcreate -L 1000 myvg
在输出中你会看到新 LV的名字,通常类似与 lvo10。这种情况下,LV 设备为 /dev/myvg/lvol0。
扩展一个逻辑卷
扩展一个 LV的空间需要2个步骤。首先,在空余空间上扩展 LV,可能是你新建立的 PV。然后,用 resize2f 扩展 LV 上的文件系统。
要扩展一个已有的 LV,使用 lvextend 命令。你需要一个拥有可用闲置空间的PV,如 /dev/sda2。例如,如果你想将前面提到的 LV 大小增加 500MB,使用下面命令:
# lvextend -L +500 /dev/myvg/lvol0 /dev/sda2
你可以用 resize2fs 命令更改 ext2或 ext3格式的文件系统。对于提到的设备,命令为:
# resize2fs /dev/myvg/lvol0
如果你想缩小 LV的大小,那么过程比较复杂。这里没有类似于 resize2fs 命令来减小格式化文件系统。你需要卸载 LV,并在最后使用 resize2fs 命令更改 LV 设备文件大小。
移除逻辑卷
移除一个逻辑卷很简单;只要 LV的数据被存储,lvremove命令能很好的工作。例如,如果你要已经在相同 VG下建立了第二个LV,使用下面命令:
# lvremove /dev/myvg/lvol1
诊断与 SELinux相关的网络服务错误
对 RHCE 考试的排错和系统维护部分的最后项目,在Red Hat考试指南描述为“iagnose and correct networking services problems where SELinux contexts are interfering with proper operation”。
在大多数情况下,这比看起来简单。SELinux 将日志信息使用 avc标签存储在 /var/log/messages 中。更好的是, Setroubleshoot能够确定 SELinux问题,并给出建议。查看它的建议命令,如用 chcon 更改 SELinux内容和用 sesetbool 设定 SELinux 布尔值。你所要做的就是在图形界面用 sealert -b 命令打开浏览器,并浏览最近的错误信息。更多的信息参考第15章。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/54648/showart_1219847.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP