2.
如果损坏的文件已经安装到文件树中,可以进入另一个目录,然后将损坏的文件系统卸载,例如:
#cd /
#umount
/var
3. 使用 newfs -N 命令显示超级块的值,此命令会列出备用的超级块在文件系统中的位置:
#
newfs -N /dev/dsk/c0t0d0s1
/dev/rdsk/c0t0d0s1: 961248 sectors
in 204 cylinders of 19 tracks, 248 sectors
469.4MB in 13 cyl
groups ( 16 c /g, 36.81MB/g, 17664 i/g)
super-block backups
(for fsck -F ufs -o b=#) at:
32, 75680, 151328, 226976,
302624, 378272, 453920, 529568, 605216, 680864,
756512,
832160, 907808,
4. 从 newfs -N 命令列出的备用超级块中选择一个作为 fsck
命令的一个选项进行修复:
#fsck -F ufs -o b=453920 /dev/rdsk/c0t0d0s1
索引节点
索引节点包含了一个文件除去文件名以外的所有信息。一个索引节点占用 128
字节的磁盘空间,它包含了下列信息:
1. 文件类型:普通文件、目录、块设备文件、字符设备文件、链接等
2.
文件权限:读、写、执行权限的组合
3. 文件的硬链接数
4. 文件所有者的用户 ID
5. 文件所属的组
ID
6. 文件大小(字节数)
7. 一个包含 15 个磁盘块地址的数组
8. 文件最近的访问日期和时间
9. 文件最后一次修改的日期和时间
10. 文件创建的日期和时间
硬盘上的每个文件,都有一个描述它的信息的索引节点。文件系统创建的时候,一定数目的索引节点在硬盘柱面组中被同时创建。有时候,这些索引节点或许会不够用,例如当一个程序产生大量小文件的时候,此时文件系统就需要增加索引节点。同样,如果我们事先知道此文件系统只用来存放少数大文件,我们就可以通过减少索引节点的数目来达到节省磁盘空间的目的——毕竟每个索引节点占用
128 字节。创建文件系统的时候,可以使用 newfs 命令的 -i 选项来增加或者减少索引节点的数目。 /usr/ucb 目录下的
df 命令可以查看文件系统中所引节点的状况。例如:
# usr/ucb/df -i
Filesystem iused
ifree %iused Mounted on
/dev/dsk/c0t0d0s0 131672 1929384 6% /
注意:文件系统一旦创建,就无法改变它的索引节点数目,因此,当索引节点不够用的时候,首先应当备份此文件系统数据,然后创建一个包含更多索引节点的新的文件系统,然后将备份的数据恢复到新的文件系统就可以了。
存储块 / 数据块
存储块,也叫做数据块,它占用了文件系统的其他所有空间。这些块包含了存放在磁盘上的数据文件。每个存储块的大小在创建文件系统的时候被确定。对一个普通文件来说,存储块存放了文件的内容,对一个目录来说,存储块中存放了此目录中所有文件的索引节点号和文件名的信息。
好了,上面说了这么多内容,是不是看累了啊?反正我的手早酸了,让我去喝杯茶,然后继续剩下的内容:磁盘命名。
磁盘命名
这里主要是详细解释我们最开始使用 format 命令的时候,看到的 c0t0d0
这个表示的详细含义。
在 Solaris 系统中用设备名来代表磁盘。磁盘设备名是类似 cXtXdX
格式的一系列字母和数字,比如我们看到的 c0t0d0 。设备名中的字母( c , t , d )都是一样的,但 X
代表的数字表示特定的磁盘或者系统。例如 c0t0d0 表示 0 号控制器, 0 号磁盘, 0 号 LUN
,这通常指代系统中的第一个硬盘,往往也是系统的启动磁盘( boot disk )。
Sun 使用下列命名方式定义逻辑设备名:
/dev/[r]dsk/cXtXdXsX
c: 逻辑控制器号(逻辑控制器)
t: 物理总线目标号
d: 磁盘或逻辑单元号 (LUN)
s: 分区号
cX : X 指磁盘控制器。当 SUN
系统搜集安装在系统中的磁盘控制器信息时,它给每个磁盘控制器一个数值,数值取决于系统监测控制器的先后顺序。第一个被检测到的控制器分配的数值是
0 ,第二个控制器是 1 ,依次类推。对 IDE 系统来说,第一个 IDE 通道为 0 ,第二个(如果存在的话)通道为 1 。
tX : X 指磁盘的目标号。这个数字有时候被称为 SCSI
标识符,磁盘控制器上的每一个磁盘都有一个唯一的目标号。控制器通过这个目标号可以对每个磁盘独立寻址。对 IDE
磁盘而言,主盘的目标号是 0 ,从盘的目标号是 1 。
dX : X 指磁盘的逻辑单元号( LUN )。在有些磁盘阵列中,
LUN 被用来区分系统中的各个磁盘。一个阵列可以用一个目标号来表示一组磁盘,然后用 LUN
来表示这个磁盘组中的单个磁盘。这种方式被广泛应用于 SCSI 磁盘阵列和光盘转换设备中。对单个磁盘或 IDE
磁盘,这个数字总是设定为 0 。
sX : X 指磁盘上的分区号。它和磁盘的分区对应。就如我们前面所说的“ Solaris
下,一个磁盘包含 8 个分区,标记为 0 - 7 ” ,因为这里 X 的数值只能是 0 —— 7 。
以上的内容,就可以详细说明出 c0t0d0s0 的含义了。
2.Linux 硬盘分区简介
磁盘命名
相对 Solaris 来说, Linux 磁盘命名的概念就简单多了,而且和我们平常使用的
Windows 系统多少有些瓜葛。和 Solaris 一样,在 Linux
中,每个硬件设备都有一个称为设备名称的特别名字,例如,接在 IDE1 的第一个硬盘( master 主硬盘),其设备名称为
/dev/hda ,也就是说我们可以用“ /dev/hda ”来代表此硬盘,下面的信息相信大家看了以后会有“一目了然”的感觉:
磁盘 设备名称
IDE1 的第 1 个硬盘( master ) /dev/hda
IDE1 的第 2
个硬盘( slave ) /dev/hdb
IDE2 的第 1 个硬盘( master ) /dev/hdc
IDE2 的第 2 个硬盘( slave ) /dev/hdd
SCSI 的第 1 个硬盘 /dev/sda
SCSI 的第 2 个硬盘 /dev/sdb
这么看来,是不是比 Solaris 的硬盘命名容易理解多了?
分区命名
分区的目的,是为了让数据能够分类存放。每一个分割出来的区域,就称为一个“分区”(
partition ),在 Solaris 中,也常常用“ slice ”(片)的概念,例如我们前面所讲过的 c0t0d0s0 中的
s0 ,就是指代第一个分区。在 Linux 中,分区的概念和 Windows 得更加接近,硬盘分区按照功能的不同,可以分为以下几类:
1. 主分区( primary )
2. 扩展分区( extended )
3. 逻辑分区( logical
)
主分区( primary )
通常在划分硬盘的第 1 个分区时,会指定为主分区。但是和 Windows
不同的是, windows 中一个硬盘最多只允许有 1 个主分区,而 Linux 最多可以让用户创建 4 个主分区。
扩展分区( extended )
由于 Linux 中一个硬盘最多只允许有 4
个主分区,如果想要创建更多的分区,怎么办?于是就有了扩展分区的概念。用户可以创建一个扩展分区,然后在扩展分区上创建多个逻辑分区。从理论上来说,逻辑分区没有数量上的限制。
需要注意的是,创建扩展分区的时候,会占用一个主分区的位置,因此,如果创建了扩展分区,一个硬盘上便最多只能创建 3
个主分区和一个扩展分区。而且,扩展分区不是用来存放数据的,它的主要功能是为了创建逻辑分区。这个概念,和 Windows
可说是一模一样。
逻辑分区( logical )
逻辑分区不能够直接创建,它必须依附在扩展分区下,容量受到扩展分区大小的限制。通常逻辑分区是存放文件和数据的地方。
有了磁盘命名和分区命名的概念,理解诸如 /dev/hda1
之类的分区名称,应该就不是难事了。具体的,可以看下面的表示:
分区 分区名称
IDE1 的第 1 个硬盘(
master )的第 1 个主分区 /dev/hda1
IDE1 的第 1 个硬盘( master )的第 2 个主分区
/dev/hda2
IDE1 的第 1 个硬盘( master )的第 3 个主分区 /dev/hda3
IDE1
的第 1 个硬盘( master )的第 4 个主分区 /dev/hda4
IDE1 的第 1 个硬盘( master
)的第 1 个逻辑分区 /dev/hda5
IDE1 的第 1 个硬盘( master )的第 2 个逻辑分区
/dev/hda6
...... ......
IDE1 的第 2 个硬盘( slave )的第 1 个主分区
/dev/hdb1
IDE1 的第 2 个硬盘( slave )的第 2 个主分区 /dev/hdb2
......
......
SCSI 的第 1 个硬盘的第 1 个主分区 /dev/sda1
SCSI 的第 1 个硬盘的第 2
个主分区 /dev/sda2
上一篇:UNIX硬盘分区简介
下一篇:硬盘分区格式
【本站声明】本站刊载的部分内容全部来源互联网,对于此类文章本站仅提供交流平台,不为其版权负责。如涉及侵犯您的知识产权的文章,请联系我们,我们将尽快做出更正。并向您表示感谢!同时特别感谢对本站所有支持的网友。