29.4.USB 虚拟存储设备
最后更新于
注意
cfumass(4) 驱动程序是 USB 设备模式驱动程序,首次在 FreeBSD 12.0 中提供。
大容量存储目标由模板 0 和 10 提供。必须加载 usb_template(4) 和 cfumass(4) 内核模块。cfumass(4) 连接到 CTL 子系统,该子系统与用于 iSCSI 或光纤通道目标的子系统相同。在主机端,USB 大容量存储发起者只能访问单个 LUN,LUN 0。
设置只读 USB 存储目标的最简单方法是使用 cfumass rc 脚本。要通过这种方式配置,请将要提供给 USB 主机的文件复制到 /var/cfumass 目录,并在 /etc/rc.conf 中添加以下行:
cfumass_enable="YES"要在不重启的情况下配置目标,运行以下命令:
# service cfumass start与串口和网络功能不同,模板不应在 /boot/loader.conf 中设置为 0 或 10,因为在设置模板之前,LUN 必须先设置。cfumass 启动脚本启动时会自动设置正确的模板编号。
本章其余部分详细说明了如何在不使用 cfumass rc 文件的情况下设置目标。例如,如果需要提供可写的 LUN,就必须使用这种方式。
USB 大容量存储不需要运行 ctld(8) 守护进程,尽管如果需要,可以使用它。这与 iSCSI 不同。因此,配置目标有两种方式:使用 ctladm(8) 或 ctld(8)。两者都需要加载 cfumass.ko 内核模块。可以手动加载模块:
# kldload cfumass如果 cfumass.ko 未编译到内核中,可在 /boot/loader.conf 中设置,使其在引导时加载:
cfumass_load="YES"可以通过以下命令创建 LUN 而不需要 ctld(8) 守护进程:
这将镜像文件 /data/target0 的内容作为 LUN 提供给 USB 主机。该文件必须在执行命令之前存在。要在系统引导时配置 LUN,请将命令添加到 /etc/rc.local。
ctld(8) 也可以用来管理 LUN。创建 /etc/ctl.conf 文件,向 /etc/rc.conf 中添加一行以确保 ctld(8) 在引导时自动启动,然后启动该守护进程。
这是一个简单的 /etc/ctl.conf 配置文件的示例。有关选项的完整说明,请参考 ctl.conf(5)。
此示例创建了带单个 LUN 的目标。naa.50015178f369f092 是由 32 个随机十六进制数字组成的设备标识符。path 行定义了作为 LUN 后端存储的文件或 zvol 的完整路径。该文件必须在启动 ctld(8) 之前存在。size 行是可选的,指定了 LUN 的大小。
要确保 ctld(8) 守护进程在引导时启动,请在 /etc/rc.conf 中添加以下行:
要立即启动 ctld(8) 守护进程,运行以下命令:
当 ctld(8) 守护进程启动时,它会读取 /etc/ctl.conf 文件。如果守护进程启动后又编辑了此文件,请重新加载更改以立即生效:
最后更新于
# ctladm create -b block -o file=/data/target0target naa.50015178f369f092 {
lun 0 {
path /data/target0
size 4G
}
}ctld_enable="YES"# service ctld start# service ctld reload