我有一个树莓派,它模拟大容量存储设备,同时安装了后备 .img 文件。一旦 pi 通电并安装 .img,我就会打开大容量存储模拟。我正在跟随本指南。
我希望能够在后备存储上查看新文件和文件更新,而无需重新安装它(理想情况下,也无需“弹出”它)。我正在尝试编写一些功能,这些功能将对写入模拟大容量存储设备的新文件做出反应。我发现,如果我在计算机上安装模拟大容量存储设备并向其写入文件,则该文件将在树莓派端的软件“弹出”中保留,但已安装的后备存储 .img 文件的内容在卸载并重新安装之前不要更改。
有没有什么方法可以配置树莓派,以便我可以轻松检查写入设备的内容?或者这种功能有某种限制吗?
答案1
我发现,如果我在计算机上安装模拟大容量存储设备并向其写入文件,则该文件将在树莓派端的软件“弹出”中保留,但已安装的后备存储 .img 文件的内容在卸载并重新安装之前不要更改。
这可能是因为写入操作由正在挂载模拟存储的系统缓存,并且直到 a) 经过足够的时间,或 b) 您通过使用sync
或blockdev --flushbufs /dev/sd<emulated storage>
卸载模拟存储来强制写入时才会写入。
USB 存储可能非常慢,因此回写缓存可以提供显着的性能优势:如果某些内容连续快速更新多次,则后续更新可以覆盖缓存中的旧版本,并且只需要从缓存中实际写入最新版本到存储。
如果您在 RasPi 端进行软件弹出,而没有先在计算机端刷新,然后等待一段时间(这样缓存将尝试将自身写入模拟存储),您可能会在计算机的dmesg
输出中发现计算机端USB 存储驱动程序对模拟存储突然无响应深感不满。但是内核和驱动程序试图不丢失任何数据,因此它们将保留缓存的数据,希望设备能够重新连接,除非设备长时间没有响应,以至于所有写入数据的尝试都会超时。