这是基于wrapfs模板来实现备份机制.这是
纯粹是为了学习的基础.
我正在扩展wrapfs,以便在写入调用时透明地包裹wrapfs
在单独的目录中创建该文件的副本,然后执行写入
在文件上.但我不希望我为每次写入调用创建一个副本.
一个天真的方法可能是我检查该目录中是否存在文件.但
我认为对于每次通话检查,这可能是一个严重的惩罚.
我还可以检查第一次写入调用,然后存储一个值
使用private_data属性的特定文件.但那不会存储
磁盘.所以我需要再次检查一下.
我也在考虑利用修改时间.我可以救一个
修改时间.如果较旧的修改时间在那之前,那么只有
创建副本,否则我不会做任何事情.我试着使用inode.i_mtime
为此,即使在调用write之前,它也是修改过的时间
应用程序可以修改该时间.
所以我想在磁盘上的inode中存储一些值来指示它
备份是否已创建.那可能吗?任何其他建议或
方法是受欢迎的.
IMO,其中一些已经完成,并且在用户空间中实现这些将更容易(例如,使用libfuse和熔丝模块).这样,您就可以成为城堡的王者,并以您认为合适的方式添加元数据:
>只需将(隐藏的)元数据文件添加到每个目录
>使用扩展的POSIX属性(setfattr和朋友)
>哎呀,你甚至可以使用sqlite数据库
如果你真的坚持在内核中做这些事情,你将会有更多的工作,因为从内核模式访问元数据需要花费更多的精力(你很可能想要使用内存映射来模拟你自己的数据库)文件,以便最大限度地减少“用户空间(样式)”工作量,并使相对容易获得原子性和可靠性1.
1
在How Everybody Gets File IO Wrong: see also here
以上是内存溢出为你收集整理的linux – 在struct inode中存储一些数据全部内容,希望文章能够帮你解决linux – 在struct inode中存储一些数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)