写入 exfat 在装载之间不会持续存在?

写入 exfat 在装载之间不会持续存在?

我...

  • 为我的三星 Galaxy S4 购买了一张 microSD 卡来存储音乐。
  • 将其插入 S4 并格式化卡 (exFat)。
  • 安装fuse-exfat和exfat-utils并将卡插入我的电脑(Fedora 21,Gnome 3.14);挂载成功。
  • 将音乐复制到卡上。
    • 目录结构:卡片/音乐/艺术家/专辑/SongTitle.ogg
  • 打开的文件——它们播放得很好。
  • 卸载卡
  • 弹出卡
  • 再次将卡插入电脑
  • 注意到许多文件和文件夹不再出现。

    • 所有艺术家文件夹都会出现。
    • 某些相册文件夹不出现
    • 大多数歌曲文件不会出现。
    • 似乎对于文件和文件夹来说,它们都有一个离散点消失(即,字母表的开头复制成功),尽管文件夹比文件更远。

答案1

您在弹出卡之前没有提到卸载。如果在写问题时这不是遗漏,那就是你的问题。

写入任何类型的磁盘都是缓冲的:操作系统将数据积累到内存中写入,然后在判断方便时将其写入磁盘。数据不一定按照应用程序写入文件的顺序写入磁盘。

这通常对应用程序是完全透明的。当应用程序从磁盘读回数据时,如果数据仍在缓冲区中等待,则应用程序会取回该数据。

但是,如果突然弹出磁盘,所有未写入的缓冲区都会丢失。当您重新插入磁盘时,它们不会恢复,因为操作系统无法确定这是同一个磁盘,并且同时该磁盘没有在另一台计算机上被修改。 (无论如何,一旦操作系统检测到磁盘已消失,它就会将内存缓冲区重新用于其他内容,因为它无论如何都无法将缓冲区内容用于任何用途。)

在弹出磁盘之前,您需要告诉操作系统您不再使用它。这就是所谓的卸载(相反的操作,使系统使用文件系统启动,称为安装)。当您告诉系统卸载文件系统时,它将刷新所有缓冲区,以便磁盘上的数据是最新的。典型的桌面环境会在您插入磁盘后立即自动安装磁盘。您需要在移除磁盘之前告诉系统卸载:如果移除磁盘,系统卸载就为时已晚。许多文件管理器都会显示“卸载”或“弹出”按钮;按下它并等待文件管理器告诉您操作完成(根据剩余数据量,可能需要几秒钟),然后您可以弹出卡。

这与 exfat 无关,顺便说一句,任何文件系统和任何媒体都会发生这种情况。

可以将卡上的写入配置为自动发生。不这样做是因为它可能会慢很多,并且因为更频繁的写入会很快磨损廉价的闪存介质(闪存介质在一个块可以重写的次数方面受到限制,并且重复重写一个块只是为了更新与一次性写入大量数据相比,其中一小部分效率较低)。

相关内容