小编Are*_*ski的帖子

在 Linux 上使用 O_DIRECT

如果这个问题过于面向程序员,请告诉我。我想知道是否有人熟悉Linux 2.6上open()系统调用的O_DIRECT标志?Linus 贬低它的使用,但高性能文件写入似乎表明它的使用。我想知道任何现实世界的经验和建议。

更多信息:我正在使用的应用程序确实维护着自己的缓存,这样做的速度平均提高了 5 倍或更多。写入文件时,缓存的内容必须写出到文件系统缓存,这似乎是多余的,而且是一个性能问题。

linux performance programming kernel files

30
推荐指数
5
解决办法
3万
查看次数

日志中的“已删除文件”条目是什么样的

我希望我说对了:文件inode包含数据,例如 inode 编号、上次修改时间、所有权等 – 以及条目:»删除时间«。这让我感到好奇:
删除文件意味着删除它的 inode number,从而将链接到它的存储空间标记为可用。有一些工具可以恢复(意外)删除的文件(例如从日志中,如果可用)。我知道stat命令。

日志中的“已删除文件”条目是什么样的?

我的猜测是一个非常不起眼的输出,例如发出stat命令。

我知道删除文件并尝试恢复它会是一种亲身体验,但是我现在还没有在没有外部帮助的情况下可以做到这一点,我想确切地了解我在做什么。目前进入数据复活对我来说是一种偏题,因为我试图牢牢掌握基本的东西......我不懒惰,这不是家庭作业,这是私人学习。

filesystems inode journaling

8
推荐指数
1
解决办法
3407
查看次数

在文件系统中隐藏数据

我想隐藏一些文件,这样甚至ls -a找不到它。我不是在谈论添加“。” 在文件名前面。我在想是否可以创建单独的系统调用来访问这些文件 实际需要的是对用户隐藏一些日志文件。我正在存储一些文件的 MAC 数据,不希望用户看到这些日志文件。目前我只知道一种隐藏数据的方法,即通过添加 '.' 在文件名前面。但是用户可以通过简单的调用来查看该文件ls -a。所以我想知道是否有其他方法可以隐藏这些日志数据?

filesystems

5
推荐指数
2
解决办法
1436
查看次数

是否有依赖于“strictatime”的软件?

我正准备在 FUSE 中实现一个文件系统。仅实施一种模式会更容易。Relatime 是所有内核实现的文件系统的默认行为。是否仍然需要实施strictatime行为?

是否有任何依赖于严格时间行为的现有软件?

我怀疑没有被破坏:

  • Ubuntu 会在重新启动时从 /tmp 中删除文件,并且仅当文件早于指定天数时,如本问题中所回答。最小阈值似乎是 1 天,这对于(24 小时)relatime 来说很好。

filesystems fuse atime

5
推荐指数
1
解决办法
561
查看次数

/dev/raw/ 发生了什么?

我正在阅读一篇关于 LWN文章,它有一个重要的声明:

原始设备 (/dev/raw/rawN) 是 O_DIRECT I/O 的特例。这些设备可以在不指定 O_DIRECT 的情况下打开,但仍提供直接 I/O 语义。因此,所有相同的规则都适用于适用于使用 O_DIRECT 打开的文件(或设备)的原始设备。

这是否指的是今天/dev/sda和其他少数人?

udev devices

5
推荐指数
1
解决办法
1146
查看次数

ioremap 和文件操作 mmap 有什么区别?

我目前正在为 Ubuntu 开发 PCI 设备驱动程序。我有一些关于 PCI 驱动程序的示例代码,但我很难理解 ioremap 和 file_operation.mmap。

文件操作mmap说明:

内存映射是现代 Unix 系统最有趣的特性之一。就驱动程序而言,可以实现内存映射,为用户程序提供对设备内存的直接访问。映射设备意味着将一系列用户空间地址关联到设备内存。每当程序在分配的地址范围内读取或写入时,它实际上是在访问设备。

ioremap 的描述:

在许多系统上,根本无法通过这种方式直接访问 I/O 内存。所以必须先建立映射。这就是ioremap函数的作用。该函数是专门为I/O内存区域分配虚拟地址而设计的。

以上描述均来自“makelinux”。但我仍然不确定我是否正确理解了这两个函数之间的区别。现在,我的理解是这样的fops.mmap:(文件操作 mmap)将一系列用户空间地址与设备内存相关联。这意味着对于 pci 设备,我们BAR使用fops.mmap. 使用ioremap,我们为这些从fops.mmap.

如果我错了,有人能告诉我吗?谢谢~

附注。我也在 Ubuntu 社区发布了这个,希望我没有违反任何规则。

linux pci memory io linux-kernel

5
推荐指数
1
解决办法
1万
查看次数

普通硬盘的 I/O 调度程序

对我来说,找出内核中 I/O 调度程序的最佳选择是一个挑战。首先我了解到这是主观的,然后它取决于您使用的文件系统。

我知道您No-op肯定应该使用固态硬盘 (SSD)。

我想知道的是包含 Ext4 和 NTFS 文件系统(MBR 风格)的普通(旋转)HDD 的最佳选择。

GPT 或 MBR 对我的选择有什么影响吗?

scheduling io hard-disk linux-kernel

2
推荐指数
1
解决办法
1804
查看次数