0

问题是当我无法挂载设备但我可以访问(读取)设备上的任何 LBA 时,如何识别驻留在设备 (LUN) 上的文件系统类型是什么。

我正在寻找类似的东西:NTFS 将其文件系统类型保留在 LBA 编号上X,ext3 将其文件系统类型保留在 LBA 编号上Y

我想知道的主要 FS 是:NTFS、ext3、ext4 和 VMFS。

该环境是一个 linux 机器,可以使用dd命令从设备访问块。

谢谢您的帮助。

4

2 回答 2

1

我不能直接给你你需要的信息,但文件实用程序可以:

例如:

$ file -s /dev/sda*
/dev/sda:  x86 boot sector; partition 1: ID=0x83, s.......
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=3e.....
/dev/sda2: x86 boot sector; partition 1: ID=0x8e, ......
/dev/sda3: x86 boot sector, code offset 0x52, OEM-ID "NTFS    .....
/dev/sda4: x86 boot sector, code offset 0x52, OEM-ID "NTFS    ....
/dev/sda5: LVM2 PV (Linux Logical Volume Manager), .....

这意味着您可能能够在文件/libmagic 的源代码中找到线索,或者对于 C/C++ 代码,您可以使用 libmagic(file工具的一部分)来提取相同的信息。

于 2013-10-29T08:46:21.703 回答
0

这有点棘手,因为设备上的卷可能不会从扇区 0(通常是 LBA 0 到 511)开始。问题是您必须首先识别具有驱动器布局的结构,例如主引导记录(http://en.wikipedia.org/wiki/Master_boot_record)或 GUID 分区表(http://en. wikipedia.org/wiki/GUID_Partition_Table)。一些 MBR 结构包含一个分区类型标识符 ( http://en.wikipedia.org/wiki/Partition_type )。GPT 有一个 GUID,用于标识存储在分区上的文件系统。

如果分区标识符在这种结构中不可用,您必须查找引导扇区的标记或以某种方式识别卷的开始。通常卷的第一个扇区包含引导记录结构。例如,NTFS 在它的引导记录中有一个名为 OEM ID 的字段,位于偏移量 0x03 处,它将字符“NTFS”保存为 ASCII ( http://www.ntfs.com/ntfs-partition-boot-sector.htm )。

于 2013-11-28T10:52:47.810 回答