我如何知道一个分区是 ext2、ext3 还是 ext4?

use*_*951 129 linux ext4 ext2 ext3

我只是格式化的东西。一张磁盘我格式化为 ext2。另一个我想格式化为ext4。我想测试他们的表现。

现在,我如何知道分区中的文件系统类型?

Gil*_*il' 126

如何判断文件中的数据类型(什么数据格式)?
? 使用该file实用程序。

在这里,您想知道设备文件中数据的格式,因此您需要传递-s标志来告诉您file不仅要说它是设备文件,还要查看内容。-L如果设备文件名是符号链接,有时您也需要该标志。你会看到这样的输出:

# file -sL /dev/sd*
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=63fa0104-4aab-4dc8-a50d-e2c1bf0fb188 (extents) (large files) (huge files)
/dev/sdb1: Linux rev 1.0 ext2 filesystem data, UUID=b3c82023-78e1-4ad4-b6e0-62355b272166
/dev/sdb2: Linux/i386 swap file (new style), version 1 (4K pages), size 4194303 pages, no label, UUID=3f64308c-19db-4da5-a9a0-db4d7defb80f
Run Code Online (Sandbox Code Playgroud)

鉴于此示例输出,第一个磁盘有一个分区,第二个磁盘有两个分区。/dev/sda1是一个 ext4 文件系统,/dev/sdb1是一个 ext2 文件系统,并且/dev/sdb2是一些交换空间(大约 4GB)。

必须以root身份运行此命令,因为普通用户可能无法直接读取磁盘分区:如果需要,sudo在前面添加。

  • @heinrich5991“你需要传递 -s 标志......”。我显示命令 `file -s /dev/sd*` - 前面带有 `sudo`,即 `sudo file -s /dev/sd*`。 (3认同)
  • 不适用于 LVM 的东西: parted -l 似乎工作得更好 (2认同)

cra*_*150 70

另一种选择是使用blkid

$ blkid /dev/sda1
/dev/sda1: UUID="625fa1fa-2785-4abc-a15a-bfcc498139d1" TYPE="ext2"
Run Code Online (Sandbox Code Playgroud)

这可以识别大多数文件系统类型和加密分区等内容。

您还可以搜索具有给定类型的分区:

# blkid -t TYPE=ext2
/dev/sda1: UUID="625fa1fa-2785-4abc-a15a-bfcc498139d1" TYPE="ext2" 
/dev/sdb1: UUID="b80153f4-92a1-473f-b7f6-80e601ae21ac" TYPE="ext2"
Run Code Online (Sandbox Code Playgroud)

  • +1:我已经验证这在使用 `mount -t ext4` 挂载 `ext2` 文件系统时给出了正确的结果。`blkid` 不会被这个愚弄。 (7认同)

Kar*_*k T 44

您可以使用 sudo parted -l

[shredder12]$ sudo parted -l

Model: ATA WDC WD1600BEVT-7 (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      32.3kB  8587MB  8587MB  primary   ext3            boot
 4      8587MB  40.0GB  31.4GB  primary   ext4
 2      40.0GB  55.0GB  15.0GB  primary   ext4
 3      55.0GB  160GB   105GB   extended
 5      55.0GB  158GB   103GB   logical   ext4
 6      158GB   160GB   1999MB  logical   linux-swap(v1)
Run Code Online (Sandbox Code Playgroud)

来源

  • +1:我已经验证这在使用 `mount -t ext4` 挂载 `ext2` 文件系统时给出了正确的结果。`parted` 不会被这个愚弄。 (2认同)

War*_*ung 15

还有另一种方式,因为你知道你正在运行某种风格的ext?,是查看文件系统的功能列表:

# tune2fs -l /dev/sda1 | grep features
Run Code Online (Sandbox Code Playgroud)

如果在列表中您看到:

  • extent — 是 ext4
  • extent,但是has_journal——它是 ext3
  • 既不是extent也不是has_journal——它是 ext2

partedblkid,如果你想这些启发式自动为您运行的答案是更好的。(它们也通过特征检查来区分。)它们还可以识别非ext?文件系统。

这种方法具有向您展示低级差异的优点。

这里要意识到的重要一点是,这三个文件系统是向前兼容的,并且在某种程度上也向后兼容。更高版本只是在旧版本之上添加功能。

有关方面的更多信息,请参阅ext4 HOWTO


Fre*_*Ben 15

很惊讶这已经不在了。不需要sudo

lsblk -f

  • 如果我在没有 `sudo` 的情况下运行它,`FSTYPE` 列是空白的。 (2认同)

har*_*kat 11

尝试使用df -Tsee mandf获取更多选项,我发现的另一种方法是cfdisk

  • h3rmiller 删除了他的答案,所以对于那些现在没有代表看到它的人来说,问题是如果你在 `ext2` 文件系统上说 `mount -t ext4`,`df -T` 会报告 `ext4`。也就是说,它只是阅读挂载表所说的内容,而不是查看文件系统元数据来弄清楚这一点。 (3认同)
  • 这与 h3rmiller 的基于 `mount` 的答案具有相同的弱点。 (2认同)

Law*_*eLi 6

使用 -T 选项打印文件系统类型

[root@centos6 ~]# df -T

Filesystem           Type  1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                     ext4    6795192 6367072     76276  99% /
tmpfs                tmpfs    639164       0    639164   0% /dev/shm
/dev/sda1            ext4     487652   28684    433368   7% /boot
Run Code Online (Sandbox Code Playgroud)