2.6. 磁盘分配(分区)

下个菜单是用来选择磁盘空间的方法。

图 2.10. 选择分区方式
选择分区方式

bsdinstall为用户提供了四种分配磁盘空间的方法:

这部分描述应如何考虑布局磁盘分区。及演示怎样使用上几不同的分区方法。

2.6.1. 设计分区布局

在设计文件系统布局时,记住, 硬件传输驱动器外侧磁道的数据时比内侧的快。因此小的和频繁访总的文件系统应该靠近驱动器外侧。相反,像/usr 这样的大的分区应该置于靠近磁盘内部的磁道。下面是较好的分区布局顺序:/, swap,/var/usr

/var 分区的大小反应了机器的用途,该分区一般用于存放邮箱、日志和 Printer Spools。邮箱和日志文件占用磁盘空间的大小取决于用户的数量及这些文件要保存多久。总之,多数用户此分区需要 1GB 以上的空闲磁盘空间。

注意:

通常 /var/tmp 需要占用磁盘大多数空间。因为在安装新的软件时解包工具会把从安装包里提取的临时文件存拷贝放在该目录。如果该目录空间不够的话,在安装一些大型软件如FirefoxLibreOffice的时候会很困难。

/usr 目录存放很多支持系统运行的文文件, 包括 FreeBSD Ports 集和系统的源代码。推荐给该分区至少 2GB 的磁盘空间。

在为分区的大小做选择时,一定要牢记各分区空间大小的需求,分区空间的大小要合理,不然一但某个分区空间不够用了,反而其他不常用的分区还有很多空闲空间的话就会很麻烦。

根据经验 swap 分区大小应该是物理内存(RAM )大小的两倍。 (RAM )小于 swap 分区,系统性能可以更好一些。 如果swap分区过小会导致在VM中页扫描代码效率低下。并且在增加物理内存后会产生一些问题。

在具有多个SCSI磁盘或多个IDE磁盘在不同控制器上运行的大型系统上,建议在每个驱动器上配置交换,最多四个驱动器。交换分区的大小应大致相同。内核可以处理任意大小,但内部数据结构扩展到最大交换分区的 4 倍。保持交换分区的大小接近相同大小将允许内核在磁盘之间以最佳方式划分交换空间。大交换大小是好的,即使交换没有使用太多。在被迫重新启动之前,从失控的程序恢复可能更容易。

让写装载分区至靠近磁盘的边缘可以大幅增强 I/O 的读写性能。

2.6.2. UFS 分区向导

选择这种方法时,会显示一个可用磁盘的菜单。 如果是多磁盘,就选一个磁盘作为FreeBSD系统安装盘。

图 2.11. 从多磁盘列表中选择一个磁盘
从多磁盘列表中选择一个磁盘

一旦确定某块磁盘, 下一菜单会提示使用整个磁盘安装还是创建一个空白分区。如果选择[ Entire Disk ] (整个磁盘), 会自动建立以一种通用分区方式(空间大小分配)对磁盘分区。 如果选择了[ Partition ] 则在磁盘未使用的空间建立分区布局。

图 2.12. 选择整个磁盘或分区
选择整个磁盘或分区

选择了 [ Entire Disk ] 后,bsdinstall 会显示一个对话框,指出将要清空的磁盘。

图 2.13. 最终确认
最终确认

下一个菜单显示的是分区方案类型的列表。GPT通常是AMD64电脑最合适的选择。不兼容GPT的旧电脑应该使用MBR。其他的分区方案一般用于不常用或较旧的计算机。更多信息请参见表 2.1 “分区方案”

图 2.14. 选择分区表类型
选择分区表类型

在分区布建立后,预览并确定分区是否合理。 按[ Revert ],会重置分区为默认值。按[ Auto ],会自动重建FreeBSD 分区。分区也可以手动创建, 修改或删除。确认分区方案后按[ Finish ]继续安装系统。

图 2.15. 预览已建立的分区
预览已建立的分区

磁盘设定完之后,接下来的菜单会让您在格式化所选的硬盘之前有最后一次机会做变更,若需要做变更,可选[ Back ]返回到主磁盘分割菜单。[ Revert & Exit ]则会离开安装程序,不会对硬盘做任何变更。选择[ Commit ]开始安装系统。

图 2.16. 最终确认
最终确认

若需回到安装过程,请参阅第 2.7 节 “获取发行版文件”

2.6.3. 手动分区

选择此项打开分区编辑器:

图 2.17. 手动创建分区
手动创建分区

高亮显示安装驱动器(本例使用ada0)。然后选择 [ Create ]以显示可用分区方案的菜单:

图 2.18. 手动创建分区
手动创建分区

GPT通常是 amd64 计算机最合适的选择。与GPT不兼容的旧计算机应使用MBR。其他分区方案通常用于不常见或较旧的计算机。

表 2.1. 分区方案
缩写描述
APMApple 分区表,用于 PowerPC®。
BSD BSD 标签没有 MBR ,只有BSD磁盘使用程序才可以进行识别,有时称为dangerously dedicated mode
GPTGUID 分区表(http://en.wikipedia.org/wiki/GUID_Partition_Table)。
MBR主引导记录(http://en.wikipedia.org/wiki/Master_boot_record)。
VTOC8Sun SPARC64 和 Ultrasarc 计算机使用的目录。

选择并创建分区方案后,再次选择[ Create ]来创建分区。Tab 键用于在字段之间移动光标。

图 2.19. 手动创建分区
手动创建分区

FreeBSD 标准的 GPT 安装至少是用三个分区:

  • freebsd-boot - 保存 FreeBSD 启动代码。

  • freebsd-ufs - FreeBSD UFS 文件系统.

  • freebsd-zfs - FreeBSD ZFS 文件系统。更多关于 ZFS 的信息在 第 19 章 Z 文件系统(ZFS

  • freebsd-swap - FreeBSD 交换空间。

参考 gpart(8) 获取有关 GPT 分区类型的描述。

文件系统分割区可建立多个,且有部份人会偏好使用传统的配置方式将//var/tmp以及/usr分开存放在不同的分割区。请参考例 2.1 “创建传统的拆分文件系统(Split File System)分区”的示例。

大小(Size)字段可以使用常用的缩写来输入:K代表KB,M代表MB,G代表GB。

提示:

适当的对齐磁盘扇区(Sector)会提供最佳的性能,而且让分割区大小为4 KB的偶数倍数可协助确保对齐在磁碟机上的512-byte或4K-byte扇区。一般来说,使用分割区大小为1M或1G的偶数倍数是最简单的方式确保每个分割区以4K的偶数倍数做为开始。唯一一个例外是:freebsd-boot分割区因目前开机程序(Boot code)的限制,不可大于512K。

若分割区内含文件系统便会需要一个挂载点(Mountpoint),若只要建立一个UFS分割区,那么挂载点应设为/

标签(Label)是分割区的名称,磁碟机名称或编号可能因为磁碟机连接到不同的控制器或连接端口而有所不同,但分割区标签并不会改变。因此在档案如/etc/fstab中参照时,使用标签来替代磁碟机名称与分割区编号会让系统对硬件变更有更多的容错空间。GPT标签会于磁盘连接之后出现在/dev/gpt/。其他分割表格式的标签格有不同功能,且标签会在/dev/中有各自的目录。

提示:

每个分割区请使用独一无二的标签来避免相同名称的冲突,标签可以加入与电脑名称、用途、地点有关的文字。例如,使用labrootrootfslab来做为电脑名称为labUFS根目录分割区。

例 2.1. 创建传统的拆分文件系统(Split File System)分区

传统的分割区配置会将//var/tmp以及/usr分别使用不同的文件系统与分割区。先建立GPT分割表格式,然后依照下表所示建立分割区。下表是针对20G目标磁盘的分割区大小,若在目标磁盘有更多可用的空间,则可增加交换空间(Swap)或/var会比较有用。以下所示的标签皆以ex为前缀,代表example,读者应照前面的说明使用其他独一无二的标签。

默认情况下,FreeBSD 的gptboot希望第一个UFS分区是/分区。

分区类型大小挂载点标签
freebsd-boot512K  
freebsd-ufs2G/exrootfs
freebsd-swap4G exswap
freebsd-ufs2G/varexvarfs
freebsd-ufs1G/tmpextmpfs
freebsd-ufs接受默认值(磁盘的其余部分)/usrexusrfs

自定义分区表创建完后,选择 [ Finish ] 进行下一步安装程序 第 2.7 节 “获取发行版文件”

2.6.4. Root-on-ZFS 分区向导

这种分区模式只适用于整个磁盘,并将清除整个磁盘的内容。ZFS 配置菜单提供了一系列选项用于自定义存储池。

图 2.20. ZFS 分区菜单
ZFS 分区菜单

这里总结了在此菜单可以使用的服务列表:

  • Install - 使用已选参数安装系统。

  • Pool Type/Disks - 配置存储池类型和需要加入存储池的磁盘。ZFS 安装程序目前只支持创建单个顶层 vdev,但在 stripe 模式下除外。若需创建更复杂的存储池,请参阅第 2.6.5 节 “命令行模式分区”

  • Rescan Devices - 重新生成可用磁盘列表。

  • Disk Info - Disk Info(磁盘信息)菜单可用于检查磁盘,包括分区表和其他各种信息,如设备型号,序列号等可查询信息。

  • Pool Name - 设置存储池名字,默认名字是 zroot

  • Force 4K Sectors? - 强制设置扇区大小为 4K。在默认情况下,安装程序会自动创建与4K边界对齐的分区,并强制ZFS使用大小为 4K 的扇区。即使是 512 字节磁盘,这也是安全的,而且还有一个额外的好处,那就是确保在 512 字节磁盘上创建的磁盘池将来可以添加 4K 扇区磁盘,无论是作为额外的存储空间还是作为故障磁盘的替换品。按 Enter,选择是否激活此功能。

  • Encrypt Disks? - 是否使用 GELI 加密磁盘,更多详情请参阅第 17.12.2 节 “使用 geli 对磁盘进行加密”。按Enter键选择是否启用此功能。

  • Partition Scheme - 选择分区表类型,在大多数情况下建议使用 GPT。按Enter调整分区表类型。

  • Swap Size - 设置交换分区大小。

  • Mirror Swap? - 允许用户在磁盘之间进行镜像交换。请注意,启用镜像交换会破坏崩溃转储。按Enter来激活它。

  • Encrypt Swap? - 是否要加密 swap 分区,每次系统启动时用临时密钥加密 swap 分区,并在重启时丢弃该密钥。按 Enter 键选择是否启用该功能,更多详情请参阅 第 17.13 节 “对交换区进行加密”

选择 T 配置 存储池类型,并选择要加入该存储池的磁盘。

图 2.21. ZFS 存储池类型
ZFS 存储池类型

这里总结了在此菜单可供选择的存储池类型(Pool Type)

  • stripe - 可最大化使用磁盘空间,没有冗备数据。如果存储池中的某块磁盘坏了,存储池中的数据都将丢失。

  • mirror - mirror 在每个磁盘上存储了所有数据的完整副本。mirror 提供了良好的读取性能,因为数据是从所有磁盘上并行读取的。写入性能较差,因为必须将数据写入池中的所有磁盘。可在只有一块磁盘可用,其他磁盘损坏的情况下保证数据完整。此类型需要至少两个磁盘。

  • raid10 - 为 RAID1 和 RAID0 的组合,性能较好。至少需要四块硬盘。

  • raidz1 - 是否启用单冗余 RAID(raidz1)。运行时最多容许一个磁盘失效。启用此功能至少需要三块磁盘。

  • raidz1 - 是否启用双冗余 RAID(raidz2)。运行时最多容许两个磁盘失效。启用此功能至少需要四块磁盘。

  • raidz1 - 是否启用三冗余 RAID(raidz3)。运行时最多容许三个磁盘失效。启用此功能至少需要五块磁盘。

选择完存储池类型(Pool Type)以后,还需选择要加入存储池的磁盘(至少一块磁盘)。选好磁盘后需再次确认,若没问题,选择 <Change Selection> 回到磁盘列表,否则选择 <Back> 来修改存储池类型(Pool Type)。

图 2.22. 选择磁盘
选择磁盘

图 2.23. 无效选项
无效选项

若列表中缺少一个或多个磁盘,或者在安装程序启动后连接了磁盘,请选择 - Rescan Devices 以刷新可用磁盘的列表。

图 2.24. 重新扫描设备
重新扫描设备

为防止意外擦除磁盘,- Disk Info 菜单可用于检索磁盘信息,包括分区表和其他各种可读取信息,例如设备型号和序列号。

图 2.25. 分析磁盘
分析磁盘

选择 N 来设置存储池名字。输入名字并选择<OK>让其生效或选择<Cancel>使用默认名字并回到主菜单。

图 2.26. 存储池名称
存储池名称

选择 S 来设置 swap 分区大小。输入您需要的 swap 分区大小后按 <OK> 保存更改或按 <Cancel> 使用默认设置并返回到上级菜单。

图 2.27. Swap 空加大小
Swap 空加大小

所有参数设置完成后,选择菜单上方的>>> Install。安装程序接着会提供最后一次修改的机会可取消先前所选择摧毁用来建立ZFS储存池的磁碟机。

图 2.28. 最新改动
最新改动

如果开启 GELI 磁盘加密,安装程序将提示您输入密码。此密码用于加密磁盘。在此之后将开始初始化加密步骤。

图 2.29. 磁盘加密密码
磁盘加密密码

图 2.30. 初始化加密
初始化加密

安装过程开始正常进行,若需继续安装系统,请参阅第 2.7 节 “获取发行版文件”

2.6.5. 命令行模式分区

当要做进阶的安装时,bsdinstall的磁盘分割菜单可能无法提供需要的弹性。进阶的使用者可以在磁盘分割菜单选择Shell选项来手动分割磁碟机、建立文件系统、填写/tmp/bsdinstall_etc/fstab以及挂载文件系统到/mnt下。这些动作完成之后,输入exit可返回bsdinstall继续安装程序。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.