我如何知道分区是ext2,ext3还是ext4?


121

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

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


2
出于好奇,您要测试什么?日记与没有日记?作为记录,您可以在无新闻记录的模式下运行ext4,并且仍然受益于所有其他新功能。
zacharyalexstern

Answers:


114

如何判断文件中包含哪种数据(哪种数据格式)?
→使用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

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

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


1
进入时$ sudo file /dev/sda1,我得到/dev/sda1: block special
heinrich5991

2
@ heinrich5991“您需要传递-s标志……”。我显示命令file -s /dev/sd*- sudo前面是sudo file -s /dev/sd*
吉尔斯2013年

哦,对不起,我忽略了这一点。:(
heinrich5991

2
不适用于LVM东西:parted -l似乎更好用
TiloBunt14年

1
@TiloBunt file -sL /dev/mapper/foo-bar使用-L来取消引用符号链接的标志。
Gilles 2014年

65

另一种选择是使用blkid

$ blkid /dev/sda1
/dev/sda1: UUID="625fa1fa-2785-4abc-a15a-bfcc498139d1" TYPE="ext2"

这可以识别大多数文件系统类型和诸如加密分区之类的东西。

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

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

7
+1:我已经验证了使用ext2挂载文件系统时,此操作可提供正确的结果mount -t ext4blkid不被那个愚弄。
沃伦·杨

对于什么它的价值,这也出现XFS驱动器的工作,但显然这blkid是不一样大,lsblk在是检测卸载的驱动器(如果需要)
何塞·迪亚斯·冈萨雷斯

谢谢!文件命令不起作用,但这给了我所需的东西。
Brain2000 '16

我不得不sudo blkid / dev / sda1否则我得到的结果是空白
jokab

41

您可以使用 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)

资源


1
parted未安装。而且驱动器尚未安装。
user4951 2013年

1
@JimThio我认为您能够安装它?如果您使用的是Ubuntu或任何其他debian衍生产品,则只需执行sudo apt-get install parted(或gparted)就可以得到它。
Karthik T

2
+1:我已经验证了使用ext2挂载文件系统时,此操作可提供正确的结果mount -t ext4parted不被那个愚弄。
沃伦·杨

虽然这不是最受好评的答案,但这是我实际使用的答案。另外,我不需要指定设备。
user4951

因为这不是最佳答案:分区可能被grub标记为ext2并且包含ext4文件系统(然后使用挂载为ext4 mount -t auto
Basile Starynkevitch

15

还有一种方法,因为您知道您正在运行某种形式ext?,所以请查看文件系统的功能列表:

# tune2fs -l /dev/sda1 | grep features

如果在列表中看到:

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

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

这种方法的优点是可以显示出低级差异。

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

有关更多信息,请参见ext4 HOWTO


10

尝试使用df -TSee man df获得更多选项,我发现的另一种方法是cfdisk


2
这与h3rmiller mount基于答案的缺点相同。
沃伦·杨

3
h3rrmiller删除了他的答案,因此对于那些没有代表立即看到它的人来说,问题是,如果您mount -t ext4ext2文件系统上说,则df -T报告ext4。也就是说,它只是在读取安装表的内容,而不是通过查看文件系统元数据来解决这个问题。
沃伦·杨

@Warren:那是因为在这种情况下它 ext4文件系统。只是其中一项功能不多。
mattdm

@mattdm:因此,当您卸载它时...它仍然是ext4文件系统吗?
沃伦·杨

@Warren:从某种意义上说,所有ext2文件系统也是ext4文件系统,是的。(但当然,不是大多数人的意思。)
mattdm

10

惊讶的是这里还没有。不需要sudo

lsblk -f


2
如果我运行此命令而sudoFSTYPE列为空白。
2015年

@Flup我只是自己又尝试了一次,它在没有sudo的情况下工作得很好。FSTYPE列已完全填充。我们的系统之间可能存在差异吗?
Freedom_Ben

@Flup-您必须使用Debian / Ubuntu或派生工具...它们以做某事(或可能不做某事,我不知道)而闻名,最终结果是您需要root特权才能列出某些lsblk列。 。
don_crissti

4

使用-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

2

fdisk -l 将列出

用法:

 fdisk [options] -l <disk> list partition table(s)
 fdisk -s <partition>      give partition size(s) in blocks
 fdisk [options] <disk>    change partition table

2
在什么系统上?fdisk,至少在我目前使用的系统上,仅显示分区类型,而不显示文件系统类型。这意味着不仅不能把这件事告诉之间的区别ext2ext3以及ext4,它也无法辨别这些的ReiserFS或XFS。
沃伦·杨

+1努力。在问这个问题之前,我已经做了fdisk。保持分数。
user4951 2013年

1

这是一个有用的oneliner,用于获取文件系统类型:

blkid -o export <partition-device> | grep '^TYPE' | cut -d"=" -f2

运行示例为:

# blkid -o export /dev/sda1 | grep '^TYPE' | cut -d"=" -f2
vfat
# blkid -o export /dev/sda2 | grep '^TYPE' | cut -d"=" -f2
ext4

0

这没有显示我正在寻找的BSD答案。我有印象,这些类型字节实际上包含在磁盘的分区表中,对此不确定。所有Linux extfs类型都只有85类型,但是Linux完全不能识别OpenBSD的A6类型。

> 00未使用的20 Willowsoft 66 NetWare 386 A9 NetBSD
> 01 DOS FAT-12 24 NEC DOS 67 Novell AB MacOS X引导
> 02 XENIX / 27 Win Recovery 68 Novell AF MacOS X HFS +
> 03 XENIX / usr 38 Theos 69 Novell B7 BSDI文件y *
> 04 DOS FAT-16 39计划9 70 DiskSecure B8 BSDI交换
> 05扩展DOS 40 VENIX 286 75 PCIX BF Solaris
> 06 DOS> 32MB 41 Lin / Minux DR 80 Minix(旧)C0 CTOS
> 07 NTFS 42 LinuxSwap DR 81 Minix(新)C1 DRDOSs FAT12
> 08 AIX fs 43 Linux DR 82 Linux交换C4 DRDOS 09 AIX / Coherent 4D QNX 4.2 Pri 83 Linux文件* C6 DRDOS> = 32M
> 0A OS / 2 Bootmgr 4E QNX 4.2秒84 OS / 2隐藏C7 HPFS无效
> 0B Win95 FAT-32 4F QNX 4.2 Ter 85 Linux ext。数据库CPM / C.DOS / C *
> 0C Win95 FAT32L 50 DM 86 NT FAT VS DE戴尔维护
> 0E DOS FAT-16 51 DM 87 NTFS VS E1 SpeedStor
> 0F扩展LBA 52 CP / M或SysV 8E Linux LVM E3 SpeedStor
> 10 OPUS 53 DM 93变形虫FS E4 SpeedStor
>隐藏11个OS / 2 54个Ontrack 94个Amoeba BBT EB BeOS / i386
> 12 Compaq诊断。55 EZ-Drive 99 Mylex EE EFI GPT
>隐藏14 OS / 2 56 Golden Bow 9F BSDI EF EFI Sys
> 16个OS / 2隐藏的5C Priam A0笔记本电脑保存F1 SpeedStor
> 17 OS / 2隐藏61 SpeedStor A5 FreeBSD F2 DOS 3.3+秒
> 18 AST交换63 ISC,HURD,* A6 OpenBSD F4 SpeedStor
> 19 Willowtech 64 NetWare 2.xx A7 NEXTSTEP FF Xenix BBT   
> 1C ThinkPad Rec 65 NetWare 3.xx A8 MacOS X     

格式可能会被弄乱,它是一个宽70列的漂亮表格。如果您在OpenBSD的fdisk中,并且打了?当它要求分区类型时,这就是您得到的。类型在您编辑或列出分区表时显示。

维基百科上的分区类型:https//en.wikipedia.org/wiki/Partition_type

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.