Home -- Michael's Blog :: Just Do IT -- Manuals

3.5. 磁盘架构

FreeBSD使用最小单位的架构去查找文件。 而文件名区分大小写,这就意味着 readme.txtREADME.TXT 是两个不相同的文件。 FreeBSD不凭文件扩展名 (.txt)去识别这个文件是 程序、或是文档、或是其他格式的数据。

各种文件存放在目录里。 一个目录可以含有许许多多的文件, 允许含有其他的目录,同样允许你添加不同层次的目录在里面。 可以轻松地组织你的数据。

在(某些)目录或文件下搏接目录(文件)名,那在(某些)目录之后是一斜杠 :/。 跟随(下来)的其他目录都需要(这个斜杠)。 假如你有一个目录 foo, 它含有目录 bar, 而bar之下含有 readme.txt文件,那么他的全名或 path 就是foo/bar/readme.txt

在文件系统里目录和文件的作用是存储数据。 每一个文件系统都正确含有一个顶级目录根目录, 这个根目录包含其他目录。

你也许在其他的一些操作系统碰到类似这里的情况, 当然也有不同的情况。举些例子,MS-DOS®是用\分隔文件名或 目录名,而Mac OS® 使用:

FreeBSD在路径方面不使用驱动器名符号或驱动器名称, 在FreeBSD里你不能这样使用:c:/foo/bar/readme.txt

为了代替(驱动器名符号), 一个文件系统会指定 根 文件系统, 根文件系统的根目录是 /。 其他每一个文件系统 挂接在根文件系统下。 无论有多少磁盘在FreeBSD 系统里, 每个磁盘都会以目录的方式加上。

假设你有三个文件系统, 名为 ABC。 每个文件系统有一个根目录, 而各自含有两个其他的目录, 名为 A1, A2 ( B1, B2C1, C2)。

看看 A 这个根文件系统。 假如你用 ls 命令来查看这个目录你会见到两个子目录: A1A2。 这个目录树是这个样子:

一个文件系统必须挂到另一个文件系统的某一目录, 所以现在假设把B文件系统挂到 A1目录,那B根目录因此代替 了A1,而显示出B目录(的内容):

无论B1B2 目录在那里而延伸出来的路径必须为 /A1/B1/A1/B2。 而在/A1 里的(原有)文件会临时隐藏。 想这些文件再出现把B 从 A 挂接释放

B 挂接在 A2 那图表的样子就是这样子:

这个路径分别是 /A2/B1/A2/B2

文件系统能把顶部挂接上另一个(文件系统)。 继续这个例子, 把 C 文件系统挂接在B 文件系统里的B1目录, 排列如下:

或者把 C 文件系统挂接在A 文件系统里的A1目录:

假如你熟悉 MS-DOS并知到join 命令, 尽管不相同,其实是相似的。

这方面不是普通知识而且涉及到你自己所关心的, 当你安装FreeBSD并在以后添加新磁盘时,你必须知到该如何新建文件系统和挂接上。

(FreeBSD系统)它有一个主要的根文件系统, 不需要另外新建立, 但当需要手工处理时,这是一个有用的知识。

多样性文件系统的益处

统一文件系统的益处

partitions作为文件系统是静态的。 分割期间通用的做法是不能含相同的目标 (举个例子, MS-DOS的分割), 因为这是由 FreeBSD的 UNIX® 传统形成的。 每个 partition 由字母ah标定, 每个 partition 各自就是一个文件系统, 这就意味着这些文件系统可以挂接在某一文件系统的某一层次, 或者把说字母标定的partition包含在某一文件系统的某一层次其中。 (译者注:Slice是指磁盘的片,也就是主分区。partition是指一个Slice内的分区。)

FreeBSD的交换分区同样使用磁盘空间。 交换分区是给FreeBSD作虚拟内存使用的, 这样能令你的计算机有更多的内存可使用, 当FreeBSD在运行而内存不够的时候,它会把其他一些可转移的数据转移到交换分区, 空出内存的位置以供使用。

某些 partitions 的用途是确定的。

Partition(分区) 约定
a 通常指定为根文件系统
b 通常指定为交换分区
c 通常它和装载入的slice同一大小。 这样的用途当在c partition 上工作时必定会影响到事整个slice (举个例子,坏块扫描器)。 你通常不愿意在这个partition建立文件系统。
d Partition d 曾经有特殊的含义, 虽然(对我们来说)早已远离而去。 但直到今天,一些工具在 partition d上运行会发生古怪事情, 所以 sysinstall 通常不建立 partition d

每个 partition 是通过FreeBSD调用一个slice来储存的。 因为反复调用partitions而又基于UNIX背景,所以Slice 是FreeBSD的 term。 Slices是从1到 4编号的。

Slice的编号是紧跟设备名称之后,首个编号是1。 但在编号之前还要加上一个s, 所以首个SCSI磁盘和它的首个slice就是``da0s1''。 一个磁盘上只能分出四个物理slices,但你也可在适当类型的某个slice里建立逻辑分区。 在护展分区方面,编号从5开始。 所以首个IDE磁盘首个护展分区就是``ad0s5''。 文件系统利用这样的设计就可以整个slice使用。

Slices, ``专项指定'' 物理驱动器, 和其他驱动器都包含partitions, 那几个的partitions都是用字母 从 ah来标定的, 而这些字母都在驱动器名字之后,所以 ``da0a'' 是指首个da设备的 a partition, 而那个就是 ``专项指定''。 ``ad1s3e'' 是指IDE磁盘第三个slice的第五个partition。

最终,每个磁盘都被系统识别。 一个磁盘名字是用磁盘类型代码和编号来标识的, 它不像slices,磁盘的编号是由0开始的。 对应代码请看这里所列出的表格 3-1

当提供一个partition名字给FreeBSD时, slice 和 磁盘所必须有这个partition,还应当提供所partition所涉及 到的slice和磁盘的名字。可这样列出: 磁盘名称,s,slice 编号,和partition标定字母。 例子请看这里 例子 3-1

例子 3-2 这里显示了一个磁盘的布局,有更清楚的帮助。

在安装FreeBSD时,你首先要配置好磁盘slices, 然后在FreeBSD使用的slice上建立partitions。 并在每个partition上建立一个文件系统(或交换分区), 和指定文件系统的挂接位置。

表格 3-1. 磁盘设备的代码

代码 说明
ad ATAPI (IDE) 磁盘
da SCSI 直接存取磁盘
acd ATAPI (IDE) 光驱
cd SCSI 光驱
fd 软驱

例子 3-1. 样例磁盘, Slice, 和 Partition 它们的命名

命名 说明
ad0s1a 在首个IDE磁盘(ad0)上的 第一个slice (s1)里的 第一个partition (a)。
da1s2e 在第二个SCSI磁盘(da1)上的 第二个slice(s2)里的 第五个partition(e)。

例子 3-2. 一个磁盘的布局

从在系统里的首个IDE磁盘图表可以显示出FreeBSD的见解。 假设磁盘大小为4 GB,它里面包含了两个2 GB 大小的slices (但在MS-DOS叫partitions)。 首个slice是一个MS-DOS磁盘叫C:, 而第二个slice是FreeBSD配置好的slice。 FreeBSD配置好的slice有三个partitions和另一个交换分区。

这三个partitions各自控制一个文件系。 partitiona用于根文件系统, partitione用于/var目录层, partitionf用于/usr目录层。

Michael's Blog :: Just Do IT -- manuals