我正在考虑购买一些 Sandisk 1GB WORM SD 卡来存档东西。我假设它们在操作系统中显示为块设备(毕竟它们是 SD)。我注意到 mkudffs 支持蠕虫媒体类型。我尝试用一个文件测试它:
#dd if=/dev/zero of=worm.img bs=1M count=16 # mkudffs --blocksize=512 --media-type=worm worm.img # mount -o loop worm.img /mnt/worm/
但文件系统没有强制执行 WORM:
/mnt/worm# dd if=/dev/urandom of=foo dd:写入“foo”:设备上没有剩余空间 31329+0 条记录 31328+0 条记录 已复制 16039936 字节(16 MB),耗时 1.27185 秒,12.6 MB/s /mnt/worm# rm foo /mnt/worm# dd if=/dev/urandom of=bar dd:写入“bar”:设备上没有剩余空间 31329+0 条记录 31328+0 条记录 复制了 16039936 字节(16 MB),耗时 1.19381 秒,13.4 MB/s
如果 FS 确实强制执行 WORM,删除可能会有效,但我无法两次写入 16 MB。
我的问题是:
- WORM SD 真的会以块设备的形式出现吗?写入已写入的块会失败吗?空块会只是零吗?
- 我是否误解了 UDF WORM 的作用?
- 如果我有实际的WORM 设备?有没有办法用环回设备来测试?
- 还有其他建议吗?找到我信任的 100 年媒体很棘手
答案1
原来是一家名为奥特克开发了用于写入 Sandisk WORM 设备的驱动器和软件。该设备看起来(但我不确定)只是一个典型的 USB SD 卡读卡器。但是,该软件很有趣。它可以以某种方式写入和更新 WORM 版本的 FAT 中的文件,甚至可以作为普通的 FAT FS 安装。
他们开源了部分代码(以防他们或该技术消失,而该技术确实消失了)。有一个名为的文件,其中WormHugeFile.cpp
包含所有这些 WORM 部分的实现细节。基本上,Sandisk 为 WORM 操作创建了特定于供应商的 SCSI 操作码。您可以查询设备以查看它是否是 WORM 设备,在 WORM 和 ROM 模式之间切换,打开和关闭它以进行 WORM 写入,并将其标记为只读。
开箱后,这些卡似乎处于“ROM”模式,并且像普通 SD 卡一样运行。
至于 UDF 位,UDF 确实支持 WORM 介质,但 Linux UDF 驱动程序当前不支持该功能;它将 WORM 模式下的 UDF FS 视为 RW UDF FS。