I just formatted stuff. One disk I format as ext2. The other I want to format as ext4. I want to test how they perform.
Now, how do I know the kind of file system in a partition?
I just formatted stuff. One disk I format as ext2. The other I want to format as ext4. I want to test how they perform.
Now, how do I know the kind of file system in a partition?
How do I tell what sort of data (what data format) is in a file?
→ Use the file
utility.
Here, you want to know the format of data in a device file, so you need to pass the -s
flag to tell file
not just to say that it's a device file but look at the content. Sometimes you'll need the -L
flag as well, if the device file name is a symbolic link. You'll see output like this:
# 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
Given this sample output, the first disk has one partition and the second disk has two partitions. /dev/sda1
is an ext4 filesystem, /dev/sdb1
is an ext2 filesystem, and /dev/sdb2
is some swap space (about 4GB).
You must run this command as root, because ordinary users may not read disk partitions directly: if needed, add sudo
in front.
$ sudo file /dev/sda1
, I get /dev/sda1: block special
– heinrich5991
Jan 10 '13 at 16:55
file -s /dev/sd*
− with sudo
in front, that's sudo file -s /dev/sd*
.
– Gilles 'SO- stop being evil'
Jan 10 '13 at 16:57
/dev/VOLUMEGROUP/LOGICALVOLUME
or /dev/mapper/VOLUMEGROUP-LOGICALVOLUME
instead of /dev/sdLETTERDIGIT
.
– Gilles 'SO- stop being evil'
Nov 29 '14 at 12:11
file -s /dev/mapper/
but get symbolic link to
../dm-0'same for
file -s /dev/vg_devccsrv11/*`
– TiloBunt
Dec 01 '14 at 16:30
file -sL /dev/mapper/foo-bar
, with the -L
flag to dereference the symlink.
– Gilles 'SO- stop being evil'
Dec 01 '14 at 17:04
$ sudo file -s /dev/xvdm /dev/xvdm: DOS executable (COM)
– rectalogic
Jul 18 '17 at 13:54
file
guesses, and sometimes it can guess wrong. When you know what kind of file you're looking at (e.g. you know that it's a filesystem image) it works reasonably well. When it's open-ended, such as in your case with a volume that contained “random” garbage, there can be false positives. COM executables don't actually have any structure, so there file
has both many false positives and many false negatives.
– Gilles 'SO- stop being evil'
Jul 19 '17 at 00:47
blkid -o value -s TYPE /dev/xvdm
- it exits with 2 if the device is unformatted, otherwise prints the filesystem, and works with LUKS encrypted filesystems.
– rectalogic
Jul 20 '17 at 13:16
Another option is to use blkid
:
$ blkid /dev/sda1
/dev/sda1: UUID="625fa1fa-2785-4abc-a15a-bfcc498139d1" TYPE="ext2"
This recognizes most filesystem types and stuff like encrypted partitions.
You can also search for partitions with a given type:
# blkid -t TYPE=ext2
/dev/sda1: UUID="625fa1fa-2785-4abc-a15a-bfcc498139d1" TYPE="ext2"
/dev/sdb1: UUID="b80153f4-92a1-473f-b7f6-80e601ae21ac" TYPE="ext2"
ext2
filesystem with mount -t ext4
. blkid
isn't fooled by that.
– Warren Young
Jan 09 '13 at 16:45
blkid
is not as great as lsblk
is at detecting unmounted drives (if you need to)
– Jose Diaz-Gonzalez
Mar 04 '15 at 22:41
FEATURE_BLKID_TYPE
must be enabled to use BusyBox blkid
in this manner.
– Robert Calhoun
Feb 13 '22 at 15:40
You can use 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)
sudo apt-get install parted
(or gparted
) if you are on Ubuntu or any other debian derivative.
– Karthik T
Jan 09 '13 at 12:24
ext2
filesystem with mount -t ext4
. parted
isn't fooled by that.
– Warren Young
Jan 09 '13 at 16:45
mount -t auto
)
– Basile Starynkevitch
Jan 18 '16 at 08:18
Surprised this isn't on here already.
No sudo
required:
lsblk -f
lsblk
columns...
– don_crissti
Sep 03 '15 at 22:00
Still another way, since you know you're running some flavor of ext?
, is to look at the filesystem's feature list:
# tune2fs -l /dev/sda1 | grep features
If in the list you see:
extent
— it's ext4extent
, but has_journal
— it's ext3extent
nor has_journal
— it's ext2The parted
and blkid
answers are better if you want these heuristics run for you automatically. (They tell the difference with feature checks, too.) They can also identify non-ext?
filesystems.
This method has the virtue of showing you the low-level differences.
The important thing to realize here is that these three filesystems are forwards compatible, and to some extent backwards-compatible, too. Later versions just add features on top of the older ones.
See the ext4 HOWTO for more information on this.
try using df -T
see man df
for more options still one more way I found is cfdisk
mount -t ext4
on an ext2
filesystem, df -T
reports ext4
. That is, it's just reading what the mount table says, not looking at the filesystem metadata to figure this out.
– Warren Young
Jan 09 '13 at 18:19
ext4
since 1993 or so, in Yggdrasil Linux. I'm probably using ext5
already. Woohoo, I live in the FUTURE!
– Warren Young
Jan 10 '13 at 22:26
use -T option to print file system type
[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
fdisk -l
will list
Usage:
fdisk [options] -l <disk> list partition table(s)
fdisk -s <partition> give partition size(s) in blocks
fdisk [options] <disk> change partition table
fdisk
, on the system I'm using at the moment at least, only shows the partition type, not the filesystem type. That means not only can't it tell the difference between ext2
, ext3
, and ext4
, it also can't discern ReiserFS or XFS from these.
– Warren Young
Jan 09 '13 at 20:17
To get just the filesystem type with lsblk
:
# lsblk -n -o FSTYPE /dev/sda1
vfat
# lsblk -n -o FSTYPE /dev/sda2
ext4
Another option is blkid
:
blkid -o export <partition-device> | grep '^TYPE' | cut -d"=" -f2
An example run is:
# blkid -o export /dev/sda1 | grep '^TYPE' | cut -d"=" -f2
vfat
# blkid -o export /dev/sda2 | grep '^TYPE' | cut -d"=" -f2
ext4
# blkid -s TYPE -o value /dev/sdb1
yields ext4
for example
– nijave
Aug 21 '23 at 23:04
This didn't show the BSD answer I was looking for. I had the impression these type bytes were actually contained in the partition table on the disk, not sure about that. There's only type 85 for all Linux extfs types, but Linux doesn't recognize OpenBSD's A6 type at all either.
00 unused 20 Willowsoft 66 NetWare 386 A9 NetBSD
01 DOS FAT-12 24 NEC DOS 67 Novell AB MacOS X boot
02 XENIX / 27 Win Recovery 68 Novell AF MacOS X HFS+
03 XENIX /usr 38 Theos 69 Novell B7 BSDI filesy*
04 DOS FAT-16 39 Plan 9 70 DiskSecure B8 BSDI swap
05 Extended DOS 40 VENIX 286 75 PCIX BF Solaris
06 DOS > 32MB 41 Lin/Minux DR 80 Minix (old) C0 CTOS
07 NTFS 42 LinuxSwap DR 81 Minix (new) C1 DRDOSs FAT12
08 AIX fs 43 Linux DR 82 Linux swap C4 DRDOSs < 32M
09 AIX/Coherent 4D QNX 4.2 Pri 83 Linux files* C6 DRDOSs >=32M
0A OS/2 Bootmgr 4E QNX 4.2 Sec 84 OS/2 hidden C7 HPFS Disbled
0B Win95 FAT-32 4F QNX 4.2 Ter 85 Linux ext. DB CPM/C.DOS/C*
0C Win95 FAT32L 50 DM 86 NT FAT VS DE Dell Maint
0E DOS FAT-16 51 DM 87 NTFS VS E1 SpeedStor
0F Extended LBA 52 CP/M or SysV 8E Linux LVM E3 SpeedStor
10 OPUS 53 DM 93 Amoeba FS E4 SpeedStor
11 OS/2 hidden 54 Ontrack 94 Amoeba BBT EB BeOS/i386
12 Compaq Diag. 55 EZ-Drive 99 Mylex EE EFI GPT
14 OS/2 hidden 56 Golden Bow 9F BSDI EF EFI Sys
16 OS/2 hidden 5C Priam A0 NotebookSave F1 SpeedStor
17 OS/2 hidden 61 SpeedStor A5 FreeBSD F2 DOS 3.3+ Sec
18 AST swap 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
If you're in OpenBSD's fdisk
and you hit ? when it asks for partition type this is what you get. The types show when you're editing or listing the partition table.
Partition types on Wikipedia: https://en.wikipedia.org/wiki/Partition_type
Since it hasn't been mentioned, wipefs
can also do this.
When used without any options, wipefs lists all visible filesystems and the offsets of their basic signatures. The default output is subject to change. So whenever possible, you should avoid using default outputs in your scripts. Always explicitly define expected columns by using --output columns-list in environments where a stable output is required.
e.x.
wipefs --output type -i /dev/sdb1
ext4
--output
to specify you only want the type
column
-i
hides headers from the output
Under the hood this appears to use libblkid
so should have the same output as blkid
You can mount the partitions and then use findmnt
. (Doesn't require root.)
findmnt # to lists all
findmnt /dev/sda1 # to specify a partition
See: https://wiki.archlinux.org/title/File_systems#List_mounted_file_systems