将一些隐藏数据存储在最后一个分区后面的“不可用”区域或定义的分区边界之外的任何地方的便捷方法是什么?例如,使其显示/dev/___
为我的用户空间程序的 I/O 就绪状态。
假设我不在乎分区程序或引导加载程序是否认识到那里可能有重要的东西并踩在它上面;我会进行结构健全性检查并根据需要重新创建数据。
cfdisk (util-linux 2.19.1)
Disk Drive: /dev/sda
Size: 160041885696 bytes, 160.0 GB
Heads: 255 Sectors per Track: 63 Cylinders: 19457
Name Flags Part Type FS Type [Label] Size (MB)
--------------------------------------------------------------------------------
sda1 Primary vfat [ACER] 25827.38
sda2 Primary ntfs 90033.92
Unusable 13193.35
sda3 Primary ext4 16508.14
sda4 Boot Primary ext4 14476.50
Unusable 2.62 *
答案1
您确实应该定义一个分区来包含该空间。您还应该保留磁盘的前 63 个扇区,否则您将破坏引导加载程序(比引导加载程序破坏数据更麻烦)。
如果您确实需要,可以使用losetup
它来创建循环设备并将其指向驱动器的特定部分:
losetup -o start --sizelimit size /dev/loop0 /dev/sda
其中 start 和 size 是该区域的起始偏移量和大小(以字节为单位)。
当然,如果你的值错了,你的 FS 就会报废。
答案2
我会在浪费的空间中创建一个小文件系统。要引导该过程:
dd
创建一个与驱动器“不可用”区域的大小相匹配的常规文件(使用)。- 用于
losetup
将常规文件与循环设备关联。 - 用于
mkfs
在循环设备上创建文件系统。 - 用于
losetup
分离循环设备。 - 用于
dd
将常规文件复制到驱动器的“不可用”区域。
每次您想要访问数据时:
- 将驱动器的“不可用”区域(使用
dd
)复制到常规文件。 - 用于
losetup
将文件与循环设备关联。 fsck
在循环设备上使用来检查文件系统完整性。如果文件系统被某些东西破坏,您将不得不重复引导步骤。不应向磁盘的该区域写入任何内容,因此如果文件系统受到干扰,则可能意味着您正在覆盖活动磁盘分区的一部分。 (!)- 用于
mount
将循环设备安装为文件系统。 - 访问数据。
- 用于
umount
卸载文件系统。 - 用于
losetup
分离循环设备。 - 用于
dd
将常规文件复制回驱动器的“不可用”区域。
您可以通过设备名称访问整个驱动器,无需分区号,在您的情况下是/dev/sda
.您需要使用dd
sskip=
参数从驱动器读取数据并将seek=
其写入正确的位置。 如果写入驱动器时块寻道计数错误,您将覆盖磁盘分区之一。
答案3
您的分区表的问题在于它包含 4 个未填满磁盘的主分区。这就是剩余空间被标记为“不可用”的原因,因为无法添加分区来使用它。
如果您将其中一个分区替换为“扩展”分区,您将能够创建 4 个以上的分区并毫无问题地使用整个磁盘。