系统管理简介 - 图文

更新时间:2024-06-19 04:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 系统管理简介

目标

完成这一章,你能够做以下事情:

?

明确系统管理员的责任

1.1 系统管理员的角色

系统管理员的职责就是设置和维护系统。系统管理员不仅必须了解硬件和软件,而且必须了解用户组的需求。

由于与这些职责相关的命令不是让每个人都可以使用的,系统管理员需要对系统有特殊的权限,这种权限就叫做超级用户或者叫root存取。

1.2 硬件方面的职责

硬件的职责 ? ? ? 建立并且维护系统硬件 检验并正确安装外部设备并且对其进行测试。 监控硬件的性能。 ? 在硬件设备出现故障的时候安排进行修复 系统管理员的职责中有配置和管理系统硬件设备。系统管理员可以不是实际安装这些硬件的人员,通常硬件厂商的工程师会给你安装硬件。一旦系统开始运行,系统管理员就必须监视系统中不同硬件的性能,如果硬件发生故障,系统管理员应该试图尽可能隔离这些故障,然后让硬件工程师来进行必要的修理。 系统管理员必须知道一些基本的系统硬件如何工作的知识。

1.3 软件方面的职责

o o o o o o o o o 安装和配置操作系统 创建文件系统 保证文件系统的一致性 监控系统资源的使用 计划和实施备份和恢复。 配置和维护打印缓冲系统软件 安装和维护网络通信软件 升级操作系统的版本 安装和升级应用程序 如果你的系统没有预装操作系统,你可能需要安装操作系统。操作系统的媒介可能有多种形式,软件分发可能是一系列的磁带或者是CD-ROM。 分发的介质有:

压缩的磁盘:只读的磁盘(CD-ROM) 数字数据存贮磁带(DDS),

4英寸的盒式磁带(QLC),(只用于服务器) 系统管理员必须将系统软件安装到硬盘上。

一旦系统安装完成,就必须配置软件,方法是修改某些值或参数。这样做的目的是让操作系统能识别附加的设备或增强系统的效率。

操作系统利用文件系统来组织数据。由于所有的系统和用户的数据都是存储在文件系统中,所以保证文件系统的一致性十分重要,系统管理员应该执行一些操作来检查文件系统中的错误,如果发现错误就必须进行一些改错的操作。 文件系统的大小是有限的,并且通常存在于本地的磁盘上。系统管理员必须监控一个文件系统有效空间。并且应该使用一些程序来备份和删除废弃的或是不用的文件,这样才能保持有效的存储空间不被过分消耗,那些不时会增长的文件也需要监视。

系统资源不仅仅包含磁盘的存储空间,还包括内存,外部设备,和内核的数据结构, 系统管理员可以定制和监控这些资源使其保持在一个合适的范围内。 确保系统中数据的安全也是系统管理员的一个任务,通常都要做系统数据的备份,这样如果有用户错误或者硬件错误导致的数据丢失,可以使用备份数据来恢复。

一些UNIX系统还会使用外围设备,如行式打印机,激光打印机。系统管理员必须管理输出到这些打印设备的软件。

不同的UNIX系统通过一种电子通信机制来相互联接,这种机制叫做网络。通过网络,你可以发送电子邮件,在机器和机器之间传送数据。系统管理员必须安装,配置和监控网络软件。

操作系统和其他子系统和应用程序都可能有升级版本出现,升级可以提高或者修正程序的特征,或者增加新的功能。系统管理员有责任升级系统中的软件以满足用户的需求。

1.4 对用户的责任

对用户的责任 ? ? ? ? ? 允许用户按其需要来使用系统。 评估用户的需求。 计划未来系统的增长和改变。 为用户提供帮助。 为你的公司/组织使用计算机系统和网络系统制定规章和程序。

一旦系统安装完毕,就要求指定一套用户使用系统的规范。系统管理员有责任制定这些规范。

系统管理员必须尽可能规划系统以满足用户组的需求。系统管理员应该分析系统将来的用途,清楚系统中的用户的情况,每个用户需要的系统资源和外围设备,和不同用户组需要共享的数据和程序。

任何系统管理员都会被视为系统的专家,用户会认为你知道系统中的任何事情,并且会将你看作专家,这与你的知识水平有无关。在许多用户的脑子里,“你必须知道”比他们要作的更多。

你可能会被问许多问题,例如“我该如何办...” 和接到一些如“我的终端坏掉啦”或“我忘记了我的密码”等报告,这些问题对系统管理员的角色非常有挑战性,也是这个工作的最有意思的部分

但是,如果用户习惯于在来问你之前试一试自己查找帮助手册,这样会使你每一天的工作的被打断的次数减少到最少,并且用户会有更多的信心来使用系统。

Gze235t

定制用户帐号

目标

学完这一章,你将能够做以下事情:

? ? ? ? ? ? ?

列出在登录过程中读取的配置文件 更改默认的用户PATH 更改默认的用户终端类型 更改用户提示符

更改用户命令行编辑器 更改用户默认打印机

管理/etc/skel中默认的配置文件

为什么要定制用户帐号

? ? ? ?

设置用户终端类型 定制用户提示符

设置用户默认终端,定制用户PATH变量 定义一个命令行编辑器

如果只是简单地在/etc/passwd和/etc/group文件中创建条目可能不能满足用户所有需求,例如:

? ? ? ? ?

你可能需要定义用户的终端类型,以便应用程序可以正确地输出到用户的屏幕上。 你可能需要定制用户的提示符。因为许多的用户喜欢在提示符中显示他们当前所在路径名

虽然系统管理员定义了一个系统默认打印机,但是有些用户可能会要求使用另外的打印机。

如果用户要使用第三方的软件,你可能需要修改他们的PATH变量,以便shell可以找到这些应用程序。

如果用户希望使用命令行编辑和命令历史机制,需要特殊的配置。你可能希望为新用户配置这些功能。

一些例子

export TERM='vt100' export PS1='$PWD $' export LPDEST='laser'

export PATH=$PATH:/usr/local/bin export EDITOR=vi export HISTSIZE=40

export HISTFILE=~/.sh_history

上例中提到的特性是在登录的时候,通过“环境”变量来定义的。一些经常修改的环境变量如下 TERM 

TERM变量定义了用户的终端类型。如果TERM变量设置不正确。应用程序就可能不能正确地写到用户的终端。有效的终端类型全部在/usr/lib/terminfo/*目录下列出。你可以使用如下类似的命令来准确的设置一个TERM类型: export TERM=vt100  #对应一个vt100类型的终端 export TERM=hp #对应一个HP ASCII终端

export TERM=dtterm #对应一个dtterm终端模拟窗口

你也可以使用ttytype命令来设置你的终端变量。这个命令通常可以自动识别你的终端类型。以下的代码可以加入到你的登录时运行的脚本中,为你设置你的终端类型:

if [ \

\\\then

eval 'ttytype -s -a ' fi

export TERM PS1

PS1变量定义你的shell提示符。这个提示符也可以由用户自己来修改。一些有用的PS1的值如下所示:

export PS1='S' #使用一个简单的\提示符 export PS1='$PWD $'#在提示符内包括用户的pwd export PS1='$PWD ($LOGNAME) $' #同时包括用户的用户名 LPDEST

LPDEST定义了用户默认打印机。在LPDEST中设置的打印机会优先于系统管理员设置的系统范围内的默认打印机。例子 : export LPDEST=laser export LPDEST=printera

PATH

用户每次输入一个命令,shell就必须去查找这个命令的可执行文件的位置。PATH变量中包含有一个以“:”分割的路径的列表,shell在这些列表中查找可执行文件。如果用户需要使用一个新的应用和工具,你也许会需要修改你的PATH变量。你可以使用以下类似的语法来在用户的PATH中增加新的目录: PATH=$PATH:/usr/local/bin # 在已存在的PATH中增加/usr/local/bin这一个路径

初始化的PATH变量通常取自/etc/PATH文件。通常安装一个应用会自动更新/etc/PATH文件,所以不用单独地设置用户的PATH。 EDITOR

如果你的用户想要使用命令行编辑,需要定义三个变量: export EDITOR=vi

export HISTFILE=~/.sh_history export HISTSIZE=50

EDITOR定义用户选择的命令行编辑器。emacs和vi是唯一允许的两个值。

HISTFILE代表记录用户输入的命令的文件名。HISTSIZE决定保存在shell的命令缓冲区内的命令的数量。

这些仅仅是你能为你的用户定义的普通的环境变量的一部分。其它的环境变量的定义可以在POSIX shell的帮助中查找,你的用户也可能需要用到其它的变量。 环境变量可以在命令行中定义,但是更通常的做法是在登录配置文件中定义,这会在以下的章节中介绍。

用户登录的时候发生了什么?

虽然定制一个用户的登录环境的环境变量可以在命令行中定义,但是通常是在登录过程中执行的脚本中定义,典型的,有三个脚本被用于在用户登录时初始化环境。

第一个脚本是由系统管理员维护的一个脚本文件,用来为所有的用户定制通用的环境变量。

第二个脚本是每个用户自己维护的本地脚本文件,本地登录脚本能覆盖和修改系统默认的脚本。

另一个可选的脚本:附加的本地登录脚本能够定义附加的环境变量或者设置附加的shell特征。在POSIX shell中,附加的脚本通常用来定义shell别名。 登录脚本的名字在各种shell中都是不同的。以下是POSIX,Korn,和C shells的登录脚本的详细讨论: Shell环境初始化的顺序

1. shell运行正确的系统登录脚本,这个脚本初始化用户的环境。系统登录脚本定义一个默认的环境,这个脚本可以由系统管理员定制。

如果shell是..... Bourne(/usr/old/bin/sh) korn(/usr/bin/ksh) POSIX(/usr/bin/sh) 限制的shell(/usr/bin/rshr,/usr/bin/rksh C (/usr/bin/csh) 系统登录脚本是.... /etc/profile /etc/profile /etc/profile /etc/profile /etc/csh.login 这些脚本定义和输出的环境变量有PATH,TZ,TERM,其来源于

/etc/PATH,/etc/MANPATH,/etc/TIMEZONE,/etc/SHLIB_PATH这些文件。由于这个系统登录脚本在所有用户登录的时候都会运行,系统管理员可以通过修改这个文件来为所有用户设置默认环境变量。

这种特性还可以让每一个用户在登录系统时执行一些基本的命令。 2. 显示/etc/copyright 和/etc/motd文件中的内容。 3. 提示用户没有阅读的新闻: news:news_filename

4. shell运行在用户的home目录下的用户的本地登录脚本(如果存在)。

如果shell为..... Bourne(/usr/old/bin/sh Korn(/usr/bin/ksh) POSIX(/usr/bin/sh 限制的shell(/usr/bin/rsh,/usr/bin/rksh 本地登录脚本为.... .profile .profile .profile .profile C (/usr/bin/csh) .login 注意:在典型情况下,系统管理员在最初创建用户帐号时,会为每个用户创建一个本地的登录脚本。如果使用useradd命令来添加一个用户,它会拷贝默认本地登录脚本文件(/etc/skel/.profile)到这个用户的home目录下。用户可以自己继续修改这个文件来定制他们的环境变量,以满足自己的需要。

在这个脚本之外,POSIX,Korn,和C shells可能(通常都会)有另外的本地登录脚本:

-POSIX和korn shell-: 如果定义了ENV变量,shell会运行在ENV中定义的文件(典型的,.shrc在开启一个新的shell的时候执行,许多程序(例如,vi,和mailx)运行用户在程序执行中开启一个shell;这被称为一个shell escape,一个shell escape会要求重新执行一次ENV文件,而.profile只会在登录的时候执行。ENV文件(.kshrc或者.shrc)会在登录时,.profile文件执行后执行。

- C shell:在一个新的C shell启动的时候运行.cshrc文件。这和Korn shell ENV文件的工作方式类似。.login 文件只在登录的时候运行,每一次开启一个新的C shell的时候会重新运行.chsrc文件。

一旦所有的初始化工作都完成后,shell会出现一个提示符等待用户的输入。

/etc/skel目录

当使用useradd命令创建一个新用户帐号的时候,系统会拷贝一些默认的配置文件到新用户的home目录下。/etc/skel目录下的默认的配置文件包括: /etc/skel/.profile#ksh/posix本地登录脚本 /etc/skel/.login#csh 本地登录脚本 /etc/skel/.cshrc #csh 附加登录脚本 /etc/skel/.exrc#vi 启动配置文件

如果你想要修改自动拷贝到新用户home目录中的默认配置文件,你可以修改/etc/skel中的文件。对/etc/skel目录下的文件的修改不会影响已经存在地用户的home目录下的文件。

如果你的应用要求在新用户的home目录下自动创建一些配置文件,你同样也可以通过在/etc/skel目录下添加文件来实现。

文件系统层次结构

目标

完成这一章,你能作以下事情:

? ? ? ?

描述为什么要区分动态文件系统和静态文件系统

描述/sbin,/usr,/stand,/etc,/dev,/var(操作系统相关目录)的主要内容 描述/opt,/etc/opt,和/var/opt(应用程序相关)的主要内容 使用find,和whereis命令在文件系统中查找文件

介绍文件系统范例

许多系统管理任务都要求系统管理员知道系统和应用程序的配置文件和日志文件的位置,并能对这些文件进行操作。所以了解文件系统组织结构,可以让你能找到这些文件并进行系统管理的工作。 下面介绍标准的AT&T SVR4文件系统布局。

文件系统中的文件可以通过不同的方法分类。例如可以分为静态文件和动态文件,可执行文件和配置文件。这些分类原则组成了文件系统的逻辑结构,并且能够简化系统管理的任务。

文件系统可以分为静态和动态两个部分

文件系统中的文件和目录被分为静态和动态两类。静态文件和目录中的内容很少更改,除非是安装补丁或者安装操作系统或安装应用程序。可执行文件,库,和系统启动工具,都被认为是静态的。

动态文件和目录是经常更改的。配置文件。临时文件,和用户文件被认为是动态的。

区分动态和静态数据提供了以下的优点:

? ?

系统备份更容易 磁盘空间管理更简单

可执行文件和配置文件

配置数据和可执行代码是分别保存的。分开保存配置文件和可执行文件能够提供了如下优点:

? ?

当操作系统升级的时候,对配置数据的更改不会丢失。

可以很容易地通过网络共享可执行文件,同时每个主机自己的配置文件可以存储在本地主机上

文件系统布局

操作系统的可共享部分的数据存在于/usr,和/sbin下面。只有操作系统能够安装文件到这些目录下去。应用程序位于/opt下面。

/usr,/sbin目录和/opt下面的应用程序子目录能够在网络中的主机之间共享。因为它们不包含每个主机特定的信息。每个主机特定的信息位于文件系统的动态数据目录下。

这些目录的通常的定义为: 目录 定义

/usr 可共享的操作系统命令,库,和文档。 /sbin  引导系统和安装其它文件系统的最少需要的命令 /opt 应用程序

/etc 系统配置文件,不再包含可执行文件

/dev 设备文件

/var 动态信息例如日志,脱机打印缓冲文件 /mnt 本地装载的文件系统 /tmp 操作系统临时文件 /stand 内核和引导加载器。 /home  用户目录

/usr目录的更详细的内容

/usr目录包含操作系统的大部分,包括命令,库,和文档。/usr文件系统包含操作系统的文件,例如可执行文件和ASCII文档。 /usr目录下标准的子目录在如下定义; /usr/bin  操作系统的用户命令 /usr/conf 内核配置文件 /usr/contrib  发布的软件 /usr/lbin  其它命令文件 /usr/local 用户自己安装的软件

/usr/newconfig 默认的操作系统配置数据文件 /usr/sbin  系统管理命令 /usr/share 独立结构的共享文件 /usr/share/man 操作系统帮助手册 /usr/share/doc 技术相关的白皮书

/var目录的详细内容

/var目录中保存各种日志,临时文件,中间文件,和打印缓冲文件。/var目录的大小变化很大。在通常情况下,任何应用程序或者命令在运行时候创建的文件,对操作系统来说不是关键性的数据,通常都会被放在/var目录的下面。例如,/var/adm中会包含于系统管理相关的日志和其它运行时创建的文件。/var还包含有可变大小的文件例如crontabs,和打印系统和邮件系统的缓冲区。 通常/var下面的都是一些临时文件,系统管理员如果想要释放磁盘空间,可以通过搜寻/var目录,来查找那些文件可以被清除掉。 /var下面包含的文件有:

/var/adm 普通的管理文件和日志文件 /var/adm/crash 内核的dump文件 /var/mail  收到的邮件

/var/opt/  应用运行时产生的文件(例如日志,临时文件)。每一个应用程序有自己的目录

/var/spool 操作系统子系统,例如lp(打印),cron等系统的缓冲文件 /var/tmp /usr目录下的命令产生的临时文件

/var/adm目录下的详细内容

这个目录被用来保存普通的管理文件,日志和数据库,例如,syslog产生的文件,cron使用的文件,内核dump文件。

/var/adm/crash  内核崩溃dump文件会被保存在这个目录下 /var/adm/cron cron使用的日志文件, /var/adm/sw 软件发布使用的日志文件

/var/adm/syslog 系统日志,应用程序和内核都可以在这个文件中写日志。syslog守护进程负责写这些日志信息。syslog守护进程的行为能够通过

/etc/syslog.conf来定制。默认的日志文件名为/var/adm/syslog/syslog.log。在启动的时候,这个文件被拷贝为OLDsyslog.log,新的syslog.log文件被创建。这个文件是一个ASCII码文件。

/var/adm/sulog 这个文件包含所有的su命令的使用记录。sulog是一个ASCII文件。

/var/adm/wtmp 这个文件包含成功登录的记录。这个文件不是ASCII文件。last命令被用来显示这个文件的信息。wtmp文件会持续增长,系统管理员应经常对这个文件进行修剪。

/var/adm/btmp 这个文件包含非成功登录的记录。这个文件不是ASCII文件。lastb命令可以用来显示这个文件中的信息。btmp文件会持续增长,系统管理员应经常对这个文件进行修剪。

/var/adm/utmp 这个文件包含登录到系统的所有用户的记录。write,who等命令会使用这个文件,但它不是ASCII文件,所以不能被直接浏览。 应用程序的目录

每一个应用程序会在/opt,/etc/opt,/var/opt下面有自己的子目录。而应用程序的可共享的,或者静态的部分在它们自己的/opt/application目录下,这个目录的结构同操作系统文件系统的结构类似:

/opt/application/bin  用户命令 /opt/application/share/man 帮助手册 /opt/application/lib  库 /opt/application/lbin 后台命令 /opt/application/newconfig 配置文件的主拷贝

应用程序的日志文件在/var/opt/application目录下,而主机特定的配置文件在/etc/opt/application目录下。

帮助你定位的命令

find  在文件系统层次结构中查找文件

whereis 定位源程序,二进制代码,和帮助手册的位置 which 在你的PATH中定位一个可执行文件 file  判断文件的类型

作为系统管理员,你可能需要在整个文件系统中检索文件。UNIX提供了几个查找文件和执行文件的工具,它们是: find命令

find命令是一个功能强大的工具。它可以从你指定的点开始在文件系统中查找符合条件的文件。也可以通过名字,属主,和修改时间等等来查找文件。find同时允许你使用找到的文件作为一个参数来执行一个命令。 例子:

查找属于用户grep的所有文件 # find / -user grep

在/tmp目录下查找7天都没有存取的文件 # find /tmp -type f -atime +7 删除core文件

# find / -name core -exec rm {}\\;

whereis命令

whereis 命令在你收到“没有发现”错误信息的时候十分有用。它会搜索一个预定义的目录列表。默认的情况下,whereis会去搜索源程序,二进制文件,和帮助手册。你可以使用-b选项来限制它只搜索二进制代码。 例子:

# whereis -b ls ls: /usr/bin/ls /sbin/ls

which 命令

which命令在在判断将要使用命令的哪一个版本时有用。一些命令有多个home。你到底是执行的哪一个版本,是由你PATH变量中指定的目录的顺序决定的。

file命令

file命令对文件作一系列的测试,然后会试图对文件归类。这个命令在判断一个命令是一个shell脚本还是一个二进制的可执行文件时有用。 例子:

# file /sbin/shutdown

/sbin/shutdown : s800 shared executeable # file /sbin/rc /sbin/rc: ascii text

strings 命令

strings命令可以找出一个二进制文件中的可用信息,它会在屏幕上显示出文件中的任何可以打印的字符。

配置设备文件

目标

学完这一章,你将能够做以下事情:

? ? ? ? ? ? ? ? ? ? ?

解释设备文件的用途 解释主号和次号的意义

描述块设备和字符设备的不同

使用lsdev来列出内核驱动程序的主号 使用ls -l观察一个设备文件的主号和次号

使用ioscan列出与一个指定设备关联的设备文件 使用issf来说明一个设备文件的特征。

赋予磁盘,磁带,或者CD设备文件名,确定控制卡的目标号和关联设备的目标地址

赋予一个终端或者一个modern设备文件名,确定控制卡号和关联设备的端口号。 描autoconfig进程的工作原理 使用insf创建设备文件

设备文件是什么?

操作系统与外部设备(例如,磁带驱动器,磁盘驱动器,打印机,终端,modern)是通过一种被称为设备文件的文件来进行通信。unix输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。在UNIX 同一个外部设备进行通讯之前,这个设备必须首先要有一个设备文件存在。例如,每一个终端都有自己的设备文件来供UNIX写数据(出现在终端屏幕上),和读取数据(用户通过键盘输入)。

设备文件和普通文件不一样,设备文件中并不包含任何数据。

操作系统通过设备文件来与一个设备进行通讯。设备文件存在于/dev目录下。 注意:设备文件与特殊文件是同义词。你可以互换这两个术语。

由于UNIX操作系统为你创建所有的设备文件,所以在你存取一个外部设备的时候,你需要知道这个设备对应的设备文件名。有时候你会需要自己创建一个设备文件。如果你永久地去掉一个外部设备,你应该删除它对应的设备文件。 以下的例子说明了UNIX命令如何使用一个设备文件: #tar -cvf /dev/rmt/0m /usr

tar应用使用-f选项来打开一个文件以供输出。然后tar会备份数据到那个文件。tar可以写到一个普通文件或者直接写到一个设备。tar并不需要知道它们之间的不同。

# echo hello > /dev/tty0p1

在这个例子中,echo命令的标准输出通过被重定向到一个终端,其方式是通过这个终端的设备文件

使用ls -l列出设备文件

使用ls -l /dev列出设备文件名

brw-r----- 1 root sys 31 0x005000 Feb 10 1997 /dev/dsk/c0t5d0 brw-r----- 1 root sys 31 0x006000 Feb 10 1997 /dev/dsk/c0t6d0 crw-r----- 1 root sys 31 0x005000 Feb 10 1997 /dev/rdsk/c0t5d0 crw-r----- 1 root sys 31 0x006000 Feb 10 1997 /dev/rdsk/c0t6do crw-r----- 2 root tty 17 0x000001 Jan 909:25 /dev/ttyp1

crw-r----- 2 root tty 17 0x000002 Jan 917:25 /dev/ttyp2 设备文件类型 主号 次号 设备文件名

设备文件通常都是在/dev目录下。你可以使用ls -l命令来列出这个目录下的文件,就像你列出其它目录下的文件一样。注意:ls -l列出的设备文件和其它文件有一点点的不同。 设备文件类型

设备文件名的第一个字符指明了这个设备文件的类型。

字符设备文件:第一个字符为“c\ 字符设备文件传送数据给设备的时候,一次传送一个字符。终端,打印机,绘图仪,modern等设备是一些典型的经过字符设备文件传送数据的设备。字符设备文件有时也被称为“raw” 设备文件。

块设备文件: 第一个字符为“b”的设备文件是一个块设备文件。系统通过块设备文件存取一个设备的时候,先从内存中的buffer中读或写数据。而不是直接传送数据到物理磁盘。这种方式能有效的提高磁盘和CD-ROMS的I/O性能。 终端,moderms,打印机,绘图仪和磁带设备是典型的只能使用字符设备文件的设备,磁盘和CD-ROMS既可以使用字符设备文件也可以使用块设备文件。 一些应用程序和工具选择使用字符设备文件直接存取磁盘。而其它工具要求使用一个块设备文件。阅读应用或者工具的说明文档来决定使用那一种设备文件。 设备文件主号

每一个设备文件都有一个“主号”,使用ls -l命令输出的内容的第五个字段即为主号。主号是表示系统存取这个设备的“内核驱动” 。内核驱动是UNIX内核中的一部分代码,其作用是用来控制一种特殊的设备的输入输出。大多数的unix操作系统都有多种设备驱动程序;每一个设备文件名中的设备主号就代表这个设备使用的是那个设备驱动程序。lsdev命令可以列出你的内核中配置的驱动程序,和这些驱动程序对应的主号。 设备文件次号

每一个设备文件都有一个次号。“次号”是一个24位的十六进制数字,其定义了:

这个设备在系统中的物理的位置。

设备存储选项。例如磁带,磁带有特殊的存取选项,使用/不使用硬件压缩,和定义写到磁带上的数据格式密度等。 设备文件名

设备文件名遵循一个标准的命名的约定。这种约定使分辩那一个设备文件关联那一个设备变得很容易。以下的章节会讨论命名规则的细节。

使用ioscan列出设备文件名

# ioscan -fun 列出所有的设备和对应的设备文件名 # ioscan -fun disk 列出所有的磁盘设备和设备文件名

# ioscan -funC tape 列出所有的磁带设备和磁带设备文件

虽然ls -l命令可以列出你的系统中的设备文件。但是它没有指明那一个设备文件对应那一个设备。

ioscan -fun命令提供了一种方便的机制来找到设备文件对应系统中的硬件的路径。在每一个硬件路径下,ioscan -fun列出了与每一个硬件路径相关联的设备文件。由于一些设备有多个存取选项,ioscan可以列出一个设备对应的多个设备文件。 例子:

#ioscan -fun列出所有的设备和设备关联的设备文件名 # ioscan -funC disk  仅列出磁盘类的设备和关联的设备文件名 #ioscan -funC tape 仅列出磁带设备和关联的设备文件名 #ioscan -funH 2/0/1.6.0  仅列出在2/0/1.6.0位置的设备的设备文件名

使用lssf列出设备文件

? ?

列出设备文件的特征 语法:

/usr/sbin/lssf path [pah -] ?

例子:

# lssf /dev/rdsk/clt6d0

disc3 card instance 1 scsi target 6 scsi LUN 0 section 0 at address 52.6.0 /dev/rdsk/clt6d0 # lssf /dev/rmt/0mn

tape2 card instance 1 SCSI target 0 SCSI LUN at@t no rewind best density available at address 52.0.0 /dev/rmt/omn

许多设备有多个相关联的设备文件。例如,上例中的磁带设备有八个设备文件。这是因为许多设备可以使用不同的存取选项来存取。每一个设备文件代表一个存取选项。

ioscan列出每一个设备的设备文件,但是不指明设备文件对应那一个设备。lssf命令可以选择用来判断每一个设备文件的特征。lssf 告诉你: 这个设备文件使用的哪一个驱动程序 设备的硬件地址信息

任何设备文件使用的设备存取选项。 问题:

我们已经有三个命令可以用来浏览设备文件:ls -l,lssf,和ioscan。请判断在以下情况下应该使用那个命令:

1.列出硬件地址为2/0/1.1.2的磁带驱动器的设备文件。 2.列出所有的磁盘设备文件。

3.那一个命令可以用来判断通过设备文件/dev/rmt/c0t0dBESTnb存取的硬件路径。

4.那一个命令可以告诉你设备文件/dev/rmt/c0t0d0BESTnb的设备选项是什么。

/dev目录的布局

这一部分会介绍系统对一个设备文件取名的命名规则。一个容易理解的命令规则会让你更容易地选择和使用你系统中的设备文件。

在多数UNIX系统中,所有的设备文件都是存在于/dev目录下的。一些设备文件事直接在/dev目录下,而另外一些被组织在/dev下的子目录下。一下是一些重要的设备文件目录的列表

/dev 包含所有的终端,moderm,lan和打印机的设备文件。 /dev/dsk 包含所有的块磁盘设备文件 /dev/rdsk包含有所有的裸磁盘设备文件 /dev/rmt 包含有所有的磁带设备文件

设备文件命名规则

默认的情况。操作系统给一个设备文件取名的时候是依据一个标准的命名原则。虽然你可以任意对一个设备文件取名。但是使用一个标准的命名规则会使用定位你的设备文件十分容易。 界面卡号

内核自动对系统中的每个设备和界面卡赋予一个号码。这个号码在ioscan -f输出的“I\

磁盘,磁带或者CD ROM的设备文件名中的\指明这个设备连接的界面卡的数字。ioscan命令显出的所有的磁盘都有一个相同的以”C0\这是因为SCSI卡的号码为\。

注意每一个设备文件都有一个号码,这个号码只是操作系统专用的一个号码,并不被用来对应设备文件名。 ioscan -fun SCSI目标地址

设备文件的“t#”部分确定这个设备文件相关联设备的SCSI目标地址。这个SCSI目标地址是通过设备自身上的跳线或者DIP开关来设置的。一个SCSI设备的硬件路径的倒数第二个字符就是这个设备的SCSI目标地址。例如,在上例的ioscan输出中,在8/12.3.0的磁盘的SCSI地址为“3”。8/12.6.0这块磁盘的SCSI目标地址为“6”。 SCSI逻辑单元号

逻辑单元号(LUN)能够被用来识别一个磁带库的机器手,或者是一个磁盘阵列的一个逻辑单元。对大多数的SCSI设备来说,LUN号都是“0”。每一个SCSI设备的LUN号出现在设备硬件路径的最后一个小数点后。 设备存取选项

设备文件名的最后一部分是这个设备文件的存取选项。磁带机设备文件名可能有多个选项。设备和设备的选项是不同的。

磁盘设备文件名

每一个磁盘和CD-ROM都有两个设备文件: 一个块设备文件在/dev/dsk下面 一个字符设备文件在/dev/rdsk下面 磁带设备文件名

磁带设备文件在/dev/rmt目录下,遵循c#t#d#[选项]的命名规则。同磁盘和CD-ROM不同,磁带驱动器通常都支持多个选项。

如何创建一个设备文件

? ? ? ?

自动配置 insf mksf mknod

大多数情况,你不需要创建设备文件。当第一次安装操作系统的时候。insf在进行硬件探测的时候会自动创建所有发现的设备的设备文件。每一次系统重启动,insf会创建新连接到系统的设备的设备文件。

在一一些特殊的情况下,你会需要手工创建或是修改设备文件。

自动配置

什么是自动配置

在系统启动的时候,内核会执行一系列系统初始化的工作,包括探测所有的安装在系统中的硬件。在进行硬件探测的时候,内核会确认所有的设备-总线,适配器,设备适配器-这些能够被自动配置的设备。内核绑定一个合适的驱动程序给每一个检测到的设备。

在完成系统初始化后,内核会激活init命令。init进程回读取/etc/inittab文件来激活几个系统启动的命令,包括/sbin/ioinitrc。

第一步,initrc会读取/etc/ioconfig文件的内容,然后传送设备映射信息道内核的数据结构中,io_tree。下一步,ioinit执行insf。insf会为新的设备创建设备文件。它同样会更新/etc/ioconfig文件和内核树。

配置磁盘

说明:本章的内容以HP-UX为例,其它的操作系统可能会有所不同。

目标

完成这一章,你能够做以下事情:

? ? ? ? ?

描述进行磁盘分区的原因 使用整盘方式对磁盘进行分区 描述LVM的特征和优点

定义术语:卷组,逻辑卷,和物理卷,并且解释它们之间的关系。 在命令行创建物理卷,卷组,和逻辑卷

磁盘分区

? ?

每一个磁盘都可能有一个或多个分区 每一个分区能够被用于:

 -一个文件系统  -交换空间  -裸数据  -引导区

系统通过分区来组织磁盘空间,分区就是为实现特定目的而分配的一部分磁盘空间。一个分区可以于跨越一个磁盘或多个磁盘,也可以是一个磁盘的一部分。每一个分区都能包含:

? ? ? ?

一个文件系统(为文件和目录分配的空间) 一个交换区(内核用来补充物理内存的空间) 裸设备(应用程序直接存取的数据,例如数据库) 引导区(包含引导过程中使用的工具)

HP-UX提供了两种方式来创建和管理磁盘分区:

? ?

整盘方式

逻辑卷管理(LVM)

系统中的一些磁盘可以使用整盘的方式来配置,而另外一些磁盘可以使用LVM来配置。两种技术可以用在同一个系统中,但是不能同时用在同一块磁盘上。 两种方式都有其优点和缺点。整盘方式容易配置,而LVM提供了更多的灵活性。

整盘方式分区

使用整盘方式,一个磁盘可以有五种不同的配置方式。

? ? ? ?

磁盘全部被一个单个文件系统使用 磁盘全部作为一个交换区 磁盘全部作为一个裸分区

磁盘的一部分作为一个文件系统,剩下的部分作为一个交换区

?

磁盘被配置为一个引导盘,其中包含root文件系统,一个交换区和一个2M的特殊的引导区(其中包括系统引导时使用的工具)。

虽然整盘方式分区使用起来十分容易,但是它有以下几个限制:

? ? ?

一个文件系统不能够跨越多个磁盘 一个磁盘分区只能供一个文件系统使用

如果需要更多的磁盘空间,扩展一个文件系统会十分困难。

由于这些原因,许多管理员选择使用逻辑卷管理器来代替整盘方式管理磁盘空间。

LVM磁盘分区

逻辑卷管理(LVM)使你能够组合几个磁盘(在LVM中称为“物理卷”)上的空间来形成一个“卷组”。你可以继续细分这个卷组中的空间为“逻辑卷”(在LVM中等价于一个分区)。逻辑卷管理(LVM)克服了整盘方式的限制,使以下事情变得可能:

? ? ?

创建跨越多个磁盘的逻辑卷 在一个磁盘上创建多个逻辑卷 在需要时扩展和缩小逻辑卷的大小

物理卷

LVM管理的一块磁盘被称为一个物理卷。当一块磁盘被LVM使用之前,必须先在磁盘上面创建一些特殊的数据结构。一旦这些数据结构被创建,这块磁盘就被认为是一个物理卷,同时就可以被加入到一个卷组中去。 卷组

卷组是一个或者多个物理卷的组合。一个卷组中的物理卷组合在一起,可以被分割为一个或者多个逻辑卷。卷组通常遵循以下的命名原则:

? ? ?

/dev/vg00 /dev/vg01 /dev/vg02....

你可以使用任何你喜欢的名字对一个卷组命名。vg00卷组是一个特殊的卷组,被作为\卷组”,其中包含默认的引导盘和大部分操作系统。 逻辑卷

一个卷组中的磁盘空间可以被分割为一个或者多个逻辑卷。一个逻辑卷和一个分区类似,也可以包含一个文件系统,交换区,或者裸分区。 逻辑卷能:

? ? ?

包含所有或一部分物理卷的空间 跨越多个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”.一个物理卷被分成许多\Extents”(PEs),当物理卷被加入到一个卷组的时候,这是一个有效的分配单元。 一个逻辑卷是由一系列的有连续编号的“Logical Extents\逻辑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 #浏览\逻辑卷的细节。

创建文件系统

目标

学完这一章,你能够做以下事情:

? ? ?

以命令行方式创建文件系统。 以命令行方式装载或者卸载文件系统 通过/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文件系统有效,能够被设置用来提高性能。

本文来源:https://www.bwwdw.com/article/yse3.html

Top