(本文译自英文版)
许多受支持的设备都提供接口来连接存储设备,大多数是 USB 或者 Sata.
本文将讲述如何配置你的设备以存储或分享的用途来使用这些存储设备。如果你是想扩展固件的存储空间(来安装更多的软件包),请阅读这篇文章 Extroot configuration.
要配置外接磁盘空间,请跟着下面的步骤来做:
这一步将确保需要的 USB 存储驱动被正确的安装。
opkg update
opkg install kmod-usb-storage
opkg install usbutils
lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M
|** Port 1: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
从第三步开始,验证输出的内容无误且至少有一行 root_hub 和 Mass Storage 输出,并且每个 “Driver=” 都有驱动的名字。如果没有的话,参考 the Installing USB Drivers.
这是一个可选的验证步骤,可以用于检查操作系统是否正确的识别了已连接的外置设备。
ls -l /dev/sd*
brw------- 1 root root 8, 0 Oct 30 12:49 /dev/sda brw------- 1 root root 8, 1 Oct 30 12:49 /dev/sda1
这应该至少展示一个已连接的磁盘,例如 “/dev/sda” 或 “/dev/sdb”。如果列表中没有磁盘,请重新检查 USB 驱动安装,并且重启你的 LEDE 设备。
opkg install block-mount
block info | grep "/dev/sd"
如果你的磁盘上已经有分区的话,你应该看到这样的输出:
/dev/sda1: UUID="2eb39413-83a4-4bae-b148-34fb03a94e89" VERSION="1.0" TYPE="ext4"
如果磁盘上已经存在分区,他们应该被列为 /dev/sda1, /dev/sda2, /dev/sda3 等等。如果我们有一个以上的存储设备连接,我们将看到 /dev/sdb1(第二个设备的第一个分区),/dev/sdc1(第三个设备的第一个分区)等等。
如果上一节中没有列出任何已存在的分区(像是 “/dev/sda1”, “/dev/sda2”, “/dev/sdb1”...),你必须在使用存储功能前创建一个分区。
opkg install gdisk
gdisk /dev/sda
n
这会触发一个交互对话框:使用默认配置来创建分区(number,起始扇区,Hex code)
w
然后确认你的选择:
Y
如果你需要更多帮助,参考 gdisk 的帮助内容(标记有“?”)。要完全符合本文接下来的内容,请保持一个分区。
要将分区用于数据存储,它必须被格式化为某一文件系统。
下面是对于 LEDE 来说最简单(并且推荐)的默认文件系统配置。对于高级用户,这里有 更多可用的文件系统选项
警告: 这一步骤将销毁分区上所有已存在的数据。请确保备份了重要文件之后再开始!
opkg install e2fsprogs opkg install kmod-fs-ext4 mkfs.ext4 /dev/sda1
opkg install f2fs-tools opkg install kmod-fs-f2fs mkfs.f2fs /dev/sda1
自动挂载可以让 LEDE 设备启动后,外置硬盘分区自动变得可用。
block detect > /etc/config/fstab
uci set fstab.@mount[0].enabled='1' uci commit
uci set fstab.@global[0].check_fs='1' uci commit
uci show fstab
会看到像这样的内容:
fstab.@global[0]=global fstab.@global[0].anon_swap='0' fstab.@global[0].anon_mount='0' fstab.@global[0].auto_swap='1' fstab.@global[0].auto_mount='1' fstab.@global[0].check_fs='0' fstab.@global[0].delay_root='5' fstab.@mount[0]=mount fstab.@mount[0].target='/mnt/sda1' fstab.@mount[0].uuid='49c35b1f-a503-45b1-a953-56707bb84968' fstab.@mount[0].enabled='0'
ls -l /mnt/sda1
block info
结果会是:
... /dev/sda1: UUID="2eb39413-83a4-4bae-b148-34fb03a94e89" VERSION="1.0" MOUNT="/mnt/sda1" TYPE="ext4"
这是对于硬盘的可选步骤。
如果你把 LEDE 作为永久的 NAS 使用,你可能需要在非活动期间降速硬盘的马达。一方面你可能需要在晚上让你的房间变得更安静,另一方面这也可以提高硬盘的使用寿命(例如当你使用一个家庭版的硬盘,而不是 24*7 的数据中心版)。
这里有两个不同的选项,可以让硬盘在持续特定时间不活动后就降速马达运转。它们都需要安装额外的 LEDE 软件包。
1. 选项:hdparm
这个工具使用标准的 SATA 磁盘命令,在硬盘本身永久的存储一个降速计时器(硬盘将记住这个是计时器值,即使断电了,即使重启了,即使接入了其他设备)。他只是硬盘内置功能的一个命令行接口。所以 LEDE 不需要为了这个功能在后台运行任何服务,而 “hdparm” 本身甚至也可以在设置完这个参数后被卸载调。不幸的是,很多比较老的 USB2.0-PATA/SATA 适配器不支持需要的 SATA 命令,不过很多10年以上的硬盘倒是支持它。幸运的是,大多数的 USB3.0-SATA 硬盘盒看起来是支持需要的 SATA 命令的。要安装这个软件包:
opkg update && opkg install hdparm
例如,要在硬盘上设置一个合理的 20 分支空闲延迟,使用:
hdparm -S 240 /dev/sda2
当然,你之后可以随时再次改变延时或关闭自动降速。取决于你的硬盘,这个值将被激活直到下次重置,或永久存储于硬盘上。硬盘本身的固件会管理这个降速延时,而不是 LEDE 的服务。
2. 选项:hd-idle (有 Luci 界面)
这是一个运行于 LEDE 后台的服务,并管理着自己的空闲延时计时器。如果定义的延时计时器到了 0, 它就给硬盘发送一个 “live” 降速 SATA 命令。不同于 hdparm 永久性的降速命令,大部分 USB2.0-SATA 硬盘盒看起来都支持这个 “spindown-now” SATA 命令。
要安装这个软件包以及 Luci 前端交互的话:
opkg update && opkg install luci-app-hd-idle
要配置它,使用你设备上 Luci 文件界面的“服务”菜单。