【问题标题】:Determine if raw disk sector is in use确定原始磁盘扇区是否正在使用
【发布时间】:2011-08-22 22:02:50
【问题描述】:

我正在尝试使用open(2)lssek[64](2)write(2) 编写一个可用空间归零器。我正在尝试确定正在使用的磁盘扇区。

我查看了 coreutils 中的 dd(1),但该实用程序没有执行类似的检查。在 Windows 世界里,我可以打电话给DeviceIoControl with FSCTL_GET_VOLUME_BITMAP

给定一个原始扇区,是否有系统调用可以让我确定该扇区是否正在使用?

【问题讨论】:

    标签: linux disk inode


    【解决方案1】:

    实现这一点的传统方式(因为您的方法受制于破坏文件系统的竞争条件)是创建一个巨大的文件,将其归零,然后删除该文件。其实直接用sh就可以了,不需要文件:

    # dd will run until disk space is exhausted
    dd if=/dev/zero of=__somefile.bin bs=1M conv=noerror; rm __somefile.bin
    

    【讨论】:

    • '受破坏文件系统的竞争条件的影响'。同意 - 我还没有考虑锁定。我认为第一步是确定它是否在使用中。
    • 您无法在 Windows 或 Linux 中锁定扇区 - 如果您在离线磁盘上操作,您可以执行类似的操作,但根本没有安全的方法可以写入已安装的卷。我的意思不是苛刻,但很容易实现一些看似有效的东西,但会默默地吃掉数据和损坏的卷,而且很难捕捉到
    猜你喜欢
    • 2012-09-02
    • 2020-02-03
    • 1970-01-01
    • 2014-04-30
    • 2019-12-05
    • 2016-11-13
    • 2013-10-05
    • 2017-12-04
    • 2018-02-21
    相关资源
    最近更新 更多