16.3. 添加磁盘

Originally contributed by David O'Brien.

假设我们要给一台只有一个磁盘的机器增加一个新的 SCSI 磁盘。首先 需要关掉计算机,然后按操作规程来安装驱动器,控制器和驱动程序。由于 各厂家生产的产品各不相同,具体的安装细节不在此文档介绍之内。

root 用户登录。安装完驱动后,检查一下 /var/run/dmesg.boot 有没有找到新的磁盘。在我们 的例子中新增加的磁盘就是 da1,我们从 /1 挂上它。 (如果您正添加一个 IDE 驱动器,在 4.0 版以前的系统里是 wd1,以后的版本的系 统里是 ad1 )。

因为 FreeBSD 运行在 IBM-PC 兼容机上,它必须遵循 PC BIOS 分区 规范。这与传统的 BSD 分区是不同的。一个 PC 的磁盘最高只能有四个 BIOS 主分区。如果磁盘只安装 FreeBSD 您可以使用 dedicated 模式。另外, FreeBSD 必须安装在 PC BIOS 支持的分区内。FreeBSD 把分区叫作 slices 这可能会把人搞糊涂。您也可以在只安装 FreeBSD 的磁盘上使用 slices,也可以在安装有其它操作系统的磁盘上使用 slices。这不会影响其它操作系统的 fdisk 分区工具。

在 slice 方式表示下,驱动器被添加到 /dev/da1s1e。 可以读作:SCSI 磁盘,编号为 1 (第二个SCSI 磁盘), slice 1 (PC BIOS 分区 1), 的 BSD 分区 e 。在有些例子中,也可以简化为 /dev/da1e

由于 bsdlabel(8) (在 FreeBSD 4.X 中叫做 disklabel(8)) 使用 32-位 的整数来表示扇区号, 因此在多数情况下它的表现力限于每个磁盘 2^32-1 个扇区或 2TB。 fdisk(8) 格式允许的起始扇区号不能高于 2^32-1 而分区长度也不能大于 2^32-1, 通常情况下这限制了分区大小最大为 2TB 而磁盘大小则是 4TB。 sunlabel(8) 格式的限制是每个分区 2^32-1 个扇区, 但允许 8 个分区因此最大支持 16TB 的磁盘。 要使用更大的分区, 则应使用 gpt(8)

16.3.1. 使用 sysinstall(8)

  1. 使用 Sysinstall

    您可以使用 /stand/sysinstall 命令, 选择它的使用菜单来分区和标记一个新的磁盘。需要有 root 权限, 或者直接使用 root 账户登录或者使用 su 命令来切换到根用户。运行 /stand/sysinstall ,然后选择 Configure 菜单。在 FreeBSD Configuration Menu 下,上下滚动, 选择 Fdisk 条目。

  2. fdisk 分区编辑器

    进入 fdisk 分区编辑器后,选择 A ,FreeBSD 将使用全部的磁盘。当被告知 “remain cooperative with any future possible operating systems”时,回答 YES。使用 W 保存刚才的修改。现在使用 q 退出 FDISK 编辑器。下面会看到有关主引导区的信息。现在您已经在 运行的系统上添加了一个磁盘,就选择 None

  3. Disk Label 编辑器

    接下来,您应该退出 sysinstall 并且再次启动它,并按照上面的步骤直接进入 Label 选项。进入 磁盘标签编辑器。 这就是您要创建的 BSD 分区。一个磁盘最多可以有 8 个分区,标记为 a-h。有几个分区标签有特殊的用途。 a 分区被用来作为根分区(/)。 系统磁盘(例如:从那儿启动的分区)必须有一个 a 分区。b 分区被用作交换分区,可以用很多磁盘用作交 换分区。 c 分区代表整个硬盘,或在 FreeBSD slice 模式下代表整个 slice。其它分区作为一般分区来使用。

    sysinstall 的标签编辑器用 e 表示非 root 和非 swap 分区。在标签编辑器中,可以使用键入C 创建一个文件系统。当提示这是否是一个 FS(文件系统)或 swap 时,选择 FS,然后给出一个加载点(如: /mnt)。 当在 post-install 模式时添加一个磁盘, sysinstall 不会在 /etc/fstab 中创建记录,所以是否指定加载点并不重要。

    现在已经准备把新标签写到磁盘上,然后创建一个文件系统,可以按下 W。出现任何错误都会不能创建新的分区。可以退出标签编辑 器然后重新执行 sysinstall

  4. 完成

    下面一步就是编辑 /etc/fstab,为您的磁盘添加一个新 记录。

16.3.2. 使用命令行工具

16.3.2.1. 使用 Slices

这步安装将允许磁盘与可能安装在您计算机上的其它操作系统一起 正确工作,而不会搞乱其它操作系统的分区。推荐使用这种方法来安装 新磁盘,除非您有更好的理由再使用 dedicated 模式!

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# fdisk -BI da1 #初始化新磁盘
# disklabel -B -w -r da1s1 auto #加上标签
# disklabel -e da1s1 # 现在编辑您刚才创建的磁盘分区
# mkdir -p /1
# newfs /dev/da1s1e # 为您创建的每个分区重复这个操作
# mount /dev/da1s1e /1 # 挂上分区
# vi /etc/fstab # 完成之后,添加合适的记录到您的 /etc/fstab文件。

如果有一个 IDE 磁盘,记得要用 ad 来替换 da,4.X 以前的系统要用 wd

16.3.2.2. 专用模式

如果您并没有安装其它的操作系统,可以使用 dedicated 模式。记住这种模式可能会弄乱 Microsoft 的操作系统,但不会对它进行破坏。 它不识别找到的 IBM OS/2® 的 “appropriate” 分区。

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# disklabel -Brw da1 auto
# disklabel -e da1               # 创建 `e' 分区
# newfs -d0 /dev/da1e
# mkdir -p /1
# vi /etc/fstab               # 为 /dev/da1e添加一个记录
# mount /1

另一种方法:

# dd if=/dev/zero of=/dev/da1 count=2
# disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
# newfs /dev/da1e
# mkdir -p /1
# vi /etc/fstab                   # 为 /dev/da1e添加一个记录
# mount /1

Note: 从 FreeBSD 5.1-RELEASE 版本开始, bsdlabel(8) 程序代替了 老版本的 disklabel(8) 程序。bsdlabel(8) 中大量过时的选项 和参数也被取消。在上面的例子中选项 -r 可以使用 bsdlabel(8)程序来删除。更多的信息,请参考 bsdlabel(8) 手册页。