Linux 系统运维应用工具的使用.docx
《Linux 系统运维应用工具的使用.docx》由会员分享,可在线阅读,更多相关《Linux 系统运维应用工具的使用.docx(11页珍藏版)》请在冰豆网上搜索。
Linux系统运维应用工具的使用
Linux系统运维应用工具的使用和实战
企业Linux系统的运维成为目前企业关注的重点。
作为一种优秀的开源网络操作系统,如何充分利用Linux的工具并使用相应的方法来提高运维效率是非常重要的工作。
本专题将详细介绍几个对系统管理员比较重要的工具和概念,它涵盖了操作硬盘分区、如何避免产生问题以及如何解决系统问题的内容,以为企业Linux的实际运维提供有益参考。
应用工具一:
应用parted报告并分区硬盘
parted(分区编辑器)实用程序从命令行报告和操作硬盘分区。
palimpsest实用程序使用GUI执行相同的任务。
此外,partedprint命令会显示/dev/sda驱动器上的分区信息:
在这个例子中,parted显示的前几行表示型号名称、设备名称、设备容量以及设备上的分区表类型。
在这些信息之后,print命令还会显示一些列,用户可以根据提示来进行操作。
Number列表示持有该分区的设备的次设备号。
这个数字与设备名称中的最后的数字相同。
在这个例子中,5对应/dev/sda5。
Start列表示分区开始所在的磁盘位置。
Parted实用程序指定一个磁盘位置作为从磁盘开始到分区的距离(以字节为单位)。
因此,分区3始自从磁盘开始的12GB的位置。
End列表示分区结束所在的磁盘位置。
虽然分区2结束自从磁盘开始的12GB的位置,分区3始自同一位置,parted需要注意的是单个字节不能在分区间重叠。
Size列表示分区以千字节(KB)、兆字节(MB)或千兆字节(GB)为单位的大小。
Type列表示分区类型:
主、扩展或逻辑。
参见图1的分区信息。
Filesystem列表示文件系统类型:
ext2、ext3、ext4、fat32、linux-swap等等。
Flags列是分区打开标志,包括boot、raid和lvm。
在这个例子中,1号分区是引导分区。
图1.例子中的主分区和扩展分区
在前面的例子中,分区4定义了一个扩展分区,其中包含165GB磁盘中的143GB(如图1)。
使用时不能更改逻辑分区,否则会影响其中的所有逻辑分区。
除了报告硬盘的布局和大小,还可以采用交互式方式使用parted修改磁盘布局。
当使用这种方式时要格外小心,开始使用此实用工具之前必需先备份系统。
注意更改磁盘上的分区信息(分区表)会破坏磁盘上的信息。
请先阅读parted信息页,然后再尝试修改分区表。
值得注意的是:
错误的parted使用可以摧毁磁盘上的一切数据。
使用parted要小心,因为你是在使用一个可以格式化硬盘的实用程序。
使用parted所做的更改很容易导致大量数据的丢失。
如果使用parted所做的事情有任何问题,在应用其更改之前使用q命令退出。
输入命令后,parted会立即依据要求进行更改。
要对磁盘进行分区时,在parted命令后需要加上要使用的设备名称。
在下面的例子中,启动parted后,用户输入help(或只是h)命令,会显示parted命令列表:
Help后边跟上一个parted命令参数的名称,则会显示该命令参数的更多信息。
当输入print(或只是p)命令时,parted显示当前分区信息,就像命令行上的print命令一样。
parted实用程序不允许设置重叠分区(除逻辑分区可以重叠其包含的扩展分区外)。
同样,也不允许创建一个正好始自磁盘开头(柱面0)的分区。
这些情况都会导致数据丢失。
定义一个磁盘分区表时,要记住一些基本的准则。
首先,不要删除或修改定义扩展分区的分区,除非你愿意失去扩展分区内所有逻辑分区上的所有数据。
其次,如果把/boot放在单独的分区上,最好放在驱动器开头的位置(分区1),以便Linux可以从位于驱动器最近的分区引导。
当磁盘空间的费用不是问题时,最好把每个主要文件系统放在单独的分区上。
许多人选择把/(根),/var和/usr合放在一个单独的分区中,这通常会节省空间,但在偶尔情况下也会导致问题。
最后,虽然parted可以创建某些类型的文件系统,但parted通常是用来创建分区,然后可使用mkfs和mkswap在分区上创建文件系统。
以下命令序列(图2)在一个干净的磁盘上定义了一个300兆字节、可引导的Linux分区,并将其作为分区1:
图2.定义可引导Linux分区的命令序列
当在parted内指定大小时,可以使用后缀k(千字节)、m(兆字节)或g(千兆字节)。
创建分区后,输入print命令来查看分区的结束位置。
执行这个任务之前要先定义下一个相邻的分区,这样就不会浪费空间。
设置所有分区后,使用quit命令可退出parted。
接下来,在每个要包含文件系统(非交换)的分区上创建文件系统。
除非有理由不这样做,否则除了交换分区外,请把所有分区设置为ext4类型。
使用mkswap可在一个分区上设立一个交换区。
此外,可以使用e2label标记一个分区。
应用工具二:
应用logrotate管理日志文件
你可能想保留日志文件一段时间,而不是删除或截断这些文件,以防万一需要时进行参考。
通过轮换、压缩、发邮件以及删除指定的每个文件,logrotate实用工具可以自动管理系统日志(和其它)文件。
logrotate实用程序由/etc/logrotate.conf文件控制,该文件用于设置默认值,可以指定要轮换的文件。
通常情况下,logrotate.conf包含一个include语句,指向实用程序指定的/etc/logrotate.d中的规范文件。
以下是默认的logrotate.conf文件:
logrotate.conf文件为常用的参数设置默认值。
每当logro-tate读取这些参数的另一个值时,则会重置默认值。
可以选择daily(每天)、weekly(每周)或monthly(每月)轮换文件。
rotate关键字后面的数字指定要保留的被轮换日志文件数量。
create关键字会使logrotate创建一个新的日志文件,并与新轮换的日志文件具有相同的名称和属性。
dateext关键字导致logrotate使用日期作为文件扩展名。
compress关键字(默认文件中被注释掉)导致日志文件由gzip压缩。
include关键字为具体程序的logrotate规范文件指定标准/etc/logrotate.d目录。
当使用rpm或基于rpm的实用程序安装一个程序时,rpm把logrotate规范文件放在该目录中。
logrotate.conf中的最后指令集会处理/var/log/wtmp和/var/log/btmp日志文件(wtmp保存登录记录,而btmp保存失败的登录尝试记录);可以查看这些使用who的文件。
missingok关键字只覆盖这个文件的隐含默认值nomissingok,此关键字导致logrotate继续运行,即使日志文件丢失也不会发出错误消息。
关键字monthly只覆盖这个文件的默认值weekly。
create关键字后面紧跟为新文件建立权限、所有者和组的参数。
最后的rotate则建立应保留的轮换日志文件。
/etc/logrotate.d/httpd文件是实用程序logrotate规格文件的一个例子:
这个文件由httpd软件包安装脚本安装,通过logrotate.conf中的include语句放入/etc/logrotate.d中,并使用/var/log/httpd中文件名以log(*log)结尾的每个文件。
如果日志文件是空的,notifempty关键字导致logrotate不轮换日志文件,而是重写空的日志文件。
sharedscripts关键字导致logrotate仅执行一次prerotate和postrotate节的命令,而不是为每个轮换的日志文件执行一次。
delaycompress关键字会导致logrotate延迟一个周期压缩。
copytruncate关键字没有出现在这个例子中,它会导致logrotate复制后立即截断原来的日志文件,这个关键字对于无法关闭并重新打开日志文件的程序非常有用,因为这些程序可能会在原始文件已被移动的情况下,继续写入原始文件。
在轮换开始前,logrotate实用工具会执行prerotate和endscript之间的命令。
同样,轮换完成后,会执行postrotate和endscript之间的命令。
logrotate实用工具使用很多关键字,其中许多带有参数,而且有其它作用。
详细信息请参阅logrotate手册页。
应用工具三:
应用rsyslogd记录系统消息
传统上,UNIX程序会发送日志消息到标准错误。
如果需要更永久的日志,则会把输出重定向到一个文件。
为了克服上述方法的局限性,4.3BSD引进了目前Linux使用的系统日志守护进程(rsyslogd;)。
这个守护进程负责监听日志消息,并把它们存储在/var/log目录中。
除了提供日志记录功能,rsyslogd还允许一台机器作为日志库服务于网络,并允许其它程序来处理特定的日志消息。
/etc/rsyslog.conf文件存储rsyslogd的配置信息。
这个文件中的每一行都包含一个或多个由空格分隔的选择器(selector)和一个动作(action)。
选择器定义消息的来源和类型,动作(action)则指定rsyslogd如何处理消息。
rsyslog.conf示例行如下(#开始一个注释):
选择器
选择器分为设施和优先级两部分,并由句点分隔。
设施表示消息的来源。
例如kern消息来自内核,mail消息来自邮件子系统。
图3是rsyslogd使用的设施名称列表以及生成这些消息的系统:
优先级表示消息的严重程度。
图4为优先级的名字列表及其所表示的条件,按优先级顺序升序列出:
图4.优先级示意
一个选择器由单个设施和优先级组成,如kern.info会导致相应的动作应用到来自该设施具有该优先级或更高优先级(更迫切)的每条消息。
使用.=指定单个优先级事项;例如,kern.=info表示把该动作应用到具有info优先级的内核消息。
一个惊叹号指定一个不匹配的优先级。
因此kern.!
info将匹配比info优先级低的内核消息,kern.!
=info匹配非info优先级的内核消息。
一个由分号分隔且包含多个选择器的行,只要有匹配的选择器就执行该动作,该行每个选择器都会约束该匹配,后续选择器通常会收紧该约束。
例如,mail.info;mail.!
err选择器匹配具有debug、info、notice或warning优先级的邮件子系统消息。
可以用星号替换该选择器的每部分以匹配任何内容。
该选择器每部分的none关键字表示不可能匹配。
*.crit;kern.none选择器会匹配所有关键或更高优先级的消息,来自内核的消息除外。
动作
动作指定rsyslogd如何处理一条匹配该选择器的消息。
最简单的动作是由其绝对路径指定的普通文件,rsyslogd对这些文件追加消息。
指定/dev/console将消息发送到系统控制台。
如果想硬拷贝一条消息记录,需要指定一个代表专用打印机的设备文件。
在文件名前面加上一个连字符(–)以防止将每条消息写入该文件。
这样做可能会提高性能,但如果系统崩溃可能会丢失数据,以至于产生的消息没能来得及写入到一个文件中。