今天好热,心情也不错!
第十二章 性能调整的指导方针
目标
通过本章学习,你将能够掌握:
l 回顾一下导致系统性能低劣的原因
l 使用性能监视命令来发现性能瓶颈
l 描述提高性能的办法
介绍
本章大体的进行了识别和补救性能瓶颈的步骤。讨论了如何使用性能监视命令获取对关键系统和网络资源之间的关系的基本理解,来提高整体性能。
提高NFS性能
可以在客户端和服务器端进行NFS性能的调整和测试。以下是提高NFS的客户端和服务器的性能的指导方针,并解决通常的瓶颈。
——提高NFS服务器的性能
————nfsd
回顾一下nfsd守护进程,它在服务器上为调度读和写需求提供内核线程。支持服务器所需的nfsd 内核线程对于好的客户响应时间是非常重要的,如果必需的话,可以在脚本—— /etc/init.d/nfs.server中来调整。
————重传
NFS重传发生在,当一个客户端发送一个相同的请求给服务器时,这增加了服务器和网络的负荷。使用 nfsstat 命令来检查NFS的重传。
如果服务器不能提供足够的NFS响应时间,使用命令: vmstat ,iostat ,和 sar 来决定服务器是否已经超负荷。如果可能的话,查找内存,CPU, 磁盘的I/O瓶颈并解决它们。
——客户端重传
————慢速服务器
一个慢速的NFS服务器可能会导致客户端产生NFS重传。回顾一下,过多的NFS重传可能会导致“NFS server not responding”的错误信息。使用命令:nfsstat 来检查NFS重传(retrans和badxid的值会很大)。如果服务器很慢,而且服务器的性能不能提高,那么,在客户端增加 time-out 的值。
选择一个新的 time-out 值是一个重复的过程。试用两倍于默认值的量(默认值为1.1秒)并使用nfsstat 来观察RPC的 time-out比率和badxid 的比率。调整 在客户商的time-out值,直到客户端的响应时间提高。
在下面的例子中,timeo选项用来调整容纳一个慢速的服务器在客户端的 /etc/vfstab数据库中。
# device device mount FS fsck mount mount
# to mount to fack point type pass at boot options
#
:
serverA:/usr/dist - /usr/dist nfs yes timeo=10
————慢速的网络和较远的服务器
回忆一下,如果所报告的 badxid的值远远小于 retrans 的值,这意味着NFS信息没有到达服务器。这也可能是服务器被设置在不同的子网中,或者网络慢。为了适应这些不同情况,传输的NFS信息的大小可以减少。
在NFS版本2中,读和写的大小在客户端的文件系统表中或映射中是可以改变的(最大值为8192,但,2048是一个很好的开始)。
调整NFS的读或写大小直到可以察觉到NFS的客户端的应答时间有了提高或通过使用 nfsstat 来查看的报告中重传减少为止。
以下的例子显示了一个减少后的NFS的读大小在客户端文件 /etc/vfstab 来容纳一个慢速的网络。
# device device mount FS fsck mount mount
# to mount to fsck point type pass at boot options
#
:
serverA:/usr/dist - /usr/dist nfs - yes resize=2048
注意:如果使用NFS版本3,那么TCP协议将会自动的降低段大小一直到它适合通过”bad routers”。这是在路由器不支持 back-to-back的IP碎片时发行的,这些碎片是由NFS版本2的8k字节的读和写产生的。但,只有在客户端使用UDP时,rsize/wsize会被设小来适应一个MTU,如512或1k字节。
——提高NFS客户端的性能
————一致性检查
回忆一下,如果数据有效的存在于本地内存或缓存中,一个NFS客户端将试图避免发送对数据的请求。缓存一致性检验用来验证只使用存储在缓存中的数据的客户,如果对在服务器上有相同的数据请求来说。
客户很少改变在服务器上的只读文件系统如CD-ROM的存取,由客户执行的缓存一致性的校验频率可以被减少,如果客户挂上了一个静态服务器系统。避免不必要的缓存一致性校验来减少网络传输和服务器负荷。此外,因为本地缓存数据的即刻使用使得数据存储效率提高。
使用nfsstat 命令来检测高的 getattr 的值。Actimeo NFS 载入点选项(以秒来测试)可以增加到几分钟来避免不必要的缓存一致性校验。
下面的例子显示了一个增加的NFS actimeo 选项在客户端文件 /etc/vfstab 。
# device device mount FS fack mount mount
# to mount to fsck point type pass at boot options
#
:
serverA:/usr/dist - /usr/dist nfs - yes actimeo=900
增强网络性能
主机必须限制共享的网络带宽。对所有需求网络存取的主机来说,阻塞,繁忙的网络可能导致严重的性能降低。
——网络分割
如果网络的带宽已经饱合,网络分割可以帮助你。回顾一下网络的分割是在网络层由路由器创建的子网加入来完成的。桥也可以在硬件层分割主机。
分割网络前要问你如下的一些步骤:
l 网络上有多重的传输?
使用带有参数 –i 的 netstat 命令来测定冲突和评估网络负荷。
l 有没有客户和服务器组同其它机器相互竞争?
l 如果你使用子网,在公司内部它们是如何与其它网络相连的?
l 如果你使用一个桥,那么每一方应该有多少台机器?
使用snoop 命令来发现主机存取网络的最大频率。这些主机是从其它主机相分离出来的理想上的候选机。
l 在同一个子网上,你混合了数据客户的无盘客房端和独立系统了吗?
我们已经学过,在Sun的环境里,网络带宽消耗最大的是NFS。在由无盘客户端组成
的网络,所有NFS传输的80%起因于无盘客户端的分页活动属性。通过仔细的配置无盘客户端,分页可以被降低,并释放最大带宽。
提高系统性能
提高系统性能,经常能够相应的提高网络和NFS性能。以下的例子,通过标识和解决通常的系统配置瓶颈来提高客户和服务器的性能。
——提高客户端性能
————无盘客户端的配置
内存瓶颈不止是导致系统性能低劣,也同时导致网络性能降低。低内存导致了网络上的交换活动,潜在的影响了网络上的所有主机。
l 使用命令:vmstat 和 sar 来检查内存瓶颈。如果需要的话,增加物理内存。
如果这是不可能的话,可以考虑增加一个本地磁盘配置作为客户端的交换区。修改客户端的文件:/etc/vfstab 使这个配置生效。
# device device mount FS fsck mount mount
# to mount to fsck point type pass at boot option
#
:
/dev/dsk/c0t3d0s1 - - swap - no
这将把无盘客户端转变成一个可交换的客户端,通过在服务器上的客户管理保持集中。
————进程
进程运行在客户端,消耗重要的系统资源(CPU,内存,和虚拟内存)。有一些进程可以被避免,可以释放更多的资源给更重要的进程。
l 使用 /usr/defaultrouter 或路由发现来创建一个默认的路由入口指出一个中央路由器。这避免了运行进程 in.routed 来管理本地的路由表。
l 使用一个 NFS 邮件服务器来存储帽邮箱,可以避免运行 sendmail 进程来管理电子邮件地址。
————tmpfs
在一个安装了很少内存的系统,和磁盘交换设备(如:16MB物理内存和32MB交换空间),通过在文件:/etc/vfstab中注释适当的入口来禁用 tmpfs。
# device device mount FS fsck mount mount
# to mount to fsck point type pass at boot option
#
:
:
# swap - /tmp tmpfs - yes
Processes that need to be swapped out can compete with data residing in tmpfs for swap space, and vice-versa.
——提高服务器性能
提高服务器性能也经常能够提高相应的NFS性能。以下的指导方针通过标识和解决通常的系统配置瓶颈来增强服务器的性能。
————内存
内存在一个NFS服务器上是特别关键的资源,因为它用来缓存频繁需求的数据。大量的已安装的服务器内存可以提高服务器和客户端的性能。使用:vmstat 和 sar 命令来监视内存的使用,如果必要的话,可以增加内存。
————平衡磁盘负荷
使用命令:iostat 来确保有效磁盘设备的适当装入。如果负荷不平衡,从一个设备向别一个设备移动活动,直到它们平衡为止。
————磁盘带
磁盘带通过多个磁盘设备来分布一个读或写操作,大幅度的提高了磁盘的I/O速度。磁盘带可以用来增加NFS服务器的性能。这对于不同类型的Solaris 组产品是很有用的。
————快速服务(Prestoserve TM)
一个由写操作组成的交互式的磁盘负荷可用来在服务器上安装快速服务。快速服务是一个在SBUS上增强硬件产品的类型,和VME 配置方面,增强了本地和远程的同步写。
快速服务使用一个快速的,不易变的,可重获的内存(NVRAM)来写缓存以此来快速本地和远程的同步写。在安装Prestoserve 后,NFS客户写增加到300%。快速服务减少了磁盘的I/O,并且它可以用在附加磁盘和对支持更高级别写活动的控制。
快速服务的一个缺点是它可能使CPU达到饱合,因为它在写磁盘前必须拷贝数据从NVRAM到主内存。
————NC 400 网络协处理器
由快速服务引入的额外的CPU负荷可以由NC400网络协处理器偏置。它是一个优化了硬件和软件的NFS处理器。它由一个主板上的处理器和使用用户化的 nfsds 通过处理UDP传输减少了CPU负荷。
NC 400网络协处理器只是理论上的,因为无论何时,CPU的饱合总是一个问题。
————CPU
服务器上CPU的饱合会反面影响它服务客户端请求的能力。
l 使用命令:vmstat 或 sar 来监视 CPU的利用率。如果CPU的负荷过重,可以考虑安装NC 400网络协处理器。
l 使用 ps 命令来检查进程状态表来判断进程消耗的额外的CPU时间。可以考虑移动这些进程到其它主机,如果可能的话,增加更多的处理器。
————网络接口
一个极端繁忙的网络的需求可能超过网络接口所能承受的容量。使用 netstat 命令来监视网络接口的错误,并可考虑增加一个网络接口(使用一个已经存在的IP地址,但是一个新的客户端地址)给服务器。
通过配置客户端通过应用接口存取服务器来平衡进入的需求。
过多的网络接口错误也指出了一个超负荷运载的,拥挤的网络。考虑给网络分段(使用桥或路由器)来减轻服务器和网络的负荷。
——总结
在本章中,你已经学会:
l 回顾一下导致网络性能低下的的原因
l 使用性能监视命令来发现性能瓶颈
l 描述提高性能的解决方案
solstice 回复于:2003-06-25 16:21:58 |
第十三章 域名服务
目标 通过本章的学习,你将能够: l 描述域名服务的目的 l 描述关于DNS名字空间(DNS namespace),一个域名(domain)和一个权限区(a zone of authority)的区别 l 描述名字服务器的概念,包括名字服务器的不同类型,如主名字服务器,次名字服务器,和一个只是名字服务器的缓存(a caching only nameserver) l 描述一个解析器,并理解地址解析和反向地址解析的过程。 l 描述服务器端DNS设置文件的语法,包括文件:/etc/named.boot,缓存文件和区文件(zone) l 描述包括在SOA,NS,A,PTR,HINFO,和WKS资源记录中的信息 l 对NIS做适当的修改使它能够转发请求到DNS l 描述客户端的DNS设置文件的语法,/etc/resolv.conf l 描述管理员有效的使用DNS排除故障和寻找故障的方式 背景 ——问题 本地文件:/etc/hosts,本地的NIS 主机映射,或本地的NIS+主机表都不可能包含Internet上的所有可能的IP地址。既然在Internet上所有的通讯都需要使用一个已知的IP地址,那么一个工作站是如何与其它工作站在Internet上进行通讯的呢? ——最初的解决方案 在七十年代早期,在Internet上使用一个文件:hosts.txt,这个文件可以通过使用ftp下载到主机。随着更多网络加入Internet,每个新网络的管理员使用ftp 传输他们的主机名和IP地址给 hosts.txt文件的管理者。 Internet的成长是不能用尺度来衡量的,保持 hosts.txt 文件最新已经是一个非常困难的任务并且网络的带宽被ftp 的传输消耗,一个新的更好的解决方案急需出台。 ——今天的解决方案 当前使用域名服务来允许主机与Internet进行通信。即使每个主机可能没有适当的IP地址信息有效的通过本地资源。 域名服务 域名服务(DNS)是在Internet内提供IP地址的分布式管理的应用软件。 l DNS允许管理员维护关于本地主机的信息并同Internet上的其它主机共享这些信息。 l DNS是由位于加利福尼亚的Berkeley大学 Berkeley Internet Name Domain(BIND)开发的常用软件。Sun使用BIND软件的一个端口。 DNS 术语 ——域名空间(Domain Namespace) l DNS已知的所有主机包括在DNS的名字空间。 l DNS的名字空间划分为等级域。名字空间以根域开始,并包括所有的子域。 ——域(Domains) 一个域是DNS名字空间的子树。每个域被DNS名字空间赋予唯一的名。 域名的组成由“.”分隔开。每一个标签被限制在63个字符,通常,一个标签少于8个字符。全部的域名长度不能超过255个字符。 例如: sun.com. 或者: math.ucb.edu. 一个完整的域名以 “.” 来结束,说明这是一个绝对的或是一个有完全资格的域名。那些不以“.”为结束的称为相对或是一个有部分资格的域名。 个别主机的域名涉及到他们所处的位置。 例如 :ftp host1.math.ucb.edu. mail user@host1.math.ucb.edu. ——顶级域名 顶级域名由网络信息中心(NIC)管理。低级的域名则代表了Internet的一部分,即多种不同的组织。 顶级域名被组织用来依赖的类型或组织的目的。 l Com ——商业组织 l Edu ——教育组织 l Gov ——政府组织,协会 l Mil ——军事组织 l Net ——网络组织 l Org ——非商业组织 一些顶级域名不是一个组织,但是依据地理位置划分的。这些划分涉及到国家代码并 通常是两个字符。 l cn——中国 l us——美国 l au——澳大利亚 顶级域名的选择依赖于最适合的你的组织的需求。大的组织试图使用组织域而小组织 或个别则选择使用一个国家代码。 —— 一个特别的顶级域----in-addr.arpa. 域 in-addr.arpa. 是一个特别的顶级域由NIC来管理,目的是把已知的IP地址解析成主机名字。所有其它的顶级域都用来解析一个已知的主机名到未知的IP地址。 当任何一个IP地址遇到的主机名无法识别,DNS必须有一种转换IP地址到主机名的机制。为了做到这一点,反向IP地址并把它做为一个在顶级域 in-addr.arpa.下的域名。现在,IP地址被解析成和其它域名一样了。 例如 : 主机 128.50.1.4的名字信息在域:1.50.128.in-addr.arpa. 中。 ——权限区(Zones of Authority) 域(domains)和权限区(zones of authority)是不一样的。一个域名是指在名字空间的唯一空间。一个权限区则是指主机数据的存放位置,在域内被管理。 如果在一个给定域的主机信息由域(domain)来管理,那么域和权限区就是相同的了。然而,如果父域管理相关主机的信息在一个子域又是它自己的主机,那么,权限区则跨跃了父域和子域。 顶级域如,com ,edu ,和 org ,由NIC来管理。低级域的权限代表DNS的用户。 ——名字服务器(Nameserver) DNS名字服务器是一个实际上的守护进程,作为DNS服务器运行在主机的配置中。在SunOS操作系统中执行BIND的守护进程的名字是: /usr/sbin/in.named 如果文件:/etc/named.boot已经被创建,那么守护进程:in.named由脚本 /etc/rc2.d/S72inetsvc 以级别2开始。(文件:named.boot将在后面继续讨论)。如果使用一个不同于 named.boot的文件名,那么,/etc/rc2.d/S72inetsvc 启动脚本必须修改。 在文件:/etc/rc2.d/S72inetsvc; if [ -f /usr/sbin/in.named –a –f /etc/named.boot];then /usr/sbin/in.named;echo “starting internet domain name server.” fi in.named提供信息给客户端程序需求关于给定主机名字的IP地址的信息或给定IP地址的主机信息。这个过程称为解析。 为了提供需求的信息,in.named必须涉及到已经由DNS系统管理员创建的数据文件。这些数据文件包含关于在一个名字服务器中的权限区的主机名和IP地址信息。 实际的名字和一些数据文件的定位经常从一个位置改变到另一个位置,尽管他们的功能和语法由DNS的规则决定。 DNS服务器的类型 ——主DNS服务器 l 对主机的最后的权限验证和IP地址信息在这里 l 在区内的所有改变信息都被数据文件定位在这个服务器中 l 在它的区内,定期的更新DNS服务器的其它类型 l 能够代表子网给其它服务器授权 ——辅DNS服务器 l 保留有在主服务器中创建的数据的拷贝 l 在主服务器无效时是有用的 l 为主服务器提供负荷共享 ——缓存DNS服务器 l 只是维持最近使用过的DNS数据在内存缓存中 l 被保存的缓存数据一个相关的生存时间值,来保护过时的信息 l 不提供权限验证信息,作用与主和辅服务器相同 ——DNS 根服务器(DNS Root Servers) l NIC已经指定了几个服务器为DNS根域服务器。所有的DNS主服务器都需要配置根服务器的主机名和IP地址来为域名和IP地址解析搜索有一个开始的空间 域名服务客户端 ——解析器 l 实际上是没有DNS客户端守护进程的 l DNS客户端请求由被称为是库的例程生成,在Internet 程序的标准不同时。如使用的:telnet,ftp,和 mail l 这些库例程只运行在DNS已经配置并且使用的情况下。使用本地主机上的文件和NIS主机的映射时,不需要使用DNS l 库解析器例程使用文件:/etc/resovl.conf 来决定使用的名字服务器。这个文件将在以后继续讨论 ——解析 解析是使用DNS从一个给定的主机名获取一个IP地址或是从一个给定的IP地址获取主机名的过程。 解析过程分为如下几步: 1. 用户键入包含一个主机名的命令,如: ftp host1@math.ucb.edu. 2. 首先试图通过 ypserv 执行NIS主机映射或通过 rpc.nisd 执行NIS+主机表将主机名解析为一个IP地址。 3. 如果NIS或NIS+不能解析主机名,那么DNS解析器例程试图连接到在文件: resolv.conf 中的名字服务器列表。 4. 解析器例程将会发一个递归查询给名字服务器。 递归查询强迫名字服务器去提供所请示的信息并且不能为查询刚好返回下一个名字服务器的IP地址。 5. 本地的名字服务器将会检查域名和开始,并通过连接一个根名字服务器来开始搜索。本地的名字服务器将会发送一个重复的查询给根名字服务器。 重复的查询(iterative queries)是很有礼貌的,它们允许其它的名字服务器来支持另一个名字服务器的IP 地址并且不是实际的信息请求。 6. 举个例子来说,根名字服务器用 edu 的名字服务器的IP 地址来应答,并且本地名字服务器给edu 名字服务器发送了重复的请求。 7. Edu 名字服务器应答匹配的域名服务器的IP地址。 8. 本地的名字服务器直接发送另一个重复的请求给匹配的名字服务器。匹配的名字服务器检查它的数据文件并用host1的IP地址应答本地的名字服务器。 9. 本地的名字服务器接替 host1 的IP 地址给解析器例程,然后 ypserv/rpc.nisd返回它给查询进程,ftp 连接继续进行。 ——缓存 每一次一个名字服务器都试图解析一个客户请求,它(如果需要的话)必须遍历DNS名字空间的多个地区。因为名字服务器遍历名字空间,它必须学习其它域名服务器和他们的IP 地址。 这个信息为了将来能够参考缓存在内存中,这样,不是所有的查询都必须从根名字服务器开始了。所有的缓存域信息对生存时间值来说是个主题,通过对远程域的管理。 你必须有一个有效的,唯一的IP地址由NIC分配给你的网络。你必须决定你适合哪一个,哪一个是你的父域,以及你将使用哪一个唯一的标签。 你的DNS域名和你的NIS/NIS+域名应该一起选择,以便于他们相互适合。关于sendmail的忠告,默认的,去掉你的NIS/NIS+域名的第一个组件,对外界使用你所剩下的邮件目标。缩写的域名就是剩下的你将使用的域名。 例如: 你的公司是 Foobar.com 你的DNS 域名就是: foobar.com 因此,你的NIS/NIS+域名也就是 sales.foobar.com 你必须连接到你的父域并注册。父域需要知道你的域名和你至少一个名字服务器的IP地址和名字。这个信息可以从你的网络管理员或NIC那里得到。 你还必须有你的反向IP地址域名权限代表你,由NIC,所以,IP地址到域名的解析才可能。例如:你的网络地址是 192.9.200.0,那么,你就必须有对200.9.192.in-addr.arpa域的NIC代表权限。 NIC 的电话服务在周一到周五的早7点到晚7点。NIC也维护一个在线的全天24小时邮箱,以下的邮件地址: l HOSTMASTER@INTERNIC.NET 来为主机,域,网络的改变和更新服务 l ACTION@INTERNIC.NET 来为计算机操作服务。 SunOS 5.x DNS 安装概括 l 获得一个有效的Internet IP 地址 l 选择一个域名并在父域中进行注册 l 为主DNS服务器配置数据文件 l 设置并配置最少一个辅DNS服务器的数据文件 l 转变全部的域到NIS/NIS+中,并配置NIS/NIS+服务器来转发DNS请求到DNS名字服务器 ——DNS 数据文件 假设为以下的网络设置数据文件为例。 (.) 根域 根服务器:lettuce IP 地址:128.50.2.3 DNS的域名:veggie.Veggie. 主:tomato.veggie.IP 地址:128.50.2.2Veggie. 辅:potato.veggie.IP 地址:128.50.2.1Veggie.客户:carrot.veggie.IP 地址:128.50.2.4 DNS的域名:fish.Fish. 主:tomato.fish.IP 地址:128.50.3.6Fish. 辅:potato.fish.IP 地址:128.50.3.7Fish.客户:carrot.fish.IP 地址:128.50.3.8 DNS 设置过程——主DNS服务器 ——关于文件:/etc/named.boot 创建 in.named 的配置文件:/etc/named.boot。如果这个文件的名字或位置有所不同,那么in.named 守护进程必须在脚本 /etc/init.d/inetsvc 中通报。守护进程 in.named在启动时读取named.boot 来允许进程决定DNS数据文件的名字和定位。数据文件包括实际的主机信息。 ; named.boot file for the veggie. Domain ; on the host tomato.veggie. directory /var/named cache Cache primary veggie. Veggie.zone primary 1.50.128.in-addr.arpa veggie.rzone primary 0.0.127.in-addr.arpa loop.back 在所有的DNS数据文件中,跟在一个分号后面的是一个注释。空的行也是可以接受的。单词“directory”是一个DNS关键词用来通告守护进程 in.named 哪个目录包含DNS数据文件。它通常是 /var/named,但,可以被定义在任何地方。 DNS关键字:”cache”,指明了在 /var/named 中包含根DNS名字服务器的主机名和IP地址的文件的名字。这些信息是必要的,虽然文件名可能有些不同。在上面的例子中,要找到根(.)名字服务器,检查文件名 cache。 “primary”这个关键字在对数据文件列表时使用,包含了在每行中间段的域名列表信息。这个文件在DNS中没有任何规定的名字,但是被用来描述他们所包含的数据。 在例子中,为了获取关于主的有关于在域 veggie 中主机名字到IP地址的解析的权限信息,涉及到文件: veggie.zone 为了在2.50.128.in-addr.arpa 域中获得关于IP 地址到主要名的解析的主权限信息,涉及到文件 veggie.revzone。 为了获取关于解析 loopback IP 地址到主机名 localhost的权限信息,涉及到文件loop.back。所有的名字服务器都是有权限的对于他们自身的 loopback IP 地址,并且在他们的named.boot 文件中存在这个入口。 DNS 数据文件 DNS数据文件就是那些实际在他们的权限区描述主机名和IP 地址的文件。这是被名字服务器用来解析一个已知IP 地址到主机名的信息,或从一个已知的主机名到IP地址。 在一个DNS数据文件的每一行都涉及到一个资源记录,因为它指定一些可以使用的资源。有很多类型的资源记录。 本章只包含了 NameServer(NS),Address(A),Start of Authority(SOA),Pointer(PTR),Host Information(HINFO),和 Well-Known Services(WKS),等资源记录。 资源记录不可以跨跃多个行(除了SOA 和WKS,这将在后面讨论)。DNS数据文件是 case-insensitive。 ——文件:/var/named/cache 这个文件包含了根DNS名字服务器的主机名和IP地址。如果在当时没有其它适当的名字服务器,那么客户端使用这个文件作为解析信息请求的开始点。 在例子中的缓存文件使用了具体的语法规则,就象是由 named.boot 文件具体了所有所有的DNS数据文件一样。注意,分号和空格行是可以接受的。 例子: ; ;cache file – initial cache for root servers ; . in ns ns.nic.ddn.mil. in ns sa.isi.edu. in ns terp.umd.edu. in ns c.nyser.net. ns.nic.ddn.mil in a 192.112.36.4 sa.isi.edu in a 26.0.0.73 terp.umd.edu in a 128.8.10.90 c.nyser.net in a 192.33.4.12 l 在这个文件中前四个没有内容的行被称为NameServer 的资源记录,因为在每行的第四段有“ns”。每行描述了DNS的根名字服务器。 l 一个NS资源记录的第一个字段决定了域。在这个例子中,在第一行的点是指你要为根DNS域描述名字服务器。因为下三行的第一个字段为空,点已经被假定了。 l 第二个字段是一个时间溢出值(99999999)与数据有关。它不再被使用,但,常可以在缓存文件中看到它。它可以省去。 l 第三个字段(包括“in”)表示网络的类,是指Internet。有其它的类,但已经不被广泛使用,所以,就不再讨论它了。 l 文件的最后四行是地址资源的记录,它由在第四个字段中的“a”来决定的。地址资源记录指定了在NS资源记录中的从前的名字服务器的IP地址列表。 ——文件:/var/named/veggie.zone 文件:/var/named/veggie.zone 包含了在域 veggie.中的主机和它们的IP地址的关系信息。这个文件还指定了关于域的权限信息和是否被DNS管理者更新等。 这个文件主要用在主机的名字到地址的解析。它也提供了数据的生存值。 在启动时,这个文件会被自动的拷贝到辅名字服务器中,这允许它们也为解析器提供权限信息。 ; ;veggie.zone file for the primary nameserver tomato.veggie. ; $ORIGIN veggie. Veggie. In soa tomato.veggie. root.tomato.veggie. ( 01.0 ;serial 10800 ;refresh [3 hours] 3600 ;retry [1 hours] 432000 ;expire [5 days] 86400   ![]() in ns tomato.veggie. ;primary in ns potoma.veggie. ;secondary $INCLUDE /var/named/veggie.hosts l 第一行包括了一个起源说明,它设置了$ORIGIN为veggie.这个值追加到一个域名或主机名,不以 . 来结束。 通常$ORIGIN说明不是必须的,因为这个值追加到部分有限制的域,并且主机名由文件:/etc/named.boot域名指定。 l 这个文件的第二个没有内容的行是一个权限资源记录的开始,它由在第三个字段中的:soa来决定。这些记录的状态是所有这个域中的绝对的权限信息。每个域只有一个SOA记录。 l SOA记录的第一个字段指定了域名,如果左边空白,假定为$ORIGIN。 l 第二个字段所在的网络类别。(为Internet) l 第四个字段显示了包含SOA的主机列表。在例子中,是tomato.veggie. l 第五个字段包含了使用者的连接信息或这个域的管理者,在这个例子中,是位于主机tomato.veggie.上的root. l SOA可以包括更多的行,通过把信息包括在圆括号内 在左圆括号下有5个与域数据有关的值。 l 第一个值是001.00,这是由管理者选择的简单的连续的数字。如果数据有了任何改变,管理员要手工增加文件中的这个值。辅DNS域名服务器在相关的级别检查这个值来查看它们的信息是否为最新。 l 第二个值是10800秒,决定了刷新时间。刷新时间就是辅域名服务器检查数据是否为当前的时间。 l 第三个值是3600秒,决定了重试时间。重试时间就是辅域名服务器在前一次刷新不成功的情况下,经过多长时间后会再次试图刷新。 l 第四个值是432000秒,决定了终止时间。由辅域名服务器刷新的任何数据将会在这个点终止,第二个域名服务器将不会再对请求进行响应。 l 第五个值是86400秒,设置了由在其它域的其它名字服务器缓存的数据的生存时间值。 l 第四个生存时间值可以由DNS管理员改变,来符合其它域的频率改变。 l 这个文件包括在veggie.域中的名字服务器列表的两个NS记录。注意,第一个字段为空,所以域名是隐含的。 l 最后一行是一个 $INCLUDE说明,列出了追加到这个点的文件。这个文件将会包含在veggie.域中的实际的信息。$INCLUDE状态是可选的,因为主机的信息可能会在文件:veggie.zone中。 ——文件: /var/named/veggie.hosts 文件:/var/named/veggie.hosts包含了在域 veggie.中解析主机名到IP地址的信息。文件也包含了域中其它类型的主机信息。 这个文件的内容附着在文件:veggie.zone的最后。这个文件也是可选的,因为这些信息可以包含到文件:veggie.zone文件本身是尾部。 ; ;veggie.hosts file ; localhost. in a 127.0.0.1 tomato in a 128.50.2.2 in hinfo Sun4/65 “SunOS 5.5” in wks (sunrpc tftp echo telnet netstat finger discard) potato in a 128.50.2.1 in a 192.9.200.200 in hinfo Sparc10/51 “SunOS 5.5” in wks (sunrpc echo telnet netstat finger discard) carrot in a 128.50.2.4 in hinfo “Sun IPX” “SunOS 5.3” in wks (sunrpc tftp echo netstat finger discard) l 这个文件包含了几个地址类型的记录,这已经在先前讨论过了。 注意,在这个例子中,主机tomato,potato,和carrot 不能以 . 结束。DNS自动追加到$ORGIN的这些文件名。例如,tomato 变成了tomato.veggie。 l 主机信息的记录,在这个文件中有其它一些的资源记录类型,包含了描述一个主机细节的硬件和软件的数据对。有空格的地方必须引用。如第三个字段中的 hinfo HINFO 记录可以由DNS命令:nslookup 查询,这将在后面继续讨论。 l 在这个文件中的另一种类型的资源记录就是 Well-Known 服务记录。WKS列出了由一个特殊主机提供的著名的Internet服务,查找WKS在第三个字段中,注意WKS记录可以通过使用圆括号来跨跃多个行。 WKS记录也可以使用 nslookup命令来查询。 ——文件:/var/named/veggie.rzone 文件:veggie.rzone的主要目的是为解析一个已知的IP地址到一个主机名提供信息。 域的权限包括你的IP网络地址必须适应你的组织。在这个例子中,网络地址128.50.2被指定由你独占,所以,你必须对你网络中的所有主机地址负责。因此,你要对域2.50.128.in-addr.arpa负责。 ; ;veggie.revzone file for the primary nameserver tomato.veggie. ; 2.50.128.in-addr.arpa in soa tomato.veggie. root.tomato.veggie. ( 01.0 ;serial 10800 ;refresh [3 hours] 3600 ;retry [1 hours] 432000 ;expire [5 days] 86400 ;minimum [1 day] in ns tomato.veggie. ;primary in ns potato.veggie. ;secondary 2 in ptr tomato.veggie. 1 in ptr potato.veggie 4 in ptr carrot.veggie 第一个无内容的行是为域:2.50.128.in-addr.arpa 的SOA记录。这与我们以前使用过的SOA记录没有什么区别。 在这个文件中的两个NS记录列出了域:2.50.128.in.addr.arpa.的名字服务器。一旦再次出现第一个字段空白,就应用这个域名。 最后三行包含了打印机信息。PTR打印到已经预先定义好的一个主机,通常在另一个DNS数据文件中。 PTR记录的第一个字段指出了在域中的主机的IP地址的一部分。这些主机的部分地址看成是一个域名,并由在域:2.50.128.in-addr.arpa中的信息解析成一个主机名。 在例子中,如果请求想知道谁的主机号是4在域:2.50.128.in-addr.arpa中,PTR记录将会打印主机的名为:carrot.veggie. ——文件:/var/named/loop.back loopback数据文件是一个特殊的文件,它安装在所有的名字服务器中,用来允许解析它们的自己的loopback地址到主机地址:localhost。 所有的名字服务器都对他们的自身的loopback地址授权。 ; ;loop.back file for all nameservers ; @ in soa tomato.veggie. root.tomato.veggie. ( 0001.00 ;version number 10800 ;refresh [3 hours] 3600 ;retry [1 hours] 432000 ; expire [5 days] 86400 ) ;minimum [1 day] in ns tomato.veggie. 1 in ptr localhost. 在这个文件中,只出现了一个新的定义,就是在这个文件的开头使用了@。一个@是 一个DNS的缩写,表示在文件:/etc/named.boot的域名列表。 如果你在例子中检查文件:/etc/named.boot,你将发现 loop.back文件的域名列表在0.0.127.in-addr.arpa域中。因此,SOA记录和NS记录应用于那个域中。那个域就是在PTR的记录中首段追加为1的域,因为它不以一个终止点结束。 DNS设置过程——辅DNS服务器 你可以选择另一个NIS服务器当成一个辅DNS服务器。 ——文件:/etc/named.boot 创建 in.named的配置文件:/etc/named.boot。另外,如果这个文件的名字或位置有所不同,守护进程:in.named必须在文件:/etc/rc.local 中指出。 ; ;named.boot file for the veggie. Domain ;on the secondary host potato.veggie. directory /var/named cache . cache primary 0.0.127.in-addr.arpa loop.back secondary veggie. 128.50.2.2 veggie.zone secondary 2.50.128.in-addr.arpa 128.50.2.2 veggie.revzone 关键字:directory ,再次指出,用来通知守护进程:in.named 哪个目录下包含DNS的数据文件。 关键字:cache ,用来通知守护进程:in.named 根DNS的名字服务器的名字和IP地址。文件:/var/named/cache 由主名字服务器指出了一个应用。 l primary 关键字也通知守护进程:in.named 与loopback 地址域的相关的主权限信息可以在文件:loop.back中发现。这个文件与先前讨论过的主名字服务器的文件是相同的。 l 最后两行包含了关键字:secondary ,这个关键字通知守护进程:in.named 这是一个域的辅名字服务器列表,在这些行的第二个字段。 这两行的第三个字段包含了这个域的主名字服务器的IP地址。守护进程:in.named 将 会在启动时自动连接到这个IP 地址并为这个域下载数据。 这两行的最生一个字段列出了守护进程:in.named将要创建的文件名,并将会用主名字服务器的数据来代替它。这些文件将会在由named.boot文件中的关键字“directory”所指定。 DNS设置过程——NIS NIS必须运行在DNS域中的所有主机上,并且NIS服务器必须被配置为可以转发不识别的主机名或IP地址到通常的DNS解析器。在所有的NIS服务器上,由创建一个文件:/etc/resolv.conf 来配置NIS使用通常的DNS解析器。 ; ;/etc/resolv.conf file for tomato.veggie domain veggie nameserver 128.50.2.2 nameserver 128.50.2.1 前两行由分号开头。 Domain 这个词是一个DNS的关键字,定义了可追加的域名可以为任何主机名在命令行使用,不能以一个点来结束。 注意:在这行是不允许有结尾的空间的。 单词 nameserver 是一个DNS关键字,定义了用来查询的名字服务器的IP地址。在这里最多可能显示3个名字服务器。他们将会按顺序被查询直到有一个进行响应。重试的次数和溢出时间值依赖于名字服务器的数量和DNS运行的版本。 在你的域上的NIS主服务器,修改 /var/yp/Makefie 来通知NIS 使用 DNS。 # set the following variable to “-b” to have NIS # server use the domain name resolver for hosts # not in the current domain. B=-b # B= l 重制 NIS 主机映射。 Nisserver# touch /etc/hosts Nisserver# cd /var/yp ; make ——文件:/etc/nsswitch.conf 的修改 dns 关键字必须包含在文件:/etc/nsswitch.conf 中的主机行中。执行以下步骤来修改文件:nsswitch.conf 。涉及到文件:nsswitch.conf 的NIS+ 章的描述。 1. 修改文件:/etc/nsswitch.conf # vi /etc/nsswitch.conf 2. 增加关键字:dns 到主机行。这配置了系统去使用DNS解析器程序来查找主机信息。以下是一个主机行的信息,在文件:nsswitch.conf 被修改之后。 Hosts: nisplus dns [NOTFOUND=return] files DNS设置过程——客户端主机 如果客户端的用户想使用命令:nslookup 时,在客户端的设置过程才是必须的。如果用户想使用这个debug 工具,客户端的主机必须有一个已经配置的文件:/etc/resolv.conf。指向DNS名字服务器。 Debugging DNS Debugging DNS包括交互和非交互两种方式。 ——转储数据库:in.named 非交互方式是转储数据库in.named 的全部内容到一个文件。这个方式可以让管理员对比什么是他们所想的和什么是实际运行的。 为了转储数据库:in.named 到一个文件,需要用命令:kill 发送一个INT级别信号给守护进程:in.named。这自动创建文件:/var/tmp/named_dump.db 并用它来代替当前的数据库的内容。 Nameserver# kill –INT ‘cat /etc/named.pid’ Nameserver# more /var/tmp/named_dump.db 注意:DNS的一个很方便的功能就是当前 in.named的PID总是保存在文件:/etc/name.pid下。 ——Debugging DNS 举个例子在主机:grouper.fish上的 /var/tmp/named_dump.db,注意其它域中的信息缓存中的生存时间值。 ;Dumped at Fri Feb 11 10:10:36 1994 ;- - - Cache & Date - - - $ORIGIN . . 86225 IN NS lettuce. Veggie 86392 IN NS tomto.veggie. Fish IN SOA grouper.fish. root.grouper.fish. ( 10000000 10800 3600 432000 86400 ) IN NS grouper.fish. Localhost IN A 127.0.0.1 Lettuce 86225 IN A 128.50.2.3 $ORIGIN 50.128.IN-ADDR.ARPA. 3 IN .SOA grouper.fish. root.grouper.fish. ( 0 10800 3600 432000 86400 ) $ORIGIN 3.50.128.IN-ADDR.ARPA 6 IN PTR grouper.fish. 7 IN PTR angel.fish. 8 IN PTR salmon.fish. $ORIGIN 0.127.IN-ADDR.ARPA. 0 IN SOA grouper.fish. root.grouper.fish. ( 0 10800 3600 432000 86400 ) IN NS grouper.fish. $ORIGIN 0.0.127.IN0ADDR.ARPA. 1 IN PTR localhost. $ORIGIN veggie. Potato 86392 IN A 128.50.2.1 IN HINFO “Sparc10/51” “SunOS 5.5” Carrot 86392 IN A 128.50.2.4 IN HINFO “Sun IPX” “SunOS 4.1.3” $ORIGIN fish. Angel IN A 128.50.3.7 Wolf IN A 128.50.3.8 IN HINFO “SUN-4/65” “SunOS 5.4” Grouper IN A 128.50.3.6 ;- - - Hints - - - $ORIGIN . . 86225 IN NS lettuce. Lettuce 86225 IN A 128.50.2.3 运行 in.named 在Debug方式下 守护进程:in.named可以运行在11种不同的debug级别下。每一个级别在报告中会越来越罗嗦,每一个级别会在从前的级别中积累越来越多的信息。 有两种运行in.named的debug方式。 l 开始进程 in.named 使用参数 –d 可以使守护进程 in.named 运行在debug方式下,和想要运行的debug级别的数。 Nameserver# in.named –d 3 l 也可以通过 kill 命令来发送一个USR1级别的信号给正在运行的in.named守护进程,来开始debug。随后的USR1信号将会增加debug的1个级别。一个信号USR2将会关闭debugging。 Nameserver# kill –USR1 ‘cat /etc/named.pid’ (level 1) Nameserver# kill –USR1 ‘cat /etc/named.pid’ (level 2) Nameserver# kill –USR1 ‘cat /etc/named.pid’ (level 3) Nameserver# kill –USR2 ‘cat /etc/named.pid’ (level 0) 当在debug模式下运行 in.named时,输出将被捕获在文件:/var/tmp/named.run中。Nameserver# more /var/tmp/named.run ——命令:/usr/sbin/nslookup 命令:nslookup主要允许用户可以交互式的查询DNS名字服务器,有关于IP地址,或者显示其它资源的记录信息。 Nslookup也可以使用非交互式,在本章中将不做讨论。 当使用nslookup命令时,文件:/etc/resolv.conf涉及到第一个名字服务器的列表。如果第一个列表名字服务器不响应,那么按顺序,其它的名字服务器会被试用。 为了调用nslookup命令,键入命令名。名字和当前名字服务器的IP地址会被打印到屏幕上,并出现一个”>”提示符。Nslookup 等待一个命令。 Carrot# nslookup Default server: tomato.veggie Address: 128.50.2.2 > potato server: tomato.veggie Address: 128.50.2.2 Name: potato.veggie Address: 128.50.2.1 >^D 在上面的例子中,在提示符”>”后,键入主机名 potato,被请求的名字服务器响应主机 potato的IP地址。默认的对 nslookup主机名字查询的响应是IP地址。如果主机在本地域——也就是说是:potato,而不是 potato.veggie,时,域名是不需要的。 如果在nslookup命令中退出,键入Ctrl-d(或exit)在>提示符后,如在上例中显示的那样。 如果键入Ctrl-c 是不好使的。 通过使用nslookup可以重新获得主机名的信息。如果查询的类型为PTR记录,就象是在下面的例子中一样: carrot# nslookup Default server: tomato.veggie Address:128.50.2.2 > set q=ptr > 4.2.50.128.in-addr.arpa Server:tomato.veggie. Address:128.50.2.2 4.2.50.128.in-addr.arpa holst name = carrot.veggie > set q=a > exit 域的主机名和IP地址可以通过命令:nslookup在屏幕上列表显示。域名必须是完全资格域。 Carrot# nslookup Default Server:tomato.veggie Address:128.50.2.2 > ls veggie. [tomato.veggie] Host or domain name Internet address Veggie server=tomato.veggie Tomato 128.50.2.2 Potato 128.50.2.1 Carrot 128.50.2.4 > 你可以通过使用命令 server选择其它域的名字服务器来显示其它域的主机名和IP地址列表。当完成时,你将返回到查询的本地名字服务器。 Carrot# nslookup Default Server : tomato.veggie Address : 128.50.2.2 > server grouper.fish Default Server : grouper.fish Address : 128.50.3.6 >ls fish. [grouper.fish] Host or domain name Internet address Fish server=grouper.fish Grouper 128.50.3.6 Angel 128.50.3.7 Salmon 128.50.3.8 > server tomato.veggie Default Server : tomato.veggie Address : 128.50.2.2 > 其它类型的资源记录可以通过使用nslookup来查询他们的值。以下是一个查询hinfo的主机资源记录的一个例子。 Tomato# nslookup Default Server : tomato.veggie Address : 128.50.2.2 > set q=hinfo > potato server : tomato.veggie Address : 128.50.2.2 Potato.veggie Sparc10/51 SunOS 5.5 > exit 如果要获得更多关于命令 nslookup的信息,去在线帮助网页(nslookup(1M))。 |
UNIX盲 回复于:2003-06-25 18:18:23 |
人民感谢你!做了一件大好事。
干掉小日本!我有同感! |
xingkong555 回复于:2003-06-26 09:47:04 |
[quote:f7d5c7efe6="solstice"]今天好热,心情也不错!
第十二章 性能调整的指导方针 目标 通过本章学习,你将能够掌握: l 回顾一下导致系统性能低劣的原因 l 使用性能监视命令来发现性能瓶颈 l 描述提高性能的办法 介绍 本章大体的..........[/quote:f7d5c7efe6] up |
heineken 回复于:2003-06-26 11:32:20 |
几天没来,一来就看到好贴,up 一哈 |
中原一片红 回复于:2003-06-26 16:08:53 |
good
3x |
moocher 回复于:2003-06-26 22:10:45 |
抵制日货,UPyou,日本鬼子从骨子里坏,而且是普遍性的坏,唯有dead才能让人放心! |
moocher 回复于:2003-06-26 22:11:55 |
老大,总共多少章啊,还有没有! |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/