LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: AMD处理器

[推荐]UNIX 系统(3月30日更新 请勿灌水。谢谢!)

[复制链接]
 楼主| 发表于 2005-4-30 17:57:54 | 显示全部楼层
[推荐]配置磁盘设备
UNIX系统管理-第六章:配置磁盘设备
说明:本章的内容以HP-UX为例,其它的操作系统可能会有所不同。
目标
完成这一章,你能够做以下事情:
描述进行磁盘分区的原因
使用整盘方式对磁盘进行分区
描述LVM的特征和优点
定义术语:卷组,逻辑卷,和物理卷,并且解释它们之间的关系。
在命令行创建物理卷,卷组,和逻辑卷
磁盘分区
每一个磁盘都可能有一个或多个分区
每一个分区能够被用于:
  -一个文件系统
  -交换空间
  -裸数据
  -引导区
系统通过分区来组织磁盘空间,分区就是为实现特定目的而分配的一部分磁盘空间。一个分区可以于跨越一个磁盘或多个磁盘,也可以是一个磁盘的一部分。每一个分区都能包含:
一个文件系统(为文件和目录分配的空间)
一个交换区(内核用来补充物理内存的空间)
裸设备(应用程序直接存取的数据,例如数据库)
引导区(包含引导过程中使用的工具)
HP-UX提供了两种方式来创建和管理磁盘分区:
整盘方式
逻辑卷管理(LVM)
系统中的一些磁盘可以使用整盘的方式来配置,而另外一些磁盘可以使用LVM来配置。两种技术可以用在同一个系统中,但是不能同时用在同一块磁盘上。
两种方式都有其优点和缺点。整盘方式容易配置,而LVM提供了更多的灵活性。
整盘方式分区
使用整盘方式,一个磁盘可以有五种不同的配置方式。
磁盘全部被一个单个文件系统使用
磁盘全部作为一个交换区
磁盘全部作为一个裸分区
磁盘的一部分作为一个文件系统,剩下的部分作为一个交换区
磁盘被配置为一个引导盘,其中包含root文件系统,一个交换区和一个2M的特殊的引导区(其中包括系统引导时使用的工具)。
虽然整盘方式分区使用起来十分容易,但是它有以下几个限制:
一个文件系统不能够跨越多个磁盘
一个磁盘分区只能供一个文件系统使用
如果需要更多的磁盘空间,扩展一个文件系统会十分困难。
由于这些原因,许多管理员选择使用逻辑卷管理器来代替整盘方式管理磁盘空间。
LVM磁盘分区
逻辑卷管理(LVM)使你能够组合几个磁盘(在LVM中称为“物理卷”)上的空间来形成一个“卷组”。你可以继续细分这个卷组中的空间为“逻辑卷”(在LVM中等价于一个分区)。逻辑卷管理(LVM)克服了整盘方式的限制,使以下事情变得可能:
创建跨越多个磁盘的逻辑卷
在一个磁盘上创建多个逻辑卷
在需要时扩展和缩小逻辑卷的大小
物理卷
LVM管理的一块磁盘被称为一个物理卷。当一块磁盘被LVM使用之前,必须先在磁盘上面创建一些特殊的数据结构。一旦这些数据结构被创建,这块磁盘就被认为是一个物理卷,同时就可以被加入到一个卷组中去。
卷组
卷组是一个或者多个物理卷的组合。一个卷组中的物理卷组合在一起,可以被分割为一个或者多个逻辑卷。卷组通常遵循以下的命名原则:
/dev/vg00
/dev/vg01
/dev/vg02....
你可以使用任何你喜欢的名字对一个卷组命名。vg00卷组是一个特殊的卷组,被作为"root卷组”,其中包含默认的引导盘和大部分操作系统。
逻辑卷
一个卷组中的磁盘空间可以被分割为一个或者多个逻辑卷。一个逻辑卷和一个分区类似,也可以包含一个文件系统,交换区,或者裸分区。
逻辑卷能:
包含所有或一部分物理卷的空间
跨越多个LVM物理卷
重新调整大小,或者在需要增加时,移动到一个不同的磁盘上去。
在默认的情况下,一个卷组中的逻辑卷的名字分配如下:
/dev/vg01/lvol1
/dev/vg01/lvol2
/dev/vg01/lvol3 etc
你也可以使用任何你想要的名字命名逻辑卷。
LVM的设备文件
物理卷,卷组,和逻辑卷都是通过设备文件来检索,就像磁盘设备通过设备文件来检索一样。
物理卷的设备文件
你可以使用与物理卷关联的磁盘的设备文件来检索一个物理卷。由于磁盘可以以块或者字符模式使用。所以每一个物理卷同时拥有一个块和字符的设备文件。
例子:
/dev/dsk/c0t5d0    #在SCSI地址为5的磁盘的块设备名
/dev/rdsk/c0t5d0    #在SCSI地址为5的磁盘的字符设备名
卷组设备文件
卷组也是由设备文件来检索,每一个卷组在/dev目录下都有一个子目录,其中包含组自身的设备文件,同时包含这个卷组中所有的逻辑卷的设备文件。卷组子目录的目录名决定这个卷组名。
例子:
/dev/vg01        #包含vg01相关联的设备文件的目录
/dev/vg01/group     #vg01卷组的设备文件。
逻辑卷的设备文件
逻辑卷的设备文件存在于它们所属的卷组的目录下。每一个逻辑卷都有两个设备文件:一个是在使用字符模式存取逻辑卷时使用,另外一个在使用块模式存取逻辑卷时使用。
例子:
/dev/vg01/lvol1    #逻辑卷“lvol1”的块设备文件
/dev/vg01/rlvol1    #逻辑卷“lvol1"的字符设备文件
LVM的主号和次号
与其它设备文件类似,每一个逻辑卷和卷组的设备文件都有主号和次号。
所有的LVM设备文件的主号都是64,这个主号对应的是内核中的LVM的驱动程序。
次号的前两位表明这个设备文件所属的是那一个卷组。最后两位表明设备文件对应的逻辑卷。
设备文件名:/dev/vg0/lvol2
主号 #:64
次号#:0x010002
例子:
这个设备文件的主号,同所有的LVM设备文件一样,是64
次号阿前两位01,指明逻辑卷所属卷组是vg01
次号的最后两位,指明这个逻辑卷是lvol2
问题:
如果vg02有三个以默认的命名规则创建的逻辑卷,:
1,包含这些逻辑卷设备文件是什么目录。
2. 卷组的设备文件是什么?
3. 第一个逻辑卷的裸设备文件名是什么?
4. 在/dev/vg02目录下,有多少个设备文件?
5. 第三个逻辑卷设备文件的次号应该为什么?
LVM的 extents
在实际配置LVM之前,我们需要进一步认识一些概念。
在LVM中最小的分配单元为“extend”.一个物理卷被分成许多"hysical Extents”(PEs),当物理卷被加入到一个卷组的时候,这是一个有效的分配单元。
一个逻辑卷是由一系列的有连续编号的“Logical Extents"(LEs)组成。每一个逻辑extent只是一个指向磁盘上的物理extents 的一个指针。越大的逻辑卷的逻辑extents越多,为了增大一个逻辑卷,LVM只需要增加更多的逻辑extents即可。
PE和LE在一个卷组内是一致的,当卷组最初被创建的时候被设置。默认的extent的大小为4M
问题:
1. 假定一个卷组使用的是默认的extent大小。在一个88MB的逻辑卷中有多少个逻辑extent?
2. 假定一个卷组使用的是默认的extent大小,在一个400MB的物理卷中有多少个物理extent?
创建物理卷
pvcreate /dev/rdsk/c0t3d0
pvcreate /dev/rdsk/c0t4d0
在你开始使用一个磁盘上的逻辑卷空间之前,你必须先将这块磁盘配置成为一个物理卷。一旦这块磁盘被配置为一个物理卷,你就可以将其加入到一个卷组中去,并且开始分配逻辑卷。
准备一个物理卷
你准备用作物理卷的磁盘必须先要保证连接到你的系统,并且电源是打开的。你可以使用ioscan命令来找出新磁盘的设备文件名。
# ioscan -funC disk
如果磁盘在先前已经被使用,或者你不信任磁盘的一致性,你可以使用mediainit工具。mediainit通过格式化磁盘来进行磁盘初始化,通过运行写和读的测试来验证媒介的一致性,然后备份任何发现的坏块。mediainit执行后会破坏磁盘上已有的用户数据。
# mediainit /dev/rdsk/c0t3d0
# mediainit /dev/rdsk/c0t4d0
下一步,执行pvcreate命令来在磁盘上创建LVM数据结构,如果这块磁盘在以前已经属于另外一个卷组的一部分,你可能需要使用-f选项来覆盖磁盘上已经存在的数据结构。
# pvcreate -f /dev/rdsk/c0t3d0
# pvcreate -f /dev/rdsk/c0t4d0
到这里,你的磁盘已经准备好加入一个新的或者已经存在的卷组中。
LVM数据结构
LVM在物理卷的开始部分存储数据结构信息。
物理卷保留区域(PVRA)包含有物理卷的LVM信息。这个区域是由pvcreate创建。
卷组保留区域(VGRA)包含有整个卷组的LVM信息。在卷组中每一个物理卷中都有VGRA的一个拷贝。在VGRA中是卷组状态区域(VGSA),其中包含卷组的定额信息,和卷组描述区域(VGDA),其中包含有配置卷组所需的地设备驱动程序。VGRA是由vgcreate建立的。
用户数据区域包括文件系统,虚拟内存(交换区),或者用户应用。当一个卷组被创立,用户数据区域被分割成为固定大小的物理extents,这些物理extent又会映射为逻辑extents。
坏块重定位区域(BBRA),包含坏块的恢复机制信息。
LVM引导磁盘包含引导过程的附加的数据结构。
创建卷组
创建: mkdir /dev/vg01
    mknod /dev/vg01/group c 64 0x010000
检查: vgdisplay -v vg01
    pvdisplay -v /dev/dsk/c0t3d0
    pvdisplay -v /dev/dsk/c0t4d0
在磁盘已经被配置为一个LVM的物理卷后,你就可以创建卷组。一旦卷组被创建后,你就可以在其中创建逻辑卷。
第一步
为卷组创建一个目录。目录的命名规则为/dev/vgnn,其中nn表示卷组号。如果你的系统是预装的操作系统,你会发现/dev/vg00这个卷组已经存在。
例如,想要创建一个卷组01,你需要键入:
mkdir /dev/vg01
第二步
在目录/dev/vgnn下面创建名为group的控制文件,使用mknod命令。group文件是一个字符设备文件。主号始终是64。次号是十六进制数,通常以0000结尾,格式为:
0xhh0000
其中hh代表卷组号。
例如,想要为卷组01创建一个group文件,你应该键入:
mknod /dev/vg01/group c 64 0x010000
第三步
现在你能够创建卷组,并且指明这个卷组的物理卷。使用vgcreate命令,你可以一次分配多个卷到一个卷组。
vgcreate /dev/vg01 /dev/dsk/c0t3d0 /dev/dsk/cot4d0
注意,你正在使用块设备来创建一个卷组。
vgcreate 命令的选项有:
-e max_physical_extents  设置物理extent数目的最大值(默认为1016).
-l max_logical_vols    设置卷组中逻辑extent数目的最大值(默认为255)
-p max_physical_vols    设置卷组中LVM磁盘(物理卷)的最大值(默认为16)。
-s physical_extent_size   设置卷组中每一个物理extent的大小(M),(默认为4M).
第四步
你可以通过vgdisplay和pvdisplay命令来确认你创建的卷组。
创建逻辑卷
创建:  lvcreate -L 16 -n myswap vg01
    lvcreate -L 16 -n myfs1 vg01
    lvcreate -L 16 -n myfs2 vg01
检查: vgdispaly -v vg01
    lvdisplay -v /dev/vg01/myswap
使用lvcreate命令可以在卷组中创建逻辑卷。
你可以使用Mbyte或者LVM extent作为单位来分配磁盘空间给文件系统,交换区,或者裸数据空间
当使用lvcreate命令创建逻辑卷的时候,会同时创建块和字符设备文件并且将它们放在/dev/vgnn目录下。这个命令不会自动指明大小,除非你在lvcreate命令中指明大小。你也可以使命令默认值来创建一个逻辑卷,然后再对其进行更改。
选项
-L logical_volume_size    逻辑卷的大小(M),这个值必须最接近整个逻辑extent的总                 和。默认为0
-l logical_extents_number   逻辑extent的数量,默认为0
-n name             你想要分配给这个逻辑卷的名字,
例子
想要以默认的特征,在卷组/dev/vg01下面创建一个逻辑卷:
lvcreate /dev/vg01
创建一个拥有10个逻辑extents的逻辑卷:
lvcreate -l 10 /dev/vg01
创建一个100M大小的逻辑卷:
lvcreate -L 100 /dev/vg01
创建一个非标准名字的逻辑卷。
lvcreate -L 16 -n myswap vg01
观察你的逻辑卷
你可以使用两个命令来观察你的逻辑卷的相关信息:
# vgdisplay -v vg01         #确定在vg01中有那些逻辑卷。
# lvdispaly -v /dev/vg01/myswap   #浏览"myswap"逻辑卷的细节。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:58:38 | 显示全部楼层
[推荐]创建文件系统
UNIX系统管理-第7-8章创建文件系统
目标
学完这一章,你能够做以下事情:
以命令行方式创建文件系统。
以命令行方式装载或者卸载文件系统
通过/etc/fstab文件来自动地装载文件系统
文件系统创建概述
如果你要扩展文件系统的整体容量,你可以创建新的文件系统,并且把它加入到原来的文件层次结构中。文件系统可以创建在一个单独的磁盘上,也可以创建在一个逻辑卷中。
在创建文件系统之前,你不是必须要增加一块新的磁盘。如果你的卷组中有空闲的extent,你就可以简单地利用这些空闲空间先创建一个逻辑卷,然后在上面创建文件系统。
创建一个新的文件系统通常是由于以下的原因:
你预期当前的文件系统会很快达到其最大的容量。
你当前的文件系统已经达到最大的容量
你为一些特殊的原因,想要物理上分割文件系统。例如,不同组的用户要使用不同的磁盘空间
你想要创建一个唯一属主的文件系统或者是要创建镜像。
创建一个新的文件系统
1.创建新的文件系统
newfs -F vxfs /dev/vg01/rmyfs1
2.为这个文件系统创建装载点目录。
mkdir /myfs1
3.装载这个新文件系统
mount /dev/vg01/myfs1 /myfs1
4.将这个文件系统加入到/etc/fstab文件中
首先,你必须为这个新文件系统创建一个超级块,inode表,和其它的系统metadata数据结构。newfs命令就是创建这些数据结构的工具。上例中,在逻辑卷/dev/vg01/rmyfs1中创建了一个vxfs类型的文件系统。
一旦你使用newfs命令创建了文件系统的metadata数据结构,你必须为这个文件系统创建一个装载点,然后再装载这个文件系统。
最后,如果你想要是这个文件系统持续生效,你应该将其加入到/etc/fstab文件中去。每一次当系统启动的时候,/etc/fstab文件会被用来自动装载文件系统。所以,如果一个新的文件系统没有被加入到/etc/fstab文件中,在下一次系统启动的时候就不会被自动装载。
在创建并装载了一个新的文件系统后,你可以使用mount命令和df 命令来确认你的文件系统是否装载成功
newfs命令
例子
1.newfs -F vxfs /dev/vg01/rmyfs1
2.newfs -F vxfs -o largefiles /dev/vg01/rmyfs1
3.newfs -F hfs /dev/vg01/rmyfs2
4.newfs -F hfs -o largefiles /dev/vg01/rmyfs2
5.newfs -F hfs -b 4096 -f 2048 -m 5 -i 4096 /dev/vg01/rmyfs2
在一个逻辑卷已经被留出来作为一个文件系统使用后,你必须在上面创建一个超级块,inode表,和其它的metadata数据结构。newfs命令就是被用来创建这些数据结构的工具。
上例中的第一个例子简单地在/dev/vg01/rmyfs1这个逻辑卷中创建一个vxfs的文件系统。-F vxfs选项指明要被创建的文件系统的类型是vxfs。同时要注意,newfs命令要求用裸设备文件作为参数。而被指明的逻辑卷和磁盘上的数据会被改写。任何原先那个磁盘或者逻辑卷上的数据都会被破坏。
第二个例子与第一个类似。只是它包含一个大文件选项。HP-UX10.20版本以后支持文件系统中的最大文件的大小为128GB。但是,如果没有使用大文件选项,最大的文件的大小为2GB。
第三个例子在/dev/vg01/rmyfs2这个逻辑卷上创建一个HFS类型的文件系统。
第四个例子在/dev/vg01/rmyfs2逻辑卷上创建HFS的文件系统。但是与前一个HFS文件系统不同的是,这个例子中指明了几个文件系统参数。 -b 4096设置块的大小为4kB,-f 2048设置文件段的大小为2KB,-m 5更改inode每4KB创建一个。这些参数只对HFS文件系统有效,能够被设置用来提高性能。
newfs命令对整盘方式的选项
今天的大多数的系统管理员会选择LVM的方式对磁盘进行分区。但是对于工作站来说,你可能会选用更简单的整盘分区的方式:
# newfs -F hfs /dev/rdsk/c0t2d0    #在磁盘c0t2d0上创建一个HFS文件系统
# newfs -F vxfs /dev/rdsk/c0t2d0    #在磁盘c0t2d0上创建一个JFS文件系统
“-R”选项在磁盘的末尾保留一些空间用作交换区:
# newfs -F hfs -R 200 /dev/rdsk/c0t2d0     # 创建文件系统的同时保留200MB的空间作为交换区
你也可以使用整盘的方式创建一个引导磁盘。
装载新文件系统
mkdir /myfs1
mount /dev/vg01/myfs1 /myfs1
mount -v
装载一个文件系统
文件系统在没有被装载之前是不能被使用的。在一个文件系统创建之后,它必须被合并到系统的文件层次结构中,其方式是通过创建一个装载点并且装载这个文件系统。例子:
# mkdir /myfs1           # 创建一个转载点
# mount /dev/vg01/myfs1 /myfs1  #将一个文件系统装载到一个装载点。
注意: mount命令要求的是一个块设备文件,而newfs命令需要的是一个字符设备文件。
装载一个文件系统逻辑上是将新的文件系统与装载点之间建立一个关联。对这个装载点的存取实际上是对装载在这个装载点目录上的文件系统的存取。
选择转载点的的原则
虽然装载点可以创建在任何目录中,但是大多数的文件系统都是装载在/,/usr/tmp这些目录下,通常,你可以在/home目录下创建你自己的文件系统。同时,文件系统只能装载到一个空目录中,如果一个文件系统装载的目录下已经有了文件和目录,在文件系统被卸载之前,这些文件和目录会被隐藏。最后,注意不要装载一个文件系统到一个正在被其它用户或者进程使用的目录下。如果你试图这样做,你将会得到“设备忙”的错误信息。
浏览已经安装的文件系统
mount -v命令可以详细地显示已经安装的文件系统的信息,包括它们的安装点和安装时间。
#mount -v
df -k命令同样可以显示每一被装载的文件系统的已经被使用的空间和有效的空间。
umount 命令
umount /dev/vg01/myfs1
或者
umount /myfs1
现在我们已经知道如何装载一个新的文件系统,你还应该知道如果卸载一个文件系统。卸载一个文件系统的命令是umount
注意:这个命令是umount,而不是"unmount",这个命令可以使用块设备文件或者装载点目录。
umount的选项包括:
-a        卸载“所有”当前装载的文件系统
-F FStype    指明文件系统的类型
-v        报告输出同时会显示FStype 。
你可以使用umountall命令来代替umount -a命令。
如果文件系统的任何一个文件正被打开,或者有用户当前的工作目录在这个文件系统中,这个文件系统就不能够被卸载。你可以使用fuser命令来哪一个进程正在使用一个文件或者文件结构,你同样可以指定设备文件或者一个装载点。(使用装载点的时候同样要加上-c选项)。
# fuser -u /dev/vg01/myfs1
这个命令列出使用/dev/vg01/lvol1的进程的ID和进程的登录用户名。
#fuser -u /etc/passwd
列出打开passwd文件的进程ID和进程的用户名。
#fuser -uc /opt
列出打开/opt文件系统的进程ID和登录名。
#fuser -ku /dev/vg01/myfs1
中止所有的妨碍卸载lvol1逻辑卷的进程,并且在KILL掉每个进程之前,列出进程ID和用户名。
通常是在关闭系统或者可能导致文件系统损坏之前卸载所有的文件系统。umount -a命令卸载所有已装载的文件系统。shutdown脚本中会包括这个命令以在系统关闭之前卸载掉所有的文件系统。
注意:
不能够卸载root文件系统。
你不可以在没有重启动系统,而且文件系统交换区生效的时候卸载一个文件系统。
自动装载文件系统
加入一个条目到/etc/fstab文件中。
当系统启动的时候或者你使用mount -a,或mountall命令的时候,文件系统会被装载
你可以使用绝对路径名来装载文件系统。
/etc/fstab文件的例子:
/dev/vg00/lvol3 /       vxfs   delaylog 0 1
/dev/vg00/lvol1 /stand    hfs    defaults 0 1
/dev/vg00/lvol4 /home     vxfs   delaylog 0 2
/dev/vg00/lvol5 /opt     vxfs   delaylog 0 2
/dev/vg00/lvol6 /tmp     vxfs   delaylog 0 2
/dev/vg00/lvol7 /usr     vxfs   delaylog 0 2
/dev/vg00/lvol8 /var     vxfs   delaylog 0 2
/dev/vg01/myfs1 /myfs1    vxfs   delaylog 0 2
/dev/vg01/myfs2 /myfs2    hfs   delaylog 0 2
在系统关闭的时候会卸载所有的文件系统。如果你想要在下一次系统启动的时候自动装载一个文件系统,你应该把它加入到/etc/fstab文件中。在系统引导的时候,/sbin/init.d/localmount脚本会执行mount -a命令,这个命令会自动装载在/etc/fatab文件中列出的文件系统。这个配置文件不是系统自动维护的;当文件系统被创建或删除的时候,你应该手工编辑这个文件。
一个文件系统的信息加入到/etc/fstab文件后,你就不需要输入完全mount命令,就可以装载一个新的文件系统。看以下的例子:
# mount -a           #装载所有的/etc/fstab中列出的文件系统。
# mount /myfs2         #装载/myfs2 - (不需要逻辑卷的名字)
# mount /dev/vg01/myfs2    #装载/dev/vg01/myfs2 - (不需要装载点的名字)
CD-ROM文件系统
能够存储海量数据,容易检索大量的信息
你可以从CD上读取数据,但是不能够向CD上写数据
想要使用CDFS卷:
1.配置适当的内核驱动。
2.创建设备文件(如果需要的话)
3.使用mount命令装载CDFS卷。
CDFS的例子:
1.CD-ROM格式的帮助手册
2.应用程序CD.
CD-ROMs正在变成一个普遍使用的介质,因为它们可以存储大量的数据并且价格十分便宜。然而,它们是只读的。
使用一个包含CDFS文件系统的CD-ROM需要进行几个步骤。。开始时,要确认CD-ROM驱动器连接正确,并且正确配置,并且在内核中配置好正确的驱动。然后,关闭计算机,连接CD-ROM驱动器,然后再打开电源。
假定已经安装了合适的驱动程序,系统会在启动的时候创建必需的设备文件。
在启动后,你可以使用任何装载点目录名(例子是使用/cdrom).
你要做以下事情:
$ ioscan -funC disk         #查找CD-ROM的块设备文件名
# mkdir /cdrom           #创建一个装载点目录
# mount /dev/dsk/c1t3d0 /cdrom   # 装载CD
如同其它文件系统一样,CDFS文件系统也能够被包含在/etc/fstab文件中,以便系统启动的时候自动装载光盘。
一旦装载完成,CD-ROM文件系统可以象其它文件系统一样使用。
CD-ROMs的文件系统有几种类型。其中使用的十分广泛的是PC CD-ROM使用的标准ISO9600类型。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:59:51 | 显示全部楼层
[推荐]修复文件系统
UNIX系统管理-第九章:修复文件系统
目标
完成这一章,你将能做以下事情:
理解文件系统是如何进行更新操作的
理解sync是如何预防文件系统错误
列出文件系统错误的三个原因
使用fsck检查和修补文件系统
文件系统的维护
日常的维护
-检查文件系统的一致性
-执行文件系统备份
-监控磁盘的使用情况
系统管理员的一个主要的职责就是保护用户的数据的安全。由于UNIX中数据通过文件系统的方式存储,系统会强制性检查文件系统的存储环境是否出现问题。文件系统的完整性十分重要,系统管理员可以做许多工作来保护文件系统的完整性。
这一章,我们会学习如何使用fsck工具来检查和维护文件系统的完整性。在开始之前,我们需要了解文件系统的更新是如何发生的。
文件系统的更新
当一个文件系统装载后,它的超级块被拷贝到内存中。当拷贝完成之后,文件系统的标记被置为“dirty”。所有的对超级块的更改首先要去更改这个拷贝。当一个SYNC的系统调用使用的时候,磁盘上的拷贝才会被更新。当一个文件系统被卸载的时候,所有的在内存中的数据会被写回到磁盘上,文件系统的标记被置为 “clean"。
所有的对metadata进行的修改首先是修改其在内存中的拷贝,然后才会被写到磁盘上去。一些metadata的修改是立即写到磁盘上,其它的则是在调用sync的时候才会被写到磁盘上。
举一个例子:rm myfile命令会引起以下的一些改变:
1.myfile的目录的条目被清除。
2.用来描述myfile的inode被释放
3.用来索引剩余数据块和剩余inode的映射图被更新
4.超级块中的剩余数据块的数量和inode的数量被更新
不幸的是,不是所有的metadata数据都是连续地存储在磁盘上的,所以它会进行一系列的写操作来完成这些处理过程,如果在进行这些过程中系统突然崩溃,就会使metadata数据产生不一致。例如:如果myfile的目录条目已经被清除,但是inode还没有被释放,结果就是一个inode有一个链接,但是并没有目录结构指向这个inode。这就是不一致的metadata。
内存缓冲区
用户写数据的时候,实际上并不立即发生写磁盘的动作,数据会被拷贝到一个内存的缓冲区里。这个操作非常快,数据同inode信息一起,会在以后的一些时间被写到磁盘上,通常是在缓冲区满的时候和新需要清除一下缓冲空间的时候。如果系统在还没有将缓冲区中的信息写到磁盘上去之前,系统关闭。文件系统的一致性就会被破坏。如果你察觉文件系统已经被破坏,你应该停止当前的工作。
使用缓冲区的优点和缺点:
使用缓冲区可以对磁盘进行均匀的存取,因为内核不需要知道磁盘I/O的产生的原因,内核只会将缓冲区中的数据写到磁盘,而不用去关心缓冲区数据的组成。从磁盘I/O的观点来看,使用缓冲区,系统的设计会更简单。
通过使用缓冲区,应用程序会很容易地移植到其它的UNIX系统上去,因为不同的UNIX机器的磁盘I/O也许会不同,但是程序不需要了解这些。它们只是写到缓冲区,而不用去考虑磁盘的设置方式。
使用缓冲区可以减少对磁盘的读写,这会提高整个系统的响应时间,换句话说,系统运行更快了。
重复利用缓冲区中的数据文件也能够加速系统的响应。
刷新缓冲区
sync
将缓冲区的内容写到磁盘
保持文件系统为最新
通常是通过syncer守护进程来激活
syncer
syncer是在系统启动的过程中自动启动。
syncer程序的语法为:
  syncer[seconds]
数据在写磁盘上之前会先写被到一个缓冲区里。而缓冲区写到磁盘会有一个延迟,直到:
系统需要缓冲区进行其它的操作
最后的块被修改
文件系统被卸载
sync命令被执行
系统关闭或者重启动
syncer
syncer通常是在系统启动的时候,在/sbin/init.d/syncer脚本文件中启动的,它的职责就是定时刷新缓冲区。你不需要手工执行syncer命令,它会在系统启动的时候,自动通过/sbin/init.d/syncer 脚本执行。
sync
sync执行sync这个系统调用。执行这个命令会刷新还没有写到磁盘上的系统缓冲区数据,包括修改的超级块,修改过的inode,和延迟的块I/O,这会确保在执行一个关键的操作如系统关闭之前,所有的文件修改都会被写到磁盘上去。而你可以在任何时候手工执行这个命令。sync会自动执行syncer守护进程周期执行的所有操作。
介绍fsck
为什么要运行fsck?
检查文件系统metadata的完整性
在需要的时候修补metadata数据的损坏
什么时候执行fsck?
在系统异常关闭的时候,会自动运行这个命令。
系统管理员怀疑文件系统被破坏的时候,也可以手工运行这个命令。
当操作系统非正常关闭的时候,文件系统的更改可能会丢失或者未完成。
fsck工具在系统崩溃或者未正常关闭的时候会自动运行,它会验证你的文件系统的完整性。这个工具会试图修改任何能够识别的数据错误。
fsck在系统非正常关闭时会自动运行,但是你也可以在怀疑文件系统有错误的时候手工运行这个命令。
运行fsck
例子:在/dev/vg01/myfs2下运行fsck
1.mount -v
2.umount /dev/vg01/myfs2
3.fsck -F hfs /dev/vg01/rmyfs2
4 mount /dev/vg01/myfs2
5. 恢复任何被破坏的文件:
问题
fsck删除任何文件吗?
fsck重新连接任何文件吗?
运行fsck要进行的步骤:
1.mount -v
使用这个命令来判断每一个一个文件系统装载的目标。和文件系统的类型,因为你在运行fsck的时候必须要知道文件类型。
2. umount /dev/vg01/myfs1
  umount /dev/vg01/myfs2
fsck必须在一个静态的文件系统上运行,因此在执行命令之前要卸载文件系统.
3. fsck -F vxfs /dev/vg01/rmyfs1
  fsck -F hfs /dev/vg01/rmyfs2
在运行fsck的时候,你必须要指明你要检查的文件系统的类型。为了达到最优的性能,你也可以指明包含文件系统的逻辑卷或者磁盘的裸设备文件名。
如果fsck检查到一个文件系统不完整,它会报告这个问题,然后询问是否对其进行修复。
如果你回答”yes”,fsck会试图修正这个问题。如果你回答“no”,fsck会忽略这个问题,继续进行检查。一般都要选择"yes",让系统自动修复发现的问题。
4. mount /dev/vg01/myfs1
  mount /dev/vg01/myfs2
在fsck完成之后,重新装载这个文件系统。
5.恢复任何被破坏的文件
为了修正文件系统的错误,fsck会删除一个或者多个文件,观察fsck输出的”REMOVE"的信息,确保从磁带上恢复受影响的文件。
fsck会重新链接孤儿文件。如果和看到任何重链接的信息,检查文件系统的lost+found目录。下一节会讨论lost+found目录的细节。
检查lost+found
存在每一个文件系统中
fsck会拷贝孤儿文件到这些目录下去。
在每一次fsck完成之后应该检查这个文件
在每一个文件系统的root目录下,都应该有一个lost+found目录。这个目录是newfs命令创建的。在使用fsck命令检查这个文件系统的时候,你应该检查这个目录是否存在,如果不存在,你可以通过/usr/sbin/mklost_found命令来重新创建这个目录。
fsck将所有检查有问题的文件放在lost+found目录下。在fsck完成之后,你应该检查这个目录的内容。这个目录中的文件可以被移动回它们原始的目录。文件名是以inode号来命名,所以判断文件实际上是属于哪个文件十分困难。但是你应该试图找到文件的属主。对这个文件运行file命令。如果这个文件包含文本,查看文本的内容来确定文件的属主。如果文件包含可执行代码,你可检查是否有SCCS确认字符串,如果有,使用what命令可以列出 SCCS信息。如果这个文件没有SCCS字符串,你可以使用strings命令来查看文件的字符。这些字符能帮助确认文件属主。不要试图通过执行在 lost+found目录中的可执行文件来找出这个文件是什么文件,因为它可能就是是破坏这个磁盘的文件。
例子:
# cd /myfs2/lost+found
# ls -l \#1743
# file /#1743
# strings \#1743
# move \#1743 new_file_name
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:01:29 | 显示全部楼层
推荐]文件系统维护
UNIX系统管理-第十章:文件系统维护
目标
完成这一章,你将能做以下事情:
使用df和du命令来监控文件系统的有效空间的大小
通过清除不用的文件和core文件来清理文件系统空间
通过修剪日志文件来清理/var文件系统
从命令行扩展一个卷组
从命令行扩展一个逻辑卷
从命令行扩展一个文件系统
1.监控磁盘使用情况
使用df 命令检查文件系统的有效空间。
# df -k
Filesystem     kbytes    used    avail    %used    Mounted on
/dev/vg00/lvol5   294912   261523    31352    89%      /opt
/dev/vg00/lvol4   24576    19333     4978     80%      /home
/dev/vg00/myfs1   16384     1174    14331     8%      /myfs1
/dev/vg00/myfs2   15893    14006     297    98%      /myfs2
检查目录中的各个子目录使用的磁盘空间:
# du -sk /myfs2/*
844   /myfs2/data1
1327  /myfs2/data2
1073  /myfs2/data3
10757  /myfs2/data4
4    /myfs2/lost+found
系统管理员有责任监视系统中的剩余磁盘空间的大小。通常使用的命令是df。显示的字段含义为:
Filesystem   文件系统使用的块设备文件名
Kbytes     文件系统占用了多少磁盘空间(单位为k)
used      文件系统中已存在的文件所占用的磁盘空间
avail      文件系统中剩余的有效磁盘空间
capacity    文件占用的磁盘空间的百分比
Mounted on   文件系统安装点
如果加上-i选项,输出中会增加三个字段:
iused      文件系统当前使用的inode的数目
ifree      文件系统剩余的inode数目
%used      文件系统当前使用的inode数目所占的百分比
当你想要知道更多的细节,如一个目录下面使用了多少磁盘空间,你可以使用du命令。默认情况下,du显示的单位为512字节的一个block。这个命令的执行是递归的,意味着如果在当前目录执行这个命令,它会返回当前目录下所有的文件和各级子目录的信息。
主要的选项为:
-k   以k字节为单位
-s    只显示指定目录占用的总的磁盘空间。
2.日常的维护
对不断增长日志文件进行修剪(trim)
删除无用的core文件
删除大的,旧的的文件
扩展文件系统
- 到一个已存在的空闲空间中
- 到卷组中的一个新的磁盘上
磁盘空间通常是有限的。系统管理员应该经常检查磁盘空间的使用情况,并且执行一些操作来防止磁盘空间用尽。系统管理员可以做的操作有:监控不断增长的文件,删除core文件,剪切日志文件,和删除长时间不用的大文件或者将其归档。
剪切日志文件
通常最先发出“文件系统满”的信息的是/var文件系统。/var目录中包含系统日志文件和缓冲池,如果不对这些文件进行检查和清理,它们会很快填满这个文件系统。
以下的例子将清空wtmp和btmp日志文件:
# > /var/adm/btmp
# > /var/adm/wtmp
这些命令可以加入到cron守护进程中,让其自动定期地执行。
注意:不要使用下面命令来清空日志文件:
# rm logfile
# touch logfile
因为这些操作可能会改变日子文件的许可权限,造成系统写日志的时候出现错误。
删除core文件
core文件是在进程遇到一系列的错误或者QUIT信号而非正常地终止的时候自动创建的一个文件。core文件中包含有导致进程终止的错误条件。程序员可以通过这个文件来判断进程在终止的时候正在做什么。
core文件可能会很大,因此如果你不需要,可以将其从系统中删除。可以使用以下命令来从系统中找出并且删除core文件:
# find / -name core -exec ll {} \;   # 列出系统中所有的core文件
# find / -name core -exec rm {} \;   # 删除所有的core文件
你也可以通过在cron中添加这些命令行定期删除core文件。
大的,旧的文件
用户经常会创建大的文件,并且当他们不再需要这个文件的时候忘记删除。应该经常搜索系统中的最近都没有存取过的大文件,,同时判断这个文件是否还需要,并且决定删除这个文件或者将其归档。
可以用find命令来进行这种操作。下面的例子将查找/tmp目录下超过1000个字符,并且最近30天都没有使用过的文件:
# find /tmp -atime +30 -size +1000c -exec ll -ud {} \;
将结果打印出来,然后联系文件所有者询问是否可以删除这些文件。
扩展一个文件系统(如果使用的是逻辑卷管理)
如果一个文件系统空间已经用了100%,你可能需要添加另外的磁盘空间。如果这个文件系统所在的卷组有未用的物理extends,你可以利用这些剩余的 extents来扩展这个文件系统。如果这个卷组中所有的物理extents都分配给了其它逻辑卷,你可能需要增加新的磁盘给这个卷组。
3.扩展一个卷组
如果想要扩展一个文件系统空间,可能需要在这个文件系统所在的卷组中增加磁盘。
增加一个磁盘到一个卷组中去
添加一个磁盘到卷组需要两个步骤。首先,你必须使用pvcreate命令在这个新磁盘上创建LVM的数据结构。然后才能用vgextend命令将磁盘添加到卷组中。下面的例子说明如何将磁盘c0t5d0添加到卷组vg01中去:
# pvcreate /dev/rdsk/c0t5d0
Physical volume "/dev/rdsk/c0t5d0" have been sucessfully created.
# vgextend vg01 /dev/dsk/c0t5d0
Volume group "vg01" has been successfully extended.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
如果你要添加多个磁盘到这个卷组,vgextend命令也可以接受多个物理卷作为参数。
检查卷组的配置
你可以使用pvdisplay 和vgdisplay命令来检查将磁盘添加到卷组是否成功。检查在vgdisplay -v命令的结果中是否有新的物理卷。也可以使用pvdisplay检查"VG Name"的字段是否为卷组的名称
4.扩展逻辑卷的大小
在添加一个磁盘到一个卷组之后,你可以将新的磁盘的物理extents分配给卷组中的逻辑卷。扩展一个逻辑卷的命令是lvextend。
# lvextend -L 32 /dev/vg01/myfs2 /dev/dsk/c0t3d0
# lvdisplay -v /dev/vg01/myfs2
上例将逻辑卷/dev/vg01/myfs2的大小由16MB扩展到32MB。lvextend命令后的参数/dev/dsk/c0t3d0强迫LVM使用磁盘c0t3d0上的物理extents。如果你你不指明磁盘,LVM会使用卷组中最先的有效extents。在完成对逻辑卷的扩展后,最好用 lvdisplay命令检查一下。
注意:一个逻辑卷可以跨越多个物理卷,但是它不能跨越多个卷组。一个逻辑卷只能被延伸到本逻辑卷所在的卷组中的其它磁盘上。
注意:只扩展文件系统所在的逻辑卷不能达到扩展文件系统的目的。下一节会介绍如何让文件系统使用逻辑卷中的新的有效空间。
5.扩展一个文件系统
仅仅扩展逻辑卷不能达到扩展文件系统的目的。只有在文件系统的超级块和其它的metadata数据结构都已经登记有新的的磁盘空间的信息之后,逻辑卷中的新的空间才能被文件系统使用。
扩展一个HFS文件系统
为了扩展一个HFS文件系统,你必须暂时umount这个文件系统。然后使用extendfs命令,让文件系统可以使用新的extents,接着重新mount文件系统。然后使用df命令检查可用空间是否已经增长。
例子:(假定/dev/vg01/myfs2已经被扩展到32MB)
# umount /myfs2
# extendfs -F hfs /dev/vg01/rmyfs2
# mount /myfs2
# df /myfs2
现在整个/dev/vg01/myfs2逻辑卷都可以被/myfs2这个文件系统所使用。
扩展一个JFS文件系统(without ON-LINE JFS)
如果你没有On-line JFS的产品,一JFS文件系统的扩展就和HFS文件系统一样;唯一的变动是-F后的文件系统类型不同。
例子(假定/dev/vg01/myfs2已经被扩展到32MB)
# umount /myfs2
# extendfs -F vxfs /dev/vg01/rmyfs2
# mount /myfs2
# df /myfs2
现在整个/dev/vg01/myfs2逻辑卷都可以被/myfs2这个文件系统所使用。
扩展一个JFS文件系统(使用On-line JFS)
使用On-line JFS产品,你不需要umount文件系统就可以对文件系统进行扩展。
例子(假定/dev/vg01/myfs2已经被扩展到32MB)
# fsadm -F vxfs -b 32768 /myfs1
# df /myfs1
注意fsadm命令要求使用”block"为单位指明一个新的文件系统的大小。JFS的block的大小一般都是1K。为了计算以block为单位的文件系统的大小,你可以简单地以1024KB/MB为单位将逻辑卷的大小换算为blocks.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:04:08 | 显示全部楼层
[推荐]管理交换空间
UNIX系统管理-第十一章:管理交换空间
目标
完成这一章,你能够做以下事情:
了解需求分页的概念。
了解物理内存,有效内存,和可锁定内存的含义。
确定系统中物理内存,有效内存,和可锁定内存的数目。
确定系统现有的和正在使用的交换区的数量。
在命令行中配置设备交换区。
在命令行中配置文件系统交换区。
取消交换分区。
选择文件系统交换分区和设备交换分区的时候需要考虑事项
11.1 系统内存
物理内存就是安装在你计算机中的随机存取存储器(RAM)。在系统启动的时候,在系统控制台上会显示已安装的物理内存的数目:
Physical: xxxxxxx kbytes
并不是所有的物理内存都能被操作系统使用。一些物理内存会被内核代码和数据结构占用。剩下的内存被称为有效内存,被系统用作需求分页。在系统引导时,会显示有效内存的数目:
Available: xxxxxxx kbytes
全部或部分的有效内存都可以被一个子系统或是用户进程锁定。被锁定的内存不能被交换到磁盘上去。典型的情况是,被锁定的内存页中保存有频繁存取的程序代码或数据结构,通过将程序代码和数据结构常驻内存,可以提高进程的执行效率。但是如果系统的大部分的内存都被锁定会导致系统死锁,所以必须要有一些未锁定的内存存在来避免系统死锁。
在系统启动的时候,能够被锁定的内存的总数会显示出来:
Lockeable: xxxxxxxx kbytes
有效内存减去被子系统或用户进程实际锁定的内存就是虚拟内存分页实际可用的内存。系统参数,unlockable_mem 中保存了不能被锁定的内存的大小。
注意:dmesg 命令可以显示系统启动的时候显示的信息,这些信息包括物理内存的数目,有效内存,和可锁定内存的大小。
11.2 什么是交换分区
交换分区是在高速存储设备上的一块区域,交换区是为虚拟存储系统进行分页进程而保留的。物理内存是系统中的有限的资源,这意味着在同一个时刻只能有一定数量的进程可以使用物理内存,甚至会有许多的进程实际上处于等待运行或等待执行当中。当进程运行的时候,程序的数据页和数据结构(文本)从内存中被拷贝到磁盘上或从磁盘上拷贝到内存中(在需要的时候),这就被称为需求分页。通常,程序的文本部分在程序执行的时候不会更改。所以在需要的时候,文本可以从包含可执行程序的文件中被拷贝到RAM中,执行中的程序的数据页会更改,因此,如果一个数据页必须从RAM移动到另外的空间,必须先将其拷贝到交换空间。
分页
内核通常会保持一定数量的空闲内存页来确保系统的效率。这个数字称为lotsfree,只要不低于这个数字,就不会发生分页行为,当空闲内存页的数目小于这个数字的时候,一个称为vhand的进程就会启动,这个守护进程会选择那些最近没有被访问的内存页,在需要的时候将这些内存页拷贝到交换分区中。这个过程被称为page out ,当一个进程试图存取当前内存中不存在地址的时候会发生page fault,这时,这个内存页会被拷贝到RAM中。
当系统有许多的请求内存需要时(例如系统中有许多的大的进程运行),分页守护进程可能变得十分繁忙,忙于交换内存页的进出,这会导致系统花费太多的时间在分页过程中,以至于没有足够的时间来运行其他的进程。在这种情况下,系统的性能下降的十分快,有时会导致系统没有任何地反映,在这种情况下,称为系统颠簸,因为系统的内部开销远大于生产性的工作。
交换器(swapper)
术语交换最早可以追溯到早期的unix用来管理物理内存的方式,其工作原理是在主内存和二级存贮器之间移动整个进程。现代的大多数虚拟内存系统不再交换整个进程,因为这种方式会导致系统消耗大多数的时间在I/O操作上,而没有时间作实际的工作。这种方式已经被一种非活动性的方案所代替,这种方案允许内存页以一种分页的机制被推出。分页是一种更有效的管理虚拟内存的机制。
当系统开始颠簸的时候,或当空闲内存的数量低于另外一个界限的时候,(这个界限被称为minfree),交换器会被激活,然后交换器会停止进程的活动,这样就降低了新的内存页被存取的速度。哪些属于被停止进程的内存页不会被访问,并且会成为分页守护进程释放的内存候选对象。当交换器检查到有效的内存数量回升到minfree界限之上,系统不再处于无效状态,它会重新激活被停止的进程。
交换区预留
在进程创建的时候,交换子系统会预留交换空间,但是不会在磁盘上指定交换空间,除非在内存页需要交换到磁盘上的时候。在进程创建时预留的交换空间可以防止交换器耗尽交换空间。
当系统不能够为一个新的进程预留足够多的交换空间的时候,进程就不能启动,同样,如果运行中的进程试图动态增加更多的内存,更多的交换空间会被预留。如果这个时候没有足够的交换空间,这个进程就会被杀掉。
交换区预留可以防止系统耗尽交换空间,它也会在所有的交换空间都被使用的情况下阻止进程的建立。
评估交换区的需求
在你安装系统之前,你应该了解你需要多少的交换空间。多数的应用程序的正常运行需要一个最小数量的交换空间。这个数字通常在应用程序的随机文档中有说明。
系统管理员应该监视交换空间的使用情况,并且在需要时对其进行调整。在下一章中我们会了解如何进行这种调整。
11.3 交换空间的类型
交换区的类型
设备交换分区      一块专用于交换的磁盘区域或逻辑卷
文件系统交换分区    文件系统交换分区,与设备交换分区不同的是,一个文件系统不但能存放             文件和文件的数据结构,同样可以使用有效的空间作为交换的用途。
主交换区       在系统引导时有效的一种特殊设备交换分区,默认情况是:主交换分区            与root文件系统在同一个磁盘上。在内核引导系统的时候被初始化。
二级交换分区     除主交换分区以外的设备和文件系统交换分区,通常的位置在root 磁             盘的以外的其它磁盘上。
设备交换分区
设备交换分区的速度比文件系统交换分区的速度更快。设备交换分区存在于它自己的分区之中。
当使用整盘的方式分区,你既可以用整块盘作为交换分区,也可以通过命令newfs 的-R选项在磁盘的末尾空间保留一块交换分区。例如,以下的命令在一块磁盘上创建一个文件系统并且保留200M的空间作为交换区
newfs –R 200 /dev/rdsk/c0t2d0
如果是使用LVM的方式分区,可以创建一个单独的逻辑卷作为设备交换区。以下的命令使用lvcreate命令来创建一个200M交换逻辑卷:
lvcreate –L 16 –n myswap /dev/vg01
文件系统交换空间
文件系统交换区是二级交换区的一种形式,它可以动态配置。使用0文件系统交换区可以在一个进程需要更多的交换空间而设备交换区的剩余空间不够的时候使用一个已存在的文件系统。文件系统交换区仅仅在设备交换区不够时被启用。文件系统交换区会浪费一定数量磁盘空间,因为他仅仅使用文件系统中它需要的那一部分。你可以将文件系统交换区限制在一个合适的大小内,以防止消耗太多的空间。
当文件系统中的交换区被启用的时候,这个文件系统的根目录下会建立一个/paging的子目录。文件系统中的每一个交换块都会创建一个文件,默认一个交换块的大小为2M
请注意,一旦一个文件系统作为文件系统交换区而被启用就不能被卸载,除非重启动系统的时候。
主交换区
你的系统在启动时必须至少有一个设备交换区有效,这个交换区就是主交换区。在默认情况下,主交换区与根文件系统在同一个磁盘上。
如果你使用LVM(逻辑卷),主交换区存储在启动数据保留区(BDRA)。命令lvlnboot –s lvol 被用来定义主交换区。如果你想要修改主交换区的定义,你必须首先使用命令lvrmboot –s 来删除先前的定义。
二级交换区
除主交换区之外,你也能被使用其它交换区,这些交换区被称为二级交换区。如果你使用设备交换区作为二级交换区,为了达到更好的性能,请将其放在root磁盘以外的磁盘上。文件系统交换区都是二级交换区。
二级交换区能在引导的时候自动启动,也可以在系统运行的时候动态增加。
11.4 命令行方式激活交换分区
例子
1 swapon /dev/vg01/myswap
2 swapon /dev/dsk/c0t2d0
3 swapon –p 4 –l 4M /myfs2
4 swapon –a
解释:
1 激活逻辑卷中的交换分区
2 激活整盘方式的交换分区
3 激活一个文件系统的交换分区
4 激活在/etc/fstab中的所有交换分区
文件系统和设备交换分区都能够使用命令swapon(1m)的方式激活。
这个例子将逻辑卷/dev/vg01/myswap作为一设备交换分区。整个逻辑卷都被用作交换分区,这样文件系统就不能再使用这个逻辑卷。如果这个逻辑卷在过去包括一个文件系统,你需要使用 –f 选项来“强制”覆盖老的文件系统结构。
这个例子激活整盘/dev/dsk/c02d0的设备交换分区。如果这个盘包含一个用newfs –R 200 /dev/rdsk/c0t2d0的文件系统,你可以保留这个文件系统通过使用swapon 的-e 的选项来在磁盘的剩余部分建立交换分区。如果你想要覆盖磁盘上的文件系统,使用 –f 的选项。
这个例子将安装在/myfs2上的文件系统作为一个文件系统交换分区。-p 选项设置交换分区的优先级为4,-l 选项确保vhand在这个文件系统中使用的交换区的大小不超过4M。
注意:在文件系统被作为文件系统交换分区的时候,不能被umount。
在关机的时候,所有的交换区都自动地失效。为了确保交换分区在下次系统启动的时候自动被激活。你必须将其加入到/etc/fstab中去。/etc/fstab中关于交换区的语法在下一节说明,swapon –a 会立即激活/etc/fstab中的所有的交换区。
使用swapon激活交换区
增加设备交换区的语法
/usr/sbin/swapon [-p priority] [ -e |-f] device
priority 指明文件系统或是设备交换分区被使用优先级。
-e 使用一个磁盘设备上的文件系统的剩余空间作为交换分区。这个选项不能和-f选项同时使用。当使用文件系统作为交换分区的时候一定要使用这选项; 这个选项在使用“整盘”方式的情况下,就是一个磁盘上同时有文件系统和交换分区时使用。
-f 当一个设备上文件系统存在地时候,强制使用这个盘作为设备交换区(会破坏这个文件系统)
device 被用作内存分页的块设备。
增加文件系统交换区的语法
/usr/sbin/swapon [-m min] [-l limit] [-r reserve] [-p priority] directory
-m min min定义了分页系统从文件系统中初始化使用的分页空间的大小。
-l limit limit定义了交换系统在文件系统中最大占用的空间。Limit可以以k为单位(k为后缀),或以M为单位(M为后缀),或以文件系统块为单位(没有后缀)
默认是没有限制。
-r reserve 这个空间为当前文件系统占用的空间之外的一部分,仅为文件系统使用保留的,
-p priority 同设备交换区一样
directory 文件系统交换区占用的目录,系统会在作为交换区的文件系统的根目录下创建一个paging的目录。
注意:不能在文件系统交换区正在使用的情况下unmount文件系统。
交换区大小的限制
内核中的几个可调的参数限制了有效交换区的数量。
在设备交换区和文件系统交换区中可以配置的交换区空间的总和最大可以512M。可调的系统参数maxswapchunks,控制这个最大值。这个参数(默认值为512M)限制了交换区chunk的数量,交换区每个chunk的默认值为2MB,swapchunk的大小可以通过swchunk内核参数修改。  
/stand/system中的系统参数nswapdev中设置了可以动态配置的交换设备的数量的最大值为10(默认)。最大可以为25。如果要使用超过nswapdev数目的交换设备就必须重新修改内核。
系统参数,nswapfs决定文件系统交换区的最大的数目。默认值是10,最大值是25。
11.5通过/etc/fstab文件激活交换区
在/etc/fstab中列出的交换区会在系统启动的时候自动激活。
例子
/dev/vg01/myfs1 /myfs1 vxfs delaylog 0 2
/dev/vg01/myfs2 /myfs2 hfs defaults 0 2
/dev/vg01/myswap  .   swap defaults 0 0
/dev/dsk/c0t2d0   .   swap defaults 0 0
.        /myfs2  swapfs pri=4,lim=4M 0 0
解释:
逻辑卷上的交换区
整盘上的交换区
一个文件系统上的交换区
在/etc/fstab文件中定义交换区可以确保每次系统启动的时候激活交换区。在启动过程中执行的swapon –a 命令可以激活所有的 /etc/fstab中的交换区。Swapon –a 命令是作为/sbin/init.d/swap_start脚本文件的一部分在启动时运行,
注意:在修改了/etc/fstab中关于交换区的内容后,运行swapon –a,让系统重新读取fstab文件,并且激活所有新定义的交换区,同时也可以发现可能发生的语法错误。
11.6监视交换区的使用情况
例子:
swapinfo
swapinfo –f
swapinfo –d
swapinfo –tm
解释:
报告所有的交换区的使用情况
仅列出文件系统交换区
仅列出设备交换区
使用M为单位报告,使用合计方式。
在系统中配置了一个或多个交换区后,你可以通过swapinfo来列出配置的交换区和每个当前正在使用的交换区空间使用情况。如果你的交换区剩余空间已经很小的时候,你可能需要另外配置一个交换区来确保你的用户的应用能够运行。
11.7选择设备交换区的原则
两个交换区在不同的物理盘上要比一个盘上的一个交换区好
每个盘上只能有一个交换区(逻辑卷或保留空间)
设备交换区的大小应该基本一致
考虑磁盘的速度
使用设备交换区,你必须指定逻辑卷或是一个盘的一部分作为交换区。整盘保留的交换区的大小是在newfs 命令(-R)选项来定义的。你可以在其中创建逻辑卷。
以上给出的的是选择设备交换区的原则。其中大多数的是为性能考虑。你可以以任何你喜欢的方式设置交换区,但是如果不应用上面的原则,你的系统运行会很慢。
为性能考虑,不同磁盘上的两个交换区要比同一磁盘上的同样大小的交换区要好。同样为性能考虑,不要在同一块磁盘上设置多个交换区。
多个交换区使用交错方式来使用。交错交换区的意思是,使用一个磁盘上的交换区后,再使用另外一个盘上的交换区,如果交换区分布在不同的盘上,交换区能够被并行地写,这样可以避免在同一磁盘上进行多次写操作的时候对磁头的争用。
不要在包含主交换区的磁盘上创建一个单独的设备交换区。因为这会导致磁头在盘上过多的移动,会使系统变慢。
如果你使用LVM(逻辑卷),请在不同的磁盘(物理卷)的逻辑卷上安装多个设备交换区。
为了达到更好的性能,每个设备交换区的大小应该相近。否则,当小一点的交换区的空间都被使用的是,更大的交换区的空间还是有效,这样就不能实现交错交换。
如何设置交换区的优先级
所有的设备交换区和文件系统交换区都被分配一个范围在0到10的优先级。这个优先级决定那一个交换区先使用。这个优先级是使用swapon 的-p选项来设置的。默认的值为1。
内存分页数据被送到你的交换区是根据以下的规则:
从更高优先级的交换设备或文件系统中开始。越低的数字,优先级越高;
如果多个设备有同样的优先级,交换区的分配是以循环的方式分配。也就是,在磁盘中交错进行,设备应该被赋予相同的优先级。同样,如果多个文件系统有同样的优先级,交换的要求会在这些文件系统中交错进行。
如果一个设备和一个文件系统有同样的优先级,设备交换区会在文件系统交换区之前使用。
推荐对大多数的交换设备都使用同样的优先级。除非一个设备比另外的设备明显要慢。分配相同的优先级可以减少磁头的移动,这会提高交换区的性能。
11.8选择文件系统交换区的原则
避免使用繁忙的文件系统例如root文件系统作为交换区
使用bdf命令检查文件系统剩余空间大小
合适地设置优先级
   -更快的设备的优先级应该大于慢的设备
   -不常用的文件系统的优先级应该大于繁忙的文件系统。
当你需要更多的交换空间,而你又没有磁盘空间来作为设备交换区的时候,你可以动态地增加文件系统交换区。
这些原则帮助系统管理员决定那个文件系统的那个部分被用作交换空间。再说一遍,这些规则都是为性能上的考虑。
一般来说,最好对交换区都分配最高的优先级以提供最快的性能。因此,给设备交换区分配比文件系统交换区更高的优先级;给更快的设备分配比慢设备更高的优先级,给低使用率的设备分配比高使用率的设备更高的优先级。使用同样类型的交换设备应该分配同样的优先级。这样才能利用交错交换的优点。
同一个盘上,使用两个文件系统(或物理卷)作为交换区,会导致磁头的过多的移动,同样会导致系统性能的下降。
注释:设备交换区提供了比文件系统交换区更好的性能,如果进行选择的话,请使用设备交换区。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:08:07 | 显示全部楼层
[推荐]系统的关闭和启动
UNIX系统管理-第十二章:系统的关闭和启动
系统的关闭和启动
系统的启动是指从开始引导操作系统直到系统正常工作的过程。在启动之初,操作系统被装入内存并且开始执行,这个执行过程中将进行大量初始化操作以提供某些服务如打印服务,网络服务等。
用户,特别是系统管理员必须详细了解系统启动全过程的各个具体细节。启动是整个系统运行期间最脆弱、最容易出现问题的时候。稍有不慎,整个系统将无法正常启动,或正常启动了,却无法正常工作。
虽然UNIX系统被设计成一种可以可以永不关机的系统,但实际操作中却由于各种各样的原因,不得不在一定的时候将机器关闭,如电源出现问题,系统出现严重故障等。UNIX系统的复杂性不允许我们想关机时就直接切断电源,这样做会对整个系统造成极大的破坏,如用户数据丢失,文件系统结构的不一致等。所以关机过程必须遵守一定的规范才行。
在这一章中我们主要介绍如下几个问题:
系统的启动过程   介绍UNIX系统从加电到系统完全可用的全过程中的各个执行细节。
系统的关闭     介绍关闭系统的方法及关闭系统时应该注意的一些问题。
系统的启动过程
大多数的UNIX系统的启动都有两种方式:
自动启动  在这种方式下,系统可以不经任何人工的干预而自动完成启动的全过程。
手工启动  在系统启动过程到达某一点时,系统管理员可以进行一些人工的干预,如对文件系统进行检查,设置系统的日期等等。然后系统将继续进行引导。
通常这两种方式的最终效果是一样的。正常情况下,加电后系统均能自动启动至准备好状态。但在系统遇到一些人为破坏,如突然断电,系统发生崩溃或者系统管理员做了某种修改时,经常会需要手工引导。
我们可以把整个UNIX系统的启动过程大致划分为如下几个阶段:
操作系统装入程序(PDL)的加载
UNIX系统核心程序的装入
UNIX系统内核的初始化
硬件的检测和配置
系统进程的生成
管理人员的干预(自动启动时无此阶段)
系统初始化shell脚本的执行
各终端进程的生成  
操作系统装入程序的加载
大多数计算机系统的操作系统都是驻留在系统的硬盘中的。一般可以把硬盘的存储空间分成几个不同的相互连接的片段,每个片称为一个硬盘分区。绝大多数硬盘都可被划分为四个分区。在各个分区中可以装载不同的操作系统。(对于专用的工作站或者主机系统,一般只装载一个UNIX系统)
在硬盘的多个分区中,有一个分区被称为是系统的活动分区。活动分区中的操作系统会在系统加电的时候被引导。
大多数机器在加电时均会转移到一特定的地址去执行存储在ROM中的程序。如果是从软盘上引导,这个程序将读取软盘上引导扇区(0头、0道、1扇区)中操作系统核心代码,再将控制交给核心程序,由此开始核心程序的装入和运行。但对于从硬盘上引导系统的情形,ROM载入程序装入的不是操作系统而是另外一段代码,这段代码在被装入到内存中后将获得控制权而得以执行,然后由它去装入UNIX系统。
一般而言,这段代码将位于硬盘0头、0道、1扇区。该扇区主要包括两部分的信息:主引导程序和分区信息表。其内容是由硬盘分区程序对硬盘进行分区时建立的。
在主引导程序被装入之后将获得CPU控制权而得以执行。执行时它会对分区信息表进行扫描,看哪个分区为活动分区,并试图装入该分区第一扇区的操作系统引导程序,由此开始操作系统核心的引导.
UNIX系统核心程序的装入
在操作系统获得系统控制权之后,我们可以说此时UNIX系统已经开始运行了,载入程序在执行时,将从硬盘活动分区中一个特定的地方(该分区的第一个扇区) 装入操作系统的源代码:UNIX系统内核。UNIX系统内核实际上是一个程序,其名称一般是/unix或者/vmunix,名称随生产厂家的不同可能会有些差异。
在内核被装入的时候,屏幕上会显示:
Booting the UNIX system......
若此时按下任意键,系统核心装入程序将允许用户输入欲装入的其它核心程序的文件名。此时装入程序会显示:
boot:
用户可以在冒号后输入其它的某个核心程序的名称。
为什么要提供这种功能呢?因为在许多情况下我们需要对系统内核进行重新配置,以生成新的核心程序,而老的核心程序可以保留到另外一个文件中。新的核心程序可能不能成功地启动系统,这种情况下我们就可用这种方法装入原来的核心程序引导系统。
如果并不想真的装入其它内核,可以不作任何操作或者仅仅按一下回车。稍后,装入程序会装入缺省的内核。
系统内核是UNIX常驻内存的部分。内核装入程序从磁盘上装入核心程序之后,将把控制权交给新装入的内核,从而使之得以运行。
系统内核的初始化
核心程序开始执行时,UNIX系统内核的初始化工作就开始了。内核会检查内存,以前我们知道,系统内核会占据物理内存的低端并固定在此空间中运行。内核将检查系统中内存的总数,计算出自己占用多少,剩下多少可以供普通进程使用,这就是启动信息中关于内存的部分。
文件系统高速缓冲部分也会占用部分内存空间。内核的各种内部数据结构,如页表,进程结构表(proc结构),所以系统内存并不是仅仅等于内核的大小加上可用的内存的大小。
硬件的检测和配置
内核完成自身的初始化之后,它将对系统中所安装的各种硬件进行检测。由于每种系统的硬件千差万别,很难对这个过程进行一般性的说明。
系统管理员在配置内核时,将告诉系统要处理那些设备,当内核完成初始化之后,它将开始寻找这些设备,并且按照系统管理员的设置对这些设备进行初始化配置。大多数情况下,内核将报告它应该找到但是由于种种原因没有找到的设备。
在配置内核时候,系统管理员说明的设备信息往往是不充分的。这种情况下,内核将通过检查与设备连接的总线及相应的设备驱动程序来获得关于设备的其它信息。如果某设备未被找到或者用于某种原因未能对内核检测作出响应,内核将标记该设备为不存在,同时时相应的设备驱动程序不再起作用。此时即使设备和系统连接恢复正常上,该子系统也不能被使用。要想使用这个设备,只有重新启动系统。
系统进程的生成
在硬件检测、配置完成之后,内核将生成一些系统进程,这些进程并不是系统核心的一部分,它们将作为一个普通的进程在用户进程空间运行,提供各种系统服务。这些进程的数量和种类随系统的不同而不同。
在AT&T systerm V中,有如下的进程:
调度进程 sched(0号进程)
初始化进程init(1号进程)
虚存管理进程pageout(2号进程)
缓冲区至磁盘写进程fsflush(3号进程)
缓冲区映射进程Rmdaemon(4号进程)
在BSD系统中,相应的进程分别是:
换入换出进程swapper(0号进程)
初始化进程init(1号进程)
页面守护进程pagedaemon(2号进程)
这三个进程与上面的0、1、2号进程对应。
在所有的这些进程中只有1号进程init才算是真正意义上的进程,而其它的“进程”并不是真正意义上的进程。它们是系统核心的一部分,其作用类似于一个函数调用,只是由于进程调度的原因才将其设置为同进程类似。
在这些系统进程生成之后,内核在系统启动中的任务就完成了,后面的工作将由init进程来进行,这些工作包括:启动各种服务,生成接受终端注册的getty进程等等。
系统初始化shell命令脚本的执行
操作系统为了给用户提供各种服务,通常要生成一些提供这些服务的进程。这种服务进程一般被称为守护(daemon)进程。它们不知疲倦地为系统中的用户提供某种特定的服务。
通常这些进程是在内核生成各个系统进程之后,由init进程执行一系列特定的shell命令而生成的。
init通过/etc/inittab文件对各种守护进程进行管理,init将顺序地读取inittab中的各行并逐个进行处理。
各终端进程的生成
随着整个系统初始化的完成,整个系统就已经能够正常工作了,但是此时用户还不能使用计算机,因为我们暂时还没有办法注册到系统中。
为了用户能注册到系统中,必须提供getty进程。每个getty进程将分别监视某一个通讯端口以检测来自相应终端或者调制解调器的连接信号,然后 getty将首先打印注册提示,等待用户输入用户名,然后调用login命令进行注册,注册成功后,系统会生成一个shell进程,同时相应的getty 进程会自动消亡。
当用户从系统中注销时,init进程将根据/etc/inittab文件中的相应的数据行重新生成相应的终端上的getty进程。
启动过程中的人工干预
在内核初始化完成之后、系统初始化开始之前,如果系统进入单用户状态(手工启动方式下),那么内核在启动init进程时就将通知这一点。这种情况下,init将首先在控制台上生成一个shell进程,并等待该shell进程中止,再进行其它的系统初始化操作。
使用这个shell进程,用户可以以超级用户的身份执行所有的可以执行的命令。但由于此时系统只安装了根文件系统,这将使得管理员只能执行/bin或/etc目录下的文件。如想执行其它文件系统上的命令,需管理员自己先安装相应的文件系统。
一般情况下,系统管理员在此阶段需要做的工作是对文件系统进行检查(fsck),只有在出现某些系统故障的情况下才需要系统管理员对文件系统进行维护。关于文件系统的检查我们将在第10章详细介绍。
在了解UNIX系统启动的全过程之后,我们才可能对系统启动过程中出现的种种问题进行分析,找出故障发生的原因,进而想办法排除故障。一般而言,无法正常启动的原因有:
硬件故障
启动盘被破坏
文件系统被破坏
内核配置有问题
系统初始化shell脚本出现问题
在系统无法正常启动时,借助启动过程中控制台上显示的信息,我们可以大致判断到底哪个阶段出现了问题,从而才能对症下药排除故障。
系统的关闭
在了解系统的引导过程后我们会知道:系统处于正常工作状态时,系统中会有许多各式各样的进程在运行,如init进程、各种守护进程,如果有用户登录到系统中,还有许多用户进程。另外我们还知道UNIX系统为提高机器的响应速度引入了缓冲机制。所有的这些都将使得在关闭系统时不能切断电源了事。事实上,系统的关闭和启动过程一样也是一个极为复杂的过程。当然这种复杂指的是系统内部操作上的复杂,而不是用户操作上的复杂。用户只需要按照一定的要求输入几个命令就能将系统正常地关闭下来。
在各种UNIX系统中,都提供有多种正常或者不正常的关机方式。例如,鉴于init进程(1号进程)在系统中的特殊地位,我们可以通过终止这个进程来使系统关闭下来:
# kill -9 1
但是这种方法是不安全的,其造成的后果可能并不亚于直接关闭电源。为了能够使整个系统正常地停下来,许多系统都提供了专用的关闭系统的命令。下面以AT&T UNIX系统为例来说明这个过程。
System V提供了一个名为/etc/shutdown的shell命令。借助这个命令,我们可以将系统安全关闭。但在关闭系统之前,仍应对系统的运行情况进行检查,你可以使用ps 和who命令来进行这种检查。
然后,在超级用户提示符下输入:
# shutdown -y
将启动关闭的过程,此时,在每一个用户的终端屏幕上将出现关于系统即将被关闭的警告信息,而用户在看到这一信息后应立即中止自己的工作并且从系统中注销退出。shutdown命令并不会立即关闭系统,在开始实际关闭之前先暂停60秒(缺省的时间间隔),给用户一个回旋余地。
暂停时间一过,关闭过程就开始了,此时shutdown给仍在系统中的用户发送第二条信息,如用户仍旧不退出,他们正打开的文件可能会损坏。
第二条信息发出之后,系统中所有的活动进程均会被终止,同时系统将内存缓冲区中的内容尚未写到磁盘上的内容刷新到磁盘上,以保持磁盘上内容的一致性(因为有些正在操作的结构可能只是记录在缓冲区中而没有被写到磁盘上)这个操作称为同步。
同步完成后,系统将停止运行而处于可断电状态或可重启动状态。这时你就可以切断电源或者重新启动。
不同的系统都有关闭系统的独特方法,如有些系统中设置有一个专门用于关闭系统的帐号,当管理人员以这个帐号登录到系统中时,系统将执行关闭命令,这些命令本身都很简单,重要的是我们要认识关闭过程的重要性,以及关闭系统时系统进行了一些什么操作。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:09:18 | 显示全部楼层
[推荐]调度cron任务
UNIX系统管理-第13-14章:调度cron任务
目标
完成这一掌,你能作以下事情:
使用cron来提交,列表,和删除时间调度的任务。
安排全量和增量的备份的自动运行。
让非root用户使用cron
14.1 cron守护进程
-cron 守护进程
在指定的日期和时间执行命令
自动完成日常的任务
例子:
-修剪系统的日志文件
-执行系统备份
-产生每周的报表
系统管理员通常需要在每天,每周,每月做备份和运行其他的进程。虽然这些进程都可以手工运行,但是通常都需要安排它们自动运行。cron守护进程的作用就在与此。
cron守护进程在系统引导的时候和系统管理员和其他用户执行时间调度任务提交的时候启动。
你可以用ps 命令来检查是否cron守护进程正在运行。
# ps –ef |grep cron   #cron正在运行吗?
# cron           # 如果没有运行,启动cron 守护进程。
同root一样,普通用户也可以使用cron来重复运行程序。要执行的任务通过crontab命令来提交给cron执行。root通过 /var/adm/cron/cron.allow文件来控制谁有权使用crontab命令。如果用户的名字出现在cron.allow文件中,他就有权使用crontab命令。如果cron.allow文件不存在,系统会检查/var/adm/cron/cron.deny文件来确定是否这个用户被拒绝存取。如果两个文件都存在,cron.allow有优先权。如果两个文件都不存在,只有root可以提交任务。如果cron.deny文件为空文件,所有的用户都可以使用crontab.
*.allow *.deny
谁可以使用?  
- -
存在 忽略
- 存在
为空 忽略
- 为空
超级用户
*.allow中的任何用户
不在*.deny中的任何用户
超级用户
每个用户
14.2 cronfile
cron任务在一个cron文件中定义。cron文件提交cron任务给cron守护进程。提交给cron守护进程的程序在cron文件中被列出,一行代表一个任务。
cronfile中的条目的格式必须是cron能识别的格式。这个文件中的每一个条目包含六个域,每一个域用空格或tabs分割。前五个域为整数形式,代表命令将要执行的日期和时间。如上图所示。其中任一个域都可以包含一个星号,代表所有的合法字符,或者是一个条目列表,用逗号分开。每一个条目都可以是一个数字或者是两个用短线分开的数字,代表一个范围。
最后的一个域是一个字符串,代表shell在指定的时间执行的程序。在这个域中,百分号代表以下是一个新行。
注意:你必须重定向你的命令的标准输出和标准错误。如果你不这样做,所有的输出都会
mail给你。
任何时候都要使用完全的路径名,因为cron只使用/usr/bin/sh的标准环境,它不清
你的环境,例如,你当前的目录,变量,和PATH.
问题:
如果你执行一条命令,在cron文件的时间域,应该是怎样的一个数字:
每天下午6:30.?
每个工作日的下午6:30?
每个周日,周三,和周五的下午6:30分?
每十分钟,每个小时,每一天?
14.3  使用crontab命令管理cronfile
  每一个有权提交任务给cron的用户在/var/spool/cron/crontabs 目录下有一个文件。文件名为用户的登录名。一旦这个用户的 cronfile被crontab命令激活,以后对这个命令的使用会导致/var/spool/cron/crontabs下的crontab文件被替代。
crontab命令可以用来创建,更改,或删除cron任务:
crontab –e   自动拷贝你当前的cron 任务到一个临时的文件,然后启动vi,让 你可以更         改,删除,临时cron文件中的行,然后保存你的修改,让cron守护进程确认         你的修改。
crontab –r   删除你当前所有的cron任务。
crontab –l   列出你当前所有的cron任务。
在默认情况下,crontab只打开用户自己的cron 文件。但是系统管理员可以在crontab命令中通过指定用户的用户名来更改任何用户的cron文件
14.4 当任务被调度的时候发生了什么?
在默认情况下, 只有系统管理员能够提交任务给cron执行。如果你想要其他的用户使用cron守护进程,你要将用户名加入到文件 /var/adm/cron/cron.allow中,同样,你可以在/var/adm/cron/cron.deny中定义哪个用户不能使用cron。
每一个被授权执行cron任务的用户在/var/spool/cron/crontabs目录下都有一个cron文件。cron守护进程参考这些文件来决定在什么时候执行哪一个任务。
当你使用crontab命令建立和提交一个cron文件给cron守护进程的时候,crontab自动拷贝你的cron文件到/var/spool/cron/crontabs目录下。这个文件用你的用户名来命名。
当设定时间到的时候,cron会启动你的任务,并且在/var/adm/cron/log文件中写入一条日志。这个cron日志文件的大小没有限制,但是,系统会周期性地检查和清空这个文件。
注意:虽然/var/spool/cron/crontabs文件可以使用ls 和cat 浏览,但不要直接地编辑和删除。这样做会让cron守护进程成为一种未定义的状态。所以,在更改你的调度cron任务的时候,请使用crontab命令。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:10:31 | 显示全部楼层
[推荐]连接到网络
UNIX系统管理-第十五章:连接到网络
目标
完成这一章,你将能做以下事情:
将主机与一个局域网相连接
配置主机名(hostname)
配置IP地址
配置默认路由
配置主机为DNS客户端
使用ping和nslookup来测试网络连接情况
设置IP地址和子网掩码
IP地址是什么?
局域网中的每一台机器,无论它是一台激光打印机,工作站,或者是一台服务器,都需要被分配一个唯一的internet protocal(IP)地址。每一个经过这个网络的数据包中都会包含一个目标地址,用来判断数据包的目标,和到达这个目标需要经过的路由信息。
IP地址是由四个范围在1-255之内的整数组成,每个整数之间由点分隔开。
IP地址的例子:
125.67.12.43
15.34.67.9
212.1.1.34
你的网络管理员或者ISP应该分配给你一个IP地址,如果你的机器上有多个网卡时,甚至需要分配多个IP地址。
什么是子网掩码?
现在,拥有大型网络的公司会将网络分隔为多个“子网”。将较大的网络分隔为较小小的“子网”能够极大地提高网络的性能和可靠性。如果你的公司的网络划分为子网,你的网络管理员会分配一个“子网掩码”给你。通过子网掩码和IP地址,可以决定你是属于哪一个子网,和唯一地决定你在子网中的IP地址。为了能和 LAN中的其他节点通信,你必须为你的机器定义子网掩码。
子网掩码的例子:
255.255.0.0
255.255.255.0
255.255.254.0
设置IP地址和子网掩码
每一种UNIX都有自己的工具来设置IP地址和子网掩码,以下我们以HP-UX为例:
当你连接你的主机到LAN的时候,你的ISP或者网络管理员会给你的主机分配一个唯一的IP地址。同时可能会分配一个子网掩码给你。当你第一次启动你的系统的时候,set_parms工具会自动提示你输入IP地址和几个其它的网络参数。你也可以在任何时候使用set_parms来修改网络参数:
# set_parms initial
设置默认路由
什么是默认路由?
如果没有配置其它参数,系统能够在你配置好IP地址和子网掩码后发送数据到局域网中的任意一个节点。但是,如果你想要与到其它局域网中的节点通信,你的机器首先必须可以连接到一个路由器。路由器就是一个能路由数据到其它网络中的设备。
你的网络管理员应该提供给你在你的LAN中的路由器的IP地址。任何你的主机发送到其它网络的信息必须首先通过这个默认路由器。
定义一个默认路由
默认路由器地址也可以通过set_parms来设置。在一些系统中会使用默认网关来代替默认路由。
# set_parms initial
设置系统的主机名(hostname)
什么是主机名?
许多的用户发现记忆IP地址的难度很大,所以大多数的机器也会被分配一个“主机名”,主机名是一个简单的分配给网络中的每一个节点的字符形式的"别名”。主机名分配可以基于以下原则:
主机在网络中的用途
主机中的主要的用户
网络管理员选择的任何命名原则。
设置你的系统的主机名
你也可以通过set_parms来设置你的主机名。
# set_parms initial
解析主机名为IP地址
telnet mickie ---->128.1.1.2
ftp minnie--->128.1.1.3
每一个被发送的数据包需要一个IP
解析主机名为IP地址的方法有三种:
-/etc/hosts文件
-域名服务器(DNS)
-网络信息服务(NIS)
虽然主机名比IP地址更容易记忆,但是路由器必须知道数据包的IP地址才能正确的传送数据到目标主机。因此,如果用户或者应用程序使用一个主机名作为一个包的目标地址,系统必须将这个目标主机名翻译为一个目标IP地址。
配置/etc/hosts文件
/etc/hosts文件的例子:
128.1.1.1   mickie mailsvr
128.1.1.2   minnie
128.1.1.3   donald
映射:IP地址<---->主机名
主机名的维护是由每个主机各自完成的
可以从其它的主机拷贝过来,也可以手工定义。
什么是/etc/hosts文件?
如果你只与你的局域网中的主机进行通信,你的系统管理员也许会建议你使用/etc/hosts文件来解析主机名为IP地址。/etc/hosts是一个主机各自维护的配置文件,其作用是解析主机名为IP地址。
/etc/hosts文件的每一行,左边的域为一个IP地址,右边的域为此IP地址相关联的主机名。上例中,主机名DONALD解析为IP地址128.1.1.4.主机名mailsvr解析为IP地址128.1.1.3。
你可以选择为每个IP地址定义一个或者多个别名。别名仅仅是一个IP地址关联的另外一个名字。上例中,mailsvr和mickie都会被解析为IP地址为128.1.1.2.
配置/etc/hosts文件
在IP地址或者主机名被修改时,/etc/hosts文件必须被修改。注意,/etc/hosts文件是由每个主机自己维护的,于是如果你希望维持你的网络中的主机名解析的一致性,你必须使每个主机上的这个文件保持一致。
你可以通过几种方法来修改/etc/hosts文件的内容:
直接使用vi来修改/etc/hosts文件。
从另外一个主机上FTP最新的/etc/hosts文件。
使用其它的工具如,HP-UX中的SAM
配置一个DNS客户端
DNS服务
用来在大型的网络中解析主机名
客户端发送请求到DNS服务器上查询数据
为了防止名字重复,每一个主机被分配到各自的'域”
可以使用set_parms来定义
  -你的DNS服务器的地址
  -你的DNS“域”名
什么是DNS? 
虽然/etc/hosts文件在小型网络中解析主机名很合适。你的网络管理员还是可能会推荐使用域名服务(DNS)来做名字解析,因为你可能需要存取外部网络的主机或者在你公司中其它网络中的主机。
主机使用DNS发送名称解析请求给一个特定的DNS服务器。由网络管理员提供DNS服务器的IP地址。
除了要定义本地网络的名称服务器的地址,你还需要定义主机的DNS域。
通过连接主机名和域,我们可以可以唯一的标识网络中的主机。如果两个主机的主机名相同,通过区分域,可以用来判断哪个主机是你想要检索的主机。
如:
www.hp.com
www.acme.com
这两个主机的主机名都为www,它们是通过www后面的域名hp.com,和acme.com来区分的。
选择查询服务
问题:选择哪种方式来检索主机名?
回答:/etc/nsswitch.conf
我们已经看见,主机名可以通过本地的/etc/hosts文件或者是DNS来解析。然而,系统是如何决定使用哪种方式呢?/etc/nsswitch.conf文件的作用就是指定使用那一种方式来解析主机名。这个文件可以手工编辑或者是通过其它工具来修改。
网络查错工具
检查网络连接情况
 # ping 128.1.1.3
 # ping 128.1.1.4
检查主机名的解析情况
 # nslookup minnie
 # nslookup donald
在完成对网络连接的配置以后,你可以使用ping和nslookup命令来检查配置是否正常工作。
使用ping来检查连接情况
ping命令被用来检查到任何IP地址的连接情况。
例子:
# ping 128.1.1.3
# ping 128.1.1.4
ping发送一系列测试包给指定的IP,并且等待响应。在几秒钟后,按CRTRL+C中断,并且检查包的返回情况,你可以试验如下PING:
1.ping 你自己的IP地址
2.ping 在你本地网络中的其它的主机。
3.ping 默认路由器(默认网关)
4.ping 另外网络中的一个主机
如果ping失败,检查以下情况:
网卡是否安装好?
网线是否接好?
IP地址是否设置正确?
是否配置默认网关/路由器?
子网掩码是否配置正确?
使用nslookup检查主机名解析
nslookup工具能够检查主机名的解析正确与否。使用一个主机名作为一个参数,nslookup会响应对应的IP地址。nslookup同时会提示提供IP地址的源。
例子:(使用本地/etc/hosts文件解析主机名)
  # nslookup minnie
  using /etc/hosts on minnie
  looking up files
  Name:   minnie
  Address  128.1.1.3
如果nolookup响应的是一个错误的IP地址,检查以下情况:
1。名称服务开关配置是否正确?
2. 如果你使用的是DNS,名称服务器的IP地址是否正确?
3. 如果你使用的是NIS,NIS的域名是否正确?
4. 如果你使用的是/etc/hosts文件,/etc/hosts文件中的条目是否正确?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:12:06 | 显示全部楼层
[推荐]磁盘阵列
UNIX系统管理-第十六章:RAID和磁盘阵列
这是保护数据完整性的技术。RAID意思是冗余廉价磁盘阵列。它是一相当新的概念,1987年由加州大学伯克利分校提出。
RAID背后的基本思想在于通过使用多个小的磁盘(相对较少数几个大的磁盘而言)
以及可能还有一些校验数据,在其中的一个磁盘故障的情况下应当能够重建数据而
不是丢失几个G的数据。
有几种不同级别的RAID,编号从0到5。它们各自的功能在下表中给出。一些高档的
UNIX机器的磁盘阵列上是用硬件级实现的RAID技术,而在一些低档的机器上,
如LINUX上也可以软件来实现RAID.不过性能要差一些。
0级 (数据条状化) 这并未对数据丢失提供任何真正的保护,但却大大地提高了性能(性能非常好,但是
并不安全)。需要一个 同步磁盘的控制器
1级( 磁盘镜像) 第二个磁盘集合用来提供一完整的数据备份。安全性很好缺点是比较昂贵,因为需要
两倍的磁盘
2级 在0级基础上带有校验磁盘,负责存储错误纠错信息。不过性能不是很好。
3级 在0级基础上带有单独的磁盘,处理字节级的校验纠错信息,以便用来重建数据。
如果校验磁盘损坏会丧失数据的完整性。同步化的磁盘可以突破单个校验磁盘性能
上的瓶颈限制
4级 3级基础上带有块校验信息,储存在一单独的磁盘上。读性能比3级要差。由于未使用
同步磁盘,它可以用软件实现
5级 在四级基础上但是其校验信息分布在所有的磁盘上,由于单个校验磁盘不再成为瓶颈,
性能很不错。但写性能还是不如3级
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:13:18 | 显示全部楼层
推荐]LAN概念和组成
网络管理-LAN概念和组成(1)(2)
目标
完成这一章,你能做以下事情:
理解本地局域网的作用
理解OSI模型的概念和作用
理解主机名,IP地址,MAC地址,端口,和套接字在OSI模型中的含义。
理解MAC地址的格式和作用。
理解IP地址的格式和作用
理解主机名的格式和作用
理解UDP协议和TCP协议的不同之处。
理解端口和套接字的作用
理解主机名从IP地址到MAC地址的查找过程。
1.1 什么是本地局域网(LAN)?
连接的类型 最大的距离
SCSI总线 5m
局域网(LAN) 5公里
广域网 500公里
在计算机领域有许多种通信方式。一些通信方式运用在本地,如SCSI设备,有距离的限制(5米)。其它的通信方式如两个系统通过一个网络相互对话,能达到更远的距离。
今天,网络通常根据覆盖的地理范围被分为LAN和WAN两类。这两种主要的网络为:
局域网(LANS)    这些网络连接的设备在一个局部的范围内(不超过5公里)。
广域网(WANS)     这些网络覆盖一个很大的地理区域,一个城市的设备可以和另外一个城市             的设备通信
两种类型的网络都是依据相同的原理。并且都是为了实现同样的目标,但是使用了很多不同的的技术。
局域网
以下是IEEE 802中对LAN的定义:
局域网是一种数据通信系统,它允许独立的设备相互通信。局域网的限制有:私有网络,必须通过连续的媒介相连,支持低速和高速的数据通信。
局域网是:
一种广播机制
通过连续的媒介相连
由独立的设备组成并且能够相互通信
一种共享资源的通信系统,例如数据文件,应用和外部设备(打印机,扫描仪,和备份设备)
地理上的限制:不能超过10公里
能高速传送大量的信息(例如,以太网能达到10Mbps,光纤能达到100Mbps)
广域网
广域网覆盖更大的地理区域,支持的数据传送速度更低(通常不超过1Mbps)。一般用电话线来连接两个网络中的远程计算机。典型的广域网如ARPANET和公众X.25网。
1.2  网络连接中的OSI模型
7 应用层 数据如何创建和如何使用?
6 表示层 应用如何表示数据?是EBCDI格式还是ASCII格式?
5 会话层 应用如何初始化一个连接?
应用如何实际传送/接收数据?
应用如何知道数据已被接收?
4 传输层 接收方应该响应接收到一个包?
如何处理响应?
那一个进程来接收数据?
3 网络层 数据如何在网络中传输
2 数据链路层 我如何知道轮到我发送数据?
如何知道数据是发送给我的?
如何处理冲突?
1 物理层 那些种类的线缆被支持?
那些种类的连接被支持?
被支持电缆的最长长度是多少?
由于没有一个单独的厂商能够满足整个网络市场的需求,用户不得不选择多个厂商的通信产品。各个厂商开发的各自的网络结构和私有的协议经常会有不兼容的现象发生。这使不同厂家的产品之间的相互连接十分困难。于是,国际标准化组织发布了开放系统互连(OSI)协议来解决这些不兼容的问题,让不同的制造商的硬件产品之间可以相互连接。OSI模型基于一套在不同的层次上的数据传输的标准。
OSI模型的较低的层(1-4层)处理处理机的互连。这些层决定数据从源头到目标的连接,而不管数据的格式,关键问题是数据传输
OSI模型的较高的层(5-7层)关心的是应用之间的互连。关键问题是应用之间的相互理解。
在这种分层的模式下,信息从顶层(第7层)由一个发送信息的计算机发起,向下传送到最底层(第一层),然后通过网络到达接收计算机。信息到达接收计算机的最低层(第一层),然后向上传送到第七层。以下是每一层的详细描述:
第七层:应用层。提供网络服务的软件,例如文件传输,远程登录,远程执行,和电子邮件,它提供用户程序和网络之间的接口
“用户运行什么”
第六层:表示层:将输出的计算机特定的格式的数据转换为国际标准格式。并且将输入的国际标准的格式转换成为计算机特殊格式(例如:ASCII->machine specific->EBCDIC)。
第五层:会话层: 建立和终止一个通信链路,同步两个系统间的对话。建立系统之间的连接,就象在两个电话的一个自动拨号器一样。
“终端仿真器”
第四层:传输层:在发送方与接收方之间提供可靠的数据流,并且确保数据到达正确的目标。这一层中的协议会确保有一份数据的拷贝,以防数据在传输中丢失。
“软件纠错”
第三层;网络层:决定信息在网络中传送的路径。在这一层中提供了包的地址,这个地址会告诉网络中的计算机传送用户数据的方向。
“路由选择“
第二层:数据链路层:为数据的传输提供可靠的,无错的媒介存取。这一层提供帧来包容数据。
“硬件纠错”
第一层:物理层;在网络和计算机设备之间建立实际的物理连接(电缆连接)。这一层定义信令的类型((什么表示一个0字节,什么表示1)电缆的长度定义,连接器的尺寸,等等。
“电缆”
1.3 媒介存取控制(MAC)地址
一个MAC地址唯一低标识一个LAN 卡。
MAC地址标识一个帧的目标地址。
帧包含由源和目标的MAC地址。
主机接收那些包含有主机的MAC地址的帧。
主机忽略包含其他主机MAC地址的帧。
MAC地址的结构
MAC是由硬件制造商提供的,分配给每一个网卡的的,全球唯一的一个48位的十六进制号码。
例如:
0x 0060B0 7ef226
 卡制造商的ID 唯一的卡的ID
每一个LAN卡的MAC地址都是唯一的。这个地址是在工厂中设置的并且用户不能修改。这个地址通常是一个十六进制数,例如,0x080009-0012AB。
当在网络中传送数据到另外的主机时,MAC地址被用来确定一个主机,所有的的地址都必须被影射成MAC地址,以确保低级的协议传送数据。
一个主机中的多个网卡就有多个MAC地址。
注意:MAC地址经常被叫做许多其它的名字。这些名字有:
连接层地址
位置地址
物理地址
硬件地址
以太网地址 
所有的这些地址都指的是同一个地址。在这里我们使用MAC地址这个名称。
浏览一个主机的MAC地址
命令lanscan能够被用来显示主机的所有的MAC地址。
以下是一个有两个网卡的主机的显示输出:
# lanscan
Hardware Station Crd Hdw Net-Interface NM MAC HP-DLPI DLPI
Path Address In# State NamePPA ID Type Support Mjr#
2/0/2 0x0800094A7334 0 UP lan0 snap0 1 ETHER yes 119
4/0/1 0x080009707AF2 1 UP lan1 snap1 2 ETHER yes 119
1.4 Internet Protocol(IP)地址
IP地址的目地
IP地址可以使一个物理网络中的相关的节点逻辑地组合在一起。
管理员通过IP网络号来组合相关的节点。
IP地址在IP网络中唯一地标识一个设备。
IP地址的结构
每一个IP地址由两部分组成;
网络部分指明系统所在的网络的地址。
主机部分指明网络中的主机的地址。
例子: 156.153. 194.170
    网络地址 主机地址
Internet协议地址(IP地址)是由系统管理员分配的,其作用是为了更有效地管理网络中的节点。IP地址允许在一个网络中将相关的节点逻辑地组合在一起。
IP地址由两部分组成:
网络地址
主机地址
网络地址标识主机所属的的逻辑网络。主机地址标识逻辑网络中的节点。这两个地址联合
在一起形成标识逻辑网络中的节点中的IP地址。
IP地址由四个8位二进制数的域组成。每一个域由一个十进制来标识,由一个点分隔开,就如下所示:
156.153.194.170
每一个域由一个0-255的整数表示
128 64 32 16 8 4 2 1 十进制值
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1
0 0 0 0 0 1 1 1 7
1 1 1 1 1 1 1 1 255
同样的IP地址使用二进制来表示如下:
10001010.10000001.00000001.00000010= 138.129.1.2
10011100.10011011.11000010.10101010=156.153.194.170
注意:不要将同一个IP地址分配给不同的的主机 。
如果同一个网络上的两个主机使用同一个IP地址,这些主机之间的通信会出现错误。
1.5 三类IP地址
有效的网络地址可以分为三类。
网络的类是由IP地址中网络地址位决定的。
A类地址   0_______。     。      。
B类地址  10_______。    。      。
C类地址  110______。    。     。
IP地址被分为三类:
A类:为大的网络使用(超过65000个节点)
B类:为中等网络使用(128到65000个节点)
C类:小型网络(不超过128个节点)
IP地址空间被分为三类,这是因为在设计时,设计者预见到会有大,中,小的网络存在。
第一个字节的第一位二进制数为0: A类地址,一个字节为网络地址,另外三个域为主机地址
第一个字节的前面两位为10:     B类地址,两个字节为网络地址,两个字节为主机地址。
第一个字节的前三位为110:      C类地址:前三个字节位网络地址。后一个字节为主机地址
  网络位 主机位 网络的数目 主机数目 范围
A类地址 8 24 127 16777214 1-127
B类地址 16 16 16383 65534 128-191
C类地址 24 8 2097151 254 192-223
1.6 IP地址和网络路由
上例中说明了如何使用IP地址来对网络中的节点进行分组。它显示两组节点:办公网络中的节点和工厂网络中的节点。
办公网络被分配一个B类网络地址128.1,这意外着办公网络中的所有节点的IP地址的前两个字节由128.1开始。后两个字节为128.1这个网络中的主机地址。
相似的,工厂网络被分配一个C类的网络地址192.1.2。这个网络中所有的主机的IP地址的前三个八位字节确定了网络地址(192.1.2)。第四个字节确定主机地址。
工厂网络中的节点与办公网络中的节点通过路由器进行通信。这个例子中的路由器包含有两个网络的网卡,一个拥有办公网络中的IP地址,一个拥有工厂网络中的IP地址。
当一个网络中的主机想要同其它网络中的主机通信,路由器负责传送一个网络中的包到另外一个网络。
1.7 选择IP地址
一般的限制:
每个IP地址只能用于一个主机。
IP地址的第一个段的值必须在2-224这个范围内(127除外)
通用的IP地址必须向以下的地址申请:
http://www.arin.net (North/South America)
http://apnic.net (Asia/Pacific)
http://ripe.net (Eurpe)
特殊地址:
本地回路地址(127.0.0.1)
广播地址
一般网络地址
当为一组节点分配IP地址的时候,有许多事情需要考虑,其中有:
这个网络中有多少节点(例如,应该使用A类,B类还是C类地址)
网络中的节点是否需要存取公众的Internet ?如果要,IP地址必须通过上例中的web站点来获得。如果这些节点为一个私有网络的一部分,本地的管理员可以任意分配IP地址,只要它们不相互冲突。
注意有特殊的意义、特别保留的IP地址;这些地址有本地回路地址,广播地址,和一般网络地址。
本地回路地址
本地回路地址是一个用于诊断目的的地址。通常为127.0.0.1,节点通常用它来发送信息给自己。不管是否配置了IP地址。这个地址都可以被使用。
广播地址
广播地址被用来向一个逻辑网络中的所有的节点发送同一个信息。每一个逻辑网络中的广播地址通常为可选用的主机地址的最大的一个地址。
例如办公网路(128.1)中的广播地址是128.1.255.255
一般网络地址
一般网络地址用来整体表示一个网络(不标识网络中的任何一个主机)。网络地址通常为网络中可能的最小的主机地址。
例如:办公网络(128.1)的网络地址为128.1.0.0
1.9 IP地址- 例子
主机例子    IP类 网络地址  主机地址 广播地址 本地回路地址
192.66.123.4   C  192.1 4 192.  255.255.255         127.0.0.1
148.162.12.14  B  146.162.1 12.14 148.162.255.255   127.0.0.1
9.12.36.1      A  9.1 12.36.1 9.255.255.255         127.0.0.1
163.128.192.9  B  163.128.1 192.9 163.128.255.255   127.0.0.1
123.45.65.23   A  123.1 45.65.23 123.255.255.255    127.0.0.1
在上表中列出了5个不同的IP地址,请对指出每一个IP地址对应的:
IP地址的类
IP地址的网络部分
IP地址的主机部分
IP地址的广播地址
这个节点的本地回路IP地址
(可选)一般网络IP地址
(可选)网络的子网掩码
 你的位置:首页->系统管理->网络管理->LAN概念和组成(2)
LAN概念和组成(2)
主机名
主机名是一个对用户友好的‘别名“,每一个主机名对应一个IP地址。主机名由字母和数字组成(最大8个字符)。主机名的例子有:
    tom        server1
     accounts     mailsrvr
主机名在/etc/hosts文件中(或是DNS或NIS中)定义
    /etc/hosts文件的例子:
128.1.1.2  minnie
128.1.1.3  mickie
主机名通常是在一个数据包发送之前被解析成为IP地址
  例子:
   telnet minnie 解析为 telnet 128.1.1.2
   ftp mickie 解析为 ftp  128.1.1.3
由于记住每个节点的IP地址十分麻烦,所以就产生了主机名来帮助网络中的用户更容易访问主机。
主机名的命名规则
关于主机名命名有几个规则:
主机名的最大的长度为8个字符。
在主机名中不能有任何的标点符号(下划线除外)。主机名只能由字符(包括下划线)和数字组成。
主机名的作用的目的仅仅是为了系统的用户使用上的方便。在通信进行之前,主机名必须先要被转换为对应的IP地址。
解析主机名为IP地址
转换主机名为对应的 IP地址,有三种机制:
/etc/hosts文件     每个系统中都会保存一个文件,其中列出了网络中的IP地址和主机名               这种方式通常用于小型的网络。
NIS           一个系统(NIS主机)负责维护网络中所有的节点的IP地址和主机名             。所有的系统在需要要解析主机名为IP地址的时候,都会去检索这              个NIS主机。这种方式通常用于中等大小的网络。
DNS          许多系统(DNS名称服务器)分别维护网络中的节点和IP地址的一部分             列表,由网络中所有的DNS服务器共同来对网络中的主机服务。
转换IP地址为MAC地址
让我们回想一下前面讨论的MAC地址。在底层的网络通信中,两个节点想要相互通信,必须先要知道源与目标的MAC地址。
为了让系统能快速地找到一个远程节点的MAC地址,每一个本地的内核都保存有一个即时的查询表(称为ARP缓存)。ARP中保存有远程主机的IP地址到其对应的MAC地址的一个映射列表。
地址解析协议(ARP)缓存是一个常驻内存的数据结构,其中的内容是由本地系统的内核来管理和维护的。默认的情况下,ARP缓存中保留有最近十分钟本地系统与之通信的节点的IP地址(和对应的MAC地址)。
当一个远程主机的MAC地址存在于本地主机的ARP 缓存中,转换远程节点的IP地址为MAC地址不会遇到问题。然而在许多情况下,远程主机的MAC地址并不存在于本地的ARP缓存中,系统会怎么处理呢?
例子:
在知道一个远程主机的IP地址,但是MAC地址不在本地的ARP缓存中的时候,以下的过程用来获取远程节点的MAC地址:
本地主机发送一个广播包给网络中的所有的节点,询问是否有对应的IP地址。
一个节点(只有一个)会回答这个ARP广播信息。在回应的信息包里就会包含有这个远程主机的MAC地址。
在收到这个返回包后,本地节点就会在本地ARP缓存中记录远程节点的MAC地址。
使用TCP来管理数据包的传送
使用TCP协议发送一个包:
打开一个远程节点的连接
将数据分割为数据包。
发送数据包给远程节点
如果没有响应,重新发送。
在所有的数据包都发送后关闭连接
接收节点重新按正确的顺序组装收到的数据包
到这里,我们已经知道
主机名是如何被解析为IP地址的。
IP地址是如何转换为MAC地址。
下面我们会介绍两种主要的通信协议,TCP和UDP,以及其工作原理。
传输控制协议- TCP
管理节点之间的相互通信的两套规则是TCP协议和UDP协议。TCP协议的使用开销更大,但是更加可靠。TCP协议的特征有:
连接性    在数据传送之前先要建立连接,即一个通信会话线索。
可靠性    每发送一个数据包,接收方都要返回一个确认包。如果没有收到确认信息,发送节        点就会重新发送这个包。
使用UDP管理信息包的发送
网络中的两个节点之间通信的第二种普遍使用的协议是用户报文协议(UDP)。UDP协议相对TCP来说的主要的优点是网络负荷较低,但是由于UDP协议不要求确认是否收到了信息报文。因此,它被认为是“不可靠“的。UDP协议的特征;
非连接性   在原始节点发送第一个数据报文时,不需要先建立连接。
不可靠性   接收方不发送确认收到的信息给源节点。源节点不知道是否数据包到达目标节点        。由于这个原因,这个协议被认为不可靠。
通过端口传递数据给应用程序
问题:    每分钟有成千上万的数据包到达LAN界面卡。
       网络子系统如何才能知道由那一个应用来接收数据包。
解决方案:  赋予每一个应用一个唯一的端口号。
       每一个数据包被发送时,在其中都会有一个端口号。
       这个端口号决定那一个网络应用来接收这个数据包。
到这里,我们已经了解的内容有:
主机名是如何解析成为IP地址。
IP地址是如何转换为MAC地址。
TCP和UDP协议是如何让网络中的节点之间进行通讯。
以下的三章介绍的内容是:如何管理多个网络应用之间的多个连接,并且让它们互不干扰。
辨别不同的网络应用
有许多不同种类的网络应用和网络服务,这些服务能帮助网络中的系统更好地进行相互通讯。
但是当一个系统中运行有不同的网络应用的时候,一个数据包从网络传送过来,系统如何才能知道这个数据包对应那一个网络应用呢?
端口
为了解决那一个网络应用接收那一个数据包的问题,每一个网络应用被赋予一个唯一称为端口号的标识号。
当一个机器上的网络应用程序发送一个数据包给另外一个机器的时候,它必须指明远程主机的端口号,远程主机才能正确地接收这个数据包。
/etc/services文件
为了主机之间的网络通讯正常进行,节点与节点之间的,用来指明网络应用的端口号必须一致。对一些普通的网络服务而言,它们的端口号已经被预先定义。标准的网络应用和服务的端口号是在/etc/services文件中定义的。
使用套接字管理端口
问题:    多个客户端可能运行同样的网络应用,服务器端如何处理?
       一个客户端可能同时运行多个同样的网络应用,服务器端如何处理?
解决方案: 对每一个运行网络应用的进程创建一个唯一的套接字。
套接字就是是一个端口号与节点的IP地址相结合。
套接字连接就是将客户端的套接字号同服务器端的套接字号结合起来。
网络中有两种情况需要使用套接字来管理/处理。
1. 两个节点,同时运行相同的网络服务(ftp),并且在同一时间连接同一个主机。两个节点都会在它们的数据包里加上同样的ftp端口号21,而且每一个数据包必须被服务器上的不同的ftpd守护进程来处理。
服务器端如何才能辨别两个ftp数据包的来源于不同的主机。
2. 一个节点,在同一时间,对同一主机,开启两个相同的网络应用(telnet)。两个telnet都使用同一个端口号23。
服务器和客户端如何才能分别保持两个telnet会话线索?
套接字
解决以上问题的办法是创建套接字。一个套接字就是一个简单的号码,来识别运行在特定主机上特定的应用。
套接字的值通常为主机的IP地址连接网络应用的端口号。例如:
128.1.1.3.23      节点128.1.1.3上telnetd守护进程的套接字
128.1.1.3.21     节点128.1.1.3上ftpd守护进程的套接字
128.1.1.3.512     节点128.1.1.3上rlogind守护进程的套接字
128.1.1.4.1001     节点128.1.1.4上第一个telnet程序的套接字
128.1.1.4.1002    节点128.1.1.4上第二个telnet程序的套接字
128.1.1.5.1001    节点128.1.1.5上的telnet程序的套接字
128.1.1.5.1002     节点128.1.1.5上ftp程序的套接字
套接字连接
套接字连接就是将两个套接字联合在一起。第一个套接字表明客户节点上的网络程序(例如128.1.1.4.1001),第二个套接字表明服务器节点上的网络守护进程(例如:128.1.1.2.23)。所以套接字连接就是128.1.1.4.1001-128.1.1.2.23
重新回顾OSI模型
7 应用层 数据如何创建和如何使用?
6 表示层 应用如何表示数据?是EBCDI格式还是ASCII格式?
5 会话层 应用如何初始化一个连接?
应用如何实际传送/接收数据?
应用如何知道数据已被接收?
4 传输层 接收方应该响应接收到一个包?
如何处理响应?
那一个进程来接收数据?
3 网络层 数据如何在网络中传输
2 数据链路层 我如何知道轮到我发送数据?
如何知道数据是发送给我的?
如何处理冲突?
1 物理层 那些种类的线缆被支持?
那些种类的连接被支持?
支持电缆的最长长度是多少?
在这一章中,我们学习了:
主机名如何被解析为IP地址
IP地址如何转换为MAC地址
TCP和UDP协议如何让网络中的节点相互间通讯
端口号是如何用来标识网络应用。
套接字是如何唯一地识别来两个不同主机之间同一个网络应用的通讯线索
对比OSI模型
网络地址对应的有:
MAC地址
IP地址
端口地址
套接字
套接字连接
网络协议对应的有:
TCP协议
UDP协议
IP协议
ARP协议
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表