免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2352 | 回复: 1
打印 上一主题 下一主题

Solaris10 (200) 读书笔记 Module 3&4 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-17 06:51 |只看该作者 |倒序浏览
基本上是以风之幻想的笔记为蓝本的,并无大改动。

第三章        管理本地磁盘设备
目标:
描述基本的磁盘结构
描述磁盘的命名规则
列出设备
重新配置设备
执行硬盘分区
管理磁盘的label
描述SMC
使用SMC分区
首先,先来说一下物理磁盘的组成:
磁盘的存储区域是由一些碟片组成的。
这些碟片是旋转的
磁盘读写定位机械臂移动磁盘头来进行定位
读写把数据读写到碟片表面的磁介质上。
一个碟片又被分为:扇区(一个扇区为512byte,也就是一个磁盘块),磁道,柱面

磁盘slice就是将一个磁盘在逻辑上分出来的分区。一般来说一个磁盘可以分成8个区0~7。
一般slice2代表整个磁盘。
一般的分配方式为:
0                /
1            swap
2            整个磁盘
3            
4
5            /opt
6            /usr
7            /export/home
但是,在安装的时候,可以根据自己的需要来安装很分配。
磁盘的命名规则一般为:c#t#d#s#的方式。但是如果加如了卷管理的方式,磁盘的命名规则会根据卷管理软件的要求进行更改的。比如:vertias volume manager下为/dev/vx/dsk/dgname/volume。
C:controller number
T:target number
D:  disk number
S:   slice number
在solaris下所有的磁盘一般被分为3种命名方式:
Logical device name
Physical device name
Instance name
逻辑设备名是来源于物理设备名的一个连接,连接于/devices目录。所有的逻辑设备名都在目录/dev下。逻辑设备名的命名方式就是采用c#t#d#s#。所有在/dev下的设备又分为/dev/dsk和/dev/rdsk两中块设备和字符设备。
物理设备名是系统中唯一用来标识本地物理设备的。设备名在/devices下。物理设备名是由一系列的接点名组成的。用/来进行路径的区分。光纤盘与其他的不太一样是有WWN(world wide name)号来表示。
实名是有kernel为每个设备分配的一个缩写名。
Sdn:代表SCSI硬盘
Stn:代表SCSI磁带
Dadn:代表ide硬盘
Ssdn:代表光纤盘
查看设备设备名可以在/etc/path_to_inst文件中,有详细的设备列表清单。(查看网卡设备的时候比较轻松)
也可以使用# prtconf | grep –v not来查看设备列表的清单。
在一个就是format命令。
重新识别设备的时候,可以通过2种方式,一种是:
# touch /reconfigure
# init 5
然后,加上设备然后再重新启动。
# prtconf | grep –v not
(基本上已经不用这样的方式了)
再一种是devfsadm
# devfsadm
# devfsadm –c disk –c tape –c audio
# devfsadm –i dad
# devfsadm –i st
# devfsadm –i sd
# devfsadm –v
# devfsadm -c
然后,confirm that new links and device files exist in the /dev/dsk and /dev/rdsk directories for disks or /dev/rmt for new tape drives.


format实用程序是一个系统管理员工具,用于在Solaris操作环境中对硬盘的准备工作。
用户可以通过使用format实用程序来进行磁盘的分类管理,主要的目的是对磁盘进行分区。
为磁盘分区,系统管理员需要:
。正确的识别磁盘
。规划磁盘
。使用format实用程序分区
。为磁盘加上新分区的标签(label)

只有root用户可以使用format实用程序。如果普通用户运行了format实用程序,系统将显示没有权限或者没有找到磁盘。

磁盘卷标和分区表
在Solaris操作环境中,每一个磁盘都在存储区域旁边指定一个区域,来设置关于磁盘的控制器,表面分布和分区的信息。
这个信息称为磁盘的卷标。其他部分则是用于描述内容的卷表(volume table of contents,VTOC)。这个磁盘卷标或者VTOC保存在磁盘的第一个扇区。
为一个磁盘建立卷标是为了要在磁盘上写入分区的信息。如果系统管理员在定义分区后忘记了为磁盘加卷标,分区信息就会丢失。
磁盘卷标的一个重要部分就是定义磁盘分区的分区表,分区在柱头上的分界线和所有分区的长度。

Flag:
wm=磁盘分区是可写并且可mount的
wu=磁盘分区是可写并且不可mount的
rm=磁盘分区是可读并且可mount的
ru=磁盘分区是可读并且不可mount的
Cylinders分区的起始柱头数和终止柱头数
Size分区的长度:Mbytes(mb),Gbytes(gb),Blocks(b),Cylinders(c)
Blocks每个分区的柱头的总数和扇区的总数

定义磁盘Slices
Slices是定义在一个柱头组和柱头的长度上的。柱头组的起始位置是柱头0

定义磁盘partitions
下面描述了定义磁盘的partitions先决条件。

不良的条件
当建立或者改变底盘的slices时,有2种可能发生的不良条件:浪费的磁盘空间和重叠的磁盘Slices。
浪费的磁盘空间:当一个或者多个柱头没有在Slices中定位所产生的空间
重叠的磁盘Slices:当一个或者多个柱头同时被多个Slices定位。

定位磁盘分区表
当root用户使用format实用程序选择磁盘的分区时,一个磁盘分区表的拷贝就被读入内存并且显示当前的磁盘卷标。

Format实用程序通常是依赖于/etc/format.dat文件来读或者调用format实用程序。可以使用/etc/format.dat文件来快速定义可用磁盘表和预先的分区表。
用户可以使用下列命令来将从/etc/format.da文件中预先设定的分区表读入当前卷标。
。select:从/etc/format.dat文件中选择一个预先设定的分区表
。print:显示选择的分区表
。label:将选择的分区表写入磁盘的卷标
。verify:定位磁盘卷标和显示新信息
。disk:选择磁盘
。name:为改变了的分区表建立一个名字
。save:保存名字到./format.dat文件中

进行磁盘分区
按照下面的步骤为磁盘分区
1.Root用户在提示符前输入format并且回车
#  format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /pci@1f,4000/scsi@3/sd@0,0
       1. c0t1d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
          /pci@1f,4000/scsi@3/sd@1,0
Specify disk (enter its number): 1
Format实用程序搜索所有已经绑定的磁盘,每个被找到的磁盘,format都显示他的逻辑设备名,硬件名,物理参数和物理设备名。
2.选择在磁盘逻辑设备名左边的编号选择第二个磁盘。
selecting c0t1d0
[disk formatted]
FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !<cmd>     - execute <cmd>, then return
        quit
用于分割Slices的特定的菜单包括
。partition:显示分区菜单
。label:将当前定义的分区写入磁盘卷标
。verify:读并且显示磁盘卷标
。quit:退出format实用程序

3.在format提示符输入partition
format> partition
PARTITION MENU:
        0      - change `0' partition
        1      - change `1' partition
        2      - change `2' partition
        3      - change `3' partition
        4      - change `4' partition
        5      - change `5' partition
        6      - change `6' partition
        7      - change `7' partition
        select - select a predefined table
        modify - modify a predefined partition table
        name   - name the current table
        print  - display the current table
        label  - write partition map and label to the disk
        !<cmd> - execute <cmd>, then return
        quit
partition菜单已经显示了。这个菜单使用户可以执行下列功能
。0-7:指定8个分区的柱头组和长度
。select:从/etc/format.dat中选择之前定义的分区表
。modify:改变之前定义的分区表
。name:命名当前的分区表
。print:显示当前的分区表
。label:将当前分区表写入磁盘卷标

4.在partition提示符输入print显示在内存中的磁盘卷标的拷贝。
partition> print
;分区名Current partition table (original):
Total disk cylinders available: 4924 + 2 (reserved cylinders)
Part      Tag        Flag   Cylinders   Size               Blocks
  0 unassigned    wm       0               0         (0/0/0)           0
  1 unassigned    wm       0               0         (0/0/0)           0
  2     backup      wm   0 - 4923   8.43GB   (4924/0/0) 17682084
  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 unassigned    wm       0               0         (0/0/0)           0
分区的名字显示在第一行的括号中

下面显示每列的含义
。Part:磁盘的Slice编号
。Tag:之前定义的可选的标记符
。Flag:之前定义的可选的标志位
。Cylinders:Slice的起始柱头和结束柱头
。Size:Slice的容量
。Blocks:每个Slice的柱头的总数和扇区的总数
5.输入0选择Slice 0
partition> 0
Part      Tag    Flag     Cylinders        Size            Blocks
  0 unassigned    wm       0               0         (0/0/0)           0
Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]:
Enter partition size[0b, 0c, 0.00mb, 0.00gb]: 400
partition>
6.当提示ID tag时,输入问号可以列出所有的可选项
7.按回车键则使用默认的tag
8.当提示permission flags时,输入问号可以列出所有的可选项
9.按回车则使用默认的flag
10.输入回车可以设置起始的柱头
11.为Slice 0输入新的容量
12.输入print,显示改变后的当前Slice 0
13.输入1选择Slice 1
14.按回车选择默认的tag和flags
15.输入Slice 1的新起始柱头
16.输入Slice 1的新容量
17.输入print显示改变后的Slice
18.输入7选择Slice 7
19.按回车选择默认的tag和默认的flag
20.输入Slice 7的新起始柱头
21.输入Slice 7的新容量,可以输入$,表示自动分配到最后一个柱头
22.输入print显示分区表
23.检测没有错误后,使用label命令为磁盘建立卷标

保存分区表到/etc/format.dat文件
1.在partition菜单输入name,并且输入一个唯一的名字
2.输入quit命令退出分区菜单
3.输入save保存新的分区表信息。输入/etc/format.dat的完整路径名

定位和使用定制的分区表
1.进入partition菜单
2.使用select命令选择定制的分区表
3.将选择的分区保存到磁盘卷标中
4.退出partition菜单
5.读新的磁盘卷标
6.退出format实用程序

使用modify命令重新分配磁盘
用户有时需要改变Slice的容量,例如磁盘扩容,或者减少。最简单的办法就是在partition菜单中使用modify命令。
当一个磁盘现有的Slice被重新分区并重新设置了卷标,那么磁盘上所有现有的数据都将丢失。现有的重要数据必须备份。
Free hog分区是用于一个保存其他Slice容量改变的磁盘空间
使用modify命令
使用下列步骤改变磁盘Slice的容量
1.输入format并且回车
2.选择一个适当的磁盘
3.输入partition
4.输入modify并且回车
5.输入回车以认可默认的选择
6.选择默认的选项并且回车或者输入yes
7.按回车认可Slice 6是Free Hog分区。如果Slice 6没有分配空间,那么用户必须指定其他的Slice
使用Free Hog Slice
当root调用format实用程序改变一个或者多个磁盘的Slices,一个“临时性“的Slice必须被指定来为扩张和收缩调节运做
当其他Slics是扩展的,恢复,独占或者一个Slice变小是牺牲的空间时,这个临时Slice是用于调整空间的。所以,这个临时的Slice有时被成为free hog
free hog分区只在安装或者运行format时存在。普通情况下是没有free hog分区存在的
8.输入Slice 0的容量,并且回车
9.按回车默认其他分区的容量
10.按回车确认使用这个分区表
11.给当前的分区命名
12.将改变了的分区表写入磁盘卷标
13.输入quit退出

查看磁盘的VTOC
用户可以使用2个方法来查看,定位磁盘的卷标或者VTOC
第一个方法是在format实用程序中是verify
第二个方法是调用prtvtoc命令
使用verify命令读磁盘的VTOC
1.在format提示符下输入verify并且回车
format> verify
Primary label contents:
Volume name = <        >
ascii name  = <SUN18G cyl 7506 alt 2 hd 19 sec 248>
pcyl        = 7508
ncyl        = 7506
acyl        =    2
nhead       =   19
nsect       =  248
Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm     446 - 1376        2.09GB    (931/0/0)   4386872
  1       swap    wu       0 -  445        1.00GB    (446/0/0)   2101552
  2     backup    wm       0 - 7505       16.86GB    (7506/0/0) 35368272
  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    1377 - 7505       13.77GB    (6129/0/0) 28879848
2.输入quit退出

使用prtvtoc命令读磁盘的VTOC
# prtvtoc /dev/rdsk/c0t0d0s2
。Dimensions(尺度):描述磁盘的物理尺度
。Flags:描述分区表中的flags
。partition:描述分区表
。flags:00=wm/01=wu/10=rm/11=ru
。First Sector:定义Slice的起始扇区
。Sector Count:定义Slice的总共扇区
。Last Sector:定义Slice的结尾扇区
。Mount Directory:显示当前的分区是否被挂接在某一目录中

fmthard命令
使用prtvtoc命令,用户可以保存磁盘的VTOC到一个文件。这允许用户在下列情况下使用fmthard命令来从新为磁盘建立卷标。
。在磁盘上的VTOC被破坏掉了
。因为偶然的原因导致磁盘上的分区表变化了
为了将prtvtoc命令的输出保存到其他磁盘的一个文件中,用户可以在fmthard命令中使用datafile变量。
# fmthard –s datafile /dev/rdsk/c#t#d#s2

如果发生了上面描述的其中一种情况,并且先前保存了一个文件,用户可以:
1.运行format,选择磁盘并且为默认的分区表设置磁盘卷标
2.使用fmthard命令将datafile中的信息写回磁盘
# fmthard –s /vtoc/c1t3d0  /dev/rdsk/c1t3d0s2

SMC是一个图形界面的管理方式,可以很容易直观的来使用,具体的使用过程在这里就不在详细说明了。说明一下SMC的启动和停止的步骤。
/etc/init.d/init.wbem status 查看运行状态
/etc/init.d/init.wbem stop  停止服务
/etc/init.d/init.wbem start  启动服务

论坛徽章:
0
2 [报告]
发表于 2007-04-17 06:51 |只看该作者
第四章        管理文件系统
目标要求:
描述solaris 文件系统
创建一个新的UFS文件系统
使用fsck来检验文件系统
解决文件系统不连续
监视文件系统的使用

Solaris支持3种类型的文件系统:
Disk-based file systems
Distributed file systems
Pseudo file systems

Disk-based file systems又可以分为:
ufs:  在10的时候UFS可以达到TB。
hsfs:支持CDROM的高密数据
pcfs:支持DOS的FAT32文件系统
udfs:支持DVD和CDROM的通用文件系统格式。

Distributed file systems
NFS:我们通常所说的网络文件系统共享方式。

Pseudo file systems
Pseudo文件系统是一种基于内存的文件系统方式。它包括:
tmpfs : 临时文件系统是基于内存而存在的。当机器重新启动的时候它会创建新的数据,而将以前存储的数据清除。
swapfs: 是用于swap管理的。
fdfs: 文件描述器文件系统又/dev/fd下的文件描述器为打开的文件提供一个明确的名字。
procfs:进程文件系统在/proc下为每一个运行的进程提供一个描述。
mntfs:为本地已经mount的文件系统提供一个只读的信息。
objfs:kernel object 文件系统。这个文件系统是描述当前kernel已经加载的module的相关详细信息,存储在/system/object。
devfs:设备文件系统。使用/devices下的信息。
ctfs:契约文件系统。来源于/system/contract目录。使用SMF跟踪进程。 以便对进程的错误等等进行及时的处理。

Solaris操作环境ufs文件系统
对于一个在Solaris操作环境中的用户,一个文件系统就是一个文件和目录的集合用于为系统和用户保存和组织数据
对于操作系统,一个文件系统就是通过分区和允许保存和管理的数据的一个控制结构和占用空间定义的数据块的集合。
Solaris操作环境将数据保存在一个逻辑文件体系中。这个文件体系引用了通过文件系统编号形成的Solaris目录树。
每个ufs文件系统在Solaris操作环境可以使用之前必须建立在磁盘Slice上。在磁盘Slice上建立文件系统可以使Solaris操作环境保存UNIX目录和文件。

基本磁盘结构
磁盘卷标(VTOC)
磁盘卷标包括在磁盘上的分区表,并且定位在第一个磁盘扇区。一个磁盘分区可以包括一个通常为Solaris操作环境认为是有组织的目录或者文件的文件系统。
启动块
bootstrap程序(bootblk)在下15个磁盘扇区中查找。只有root文件系统才有活动的启动块,虽然每个文件系统都定位这个空间。

超级块
文件系统是通过超级块进行描述的。超级块包含在启动块后面的16个扇区中。超级块是一个包含下列信息的文件系统信息表:
。数据块编号
。柱头组编号
。数据快和碎片的长度
。硬件的描述(从卷标中导出)
。mount点的名字
。文件系统状态标志:clean,stable,active,logging,unknown

备份超级块
因为超级块包含着临界数据,所以他被复制到每一个柱头组用来防止灾难发生。当文件系统被建立之后,这个工作就已经完成了。

柱头组
通过在柱头组中分割分区(每个组的最小默认长度是16个柱头),可以改善磁盘的访问。文件系统经常通过在一个柱头组中访问文件数据来优化磁盘。如果需要,文件系统通过几个柱头组来保存文件。

柱头组块
柱头组块是一个描述柱头组的表,包括:
。inode编号
文件类型和访问模式
用户的UID和GID
文件的大小
连接数
文件最后一次的访问和修改接点的时间
分配给文件使用的数据块的总体数量
两种指针:直接指针和间接指针
直接指针:
共有12个对数据块直接访问的直接指针,这12个直接指针可以为一直到96K字节的容量的文件直接引用数据块。
# ls –i                         ; show inode id

间接指针:
有3中类型的间接指针:
。单间接指针:一个单间接指针查找一个文件系统块包含到数据块的指针。这个文件系统块包含2048个8K字节数据块的附加地址(即2048个指针),可以指向一个附加的16M字节的数据。
。双间接指针:一个双间接指针查找一个文件系统块包含单间接指针。每个间接指针查找一个文件系统块中包含的数据块指针。双间接指针可以指向的32G字节的数据。
。三倍间接指针:一个三倍间接指针可以查找超过70T字节的数据。可是,在一个ufs文件系统中的最大的文件容量是64T。


在文件系统上静止的空间称为数据块,也叫做存储块
数据块是已经分配的,在默认的情况下,在8K字节逻辑块长度中,并且更进一步的分割成1K字节fragment。大于96K的文件将获得整个数据块,小于96K的文件are stored using fragmentation。

对于一个普通文件,数据块包括文件的内容。
对于目录,数据块包括在那个目录中的那些文件的文件名和他们的inode编号。

建立一个ufs文件系统
1.Root权限,在一个重新分区后的磁盘的第一个Slice上建立文件系统
# newfs /dev/rdsk/c1t3d0s7
2.Newfs命令会在检测正确的磁盘Slice之前提问确认信息。
继续则输入y,中断则输入n
newfs命令会显示关于已经被建立的文件系统的信息
第一行显示的是磁盘的基本表面数据的描述
第二行显示在这个Slice上已经建立的ufs文件系统
第三行和剩余的行列出备份的超级块的位置
3.在其他需要包含文件系统的Slice上重复第一步和第二步
Newfs保存了1-10%的磁盘空间。可以通过newfs –m进行预先的调整minfree。(记得8的时候直接newfs的时候,minfree好象是1%)
可以通过fstyp来看minfree的情况。
# fstyp –v /dev/dsk/c0t1d0s6 |head
在创建文件系统的时候指定minfree为2%
# newfs –m 2 /dev/dsk/c0t1d0s6
在创建文件系统的时候可以指定inode大小
# newfs –i  16384 /dev/rdsk/c1t0d0s1
对于已经存在的文件系统可以用
# tunefs –m 1 /dev/rdsk/c0t0d0s0来进行调整。
使用fsck来解决文件系统不连续的问题。
可以采用交互模式进行fsck
# fsck /dev/rdsk/c0t0d0s7
使用backup superblock进行超级块修复
# fsck –o b=32 /dev/rdsk/c0t0d0s7
在backup superblock也损坏了的情况下进行超级块修复
# newfs –N /dev/rdsk/c1t3d0s7                ; 查看其他备份
# newfs –N –T /dev/rdsk/c1t3d0s7                ; -T option allows the file systems to be a multi-Terabyte FS
# fsck –o b=535952 /dev/rdsk/c0t0d0s7

对于文件使用情况的检测,可以使用df du quot来查看。
# df –h                                        ; like df –M in Aix 5.3
# df –k
# du –k /opt | more
# du –h /opt | more
# du –ak /opt                                 ; disply disk usage including files
# du –sk /opt                                ; display only a summary of disk usage
# quot –af /opt                                ; display the number of files and space owned by each user
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP