免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: luren04
打印 上一主题 下一主题

【申请加精】来自UC的《Solaris 10红宝书》系列在线课程 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-04-14 13:41 |只看该作者
8.3.5 设备和硬件栏目介绍
SMC的“设备和硬件”栏目目前只有一个可管理的硬件,就是“串口”,其界面如图8-30所示。


图8-30 设备和硬件栏目

从图8-31和图8-32中可以看出,我们可以管理串口的哪些内容。


图8-31 串口的基本管理


图8-32 串口的高级管理

论坛徽章:
0
32 [报告]
发表于 2008-04-14 13:42 |只看该作者

Solaris 10设备与文件系统管理

第11章 设 备 管 理   
Solaris系统操作环境下的设备管理一直在不断的发展。Solaris 10比以前的Solaris版本又增添了新的设备和设备管理命令。本章主要介绍一些主要的Solaris设备的管理信息。

论坛徽章:
0
33 [报告]
发表于 2008-04-14 13:45 |只看该作者
11.2 硬盘管理   
硬盘是存储数据的设备,在整个系统中具有很重要的地位。详细了解硬盘的管理方法是非常必要的。本节主要介绍硬盘的有关知识和管理方法。

11.2.1 硬盘管理概述
1.硬盘标识(Disk Labels)
硬盘标识是专门存放硬盘的控制、结构和盘片信息的地方。目前,Solaris 10支持两种硬盘标识:VTOC和EFI。VTOC是传统的硬盘标识,但它只能创造小于1 TB大小的文件系统(1TB=1000GB)。EFI标识可以支持操作系统创造大于1 TB的文件系统。

需要指出的是,Solaris 10在运行64位内核时支持多TB的UFS文件系统,详细情况请见第12章文件系统的介绍。而在使用EFI标识的情况下,运行32位的Solaris 10系统也可以支持大于1TB的UFS文件系统。

EFI标识硬盘虽然比VTOC标识硬盘支持文件系统大,但是它也有一些限制:

 SCSI驱动器ssd当前支持的磁盘最大只能为2 TB。如果你需要大于2 TB容量的磁盘,请使用磁盘和存储管理产品(如Solaris卷管理器)来创建较大的设备。

 EFI硬盘标识不支持IDE硬盘。

 EFI标识硬盘不能作为启动盘启动操作系统。

 EFI标识硬盘的全盘表示为cxtydz。

 不能用Solaris Management Console管理工具来管理EFI标识硬盘,但可以用format工具来管理。

2.盘片(Disk Slices)介绍
一个物理盘划分为几个部分,单个部分被称为盘片。存储在硬盘的文件包含在文件系统中,而每个文件系统所在的硬盘部分是一个盘片(Disk Slices)。当我们设置盘片时,需要记住下面的概念:

 每个盘片上装有一个文件系统;

 没有文件系统可以跨越多个盘片。

对于SPARC和x86系统平台,盘片的设置稍微有所不同,下面我们来汇总一下这些不同,如图11-2所示。

表11-2 盘片在SPARC和x86上的不同

SPARC平台
x86平台

全部的硬盘都贡献给了Solaris
硬盘使用fdisk命令来分区,一个分区可装一个操作系统

VTOC(lable标识)的硬盘可以分为8个盘片,号码是0~7
VTOC(lable标识)的硬盘的fdisk分区可以分为10个分区,号码为0~9

EFI(lable标识)的硬盘可以分为7个盘片,号码为0~6
EFI(lable标识)的硬盘可以分为7个盘片,号码是0~6


需要说明的是,在x86平台的fdisk分区,fdisk分区是硬盘dos分区的一部分,是为了安装多操作系统时,留给其他一些其它的操作系统(如Solaris)的。盘片常用方法如表11-3所示。

表11-3 盘片的常用方法

盘片
文件系统
通常情况下,可在服务器或客户机上找到
解 释

0
Root(/)
都能
安装操作系统的文件和目录,系统不能在EFI lable的硬盘上启动

1
swap
都能
提供虚拟内存

2

都能
在VTOC硬盘下,表示整个硬盘。大小不能被改变

在EFI硬盘下,只是一个普通的盘片号码

3
/export
都能
用户可以按照自己的需要定义这个盘片,也可以用来安装客户机需要的操作系统版本

4


都能
用户可以按照自己的需要定义这个盘片

5
/opt
都能
用户可以按照自己的需要定义这个盘片,可以用来安装一些应用软件。如果在盘片没有分配给/opt文件系统空间的话,这个/opt目录大小为0

6
/usr
都能
主要安装一些命令、文档和常用库文件等

7
/home或

/export/home
都能
主要是安装一些用户的文件

8
N/A
N/A
不适用VTOC硬盘

EFI硬盘的保留盘片,不能修改和删除这个盘片

9

都能
不使用EFI硬盘

VTOC硬盘上保留盘片


3.硬盘分区表
硬盘标识的一个重要的组成部分就是分区表,它存放着盘片、盘片的边界和盘片的大小等信息。查看分区表的内容可使用format命令。表11-4就是描述分区表的术语。

表11-4 分区表术语

分区表术语

描 述

号码
0~7
VTOC硬盘:分区或盘片号0~7

EFI硬盘:分区或盘片号0~6

Tag
0=UNASSIGNED 1=BOOT

2=ROOT 3=SWAP 4=USR

5=BACKUP 7=VAR

8=HOME 11=RESERVED
数字号码表示文件系统被挂接(mount)的分区号

Flags
wm
这个分区可以写和挂接(mount)

wu
这个分区是可以写的,但是不能被挂接。这是swqp分区

rm
这个分区可以被读,也可以被挂接


4.Format命令简介
Format命令是系统管理员使用管理硬盘的工具。它的用处和详细信息如表11-5所示。

表11-5 Format工具的用处和详细信息

用 处
详细信息

在操作系统上寻找所有的硬盘驱动
报告下列信息:

目标所在的位置

硬盘的结构

硬盘是否被格式化

硬盘是否有被mount上的分区

找回硬盘标识
方便硬盘修复操作

修复有缺陷的硬盘扇区
允许管理员修复硬盘驱动或者回到出厂设置

格式化和分析硬盘
创建扇区和校验扇区

硬盘分区
硬盘分成盘片并在每个盘片上创建单个文件系统

增添硬盘标识
写硬盘名和控制信息到硬盘,目的是为了硬盘的恢复


11.2.2 查看硬盘信息
硬盘的信息主要包括硬盘的使用情况、分区情况和标识内容。

1.查看硬盘的使用情况
键入du命令可以查出每个文件或目录占用了多少个512字节的硬盘块。若某目录含子目录,则在计算块数时,子目录中的内容也包括在内。

host%du

2913 ./3.0templates

639 ./Srt

347 ./Howto

1998 ./Clipart

607 ./Newtemplates

38 ./Modemstuff

2004 ./Config/Art

6593 ./Config

13280

host%

上面例子中的输出以512字节的块为单位,欲换算成兆字节(MB),应除以2048,上例中,13280/2048=6.48MB。

也可以用du-k列出以K为单位的输出结果,使用du-s可以只列出总空间大小而无须列出详细目录大小。

2.查看硬盘的分区的情况
使用format命令可以查看到硬盘分区表的信息:

# format

Searching for disks...done

Specify disk (enter its number):1

Selecting c0t0d0

format> partition

partition> print

Current partition table (original):

Total disk cylinders available: 8892 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks

0 root wm 1110 - 4687 1.61GB (0/3578/0) 3381210

1 swap wu 0 - 1109 512.00MB (0/1110/0) 1048950

2 backup wm 0 - 8891 4.01GB (0/8892/0) 8402940

3 unassigned wm 0 0 (0/0/0) 0

4 unassigned wm 0 0 (0/0/0) 0

5 unassigned wm 0 0 (0/0/0) 0

6 unassigned wm 0 0 (0/0/0) 0

7 home wm 4688 - 8891 1.89GB (0/4204/0) 3972780

partition> q

format> q

#

上面的信息显示硬盘共有三个分区,分布在0,1,7号盘片上,2号盘片标识整个硬盘。

3.查看或更改硬盘标识内容
(1)先来查看硬盘的标识。

检查硬盘标识的命令是prtvtoc。需要说明的是,查看EFI标识也使用这个命令。

使用prtvtoc命令查看VTOC标识:

# prtvtoc /dev/rdsk/c0t0d0s0

* /dev/rdsk/c0t0d0s0 partition map

*

* Dimensions:

* 512 bytes/sector

* 63 sectors/track

* 15 tracks/cylinder

* 945 sectors/cylinder

* 8894 cylinders

* 8892 accessible cylinders

*

* Flags:

* 1: unmountable

* 10: read-only

*

* First Sector Last

* Partition Tag Flags Sector Count Sector Mount Directory

0 2 00 1048950 3381210 4430159 /

1 3 01 0 1048950 1048949

2 5 00 0 8402940 8402939

7 8 00 4430160 3972780 8402939 /export/home

使用prtvtoc命令查看EFI标识:

# prtvtoc /dev/rdsk/c3t1d0s0

* /dev/rdsk/c3t1d0s0 partition map

*

* Dimensions:

* 512 bytes/sector

* 2479267840 sectors

* 2479267773 accessible sectors

*

* Flags:

* 1: unmountable

* 10: read-only

*

* First Sector Last

* Partition Tag Flags Sector Count Sector Mount Directory

0 2 00 34 262144 262177

1 3 01 262178 262144 524321

6 4 00 524322 2478727100 2479251421

8 11 00 2479251422 16384 2479267805

从上面可以出,EFI标识写到第34扇区,从34扇区以后才进入硬盘分区。

(2)更改硬盘标识。

将硬盘从VTOC标识更改为EFI标识的方法是:先选定需要更改的硬盘号,然后再键入lable命令,就会出现让你选择标识类型的菜单。过程如下:

# format -e

Searching for disks...done

AVAILABLE DISK SELECTIONS:

1. c1t0d0 <SunW18g cyl 7506 alt 2 hd 19 sec 248>

/sbus@2,0/QLGC,isp@2,10000/sd@0,0

2. c1t1d0 <SunW18g cyl 7506 alt 2 hd 19 sec 248>

/sbus@2,0/QLGC,isp@2,10000/sd@1,0

3. c1t8d0 <SunW18g cyl 7506 alt 2 hd 19 sec 248>

/sbus@2,0/QLGC,isp@2,10000/sd@8,0

4. c1t9d0 <SunW18g cyl 7506 alt 2 hd 19 sec 248>

/sbus@2,0/QLGC,isp@2,10000/sd@9,0

Specify disk (enter its number): 4

selecting c1t9d0

[disk formatted]

format> label

[0] SMI Label

[1] EFI Label

Specify Label type[0]: 1

Ready to label disk, continue? yes

format> quit

完成。

11.2.3 修复坏的硬盘扇区
硬盘故障发生后,我们首先关注的是硬盘上的数据是否丢失。我们可以先将数据备份,再修复硬盘的坏扇区,如果还是不能修复,就需要换一块新的硬盘了。

下面介绍怎样修复坏硬盘扇区。

(1)将文件存档。

如果硬盘坏了,但还可以访问硬盘,那么就把硬盘上的所有文件系统做一下ufsdump。ufsdump命令的用法见第12章。

(2)将硬盘上的文件拷出。

若无法对硬盘运行ufsdump,那么找一个同类型硬盘,联入系统,使用dd命令从坏盘上拷出数据,

例如,从主盘/dev/rdsk/c0t0d0s2拷贝到目的盘/dev/rdsk/c0t2d0s2,使用命令:

# dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t2d0s2 bs=128k

dd的使用详见dd(1M)手册。

(3)分析硬盘扇区错误。

 成为超级用户或授权角色用户。

 卸载故障盘:

# umount /dev/dsk/device-name

 使用format命令:

# format

 选择硬盘:

Specify disk (enter its number):1

selecting c0t2d0:

[disk formatted]

Warning: Current Disk has mounted partitions.

 选择分析菜单:

format> analyze

 键入setup命令设置分析参数:

analyze> setup

Analyze entire disk [yes]? n

Enter starting block number [0, 0/0/0]: 12330

Enter ending block number [2052287, 2035/13/71]: 12360

Loop continuously [no]? y

Repair defective blocks [yes]? n

Stop after first error [no]? n

Use random bit patterns [no]? n

Enter number of blocks per transfer [126, 0/1/54]: 1

Verify media after formatting [yes]? y

Enable extended messages [no]? n

Restore defect list [yes]? y

Create defect label [yes]? y

 使用read命令找到错误的块

analyze> read

Ready to analyze (won’t harm SunOS). This takes a long time,

but is interruptible with Control-C. Continue? y

pass 0

2035/12/1825/7/24

pass 1

Block 12354 (18/4/1, Corrected media error (hard data ecc)

25/7/24

^C

Total of 1 defective blocks repaired.

可见,数据块12345有错误,需要被修复。

(4)下面开始修复错误扇区。

 成为超级用户或授权角色用户。

 使用format命令:

# format

 选择硬盘:

Specify disk (enter its number): 1

selecting c0t3d0

[disk formatted]

format>

 选择repair命令:

format> repair

 键入错误的块的号码:

Enter absolute block number of defect: 12354

Ready to repair defect, continue? y

Repairing block 12354 (18/4/1...ok.

format>

(5)重新格式化硬盘。

若硬盘上有坏块,则重新格式化有时会解决问题。格式化硬盘的命令是format,其用法和修复扇区错误相似,就是把repair命令换成format命令,详细信息见format(1M)手册。但请记住,格式化硬盘会毁掉磁盘上面的所有数据,格式化完成后还须使用newfs命令重新建立文件系统。

(6)换下旧硬盘。

如果重新格式化和修复坏块都解决不了问题时,就要换下此坏硬盘,方法详见11.2.4节。

11.2.4 添加新的硬盘
在计算机运行过程中,如果硬盘空间已经不足,或者有个硬盘已经出现坏的扇区,而且修复也失败的情况下,我们就须添加一个新的硬盘,并把坏的硬盘换下。

由于在分区方面有所不同,所以SPARC和x86平台上添加硬盘的步骤稍微有所不同,我们须分别介绍。

添加系统盘和数据盘也有所不同。系统盘上只安装着操作系统,如果坏了,就须重新安装或者从备份介质中恢复。具体恢复步骤我们在第12章中介绍。这里重点讲数据盘的添加。

1.在SPARC平台上增添第2块硬盘
(1)关闭系统,装上新的硬盘。

(2)启动系统,进入超级用户状态。

(3)运行Format命令,查看是否已经发现新的硬盘。

# format

AVAILABLE DISK SELECTIONS:

0. /dev/rdsk/c1t0d0s0 <Sun18G cyl 7506 alt 2 hd 19 sec 248>

/sbus@2,0/QLGC,isp@2,10000/sd@0,0

1. /dev/rdsk/c1t1d0s0 <Sun18G cyl 7506 alt 2 hd 19 sec 248>

/sbus@2,0/QLGC,isp@2,10000/sd@1,0

(4)选择新的硬盘号码,进入硬盘设置菜单,使用下面命令进入分区菜单:

format> partition

(5)查看分区情况:

partition> print

(6)修改分区设置:

partition> modify

(7)写入lalel标识中:

partition>label

(8)离开分区菜单:

partition>quit

(9)保存设置,并退出:

format>save

format>quit

#

(10)使用命令newfs来为每一个分区创建文件系统:

#newfs /dev/rdsk/c?t?d?s?

(11)修改/etc/vfstab文件,使新的硬盘分区可以在系统启动的时候别自动mount。

2.在x86平台上增添第2块硬盘
在x86平台上添加第2块硬盘比起在SPARC平台上稍微复杂些。因为x86平台上有个fdisk分区的概念。fdisk分区是区分Solaris系统分区和其他如DOS分区、Linux分区的,毕竟大多数x86平台都可以运行着多操作系统,而在SPARC平台上就没有这些考虑了。

在fdisk分区之后,只有分给Solaris系统的硬盘部分,我们才可以和在SPARC平台上一样进行盘片的分割。限于篇幅,这部分我们将不再叙述,请参见上面的SPARC部分。

下面我们主要介绍x86的fdisk分区:

format> fdisk

Total disk size is 3498 cylinders

Cylinder size is 1199 (512 byte) blocks

Cylinders

Partition Status Type Start End Length %

========= ====== ====== ===== === ====== ===

1 Active DOS-BIG 1 699 699 20

可以看出原盘只有DOS分区,下面建立Solaris分区:

SELECT ONE OF THE FOLLOWING:

1. Create a partition

2. Specify the active partition

3. Delete a partition

4. Change between Solaris and Solaris2 Partition IDs

5. Exit (update disk configuration and exit)

6. Cancel (exit without updating disk configuration)

Enter Selection: 1

选择1,则可创建分区。

Indicate the type of partition you want to create

1=SOLARIS2 2=UNIX 3=PCIXOS 4=Other

5=DOS12 6=DOS16 7=DOSEXT 8=DOSBIG

9=DOS16LBA A=x86 Boot B=Diagnostic C=FAT32

D=FAT32LBA E=DOSEXTLBA F=EFI 0=Exit?1

键入1,则可选择创建Solaris分区。

Indicate the percentage of the disk you want this partition

to use (or enter "c" to specify in cylinders). 80

指出分区的大小百分比。

Should this become the active partition? If yes, it will be

activated each time the computer is or turned on.

Please type "y" or "n". y

键入y,设定为活动分区。

Total disk size is 3498 cylinders

Cylinder size is 1199 (512 byte) blocks

Cylinders

Partition Status Type Start End Length %

========= ====== ========= ===== === ====== ===

1 DOS-BIG 1 699 699 20

2 Active Solaris2 700 3497 2798 80

SELECT ONE OF THE FOLLOWING:

1. Create a partition

2. Specify the active partition

3. Delete a partition

4. Change between Solaris and Solaris2 Partition IDs

5. Exit (update disk configuration and exit)

6. Cancel (exit without updating disk configuration)

Enter Selection:5

键入5,选择退出fdisk分区设置。

接下来就是划分Solaris分区的盘片了,这里不再叙述。

论坛徽章:
0
34 [报告]
发表于 2008-04-14 13:46 |只看该作者
11.3 热插拔设备的管理   
本节主要介绍热插拔技术。至于读者的计算机是否支持这项技术,请查阅计算机硬件手册。

11.3.1 热插拔设备管理概述
热插拔技术就是在系统运行的时候可以物理地添加、删除和替换系统组件,系统可以对热插拔组件进行动态的设置。从这个角度来说,系统的资源分配也可以随着热插拔组件的增添和删除而变化。

支持热插拔的组件由板和板上的插卡组成。从逻辑上可以分为三部分:板、板插卡和板插口组成。每个组成部分都有相应的状态,这些状态就是热插拔组件的管理内容。

板的情况

板可以处于以下四种情况之一:unknown(未知)、ok(正常)、failed(故障)或unusable(不可用)。

板插卡状况

板可以处于以下插卡状况之一:configured(已配置)或unconfigured(未配置)。断开连接的板的插卡状况总是未配置的。

板插口状况

一块板可以具有以下三种插口状况之一:empty(空)、disconnected(断开连接)或connected(已连接),如表11-6所示。在插入板时,插口状况总是从空变为断开连接。在拆除板时,插口状况总是从断开连接变为空。

表11-6 板插口状况

名 称
说 明

empty
板插口上不存在卡

disconnected
板已从系统总线断开。在不切断电源的情况下,板可以处于断开连接状态。但是,在你将其从插槽拆除前,板一定是断开电源并处于断开连接状态的

connected
板已通电并连接到系统总线。只有在板上的组件处于连接状况后,你才能看到它们


系统管理员通过使用cfgadm命令会显示板和插槽的信息,还可以对它们的状态进行修改和设置。Sun文档声明,使用cfgadm命令可以管理下列设备:

 在SPARC and x86平台上的USB设备;

 在SPARC and x86平台上的SCSI设备;

 在SPARC and x86平台上的PCI设备。

cfgadm命令有下列功能:

 显示系统组件状态;

 测试系统组件;

 改变组件的设置;

 显示组件设置的帮助信息。

需要注意的是,并不是所有的SCSI和PCI控制器都支持热插拔和cfgadm命令。虽然Sun的官方文档上写明cfgadm可以支持x86系统,但笔者在自己的x86上运行却被系统告知配置的高级管理不被支持。看来,Solaris 10还不能支持x86,希望以后的补丁更新盘能够支持这个功能。

11.3.2 SCSI设备的管理
这部分用专门的例子来展示使用cfgadm命令对支持热插拔的SCSI设备的管理。注意,cfgadm命令能否有效取决于你的系统硬件是否支持。下面的测试都是在SPARC平台上进行的。

1.显示系统SCSI设备的信息
显示SCSI控制器的信息:

# cfgadm -l

Ap_Id Type Receptacle Occupant Condition

c0 scsi-bus connected configured unknown

c1 scsi-bus connected configured unknown

显示SCSI控制器c0、c1和附加在控制器上的设备的信息。

# cfgadm -al

Ap_Id Type Receptacle Occupant Condition

c0 scsi-bus connected configured unknown

c0::dsk/c0t0d0 disk connected configured unknown

c0::rmt/0 tape connected configured unknown

c1 scsi-bus connected configured unknown

c1::dsk/c1t3d0 disk connected configured unknown

c1::dsk/c1t4d0 unavailable connected unconfigured unknown

2.SCSI控制器的连接和断开
这里连接和断开是相对于连到系统总线来说的,如果不能连接到总线,控制器和它上面的设备都不能正常工作。

连接命令:# cfgadm -c connect c1

断开命令:# cfgadm -c disconnect c1

3.configured(已配置)或unconfigured(未配置)SCSI控制器
操作系统为板分配功能角色,并加载板及其连接设备所需的设备驱动程序的状态为configured(已配置)状态。系统从逻辑上将板与操作系统分离,并将相关的设备驱动程序置于脱机状态。虽然环境监视仍在进行,但板上的设备还不能为系统所用。此时状态为unconfigured(未配置)状态。

配置命令:# cfgadm -c configure c1

未配置命令:# cfgadm -c unconfigure c1

4.configured(已配置)或unconfigured(未配置)SCSI设备
和上边介绍的只是对象不同,下面适用对于控制器上的设备进行配置。

配置命令:# cfgadm -c configure c1::dsk/c1t4d0

未配置命令:# cfgadm -c unconfigure c1::dsk/c1t4d0

5.在SCSI控制器上增添和删除SCSI设备
增添SCSI设备

(1)使用cfgadm命令,在C1控制器上添加设备,例如:

# cfgadm -x insert_device c1

Adding device to SCSI HBA: /devices/sbus@1f,0/SunW,fas@1,8800000

This operation will suspend activity on SCSI bus: c1

(2)在对话中提示符中,键入y

Continue (yes/no)? y

SCSI bus quiesced successfully.

It is now safe to proceed with hotplug operation.

I/O activity on the SCSI bus is suspended while the hot-plug operation is in

progress.

(3)将新的SCSI设备插上,并等待设备灯亮起。

(4)在对话提示符中,键入y,结束操作。

Enter y if operation is complete or n to abort (yes/no)? y

删除SCSI设备

(1)使用命令删除SCSI设备。

# cfgadm -x replace_device c1::dsk/c1t4d0

Replacing SCSI device: /devices/sbus@1f,0/SunW,fas@1,8800000/sd@4,0

This operation will suspend activity on SCSI bus: c1

(2)在对话的提示符中键入y。

Continue (yes/no)? y

SCSI bus quiesced successfully.

It is now safe to proceed with hotplug operation.

(3)等待SCSI设备灯灭,拔走设备。

(4)在对话的提示符中键入y,结束操作。

Enter y if operation is complete or n to abort (yes/no)? y

论坛徽章:
0
35 [报告]
发表于 2008-04-14 13:46 |只看该作者
11.4 USB大容量存储设备   
从Solaris 9开始,下面这些大容量的USB存储设备就被支持:

 CD-RW;

 移动硬盘;

 DVD;

 数码照相机;

 ZIP。

所有USB大容量存储设备都是可以移动的设备,Solaris平台的USB设备具有下列特性:

 Solaris平台的USB设备支持DOS或者Windows的文件系统。

 可以友好地使用rmformat命令来代替format命令对大容量的USB存储设备进行分区或者格式化。如果还需要用以前的format命令,请用format-e命令。

 还可以用fdisk命令进行fdisk分区的划分,fdisk分区的性质见本章第11.3节。

 当使用卷管理器(volume management)管理这些设备时,大容量的USB存储设备就会被自动mount到/rmdisk目录,但是需要卷管理器重新启动。

 如果不使用卷管理器,这些大容量的USB存储设备就需要手动mount到系统。比如,一个FAT文件系统的设备就用下面的命令:

mount -F pcfs /dev/dsk/c2t0d0s0:c /mnt

 对于支持热插拔的USB存储设备,只要插上设备,我们就能用prtconf在系统设备层看到它,拔下就不会再出现。

论坛徽章:
0
36 [报告]
发表于 2008-04-14 13:47 |只看该作者
11.5 CD和DVD设备的刻录   
对于CD和DVD设备,我们可以用cdrw命令在Solaris平台上进行刻录。可以刻录的任务包括下列:

 创建数据CD和DVD;

 创建音频CD;

 从音频CD上复制音频数据;

 复制CD和DVD;

 抹去CD-RW的记录。

11.5.1 如何检查刻录设备
使用cdrw-l来列出这些设备的详细信息。

$ cdrw -l

Looking for CD devices...

Node | Connected Device | Device type

----------------------+---------------------------------------+-----------------

cdrom0 | YAMAHA CRW8824S 1.0d | CD Reader/Writer

如果没有列出,说明这些设备还没有安装好,可以用下面两种方法来安装驱动程序。

(1)执行后重新启动系统的方法:

# touch /reconfigure

# init 6

(2)添加驱动程序后不用重启系统的方法:

# drvconfig

# disks

重新启动vold:

# /etc/init.d/vold stop

# /etc/init.d/vold start

此外,我们还可以检查一下光盘介质是否为空白。下面的例子说明这个光盘是空白的。

$ cdrw -M

Device : YAMAHA CRW8824S

Firmware : Rev. 1.00 (26/04/00)

Media is blank

%

11.5.2 如何进行刻录
1.数据光盘的刻录
ISO 9660文件系统是计算机平台上标准的CD和DVD文件系统。刻录数据CD或DVD都是先将文件生成ISO 9660文件系统,然后再刻录到光盘。

先将要刻录的/home/dubs/ufs_dir文件转换为ISO 9660格式:

$ mkisofs -r /home/dubs/ufs_dir > ufs_cd

Total extents actually written = 56

Total translation table size: 0

Total rockridge attributes bytes: 329

Total directory bytes: 0

Path table size(bytes): 10

Max brk space used 8000

56 extents written (0 Mb)

然后,再将生成的名为ufs_cd的文件刻录到光盘:

$ cdrw -i ufs_cd

Initializing device...done.

Writing track 1...done.

Finalizing (Can take several minutes)...done.

2.多媒体CD的刻录
使用cdrw创建CD时要注意只有专门的文件类型才被支持。这些是*.sun,*.wav,*.cda和*.aur类型文件。如果不是这些文件类型,cdrw命令将忽略它们。

刻录命令也很简单,如将bark.wav和chirp.au两个文件刻录到光盘,就使用下面的命令:

$ cdrw -a bark.wav chirp.au

3.复制CD盘
当你只有一个CD-RW时,在默认的情况下,cdrw命令将先复制源CD的内容到/tmp目录,然后再写到目标CD上。如果你的/tmp目录没有700 MB,就须指定另外一个目录。

完成刻录的步骤如下:

(1)将多媒体CD插入CD-RW驱动器。

(2)建立一个暂存目录。

$ mkdir /music_dir

(3)将源盘内容复制到暂存目录,复制完毕后源盘会自动弹出。

$ cdrw -c -m music_dir

(4)插入一张空白的目的盘,然后按Enter键,复制光盘。

如果你有两个CD-RW驱动器,那就非常简单了。使用下列命令即可完成复制。

$ cdrw -c -s cdrom0 -d cdrom1

论坛徽章:
0
37 [报告]
发表于 2008-04-14 13:48 |只看该作者
11.6 磁带设备   
这一节我们将介绍磁带设备的管理情况。一般用户基本上用不到磁带设备,但对大型系统来说,磁带是常用的备份工具。

11.6.1 磁带设备的命名规则
磁带设备使用了一个逻辑的设备名。逻辑磁带设备文件位于/dev/rmt子目录下,作为一个从/devices目录而来的符号链接。通常情况下,你可以按照图11-1所示的那样指定一个磁带驱动设备。


图11-1 磁带驱动设备命名




按照默认的密度指定驱动器编号

通常,通过磁带驱动器的逻辑单元编号来指定驱动器,该编号是一个从0~n的数字。如果你不指定密度,驱动器将按照它预定义的那样来写,通常是磁带支持的最高密度。

最多时可以把7个SCSI磁带驱动器加入到一个SCSI控制器中。

例如,要指定第一个驱动器,可以使用下面的设备名:

/dev/rmt/0

要指定第二个驱动器,可以使用下面的设备名:

/dev/rmt/1

注意,大多数设备名字都是从0开始顺序编号的。这样一来,当你提到第一个磁盘或者目标时,它的编号是0而不是1。




为一个磁带驱动器指定不同的密度

当某种磁带驱动器只支持某种特定的密度时,就需要指定这个所需的密度。命名规则如下:

/dev/rmt/XA

要判断一个驱动器所支持的不同的密度,查看/dev/rmt子目录,其中包含了支持每一种磁带的不同输出密度类型的磁带驱动器文件集。

表11-7显示了磁带设备名字中的密度选项。例如,要指定在第一个(0)驱动器上的中密度的磁带设备,可以使用下面的设备名。

/dev/rmt/0m

表11-7 磁带设备名字中的密度选项

密度选项:

Null 默认的情况,表示首选密度(最高)

1 低密度

m 中密度

h 高密度

u 超密度

c 压缩的密度


指定不倒带选项

当命令执行后,磁带会自动倒带,除非你在设备名字中指定了不倒带选项。要指定不倒带,可以在设备名的最后输入“n”。

例如,要在第一个(0)驱动器上指定一个中密度的原始磁化磁带设备,并且不倒带,可以使用下面的设备名。

/dev/rmt/0mn

11.6.2 控制磁带的几个有用命令
1.将磁带重新拉紧
当磁带在读数据时发生了错误,需要将磁带重新拉紧,清洗磁带驱动器,然后再重新试读一遍。

下面的例子将驱动器/dev/rmt/1中的磁带重新拉紧:

#mt-f /dev/rmt/1 retension

2.倒带
要将一盘磁带倒带,须输入mt-f /dev/rmt/* rewind并按Enter键。通过设备号*所指定的磁带驱动器,磁带将被倒回。

下面的例子显示了在驱动器/dev/rmt/1中倒带的操作:

#mt-f /dev/rmt/1 rewind

3.显示磁带驱动器的状态
要显示一个磁带驱动器的状态,需输入mt-f /dev/rmt/n status并按Enter键。

下面的例子中显示了驱动器/dev/rmt/1中没有磁带:

#mt-f /dev/rmt/1 status

/dev/rmt1/1:no tape loaded or drive offline

下面的例子显示了驱动器/dev/rmt/1中的磁带状态:

#mt-f /dev/rmt/1 status

Archive QIC-150 tape drive:

Sense key(0x6)=unit attention residual=0 retries=0

file no=0 block no=0

#

11.6.3 tar命令
使用tar命令可向磁带中拷贝文件和目录。tar命令在大多数UNIX操作系统上都有。tar命令的不足在于它没有注意到文件系统的边界,完整路径名长度不能超过255个字符,它不能拷贝空目录或者诸如设备文件等特定的文件,而且它不能用来创建多磁带卷。

下面介绍如何使用tar命令来把文件拷贝到磁带上、列出文件、粘贴文件,以及恢复文件。

1.向磁带上拷贝文件
使用下面的步骤可以把文件拷贝到磁带上。

(1)改变到包含想要拷贝的文件的目录中。

(2)将一盘可写的磁带插入磁带驱动器。

(3)输入tar cvf /dev/rmt/n filename filename filename…并按Enter键。

C选项:拷贝所指定的文件;

v选项:在拷贝文件时显示详细信息;

f选项:指定了tar文件要写入的地方。

所指定的文件名被拷贝到磁带中,覆盖掉磁带中任何已有的文件。

(4)从驱动器中拿走磁带并在磁带标签上写出文件名。

下面的例子向磁带驱动器0中的磁带上拷贝了两个文件。

#cd /home/chinaunix

#ls evaluation *

Evaluation.doc evaluation.doc.backup

#tar cvf /dev/rmt/0 evaluation *

A evaluation.doc 86 blocks

A evaluation.doc.backup 84 blocks

#

2.列出磁带上的文件
使用下面的步骤来列出一个磁带上的文件。

(1)向磁带驱动器中插入一个磁带上的文件。

(2)输入tar tvf /dev/rmt/n并回车。

t选项:列出了所指定的文件;

v选项:显示详细信息;

f选项:指定了tar文件所在位置。

在下面的例子中,驱动器0中的磁带的表格内容包含了两个文件。

#tar tvf /dev/rmt/0

rw-rw-rw-6693/10 44032 Apr 24 15:32 2005 chinaunix.doc

rw-rw-rw-6693/10 43008 Apr 24 15:32 2005 chinaunix.doc.bak

#

3.向磁带上粘贴文件
使用下面的步骤来粘贴文件,而不覆盖磁带上已有的文件。

(1)进入要拷贝的文件的目录中。

(2)向磁带驱动器中插入一盘非写保护的磁带。

(3)输入tar rvf /dev/rmt/n filename filename filename…并按Enter键。所指定的文件名会被粘贴到你所指定的驱动器中磁带已有的文件后面。

(4)从驱动器中拿走磁带并在磁带标签上写上文件的名字。

下面的例子是将一个文件粘贴到驱动器0的磁带已有文件的后面。

#cd /home/chinaunix

#tar cvf /dev/rmt/0 junk

a junk 1 blocks

再来查看磁带中的内容:

#tar cvf /dev/rmt/0

rw-rw-rw-6693/10 44032 Apr 24 15:32 2005 chinaunix.doc

rw-rw-rw-6693/10 43008 Apr 24 15:32 2005 chinaunix.doc.bak

rw-rw-rw-6693/10 58 Apr 24 15:32 2005 junk

4.从磁带上恢复文件和目录
使用下面的步骤可从磁带上恢复文件。

(1)进入想要恢复的目录;

(2)把磁带插入磁带驱动器;

(3)输入tar xvf /dev/rmt/n并按Enter键。所指定的磁带驱动器中的磁带上的所有文件都被拷贝到了当前目录中。

下面的例子从驱动器0中的磁带上拷贝所有文件。

#cd /home/chinaunix/evaluations

#tar xvf /dev/rmt0

x evaluations.doc,44032 bytes,86 tape blocks

x evaluation.doc.bak,43008 bytes,84 tape blocks

#

11.6.4 cpio命令
使用cpio命令可以从Solaris系统复制文件到SunOS 4.x系统上。使用cpio命令的优点在于它比tar命令更加有效的将数据打包放置在磁带上,在恢复文件时,它跳过了磁带上任何出错的地方,为不同类型的系统之间的移植提供了写文件所用到的不同的格式(tar,ustart,crc,odc,bar),并建立了多磁带卷。

当你使用cpio命令来建立一个存档时,该命令从标准输入中获得文件列表或者路径名,然后写入标准输出中。可以把输出重新定向到一个文件或者设备中。下面的部分介绍如何使用cpio命令来拷贝文件到盒式磁带上,怎样列出文件、恢复所有文件以及从盒式磁带中恢复一个文件子集。

1.拷贝一个目录中所有的文件到磁带上
使用下面的步骤来把某个目录中的所有文件拷贝到磁带上。

(1)向磁带驱动器中插入一盘可写的磁带。

(2)输入ls |cpio -oc >/dev/rmt/n并回车。

其中,o选项表示拷贝文件,c选项为了可移植性用ASCII字符写入头信息。目录中所有的文件都被拷贝到所指定的驱动器中的磁带上,覆盖掉该磁带上任何原有的文件,并且显示出总共拷贝的文件块数。

(3)从驱动器中拿走磁带并在磁带的标签上写下文件名。

在下面的例子中,目录/home/duanf中所有的文件被拷贝到磁带驱动器0中的磁带上。

%cd /home/duanf

%ls |cpio -oc > /dev/rmt/0

46 blocks

%

2.列出磁带上的文件
使用下面的步骤来列出磁带上的文件。

(1)将磁带插入磁带驱动器

(2)输入cpio -civt < /dev/rmt/n并回车。i选项从磁带中读取内容。v选项显示输出,其格式类似于ls –l命令的输出。t选项列出了所指定的驱动器中磁带上文件内容的列表。

在下面的例子中,驱动器0中的磁带内容列表包括了四个文件。

%cpio –civt < /dev/rmt/0

10666 duanf 3895 Feb 27 15:17:08 2005 Boot.chapter

10666 duanf 3895 Feb 27 15:17:48 2005 Directory.chapter

10666 duanf 6587 Feb 27 15:19:11 2005 Install.chapter

10666 duanf 1324 Feb 27 15:20:12 2005 Intro.chapter

%

3.从磁带上恢复所有的文件
如果存档文件中包含了相对路径名,输入文件将作为一个在当前目录内的目录被建立。然而,如果存档文件建立时只有绝对路径名,那么将用同样的绝对路径名来建立文件。

用下面的步骤来从磁带上恢复所有的文件。

(1)改变目录到想放置文件的地方。

(2)向磁带驱动器中插入磁带。

(3)输入cpio -icv < /dev/rmt/n 并按回车。所指定的驱动器内磁带中的所有的文件都被拷贝到当前目录。

下面的例子从驱动器0中的磁带上拷贝出所有的文件。

%cpio -icv < /dev/rmt/0

Boot.chapter

Directory.chapter

Install.chapter

Intro.chapter

46 blocks

%

4.从磁带上恢复一个文件子集
通过指定一个匹配模式并使用shell通配符(该通配符跟在选项后面并用引号括起来),可以从存档中恢复一个文件子集。

(1)改变目录到想要放置文件的地方。

(2)向磁带驱动器中插入磁带。

(3)输入cpio -icv “*file” < /dev/rmt/0 并回车。

所有与模式“*file”相匹配的文件将被拷贝到当前目录中。可以指定多个模式,但每一个必须用引号来包含。

下面的例子从驱动器0中的磁带上拷贝出所有的以chapter为后缀的文件。

%cd /home/duanf

% cpio -icv “*chapter” < /dev/rmt/0

Boot.chapter

Directory.chapter

Install.chapter

Intro.chapter

46 blocks

%

更多的信息请参见cpio(1)手册。

11.6.5 pax命令
对POSIX兼容的系统来说,pax命令提供了比tar或者cpio更好的移植性。当拷贝要求多盘磁带卷的文件、特殊文件或者文件系统或者你想要将文件拷进或着拷出POSIX兼容的系统时,都可以使用pax命令。

1.拷贝一个目录中所有的文件到磁带上
使用下面的步骤来用pax命令将当前目录下的所有文件拷贝到磁带上。

(1)改变到包含想要拷贝的文件的目录中。

(2)向磁带驱动器中插入可写磁带。

(3)输入pax -w -f > /dev/rmt/n.并回车。-w选项将当前目录里写的内容写到磁带上。-f选项标识出磁带驱动器。命令最后的据点(.)指明了当前目录。Pax命令在拷贝时并列出拷贝的文件。

(4)输入pax -l -f < /dev/rmt/n 并回车。-l选项列出了磁带上的文件来确认已经拷贝完成的文件。

(5)从磁带驱动器中拿出磁带并在磁带标签上写明文件名。

下面的例子向驱动器0中磁带上拷贝所有文件。

%pax -w -f > /dev/rmt/0

.

./adduser-1.rs

./adduse-2.rs

./at-addmn.rs

./at-base.rs

./at-menu.rs

%

2.恢复磁带上所有的文件
使用下面的步骤来用pax命令将磁带上所有的文件拷贝到当前的目录中。

(1)改变到想要拷贝文件的目录中。

(2)向磁带驱动器中插入可写磁带。

(3)输入pax -r -f < /dev/rmt/n . 并回车。-r选项将磁带上的内容读取到当前目录。-f选项标识磁带驱动器。命令末尾句点(.)指明当前工作目录。Pax命令在拷贝时并不列出拷贝文件。

(4)输入ls -l并回车。

Ls -l 命令列出了当前目录下的文件及其许可权,以此来验证文件拷贝的完成。

(5)从磁带驱动器中拿走磁带并在磁带标签上写下文件名。

下面的例子显示了从驱动器0中的磁带上拷贝所有的文件。

% pax -r -f /dev/rmt/0

pax:. :not owner

% ls -l

-rw-rw-rw- 1 duanf staff 245660 Sep 12 11:52 addusr-1.rs

-rw-rw-rw- 1 duanf staff 245660 Sep 12 10:54 addusr-2.rs

-rw-rw-rw- 1 duanf staff 181315 Sep 12 10:23 at-addmn.rs

-rw-rw-rw- 1 duanf staff 131809 Sep 12 10:13 at-base.rs

-rw-rw-rw- 1 duanf staff 181315 Sep 12 10:28 at-menu.rs

%

更多的信息参见pax(1)手册。

论坛徽章:
0
38 [报告]
发表于 2008-04-14 13:48 |只看该作者
第12章 传统文件系统管理   
文件系统是一个目录的结构集合,它的作用是用来定位和存储文件的。本章所讲述的内容就是文件系统。

论坛徽章:
0
39 [报告]
发表于 2008-04-14 13:49 |只看该作者
12.1 文件系统概述   
对于初级读者来说,他们须了解文件系统的类型和Solaris 10在文件系统方面的新特性。本节就介绍这方面的内容。

12.1.1 文件系统类型概述
Solaris 10支持三种类型的文件系统,它们分别是:

 基于磁盘的文件系统;

 基于网络的文件系统;

 虚拟文件系统(也叫伪文件系统)。

基于磁盘的文件系统如表12-1所示。

表12-1 基于磁盘的文件系统列表

基于磁盘的文件系统
描 述

UFS
基于BSD快速文件系统的传统UNIX文件系统是Solaris的默认文件系统

HSFS
用于CD-ROM的只读文件系统

PCFS
PC文件系统,可以读写DOS型式磁盘的数据,如FAT32

UDF
DVD文件系统


基于网络的文件系统就是网络文件系统,简称NFS文件系统。我们将在12.3节中介绍网络文件系统。

虚拟文件系统大多数是基于内存的文件系统,但是也有部分文件系统是基于硬盘上的,如表12-2所示。







表12-2 虚拟文件系统列表

虚拟文件系统
描 述

TMPFS
使用本地内存进行读写的文件系统。在Solaris中的默认应用为/tmp目录

LOFS
循环文件系统(lofs)可创建一个新的虚拟的原文件系统,然后用另一个路径名来存取文件

PROCFS
进程文件系统(procfs)驻留在内存中,表现为/proc目录。在此目录中活动进程号的清单,ps等命令会用到/proc目录中的信息,调试器或其他开发工具也可能通过文件系统调用来访问这些过程的地址和空间

CacheFS
用来改善远程文件系统(NFS)和CD-ROM的读取速度,将读得数据缓存在CacheFS文件系统中

SWAPFS
用mkfile和swap命令建立附加的交换区时,系统核心所用的文件系统


12.1.2 Solaris 10文件系统新特性
与以前的版本比较,Solaris 10在文件系统方面有了新的改进,典型的有以下三个方面。

 默认启用UFS 日志记录功能。在早期的Solaris 版本中,UFS 日志记录功能只能手动启用。

 网络文件系统(NFS)版本从3升级到4。

 Solaris 10在运行64位Solaris内核的系统上支持多TB UFS文件系统。以前,UFS文件系统在64位系统和32位系统上的大小仅限于约1 TB(Tbyte)。现在,所有UFS文件系统命令和公用程序已更新为支持多TB UFS文件系统。

论坛徽章:
0
40 [报告]
发表于 2008-04-14 13:50 |只看该作者
12.2 UFS系统文件系统介绍   
UFS文件系统几乎是所有UNIX系统的基本文件系统,Solaris当然也不例外。本节主要结合Solaris 10在UFS文件系统方面的新特性,向你介绍UFS文件系统。

12.2.1 UFS文件系统的结构
Solaris 10典型的文件系统类型为UFS文件系统,但它也允许在/etc/default/fs中定义其他文件类型。在Solaris 10上,UFS文件系统驻留在硬盘上,这些硬盘同时具有原始设备接口和块设备接口,这两个接口分别位于/dev/rdsk目录和/dev/dsk目录中。Solaris 10文件系统所创建的每一个分区都在/dev/dsk和/dev/rdsk中有其自己的对应项。一个UFS文件系统的组成包括如下几部分。

 引导块(boot block):在文件系统可引导的情况下,引导块中包含有引导数据。

 超级块(super block):超级块中包含有关i节点的位置、文件系统大小、块数目,以及状态等信息。

 i节点(inode):存储文件系统的文件细节信息。

 数据块(data block):实际存储的文件。

12.2.2 如何建立新的UFS文件系统
1.创建UFS文件系统
为了创建一个新的UFS文件系统,我们首先将磁盘划分为不同的分区(Slie),然后再使用newfs命令在这些分区上创建新的文件系统,最后将这些文件系统安装到根目录中。在第11章设备管理的磁盘管理一节中我们已经介绍了具体方法,这里就不再多说。下面对newfs命令进行介绍。

# newfs [-N] [-b size] [-i bytes] /dev/rdsk/device-name

-N:此参数显示newfs命令的参数信息,并不是真正的要建立一个UFS文件系统。

-b:系统块(block)大小的设定,每个块的大小是4096 或8192 Bytes,默认每块大小是 8192 Bytes。

-i:每个i节点(inode)的字节数,默认i节点的大小是和磁盘大小有关的。

device-name:创建新的文件系统的磁盘设备名。

例如:newfs-b 4096 /dev/rdsk/c0t1d0s0。

2.挂接UFS文件系统
本地或远程文件资源被挂接到根文件层次,看起来就像是一个单一的文件系统,这个连接操作称为“挂接”,可利用mount命令完成。文件资源挂接到根文件层次的目录被称为挂接点。在调用挂接命令前,挂接点必须存在。

命令格式:

mount file_name mount_point

例如,将c0t3d0s0挂接到系统目录/export/home下:

# mount /dev/dsk/c0t3d0s0 /export/home

单独运行不带参数的mount命令将显示当前已挂接的文件资源。

12.2.3 使用/etc/vfstab文件管理文件系统
我们可以用mount命令和umount命令来手工管理文件系统,也可以通过文件系统表(/etc/vfstab)来管理。通过编辑/etc/vfstab文件,系统在启动时可自动地安装在本地的ufs文件系统、必需的nfs文件系统,以及其他的文件系统。

下面介绍/etc/vfstab文件的内容,以及如何编辑和使用该文件。文件系统表是ASSCII文件,注释行以#开头,下面的/etc/vfstab文件说明了系统中有两个硬盘,并安装了两个nfs文件系统说明。

#more /etc/vfstab

#device device mount FS fsck mount mount

#to mount to fsck point type pass at boot options

/dev/dsk/c0t0d0s0 /dev/dsk/c0t0d0s0 / ufs l no -

proc - .proc proc - no -

/dev/dsk/c0t0d0s1 - - swap - no -

swap - /tmp tmpfs - yes -

/dev/dsk/c0t0d0s6 /dev/dsk/c0t0d0s6 /usr ufs 2 no -

/dev/dsk/c0t3d0s7 /dev/dsk/c0t3d0s7 /files7 ufs 2 no -

pluto:/export/man - /usr/man nfs - yes ro,soft

gtxa:/export/man - /usr/man nfs - yes ro.soft

注意,“/”和“/usr”的自动安装(automount)域说明为no,这是因为在mountall命令运行前,系统启动时/和/usr已被安装了,如果将此值定义为yes,则mountall命令试图再去安装这两个已经安装的文件系统。/etc/vfstab文件中的每个域必须有值,若无值(即值为no)则必须填上一个“-”号。

下面详细说明/etc/vfstab文件的域。

Device to mount域,可安装的设备有:

 本地ufs文件系统的块设备(如/dev/dsk/c0t0d0s0);

 远程文件系统的资源名(如nfs文件系统myserver:/export/home);

 磁盘的swap区名(如/dev/dsk/c0t4d0s1);

 /proc目录和proc文件系统;

 hsfs类型的CD-ROM;

 pcfs和ufs类文件系统的软盘dev/diskette,这一域也用于说明swap文件系统。

Device to fsck域对应于文件系统的原始(字符)特别设备(如/dev/dsk/c0t0d0s0),它定义了fsck使用的原始接口,若没有对应的设备时则用“-”号说明,例如,只读文件系统或网络文件系统。

Mount point域,默认的安装点目录(如/usr目录下安装/dev/dsk/c0t4d0s6)。

FS type域,表明的文件系统类型。

fsck pass域,检测文件系统次数,用于决定是否需要检测文件系统。

 当该域是“-”号时不检测文件系统,当该域的值大于1时,则检查文件系统。

 等于0时,则检查非ufs文件系统,而不检查ufs文件系统。

 当fsck作用于多个ufs文件系统,而fsck pass值大于1,并且使用了-op选择项时,fsck会自动以最高的效率并行检测不同盘上的文件系统。

 当fsck pass值为1时,则顺序检测文件系统。

Mount at boot系统启动时,若需mountall命令自动安装文件系统,则为yes,否则为no。请注意,该域与自动安装软件毫无关系。

Mount options安装文件系统的选择项列表,它们以“,”号分隔,“-”号说明无任选项,任选项的值请参见mount(1M)手册。

下面介绍如何修改/etc/vfstab文件,以便挂接(mount)新的文件系统的步骤:

(1)进入超级用户;

(2)用vi等命令编辑/etc/vfstab文件;

(3)加入各项。用空格或Tab键分隔其中每个域,如果某个项没有值,则填上“-”号;

(4)保存该文件;

(5)检查安装点目录是否存在,不存在则建一个;

(6)运行mountall命令。

下面的例子说明了将/dev/dsk/c0t3d0s7盘区作为ufs文件系统安装到/test1目录中,安装任选项(读/写)为默认值,fsck设备是/dev/rdsk/c0t3d0s7字符设备,fsck pass值为2,说明该文件系统不采用顺序方式检测:

#device device mount FS fsck mount mount

#to mount to fsck point type pass at boot options

/dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /files1 ufs 2 yes -

12.2.4 文件系统命令和一些文件系统配置文件介绍
1.文件系统管理命令介绍
表12-3简要地列出了部分文件系统管理命令。

表12-3 文件系统管理命令列表

命 令
说 明

clri(1M)
清除inode

df(1M)
报告磁盘空间、空闲磁盘块和文件数

ff(1M)
列出一个文件系统的文件名和统计信息

fsck(1M)
检测某个文件系统的完整性,并修复发现的损坏

fsdb(1M)
文件系统调试器

fstyp(1M)
查看文件系统的类型,比如:fstyp /dev/rdsk/cot3doso

labelit(1M)
当文件系统拷贝到磁带上时,列出或提供文件系统的标号(适用于volcopy命令)

mkfs(1M)
建立新的文件系统

mount(1M)
安装文件系统和远程资源

mountall(1M)
安装文件系统表(/etc/vfstab)中说明的全部文件系统

ncheck(1M)
用inode号产生路径名清单

umount(1M)
拆卸文件系统和远程资源

umountall(1M)
拆卸文件系统表说明的全部系统

volcopy(1M)
产生文件系统映像


2.文件系统配置文件
文件系统配置文件对管理文件系统有重要作用,其文件名如表12-4所示。

表12-4 文件系统配置文件

文件系统配置文件名
功能描述

/etc/vfstab
定义被mount到本地的文件系统

/etc/default/fs
定义本地默认文件系统类型,一般默认为ufs系统

/etc/dfs/fstypes
列出远程文件系统的类型

/etc/mnttab
列出当前被mount的文件系统和目录


12.2.5 UFS文件系统的数据一致性和日志记录
1.UFS文件系统数据的一致性
ufs文件系统根据一些文件系统数据(metadata,或称为元数据)来跟踪inode和目录信息,当这引起元数据与磁盘的数据没有适当同步(synochronized)时,就产生了不一致,这时就须修复文件系统。

下面是操作系统突然终止时使文件系统毁坏或产生不一致的几种情况:

 电源出故障;

 系统故障性阻塞(unplugging);

 不正常的关机;

 核心中的软件错误。

文件系统损坏虽然严重,但并不经常发生,系统启动时会自动检测文件系统,大部分情况下能修复检测到的问题。

文件系统检测是用fsck(file system check)程序实现的。fsck命令将已分配的但没有说明其来源的文件和目录放在lost+found目录下,如果该目录不存在,则由fsck建立。如果lost+found中没有足够的空间,fsck也会自动增大其空间。

下列情况发生时一般需要检测文件系统:

 文件系统不能安装;

 正在使用的文件系统产生问题;

 正在使用着的文件系统出现不一致时,控制台窗口会提示出非常醒目的出错信息,严重时甚至会发生系统瘫痪。使用fsck前请详细阅读fsck (1M)手册。

当然,我们也可以自行诊断磁盘分区,查看分区是否有一致性问题。其步骤如下:

(1)进入超级用户或授权角色用户;

(2)键入fsck-m命令来判断文件系统是否有问题,是否需要进一步修复。下例中说明第一个文件系统需要检测,第二个不需要检测:同时也说明磁盘分区c0t0d0s6需要修复。

#fsck -m /dev/rdsk/c0t0d0s6

**/dev/rdsk/c0t0d0s6

ufs fsck:sanity check:/dev/rdsk/c0t0d0s6 needs checking




# fsck-m /dev/rdsk/c0t0d0s7

* */dev/rdsk/c0t0d0s7

* * */dev/rdsk/c0t0d0s7

* ufs fsck:sanity check:/dev/rdsk/c0t0d0s7 okay

说明磁盘分区c0t0d0s7是好的,不需要修复。

诊断完磁盘分区的一致性后,如果发现有问题,可以按下面步骤进行修复。

修复文件系统的步骤:

(1)进入超级用户;

(2)拆卸(umount)有问题的文件系统;

(3)键入fsck命令进行修复。

下面的例子中检测/dev/rdsk/c0t0d0s6并校正其不正确的块计数。

#fsck /dev/rdsk/c0t0d0s6

checkfilesys:/dev/rdsk/c0t0d0s6

*Phase1 - Check Block and Sizes

INCORRECT BLOCK COUNT I=2529(6 should be 2)

CORRECT?y

* * Phase 2-Check Pathnames

* *Phase3- Check Connectivity

* *Phase 4-Check Reference Counts

* *Phase 5_Cylinder Groups

Dynamic 4.3 FFFS

929 files,8928 used.2851 free(75 frags,347 blocks.o.6% fragmentation)

/dev/rdsk/cotoos6 FILE SYSTEM STATE SET TO OKAY

*****FILE SYSTEM WAS MODIFIED ********

2.UFS文件系统日志(logging)
logging功能是UFS文件系统的一个挂接(mount)选项,它可以被设置在包括根目录在内的各个硬盘分区上。logging功能不但易于安装和使用,并且对数据安全非常有用。

Solaris的UFS logging通过使用系统中的空白数据块来工作。所有对文件系统数据(metadata,或称为元数据)的修改都被写在这些空白的区域。这些Metadata包括目录和inode信息,不包括文件中的数据本身。例如,创建文件时,目录结构被修改并且系统为这个新文件分配一个新的inode。以上这些行为被写入logging中。一旦数据的修改行为被写入logging的区域,系统就可以接着对文件系统做其他的操作了。

在后台,存在于logging中的信息将被同步到文件系统中,并自动更新相应的目录和inode,最终完成文件系统的操作。因此,这种做logging并在后台写入数据,比通过随机的I/O访问直接对分布在硬盘上的各种管理信息进行修改的方式速度要快得多。

用来做logging的空间的大小取决于文件系统的大小。每1 GB磁盘分区空间的logging空间为1 MB,最多不超过64 MB。这部分logging空间被循环使用,当log中记录的关于文件系统的修改都被应用于文件系统后,记录的那部分空间就会被清空而重新使用。

通常对于UFS来说,如果操作系统在任何文件系统操作中崩溃,整个文件系统都需要用fsck命令做一致性检查。这个命令的执行可能需要几分钟的时间,因为它须检测所有的metadata和文件的数据,包括当前已经用的空间、未用的、inode的数量等,修复其中不一致的地方以确认文件系统的完整性。当然出现比较大的问题时还需要人工干预。在做检查的过程中有可能会丢失文件,甚至目录。这决定于crash发生时,该操作进行到了哪种程度。如果采用logging功能,情况就会完全不同。因为metadata的修改首先被写在日志空间而不是文件系统中。如果系统崩溃重启后,系统首先会检查logging的数据,以决定在上一次的文件系统中,哪种修改已经做过了,哪种修改即将做,哪种修改正在做。做过的和即将做但还没有做完的操作将被系统从日志中删掉。如果在日志中记录了足够的数据来完成某项操作,该操作就会被继续完成,否则就取消这种操作。熟悉数据库操作的用户会发现这和数据库软件中的事务处理过程非常相似。最终的结果是,文件系统能够最大限度地保持一致,不需要进行彻底的文件系统检测,整个文件系统检测(check)过程只需要花几秒钟时间。

文件系统日志功能从Solaris 7开始就被支持,但直到在Solaris 10版本,系统的所有UFS 文件系统才默认启用日志记录功能。

在Solaris 10中,关闭文件系统日志的方法是在/etc/vfstab文件中只要加上“nologging”属性,然后重启计算机即可。

12.2.6 备份和恢复ufs文件系统
1.备份UFS文件系统
备份是指对文件进行拷贝,用来作为原文件被删除或毁坏时的安全措施。通常做法是将其拷到可移动的介质中。备份文件后可方便地恢复误删的文件,但更重要的是用于处理严重的硬件故障和其他灾难性故障。

备份文件是最关键的系统管理功能之一,按照一定的步骤和计划实现系统文件的备份有下述三个主要原因:

 确保系统瘫痪时文件系统的完整性;

 防止用户文件被误删;

 作为重新安装系统或修复系统的重要保护措施。

当按计划备份文件系统时,应保证能够将备份文件恢复为当前状态。另外,你可能想将备份好的文件系统从一个系统传到另一个系统中作为文档,或将文件保存到可移动的介质上,这样就能够移动或改变系统上的文件。

按计划备份文件需考虑下面几方面的内容:

 用哪个命令备份文件系统;

 用何种介质;

 使用什么备份计划;

 这一系统中哪些文件对用户是至关重要的;

 这些要备份的文件在什么地方:它们是否在一个单独的文件系统中;

 这些文件是否经常变化;

 当文件丢失或损坏时需要多快恢复;

 为备份文件,相关文件系统是否可经常拆卸。

更详细的备份策略请参见联机手册ufsdump(1M)命令中提供的转贮(dump)策略。

下面介绍如何用盒式磁带及ufsdump命令备份文件。

实现完全备份

为了备份完整的文件系统,所有的用户必须退出,并使系统进入单用户方式(磁带设备命名的内容请参见第11章设备管理的磁带设备部分)。

如果磁带设备位于远程计算机上,可以在磁带设备名之前加上远程计算机名。例如:在远程计算机host1上的磁带机名是/dev/rmt/0,则在本机上远程设备名应为host1:/dev/rmt/0。

下列步骤说明如何实现文件系统级(完整)备份:

 键入init s时系统进入单用户方式,这样就保证了备份全部文件系统时没有用户修改文件系统;

 插入磁带;

 键入ufsdump 0 cuf /dev/rmt/0 /dev/dsk/cWtXdYsZ。

任选项0说明的0级备份,也就是完全备份;c任选项说明是盒式磁带;u任选项更新转贮记录;f任选项指定dump文件(逻辑设备名或磁带设备)。

 例12-1 实现完全备份。

# init s

#ufsdump 0 cuf /dev/rmt/0 /dev/dsk/c0t0d0s7

DUMPate of this level 0dump:Wed Mar 11 10:16:53 1992

DUMPate of last level 0 dump:the epoch

DUMPumping /dev/rdsk/c0t3d0s7(/export/home)to/dev /rmt/0

DUMP:mapping (Pass I)[regular files]

DUMP:estimated 956 blocks (478KB)

DUMP:Writing 63 Kilobyte records

DUMP:dumping(Pass III)[directories]

DUMP:dumping (pass IV)[regular files]

DUMP:level o dump om Wed Mar 11 10:16:53 1993

DUMP:956 blocks (478KB)on 1 volume

DUMPUMP IS DONE

#

如果一盒带存不下,则ufsdump命令会提醒你什么时候该换一盒新带。在磁带上标明命令、文件系统名及备份日期等信息。

实现增量备份

用ufsdump命令可指定不同的备份级别,0级代表完全备份,而1~9级代表任意的增量备份。1~9均为区分增量备份的号码,系统管理员可以使用这些号码设计出不同的备份策略,比如,日增量备份,我们可以选一个号码9来表示;周增量备份,选一个8号码来表示;月增量备份,选择一个7号码表示等。当然,还可制定出其他的备份策略,比如:周一到周五可以分别为5,6,7,8,9等级号码,这些都是周增量备份,而周日则用0级完全备份。

现在增量备份步骤如下:

 使系统进入单用户模式;

 进入超级用户;

 将磁带放入磁带机中;

 键入ufsdump [1-9] ucf /dev/rmt/ /dev/rdsk/ctds在ufsdump参数前加上级数,如9级备份,键入9ucf;

 执行完ufsdump命令后取出磁带并贴上标签。

2.恢复UFS文件系统
ufsrestore命令可以将用ufsdump命令备份的文件拷贝恢复到当前工作目录中。我们可以用ufsrestore命令恢复0级备份后,再使用增量备份恢复,以接近或达到故障发生点。当然,也可以使系统恢复到故障发生以前的任意时刻。

下面是恢复文件系统之前需要知道的信息:

 需要哪个带或盘;

 备份文件系统的设备名;

 你使用的磁带设备类型;

 磁带设备名(本地或远程)。

决定使用哪个备份带

在开始恢复文件或文件系统之前,必须决定使用哪一备份磁带,下面是选择备份磁带的考虑步骤:

(1)向用户寻问有关文件或文件系统丢失的日期,或文件还原的大概时间。

(2)如果系统没有完全破坏,就只须增量备份,结合你的备份计划和故障时间,找出适合的备份版本,这个版本不一定是最新的。

(3)如果系统已经破坏,须恢复全部文件系统时,需要最新的0级备份带。或者在一次全部备份的基础上进行几次增量备份,以接近故障的时间点。

恢复全部备份

如果一个硬盘上的文件系统全部损坏,就需要对这块盘进行完全恢复。下面是采用盒式磁带恢复一个文件系统的完整备份的过程。注意,这一过程将用新的文件系统来代替原来存在的文件系统。

(1)进入超级用户;

(2)进入单用户模式,确保没有人使用你将恢复的文件系统;

(3)使用umount来卸载故障盘;

(4)在故障盘上重新建立UFS文件系统;

(5)将新的UFS文件系统盘挂接上;

(6)进入你希望做恢复的目录中;

(7)插入盒式磁带;

(8)使用ufsrestore rvf /dev/rmt/0将文件系统恢复。

 例12-2 硬盘c0t0d0s7的挂接点为/files1,要将此盘做完全恢复。

host%su

Password:

#init s

#umount /files1

#newfs /dev/rdsk/c0t0d0s7

#mount /dev/dsk/c0t0d0s7 /files1

#cd /files1

#ufsrestore rvf /dev/rmt/0

交互式恢复单个文件或目录

恢复单个文件或目录时,将它们存入临时目录(如/var/tmp)是个好方法,经过确认正确无误后才恢复目标目录。下面是交互式恢复文件的步骤:

(1)进入超级用户;

(2)将备份带放入磁带驱动器中;

(3)键入cd /var/tmp,如果你希望将文件存放在其他目录下,则用相应的目录名代替/var/tmp;

(4)键入ufsrestore if /dev/rmt/,一些提示信息和提示号显示出来;

(5)建立要恢复的文件清单;

(6)用ls命令列出一个目录的内容:

 键入cd改变目录;

 将一个目录名或文件名加到将要恢复的文件清单中,键入add;

 若要删除将要恢复的文件清单中的目录名或文件名,则键入delete;

(7)建完清单后,键入extract,ufsrestore会问你用哪一卷;

(8)键入卷号按Enter键,如果只有1卷,键入1并按Enter键,清单中的文件或目录就被取出并恢复到当前工作目录中;

(9)保持当前目录的模式不变,键入setmodes然后键入“n”并按Enter键;

(10)键入quit则显示Shell提示符;

(11)用ls -l命令列出已恢复的文件或目录;

(12)检查文件列表,确保所有文件或目录均被恢复;

(13)用mv命令将文件移到合适的目录中。

 例12-3 从/etc目录中恢复passwd和shadow文件。

# cd /var/tmp

# ufsrestore if /dev/rmt/0

ufsrestore> ls

.:

.:

.sunw/ export/ net/ sbin/ usr/

Sources/ etools/ opt/ scde/ var/

b/ home/ ptools/ set/ vol/

bin kernel/ pkg/ share/

dev/ lib/ platform/ shared/

devices/ lost+found/ proc/ src/

etc/ mnt/ rtools/ tmp/

ufsrestore> cd etc

ufsrestore> add passwd shadow

ufsrestore> setmodes

set owner/mode for “.”? [yn] n

ufsrestore> extract

Extract requested files

You have not read any volumes yet.

Unless you know which volume your file(s) are on you should start

with the last volume and work towards the first.

Specify next volume #: 1

extract file ./etc/shadow

extract file ./etc/passwd

Add links

Set directory mode, owner, and times.

set owner/mode for ‘.’? [yn] n

ufsrestore> quit

# cd etc

# mv passwd /etc

# mv shadow /etc

# ls -l /etc

使用非交互模式从备份带中恢复单个文件(ufsrestore)

下面是从备份带上恢复单个文件的过程:

(1)进入超级用户;

(2)将备份带插入;

(3)键入cd /var/tmp进入/var/tmp目录下,如果要将备份文件恢复到不同的目录中,用相应的目录代替/var/tmp即可;

(4)键入ufsrestore xvf /dev/rmt/n,x任选项说明拷贝文件或目录时是否设置所有者/模式的信息;v任选项说明显示被恢复的文件名;f选项说明磁带设备名;

(5)键入卷号,如果只有1卷,键入“1”,这时文件被恢复到当前工作目录中;

(6)键入“n”,目录的模式保持不变;

(7)键入ls –l文件清单显示出来;

(8)用mv命令将文件移到合适的目录中。

 例12-4 用非交互模式恢复/etc/passwd文件。

# cd /var/tmp

# ufsrestore xvf /dev/rmt/0 ./etc/passwd

Verify volume and initialize maps

Media block size is 126

Dump date: Wed Jul 28 16:13:52 2005

Dumped from: the epoch

Level 0 dump of / on starbug:/dev/dsk/c0t0d0s0

Label: none

Extract directories from tape

Initialize symbol table.

Extract requested files

You have not read any volumes yet.

Unless you know which volume your file(s) are on you should start

with the last volume and work towards the first.

Specify next volume #: 1

extract file ./etc/passwd

Add links

Set directory mode, owner, and times.

Specify next volume #:1

extract file ./etc/passwd

Add links

Set directory mode, owner, and times.

set owner/mode for ‘.’? [yn] n

# cd etc

# mv passwd /etc

# ls -l /etc
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP