使 NAS 显示为 USB 驱动器

使 NAS 显示为 USB 驱动器

我的电视可以录制到 USB 存储,这很常见。我想要录制到我的 NAS,那里有足够的空间,可以更好地共享和管理录制内容。所以我正在寻找一个适配器(硬件/软件),可以让我的 NAS 在电视上显示为 USB 块存储设备。有什么想法吗?谷歌搜索没有找到任何结果。

请注意,这与将 USB 设备用作网络驱动器的常见情况完全相反。有很多解决方案,所以让我强调一下,我正在寻找相反的解决方案:让我的网络存储出现为物理 USB 驱动器可以直接插入我的电视,就像这样:

[NAS] ——— Ethernet ——— [adapter] ——— USB ——— [TV]

答案1

我知道这篇文章已经很老了,但我在寻找相同问题的解决方案时偶然发现了它。我还没有看到可以购买的现成解决方案,但有几种自己动手 (DIY) 的方法。

因此,这些 DIY 方法都是基于构建您自己的“适配器”。适配器是基于 Linux 的计算机,例如 Raspberry Pi 等单板计算机 (SBC)。它一方面充当智能电视的 USB 大容量存储设备(“闪存驱动器”),另一方面访问(读取和写入)网络附加数据存储 (NAS)。

                 iSCSI via                              Mass Storage
                TCP/IP via                            Device Class via
[NAS] ————— Ethernet or Wi-Fi ———— [Linux computer] ———————— USB ————————— [Smart TV]

Matt Olan 今年早些时候尝试存储 PlayStation 4 的游戏和备份时就意识到了这种方法:https://matt.olan.me/making-a-piscsi-usb-drive-part-1/https://matt.olan.me/making-a-piscsi-usb-drive-part-2/- 他还做了一些性能测量。

开始在 SBC 上安装 Linux 操作系统 (OS)

如果你使用基于 Raspberry Pi 的 SBC,则应从 Linux 安装开始。Raspberry Pi 操作系统 (以前称为拉斯普比)可从以下网址下载https://www.raspberrypi.org/software/

您还可以按照以下指南进行操作https://www.raspberrypi.org/documentation/configuration/wireless/headless.md无需任何操作即可设置您的 Raspberry Pi,也就是说,您已经可以修改 SD 卡上的内容(启动文件夹)。您也可以从启用 SSH 开始(通过ssh在启动目录中创建一个名为的新空文件)。然后使用它raspi-config来更改其他设置。

为您的智能电视提供大容量存储设备

通常,计算机充当 USB 主机。我们这里需要的是充当 USB 从属设备的计算机。计算机的硬件需要提供USB 移动传输 (OTG)端口。在 Linux 中,这种系统也称为USB 设备。您将需要修改您的 Linux 安装。

USB驱动程序需要在和dwc2中使用。/boot/config.txt/etc/modules

“大容量存储小工具” (MSG)在这里使用。它“提供对 USB 大容量存储类的支持。它可以作为一组最多 8 个 SCSI 磁盘驱动器(称为逻辑单元,通常称为 LUN,尽管它在技术上代表逻辑单元号)出现在主机上,尽管大多数时候您只需要一个 LUN。每个 LUN 存储的信息必须由小工具在某个地方维护,要么在普通文件中,要么在块设备(如磁盘分区或甚至 ramdisk)中。此文件或块设备称为后备存储对于该小工具(...)。”(来源:http://www.linux-usb.org/gadget/file_storage.html

通过指向后备存储来g_mass_storage加载模块:modprobe

sudo modprobe g_mass_storage file=/dev/sd... stall=0

我们将使用通过 iSCSI 提供的块设备,如下所示。

(还有一篇很好的文章介绍了如何将 Pi Zero W 做成 USB 闪存驱动器,这样就无需连接到另一端的 NAS。其中的一些部分仍然适用于我们的场景:https://magpi.raspberrypi.org/articles/pi-zero-w-smart-usb-flash-drive- 提示:如果您采用这种方法,请确保您的容器文件足够大,可以容纳您的智能电视。我刚刚发现我的 LG 电视只接受容量至少为 4 GB 的闪存驱动器。)

访问你的 NAS

限制:您无法直接提供对网络中共享的目录的访问权限后备存储适用于小工具。NAS 的底层通信协议通常是服务器消息块中小企业) 或者通用互联网文件系统互联网金融) 或者网络文件系统NFS)。

“g_mass_storage 模块需要块设备或平面文件,但大多数网络共享都不需要。”(来源:https://www.raspberrypi.org/forums/viewtopic.php?t=220468

相反,它需要你的 NAS 提供互联网SCSI,即互联网小型计算机系统接口,“一种基于互联网协议 (IP) 的存储网络标准,用于连接数据存储设施。它提供块级访问存储设备通过在 TCP/IP 网络上传送 SCSI 命令。iSCSI 用于促进通过内部网进行的数据传输 (...)。(来源:https://en.wikipedia.org/wiki/ISCSI

由于它基于 TCP/IP 网络,因此它基本上独立于底层链路层,也就是说,您应该能够通过有线以太网连接或无线 Wi-Fi 访问它。这取决于您的本地设置。请记住,通过以太网的吞吐量应该更高。

您需要询问 NAS 的用户手册以了解如何将其启用为 iSCSI 目标。

在运行 Linux 的 SBC 上,您需要执行更多步骤来启动与 NAS 的 iSCSI 连接。Matt Olan 在“方法”部分中给出了很好的描述https://matt.olan.me/making-a-piscsi-usb-drive-part-1/- 它还描述了如上所示的设置大容量存储小工具的先前步骤。

硬件选择提示

  • 一些 Raspberry Pi SBC 将其 USB 连接到 USB 集线器或将 USB ID 引脚永久连接到印刷电路板上的接地。这不会使它们通过 USB OTG 用作 USB 从属设备。
  • 根据您的 SBC,您可能只有 Wi-Fi或者以太网连接。
  • 您可能希望选择具有 USB 3.0 OTG 的 SBC 来实现更高的数据速率。确保使用“超高速”而不是仅使用“高速”。
  • Raspberry Pi Zero W 和 Raspberri Pi 4 Model B 似乎可以工作(不保证)。
  • Matt Olan 首先使用了 Raspberry Pi Zero W(USB 2.0 OTG、WiFi),然后使用了 RockPi 4b(USB 3.0 OTG)。

不支持 iSCSI 的替代方法

如果您的 NAS 没有提供 iSCSI,则可以采用不同的方法。通过 SMB 访问 NAS 上的文件。

           SMB or NFS or … via                          Mass Storage
            usually TCP/IP via                        Device Class via
[NAS] ————— Ethernet or Wi-Fi ———— [Linux computer] ———————— USB ————————— [Smart TV]

但是,如前所述,不支持 SMB 访问g_mass_storage,这就是我们需要采取解决方法的原因:

这种方法的缺点是您需要同步/安排对后备存储的访问。将数据从 A 复制到 B 以及从 B 复制到 A 需要一些时间,并且您需要额外的步骤来实现自动化。

其他尝试

  • 我不记得参考资料,但上面提到的方法似乎需要 Linux 内核版本 >= 4.4。
  • 如果您的智能电视支持媒体传输协议 (MTP),您可能可以采用不同的方法。
  • Matt Olan 曾提到,一些“NAS 制造商(例如 QNAP)提供对直接 USB 存储的支持”
  • 我读过关于 QEMU 的虚拟 VFAT 文件系统 (vvfat) 的简短摘要,但我不确定它是否可以应用于这种场景。

答案2

我进一步观察了一下“无限的USB内存”Infinitec 的 -stick 声称可以做到这一点。不幸的是,它差评来自 Engadget,昨天对它进行了评论(真是太巧了,因为我已经考虑这个问题很长时间了!)。虽然这款产品可能运行得不是很好,但它确实提供了我所寻找的确切功能。

答案3

如果你的 NAS 是基于 Linux 的 PC,也许,只是也许,经过一番努力,你就能得到类似这样的结果PCI USB 2.0 外设控制器工作。此 PCI 卡会为您的系统添加一个“外围设备端”USB 端口,而不是“主机端”端口。因此,您可以将整个 PC 变成可连接到另一台 PC 的 USB 设备。我知道 Linux 支持“USB 小工具”——只要运行适当的程序,这肯定是可能的。

如果您的 NAS 可以公开 Samba 共享,您可能能够使用已 root 的 Android 手机执行某些操作。在我的 Droid 上,SD 卡在内部显示为/mnt/sdcard。在其上运行 Samba 当然是可能的。我从未尝试过类似的事情mount -t cifs //192.168.X.X/mysambashare /mnt/sdcard/mysambashare,然后尝试将手机用作 USB 存储设备...如果我有时间尝试,我会更新。

答案4

您是否尝试将 NAS 作为映射网络驱动器进行连接(因此它会显示驱动器号(例如 H:)),而不是尝试将其用作可通过 //address/folder 访问的网络共享?

我实际上只是一片空白,但我相信您可以通过右键单击我的计算机或我的网络(假设这是 Windows)来映射网络驱动器,我忘记了哪一个。

如果您使用的不是 Windows,请更新我们,以便我们进一步提供帮助。

谢谢。

相关内容