wux*_*uxb 4 linux filesystems ssd trim
对于 SSD,我可以打开行设备并使用ioctl()withBLKDISCARD命令丢弃一系列页面。
我的问题是
对于打开的文件,如何丢弃一系列数据?这是否取决于底层文件系统的实现?
您正在寻找fallocate的FALLOC_FL_PUNCH_HOLE. 然后由文件系统来丢弃/修剪/取消映射这些块。我相信 ext4 会这样做。
例如,您可以执行以下操作以丢弃从 1MiB 开始的 2MiB:
err = fallocate(fd, FALLOC_FL_PUNCH_HOLE|FALLOC_FL_KEEP_SIZE, 1048576, 2097152);
if (0 != err) {
/* handle error */
}
Run Code Online (Sandbox Code Playgroud)
成功后,这些字节的未来读取应为 0。
[注意:POSIX 没有办法做到这一点。上面的 fallocate 是 Linux 特有的。但是你标记了你的问题 Linux,所以希望没问题。]
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |