小编Jür*_*gen的帖子

是否有必要显式刷新 HDD 磁盘写入缓存?

抽象的

有时,Linux 内核不知道外部 USB 存储设备的驱动器写入缓存。在这种情况下是否有必要在分离这些设备之前显式刷新这些缓存?

例子

我使用 WD Elements 外置 USB 硬盘,上面hdparm -I写着

...
Commands/features:
    Enabled Supported:
       ...
       *    Write cache
...
Run Code Online (Sandbox Code Playgroud)

hdparm -W

...
 write-caching =  1 (on)
Run Code Online (Sandbox Code Playgroud)

另一方面,当我插入驱动器时,我收到以下内核消息:

... No Caching mode page found
... Assuming drive cache: write through
Run Code Online (Sandbox Code Playgroud)

根据Kyle Jones 的这个回答,这些内核消息表明内核假设它的写操作将直接进入盘片。

Linux 内核文档中的文件Documentation/block/queue-sysfs.txt 的“write_cache (RW)”部分描述了内核假设通过缓存写入模式的含义(感谢Wayne Conrad):

...“直写”,...还将消除内核发出的缓存刷新。

问题

到目前为止,我从 Linux 系统分离外部 USB 存储设备的标准方法是卸载它上所有已安装的分区,等到驱动器的 LED 停止闪烁,物理拔下 USB 连接器,如果这不会关闭电源设备(有些具有单独的电源),以明确关闭电源。

这种方法是否安全,或者它是否意味着在驱动器写入缓存中丢失未刷新数据的风险,特别是如果内核不知道该缓存?

在后一种情况下,似乎建议在卸载后通过发送 SCSI 同步命令显式刷新驱动器上的写入缓存。例如sg_sync,可以使用 sg3-utils 附带的 which来完成: …

linux command-line cache usb unmounting

12
推荐指数
1
解决办法
2334
查看次数

命令行差异工具

所以我们都diff默认安装了命令。我当然不知道如何很好地使用它。但我希望有一些合理的默认用法。但是当我打字时,diff file1 file2我得到了……一个文本……我必须在脑子里解析……这无济于事,因为这是两个文本的奇怪组合,而这两个文本本身又非常复杂。

所以我寻找了一个图形解决方案,例如meld. 开箱即用的效果要好得多。

然而,我更愿意一直保持在命令行上。是否有一个相当标准的命令:

  • 默认使用颜色,可以采用语法高亮
  • 显示并排差异并默认进行 3 路合并
  • 在命令行上工作,例如通过 libncurses
  • 既不依赖于IDE vimemacs也不依赖于IDE
  • 可以就地修改编辑过的文件吗?

如果没有,为什么不呢?我看了看,colordiff但它并没有完全削减它。

command-line programming diff ncurses merge

7
推荐指数
2
解决办法
2471
查看次数

如何(重新)显示安装后说明?

有时,软件包会显示安装后消息。如何在 Debian 系统上为给定的软件包重播此消息?

与 FreeBSD 相比:pkg info -D PACKAGE 与 MacPorts 相比:port notes PACKAGE

什么是 Debian 等价物?

debian debian-installer

4
推荐指数
1
解决办法
131
查看次数