从设备块中识别文件系统类型

时间:2013-10-29 08:10:28

标签: linux filesystems ntfs ext3 block-device

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

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

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我无法直接向您提供所需的信息,但file实用程序可以:

例如:

$ 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工具的一部分)来提取相同的信息。

答案 1 :(得分: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)。