在特定扇区或块上写入数据

在特定扇区或块上写入数据

不确定是否更适合超级用户服务器故障板子,告诉我一下。

我有一个驱动器,我用它重新分区fdisk。最初只有一个大分区,现在有多个分区。现在,直到下次重新启动之前,内核不会考虑新的分区表。

关键是该驱动器上有一些通过 NFS 共享的数据,并且在重新引导时应该存在于该驱动器上。另外,我想避免修改配置文件,即使是暂时的。因此,我想确保这些数据位于/dev/sdb1与前一个分区相对应的第一个分区上,以便它们在下次启动时立即可用。

那么有没有一种(简单)方法可以在驱动器上的特定扇区或块上写入数据?这是dd“寻求”选项的目的吗?如果我设法做到这一点,一旦考虑到新分区,数据在下次重新启动时仍然可读,对吗?

FWIW,数据量不是很大,2.1 MB,但/dev/sdb1只有 82 MB,驱动器为 160 GB。

谢谢。

编辑:有关整个历史记录以及为什么我无法重新加载分区表(这将是最好的解决方案),请参阅这个问题服务器故障

Edit2:好的,我可能找到了一个解决方法,即在机器重新启动后、在设置 NFS 之前从其他地方复制文件。

Edit3:没关系Edit2,新的/dev/sdb1还没有被格式化......

Edit4:实际上,最后一次编辑可能会放弃整个问题,因为它适用于任何情况。应该早点想到的……

答案1

您需要处理 NFS 并让它停止导出旧驱动器。你不能只是用“这不是一个选择”来否认这一点。

也就是说,如果您希望直接访问设备上的特定块而不依赖内核分区,那么是的,ddseekskip选项将起作用。如果您想访问一系列扇区块设备,您可以使用您设置的循环设备来losetup具有特定的偏移量和大小限制。最后,您始终可以在连接设备的虚拟机中启动新内核(例如使用libguestfs/dev/sdb,该内核将读取并使用存储在设备上的分区。

答案2

为什么不研究一下诱导内核重新读取分区表的技术呢?例如,您可以使用partprobe,如下所述这里

另一种选择是-R标志软盘

另一种选择是 blockdev,如上所述这里

相关内容