- 论坛徽章:
- 0
|
初学unixware 7的进来看看,希望对你有些帮助!
第十二章 文件系统和硬盘管理
UnixWare 7文件系统含有一些专门的数据结构,包括数据块、i节点和超级块。
数据块:块是硬盘上存放数据的单位。某些文件系统使用可边的块长度,以最大限度地使用存储空间。Vxfs文件系统能支持1024字节、2048字节、4096字节和8192字节共四种逻辑块长度。数据块既可以包含目录项,也可以包含文件数据。目录的目录项由i节点号和文件名组成。
i节点:UNIX核心中的文件系统代码,借助文件的i节点号对文件进行访问。在一个文件被创建时,系统便给这个文件指定一个i节点号。i节点是信息节点(information nodes)。系统使用:
●节点0表示已被删除的文件和目录。
●节点1表示本节点未被使用。
●节点2(root目录),作为每个被安装的文件系统的层次结构的顶层。
显示某文件的i节点号和文件名字,命令:
ls –id
超级块:是文件系统中一个特殊的数据块,它包含了关于这个文件系统的全部信息。超级块包含的信息对安装文件系统和访问它的数据是必须的,这些信息包括:
●文件系统的长度
●自由i节点的数量
●文件系统中可用自由空间的数量
当文件系统被安装时,系统把文件系统超级块中的信息读入内存。
块设备特殊文件:
在/dev目录下,使用命令:ls –l 或者命令:l 列出特殊设备文件清单时,在单个权限字段前的第一列如果是字符b,则表明是块设备特殊文件,文件系统是使用块设备的实例。如果是字符c,则代表是字符设备,它包括串口、并口、硬盘驱动器和磁带机等(后两个设备同时也是块特殊设备)。
裸设备接口:绝大多数块特殊设备还有一个称为字符设备的接口。这个接口被称为裸(raw)设备接口。裸设备是字符设备,也就是到一个现有块设备的字符接口。如果运行命令ls可以辨认裸设备接口,当文件名或子目录有一个前缀字符r时(例如,软盘的裸设备接口是/dev/rdsk/f03ht),它就是这个设备的裸设备接口。另外,裸设备接口文件权限字段前的第一列也有一个字符c。裸设备接口允许有效传送大于1KB的数据。
主设备号和次设备号:
每个特殊设备文件都有与它相关的主设备号和次设备号。UNIX的核心使用特殊设备文件来访问硬件设备。主设备号和次设备号一起表示一种设备驱动程序代码。设备驱动程序代码是核心访问硬件设备需要的。主、次设备号的意义为:
●主设备号决定哪个设备驱动程序被访问(选择设备驱动程序)
●次设备号用来对这个设备驱动程序处理给定的设备所使用的不同操作模式进行选择。
主设备号:每个给定类型的设备都有一个唯一的主设备号,例如:
●硬盘驱动器具有主设备号7679
●软盘驱动器具有主设备号1
●磁带驱动器具有主设备号111
应该注意,一个系统的主设备号可能与另一个系统的主设备号不同。
次设备号:主设备号使用次设备号来进一步标识要访问的这个物理设备。次设备号指定由这个设备使用的子程序。例如,磁带机的主设备号是111,它的几个不同的设备文件访问的虽是同一个设备,但完成不同的功能。下面主设备号号和不同的次设备号表示同一磁带机的不同磁带设备文件:
111,0 非重新拉紧,倒带设备(设备文件/dev/rmt/ctape1)。
111,1非重新拉紧,非倒带设备(设备文件/dev/rmt/ntape1)。
111,4 关闭时卸载设备(设备文件/dev/rmt/utape1)。
要观察磁带机的主设备号和次设备号,命令:
l /dev/rmt | more
创建特殊的设备文件:
绝大多数特殊设备文件是在系统安装过程中自动地为设备创建的。如果特殊设备文件被删除,必须重新创建丢失的特殊设备文件。可使用mknod命令:
mknod device_name [c | b] major minor
其中,device_name是设备名字,major为主设备号,minor为次设备号。方括号中的c和b分别代表所创建的设备文件或是字符设备文件或是块设备文件。
例如,要重新创建磁带驱动器设备文件/dev/rmt/ctape1,使用命令:
mknod /dev/rmt/ctape1 c 111 0
不过,使用mknod命令重新创建设备文件后,常常还必须修改其权限字段内容、主和组等,使它们与原文件一致。
可将/dev目录下设备文件的原始信息作为系统日志保存起来,以方便可能需要的设备文件重新建立。要打印/dev目录的付本,命令: l –iR /dev lp
设备数据库文件:/etc/device.tab
该文件保存的有关每个设备属性的清单。当新设备被加到系统,这个设备数据库文件便自动地修改。可用命令getdev得到一个在设备数据库文件中定义的设备清单。该清单将给出可以使用devattr命令的设备列表。比如,要观察第一个硬盘的属性,命令:
devattr –v /dev/rdsk/c0b0t0d0s0
devattr命令也可以识别作为命令行参数的设备别名。例如,第一个设备别名可以:
●硬盘是disk1
●软盘是diskette1
●CD-ROM是cdrom1
●磁带机是ctape1
可使用prtconf命令显示系统配置的内存数量和所配置的设备。
/etc/default/vxfs文件的内容包括:(包含diskadd所使用的文件系统默认值)
BLKSIZE=1024,2048,4096,8192(在创建文件系统时,选择文件系统的块大小)
MNTOPT=mincache=closesync(用来安装文件系统的mount命令的选项)
MKFSTYP=4(vxfs文件系统的类型(1-4))
LABELIT=YES(文件系统的名字(disk#,partition#,slice#等))
MAXSIZE=2147483648(文件系统的最大长度)
/etc/vfstab文件包含的安装文件系统时的信息:
/dev/dsk/device_name 块设备文件
/dev/rdsk/device_name 由fsck使用的裸设备文件
/directory_name 用来安装文件系统的目录
vxfs 文件系统类型的名字
l 数字项,告诉fsck这个文件要自动的被检查
yes/no yes表示这个文件系统在系统启动时,被由mountall自动的安装。
这些默认的mount选项也包括:
micache=closesync 指明在文件被关闭时,数据被立即写到硬盘上。由于需要额外的时间进行写盘操作,这些特性可能影响系统性能。要优化系统的性能,可以从/etc/vfstab文件中将这个记录删除。在这样做之前,先拆卸文件系统。在完成对/etc/vfstab文件修改后,重新安装这个文件系统。
虽然不能对文件/etc/vfstab增加一些字段(字段设为置是固定的),但是可以给第7个字段增加mount选项。例如,为了安装开启大文件处理能力的文件系统,则可在字符串mincache=closesync的后面加上逗号“,”以及字符串largefiles,使这行成为:
mincache=closesync,largefiles
增加大文件支持:
在默认情况下,所创建的 vxfs文件系统支持的文件尺寸最大到2GB。vxfs文件系统能够支持文件尺寸大于2GB的文件。使用mkfs命令可以决定vxfs文件系统是否支持大文件系统。例如,如果 /home文件系统驻留在/dev/rdsk/c0b0t0d0s4上,可以使用命令:
mkfs –m /dev/rdsk/c0b0t0d0s4
敲入这个命令后,如果这个文件系统对大文件是:
●支持的,执行该命令后,将在屏幕上显示字符串:largefiles
●不支持的,执行该命令后,将在屏幕上显示字符串:nolargefiles
只有vxfs的第四版才支持大文件。应注意,在完成大文件支持时,有些第三放厂家的后备程序可能不能后备大的文件。
下面是使用命令mkfs创建文件系统并增加largefiles支持的步骤:
1)、后备文件系统中的数据
2)、运行mkfs –m命令,以确定创建文件系统所使用命令的语法结构。
3)、拆卸这个文件系统
4)、运行mkfs命令,创建文件系统,把nolargefiles选项改为largefiles。例如,重新创建/home文件系统,命令:
mkfs –F vxfs –o ninode=65536,bsize=1024,version=4,inosize=256,logsize=1024,largefiles /dev/rdsk/c0b0t0d0s4 7936110
5)、安装这个文件系统
6)、恢复用户数据。
检查和修复文件系统:
在root文件系统上,必须是单用户模式下运行fsck命令;对于非root文件系统,运行fsck命令时,文件系统必须是拆卸的;当运行fsck命令时,如果没有指定文件系统的设备名字,那么/etc/vfstab文件中列出的全部字符文件中,那些具有fsckdev和fsckpass字段记录项的文件才被检查。
如果在运行fsck命令时指定了文件系统的 设备名,那么还必须指定文件系统的类型。不是fsck的全部功能都可用于每一个文件系统。
可以使用-F选项指定文件系统类型。例如,要说明驻留在第4片上的文件系统为vxfs文件系统类型,使用命令:
fsck –F vxfs /dev/rdsk/c0b0t0d0s4
下面仅讨论vxfs文件系统上运行fsck命令:
1、快速文件系统检查:
可以使用命令:
fsck –F vxfs /dev/rdsk/c0b0t0d0s4
在进行快速文件系统检查时,如果不需要重放意向日志,屏幕上将显示如下提示:
file system is clean – log replay is not required
如果需要重放意向日志,屏幕信息会提示:
log replay in progress
replay complete – marking superblock as clean
经过这样的检查后,如果文件系统仍然标记为“clean”(没毛病的),那么就必须进行完全的文件系统检查。
2、完全的文件系统检查:
在root文件系统上运行fsck命令,应该首先拆卸所有其他文件系统。例如,要检查和修复安装在/dev/rdsk/c0b0t0d0s4上的/home文件系统,可以按照下面两种方法中的一种进行:
●运行fsck命令并且对fsck所提出的全部问题都回答yes,命令:
fsck –F vxfs –y /dev/rdsk/c0b0t0d0s4
在指定了-y选项时,运行了意向日志重放之后,fsck将进行完全的检查(如果需要的话)。
●运行完全的检查,命令:
fsck –F vxfs –ofull /dev/rdsk/c0b0t0d0s4
如果fsck发现root文件系统已被修改,它将返回一个值指示或者重新安装root文件系统,或者自动地重新引导系统。只有在被破坏度较轻的情况下,root文件系统才被重新安装。
3、运行ncheck命令:
如果fsck命令报告文件出错,最好退出这个命令的运行,并运行ncheck命令,该命令把i节点号与文件名字联系起来。
有些时候是i节点的问题,不是当前文件的问题。要解决这样的问题,可以拷贝这个文件,以建立一个新的i节点号,然后再删除原始文件。
要在root文件系统上运行ncheck命令,使用命令:
ncheck –i inode_number /dev/root
如果要使用这个命令检查其他文件系统,也需要在命令中指定这个文件系统的裸设备名字。如果在命令中没有指定文件系统,ncheck将对文件/etc/vfstab中列出的全部文件系统进行检查。
配置附加硬盘和文件系统:
硬盘设备名字约定:对于SCSI和非SCSI硬盘设备名字的约定,包括它们的块设备文件名字和字符设备文件名字。硬盘的块设备的目录项位于/dev/dsk目录下;硬盘的字符设备的目录项位于/dev/rdsk目录下。
硬盘设备的文件名有以下两种形式:
/dev/[r]dsk/c#b#t#d#s#
/dev/[r]dsk/c#b#t#d#p#
其中:
c # 是SCSI主接口卡或IDE控制器号
b # 是HBA总线号。对IDE硬盘#总是0
t # 是SCSI目标控制号(也称目标ID号),对于第一个IDE硬盘,#是0,对于第二个IDE硬盘,#是1。
d # 是SCSI硬盘的逻辑单元号。对于IDE硬盘,#总是0。
s # 是UNIX分区中的片号
p # 是硬盘分区号。p0对应的是整个硬盘。
例如,/dev/rdsk/c0b0t1d0s0 这个设备文件名代表的是一个硬盘,具体含义:这是一个连接到第一个主机接口卡、在第一条总线上并且其目标ID为1、逻辑单元号为0的硬盘。在具有MPIO(多路舒服/输出)的系统中,它描述对存贮设备的处理。实际上是给存贮介质呈现的第一个通道。
例如,在目标0(即目标ID号为0)上的硬盘,被认为是/dev/rdsk/c0b0t0d0s0。
使用diskadd配置硬盘:
在硬盘被正确的挂接到系统后,UNIX系统便能识别它。但要使用它,还必须通过diskadd命令对它进行配制:
1)、调用fdisk,创建硬盘分区(partition)
2)、调用disksetup:
●完成介质表面分析
●创建VTOC表
●建立硬盘的坏道表和坏扇区表(作为坏道表的替换)
●创建分区片(slice)
●发出mkfs调用,创建文件系统和lost+found目录
●创建文件系统安装点
●安装文件系统
●修改/dev/vfstab
增加硬盘的具体步骤:
1)、作为root在系统上注册
2)、敲入命令:diskadd
如果增加的是系统上的第二块硬盘,那么硬盘的盘号应为1。对以后增加的硬盘,则必须使用完整的硬盘设备名,其形式为:/dev/dsk/c # b # t # d # 。例如,要在第一块主机接口卡上增加第3个SCSI硬盘,应该使用命令:
diskadd /dev/dsk/c0b0t2d0
在提示处敲入y,继续命令的执行。这时diskadd调用fdisk。
3)、创建分区:
●根据提示,敲入y,建立单个UNIX分区(把整个硬盘都划分给UNIX系统)并标记被激活状态。
●根据提示,敲入n,创建分区。
4)、进行介质表面分析:
●根据提示,敲入y,跳过表面分析
●根据提示,敲入n,进行表面分析
5)、敲入在这个硬盘上要创建的片数(文件系统数量)
6)、敲入用来安装这个文件系统的目录名字。目录名字必须是绝对路径名。如果这个目录不存在,应该创建它。
7)、敲入文件系统类型或按回车符,选择系统默认的vxfs。
8)、选择块的大小,按回车键使用默认的1024字节作为块的大小。
9)、敲回车键,则在系统重新引导时,自动的安装这个文件系统;敲入no,则不在系统重新引导时自动的安装文件系统。
10)、如果选择了安装一个以上文件系统,要再次进行第6至第9步。
11)、以柱面为单位指定文件系统的大小(1MB空间大约是一个柱面)。如果选择安装更多的文件系统,将提示要求指定附加的文件系统的长度。
12)、根据提示,敲入y,对文件系统长度进行确认。如果回答n,则必须重复第5至第11步,重新创建文件系统。
13)、敲入节点数量。
●按回车键,为文件系统分配系统默认的节点数量
●不使用默认值敲入节点数量
这样操作后,就可以为这个新的文件系统创建或移动文件到这个新的文件系统中。
管理VTOC表:
使用命令prtvtoc显示PDINFO(Physical Disk information物理硬盘信息)。可以在任何硬盘上运行这个命令,但它必须总是在片0上运行,格式:
prtvtoc –p /dev/rdsk/c0b0t0d0s0
VTOC表还包含了片信息(片可以是文件系统、交换空间或由应用空间保留下的空间,比如留给数据库的空间等)。UNIX分区中,16片是默认创建的。与每片相关的信息包括:
●它的起始扇区和起始柱面
●文件系统长度(或片的长度)
●片的类型(如root、boot、swap和stand)
●权限
默认情况下,prtvtoc命令显示片信息,命令:
prtvtoc /dev/rdsk/c0b0t0d0s0
在命令中使用-f选项指定一个文件名,目的是把命令输出重新定向到这个文件中,命令格式为:
prtvtoc –f /tmp/vtoc /dev/rdsk/c0b0t0d0s0 |
|