For the complete documentation index, see llms.txt. This page is also available as Markdown.

存储与文件系统

概要

OpenBSD 为磁盘、分区、文件系统以及加密、软件 RAID 等高级存储选项提供了一套一致且安全的框架。本章介绍如何检测新磁盘,选用合适的分区方案(MBR 或 GPT)进行初始化,定义 disklabel 分区,创建并挂载文件系统,并通过 /etc/fstab 完成引导时配置。同时涵盖可移动介质、文件系统检查以及磁盘监控工具的使用。

磁盘设备与分区命名

OpenBSD 对存储硬件采用清晰、结构化的设备命名约定。

整盘

磁盘按驱动类型与发现顺序命名:

设备
说明

sd0

第一块 SCSI 或 SATA 磁盘

sd1

第二块 SCSI 或 SATA 磁盘

wd0

第一块 IDE 磁盘(现代系统中已少见)

vnd0

第一块虚拟磁盘(如内存盘)

这些名称在 fdisk(8)gpt(8)disklabel(8) 及文件系统工具中通用。

分区

每块磁盘通过 disklabel(8) 划分为若干分区。OpenBSD 允许每块磁盘最多 16 个分区,编号为 ap

分区
典型用途

a

根文件系统或主挂载点

b

交换分区

c

整块磁盘(系统自动定义,禁止修改或挂载)

dh

常用于 /usr/home/var

ip

用于额外文件系统或特殊用途

c 分区始终代表整块磁盘,是系统必需的,禁止格式化、挂载或手动修改。

创建与修改 disklabel 分区使用:

分区定义完成后,可格式化、挂载、加密或用于 RAID 集。

设备节点

OpenBSD 同时使用块设备文件与字符设备文件访问分区:

设备节点
用途

/dev/sd0a

块设备(用于挂载)

/dev/rsd0a

原始字符设备(用于 newfsfsck

格式化与文件系统检查应使用原始设备(带 r 前缀),挂载则使用块设备。

磁盘检测

新存储设备由内核自动识别。查看已检测到的磁盘:

上述命令列出 sd0sd1 等设备。检测到的每块磁盘都可随后查看并初始化。

磁盘初始化

定义 disklabel 分区前,须先用 MBR 或 GPT 分区方案初始化磁盘。OpenBSD 在基于 BIOS 的系统上默认使用 MBR,在基于 UEFI 的系统上默认使用 GPT。

选择 MBR 或 GPT

分区方案取决于引导固件:

方案
平台
工具

MBR

BIOS(传统)

fdisk(8)

GPT

UEFI

gpt(8)

不用于引导的纯数据盘可任选其一。

使用 fdisk 初始化 MBR

在 MBR 系统上,将磁盘初始化为单一 OpenBSD 分区(类型 A6):

该命令覆写 MBR,创建一个标记为活动的 OpenBSD 分区。查看分区布局:

必要时可手动设置活动(可引导)标志:

某些系统需手动安装 MBR 引导程序:

不用于引导的磁盘无需配置 MBR。

使用 fdisk 初始化 GPT

基于 UEFI 的系统使用 GPT。OpenBSD 不提供 gpt(8),GPT 分区表通过 fdisk(8) 创建与管理。

初始化 GPT 并创建 EFI 系统分区:

创建 EFI 系统分区后,在其上建立 FAT32 文件系统并安装引导加载程序:

磁盘内部的 OpenBSD 分区随后通过 disklabel(8) 管理。

查看分区表:

与 MBR 不同,GPT 无需将分区标记为活动。UEFI 固件依据分区类型自动定位 EFI 系统分区。

使用 disklabel 分区

外层 MBR 或 GPT 方案就绪后,使用 disklabel(8) 在其内部创建 OpenBSD 专用分区。

创建分区:

上述操作创建分区 a,自标准偏移(64 扇区)起占用全部剩余空间,类型为 4.2BSD

查看生成的 disklabel:

自动创建的 c 分区始终覆盖整块磁盘,禁止修改。

创建与挂载文件系统

分区定义完成后,可格式化为文件系统并挂载。

使用 newfs 格式化

为分区初始化标准 FFS 文件系统:

必须使用原始字符设备(rsd1a)。

挂载文件系统

创建挂载点并挂载文件系统:

确认文件系统已挂载:

配置 /etc/fstab

要让文件系统在引导时自动挂载,在 /etc/fstab 中添加一行:

/etc/fstab 每行的六个字段含义如下:

字段
用途
示例

1

设备路径

/dev/sd1a

2

挂载点

/mnt/storage

3

文件系统类型

ffs

4

挂载选项

rwnoauto

5

dump 标志(遗留字段;通常为 0 或 1)

1

6

fsck 检查顺序

1(根)、2(其他)、0(跳过)

常见文件系统类型

类型
说明

ffs

OpenBSD 快速文件系统

cd9660

ISO 9660 CD/DVD 介质

msdos

FAT 格式的文件系统

ext2fs

只读访问 Linux EXT2/EXT3 卷

swap

交换分区

sw

交换分区的推荐关键字

挂载选项

选项
说明

rw

读写

ro

只读

noexec

不允许执行二进制文件

nodev

忽略设备节点

nosuid

忽略 setuid/setgid 位

noauto

引导时不挂载

wxallowed

允许可写且可执行的映射(如 JIT)

softdep

使用软更新(元数据日志;FFS 默认启用)

userquota

启用用户配额

groupquota

启用组配额

辅助数据卷的 /etc/fstab 示例:

文件系统一致性检查

若文件系统未正常卸载,引导时会用 fsck(8) 检查。手动检查:

自动修复:

正常卸载或干净关机可确保文件系统保持干净状态:

交换分区配置

交换分区通过将内存内容分页到磁盘来提供虚拟内存,供物理内存不足时使用。OpenBSD 使用专用的 disklabel 分区作为交换分区,按惯例编号为 b

创建交换分区

安装过程中通常会自动创建 b 交换分区。必要时可使用 disklabel(8) 手动添加:

查看结果:

应能看到类似如下的行:

运行时启用交换分区

立即激活交换分区:

查看活动交换设备:

/etc/fstab 中配置持久化交换分区

要让交换分区在引导时自动启用,在 /etc/fstab 中添加一条记录。挂载点字段恒为 none,文件系统类型应为 swap 或推荐的同义词 sw

OpenBSD 推荐使用 sw 关键字,但两种写法均受支持。

多个交换设备

若定义了多个交换分区,OpenBSD 会在它们之间分摊分页负载。运行时可通过多次调用 swapctl -a 添加更多交换设备。

移除交换分区

停用交换分区:

该命令仅将设备从活动交换列表中移除,不会修改 disklabel 或删除数据。

交换分区对物理内存有限的系统、大型构建或工作负载至关重要,也是启用系统休眠(若平台支持)所需。

挂载可移动介质

USB 存储设备、ISO 镜像、内存盘等可移动介质可像普通文件系统一样挂载使用,通常按需手动挂载。

USB 存储设备

USB 大容量存储设备(如 U 盘)与其他磁盘一样显示为 sdN。插入 USB 设备时,内核会分配下一个可用设备号(例如 sd2)。

确定正确的设备与分区:

USB 设备常用 FAT 文件系统格式化。挂载 FAT 格式的 USB 设备:

若不确定具体分区,查看 disklabel sd2 的输出,目标分区类型通常为 MSDOS

安全移除设备:

卸载前请确认没有 shell 或后台进程在访问挂载点。设备正在使用时,umount 会因 “device busy” 失败。

可移动磁盘不应列入 /etc/fstab,除非配置 noauto 选项,以免引导时被挂载。

挂载 ISO 镜像

ISO 文件(如 OpenBSD 安装镜像)可通过 vnd(4) 配置的虚拟磁盘挂载为只读文件系统。

将 ISO 镜像关联到虚拟磁盘:

文件系统类型 cd9660 对应 CD-ROM 介质使用的 ISO 9660 标准。vnd0c 分区始终指向完整镜像。

卸载并解除关联:

创建与使用内存盘

OpenBSD 通过 vnd(4) 驱动支持基于内存的虚拟磁盘,适用于临时文件系统、测试或恢复环境。其后端可以是普通文件,也可以是匿名系统内存。

使用后端文件

创建 64 MB 镜像文件:

使用完毕后卸载并解除关联:

使用匿名内存

创建无后端文件的纯内存盘:

上述操作创建一个完全驻留在 RAM 中的临时文件系统。设备卸载或系统重启后,其内容将丢失。

vnd(4) 驱动支持多个实例(vnd0vnd1 等),ISO 镜像与内存盘可同时挂载。

创建 ISO 镜像文件

OpenBSD 支持使用镜像文件进行归档、传输与安全存储。镜像文件可以是普通 ISO 9660 镜像,也可以是基于 softraid(4) 的加密容器文件。镜像文件通常通过 vnconfig(8) 关联,并像普通文件系统一样挂载。

创建普通 ISO 镜像

从目录生成标准 ISO 9660 镜像:

该命令生成 archive.iso,即包含 /path/to/data 内容的只读 ISO 镜像。

挂载该镜像:

卸载并解除关联:

任何具备该镜像文件与 vnd(4) 支持的系统都可重复上述操作。

创建加密镜像文件

为敏感数据创建基于文件的加密卷:

  1. 创建后端文件并关联到虚拟磁盘:

  2. 使用 CRYPTO discipline 创建 softraid 卷:

  3. 为加密文件系统建立 disklabel、格式化并挂载:

后续使用该加密卷:

  1. 关联镜像并解锁:

  2. 挂载文件系统:

  3. 使用完毕后卸载并解除关联:

这种方式可创建安全、可移植的加密容器,行为类似可移动存储。加密镜像与系统相关,需要 OpenBSD softraid(4) 驱动才能访问。

高级特性

OpenBSD 内置若干存储管理高级特性,包括文件系统快照、配额、加密卷与软件 RAID。这些特性在标准文件系统之上提供更强的控制力、灵活性与数据完整性。

使用 fssnap 创建快照

文件系统快照是已挂载文件系统在某一时刻的只读映像。快照可在不停机的情况下进行一致性备份或取证检查。

OpenBSD 通过 fssnap(8) 为 FFS2(快速文件系统版本 2)提供快照支持。

/home 创建快照:

快照必须位于同一文件系统上,呈现为只读文件。挂载快照:

此后即可通过 /mnt/snap 检视或备份。删除快照:

快照在显式删除前会跨重启保留。可同时创建多个快照。

磁盘配额

配额允许管理员按用户或组限制各文件系统的磁盘用量。仅 ffs 类型文件系统支持配额。

启用配额步骤:

  1. 修改 /etc/fstab,在选项字段中加入 userquotagroupquota

  2. 在文件系统根目录下创建必要的配额文件:

  3. 在文件系统上启用配额:

查看当前用量:

配额一经设置立即生效,只要在 /etc/fstab 中定义,重启后仍保持启用。

使用 softraid 创建加密卷

OpenBSD 通过 softraid(4) 驱动配合 CRYPTO discipline 支持全盘加密。该方式在底层分区之上建立加密卷。

用未使用的分区(如 sd1a)创建加密卷:

新卷以设备形式关联(如 sd3)。格式化并挂载该卷:

重启时,系统会在关联该卷前提示输入加密口令。如有需要,可使用 keydisk 配置加密卷的自动解锁。

查看已关联卷及其状态:

使用 softraid 实现软件 RAID

softraid(4) 子系统支持使用标准磁盘组建 RAID。常见用法包括用于冗余的镜像(RAID 1)和用于性能的条带(RAID 0)。

用两个分区(sd1asd2a)创建镜像 RAID 1 卷:

新设备 sd3 与其他磁盘无异,可正常挂载、检查与使用。

查看状态:

系统会报告该卷是健康、重建中还是降级。

OpenBSD 支持的 RAID 级别:

RAID
名称
是否支持
说明

0

条带

高性能,无冗余

1

镜像

冗余,适合容错

5

条带+校验

兼顾冗余与容量

10

RAID 1+0

手动

先镜像后条带;需手动管理

C

加密

加密卷,严格来说不属于 RAID 级别

OpenBSD 基本系统不支持 RAID 6、50、60。

使用软件 RAID 时,应确保所有成员盘在容量与对齐方式上配置一致。务必事先测试恢复与重建流程。从 softraid 卷引导受支持,但可能需要平台相关的配置。

监控与健康状态

OpenBSD 基本系统不原生支持 S.M.A.R.T.(自监测、分析与报告技术)。但可通过 smartmontools 软件包获得有限的 S.M.A.R.T. 功能,其中提供 smartctl(8) 工具与 smartd(8) 监控守护进程。

该功能可用于监控磁盘健康状态、预测受支持 ATA 与 SATA 磁盘的潜在故障。对 NVMe 与 USB 设备的支持有限,可能取决于控制器。

安装 smartmontools

使用 pkg_add 安装该软件包:

安装后即可使用 smartctlsmartd 工具。

使用 smartctl 检查磁盘健康

查询受支持的磁盘:

该命令显示设备身份信息,并指明是否启用 S.M.A.R.T. 支持。查看所有健康与错误属性:

设备名应对应整块磁盘(通常是 c 分区)。并非所有控制器都会暴露 S.M.A.R.T. 数据,部分设备可能返回有限信息或无结果。

使用 smartd 启用后台监控

smartd 守护进程周期性检查一个或多个设备,并在阈值被超越时发出警告。

第 1 步:配置 /etc/smartd.conf

每行定义一个设备及其选项。示例:

上述配置以全部默认检查(-a)监控 /dev/sd0c,并通过执行默认处理脚本向 root 用户发送告警。

要监控多块磁盘,添加更多行。

第 2 步:启用并启动守护进程

启用开机自启:

随后启动守护进程:

第 3 步:模拟与测试

手动模拟检查或触发测试:

日志会写入 /var/log/daemon。告警通过本地邮件发送,请确保系统邮件投递功能正常,且 /etc/mail/aliases 中为 root 配置了有效条目。

局限性

OpenBSD 上的 S.M.A.R.T. 功能取决于硬件兼容性与驱动支持。USB 外接磁盘与 NVMe 设备通常不受支持或仅部分功能可用,对其监控可能不可靠。

smartmontools 软件包适用于使用直连 SATA 磁盘、并希望获得故障预测报告的系统。

最后更新于