Làm thế nào để tôi biết nếu một phân vùng là ext2, ext3 hoặc ext4?


121

Tôi chỉ định dạng công cụ. Một đĩa tôi định dạng là ext2. Cái khác tôi muốn định dạng là ext4. Tôi muốn kiểm tra cách họ thực hiện.

Bây giờ, làm thế nào để tôi biết loại hệ thống tập tin trong một phân vùng?


2
Vì tò mò, bạn đang cố gắng thử nghiệm điều gì? Tạp chí so với không có tạp chí? Đối với bản ghi, bạn có thể vận hành ext4 ở chế độ không ghi nhật ký và vẫn được hưởng lợi từ tất cả các tính năng mới khác.
zacharyalexstern

Câu trả lời:


114

Làm cách nào để biết loại dữ liệu nào (định dạng dữ liệu) trong một tệp?
→ Sử dụng filetiện ích.

Tại đây, bạn muốn biết định dạng dữ liệu trong tệp thiết bị, vì vậy bạn cần chuyển -scờ để nói filekhông chỉ nói rằng đó là tệp thiết bị mà hãy xem nội dung. Đôi khi, bạn cũng sẽ cần -Lcờ, nếu tên tệp thiết bị là một liên kết tượng trưng. Bạn sẽ thấy đầu ra như thế này:

# 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

Với đầu ra mẫu này, đĩa thứ nhất có một phân vùng và đĩa thứ hai có hai phân vùng. /dev/sda1là một hệ thống tập tin ext4, /dev/sdb1là một hệ thống tập tin ext2 và /dev/sdb2là một số không gian trao đổi (khoảng 4GB).

Bạn phải chạy lệnh này với quyền root, vì người dùng thông thường không thể đọc phân vùng đĩa trực tiếp: nếu cần, hãy thêm sudovào phía trước.


1
Khi vào $ sudo file /dev/sda1, tôi nhận được/dev/sda1: block special
heinrich5991

2
@ heinrich5991 Bạn cần phải vượt qua cờ -s. Tôi hiển thị lệnh file -s /dev/sd*- với sudoở phía trước, đó là sudo file -s /dev/sd*.
Gilles

Ôi xin lỗi, tôi đã bỏ qua điều đó. :(
heinrich5991

2
không hoạt động cho công cụ LVM: chia tay -l dường như hoạt động tốt hơn
TiloBunt

1
@TiloBunt Thực hiện điều đó file -sL /dev/mapper/foo-bar, với -Lcờ để xóa bỏ liên kết tượng trưng.
Gilles

65

Một lựa chọn khác là sử dụng blkid:

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

Điều này nhận ra hầu hết các loại hệ thống tập tin và những thứ như phân vùng được mã hóa.

Bạn cũng có thể tìm kiếm các phân vùng với một loại nhất định:

# 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: Tôi đã xác minh rằng điều này mang lại kết quả chính xác khi gắn ext2hệ thống tệp với mount -t ext4. blkidkhông bị lừa bởi điều đó.
Warren Young

Về giá trị của nó, điều này cũng có vẻ hoạt động đối với các ổ đĩa xfs, mặc dù rõ ràng nó blkidkhông tuyệt vời như lsblktrong việc phát hiện các ổ đĩa chưa từng có (nếu bạn cần)
Jose Diaz-Gonzalez

Cảm ơn! Lệnh tập tin không hoạt động, nhưng điều này đã cho tôi những gì tôi cần.
Brain2000

tôi đã phải sudo blkid / dev / sda1 khác tôi nhận được kết quả trống
jokab

41

Bạn có thể dùng 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)

Nguồn


1
chia tay không được cài đặt. Ngoài ra các ổ đĩa chưa được gắn kết.
dùng4951

1
@JimThio Tôi giả sử bạn đã có thể cài đặt nó? Bạn sẽ có thể có được nó bằng cách đơn giản thực hiện sudo apt-get install parted(hoặc gparted) nếu bạn đang sử dụng Ubuntu hoặc bất kỳ dẫn xuất debian nào khác.
Karthik T

2
+1: Tôi đã xác minh rằng điều này mang lại kết quả chính xác khi gắn ext2hệ thống tệp với mount -t ext4. partedkhông bị lừa bởi điều đó.
Warren Young

Mặc dù đây không phải là câu trả lời được đánh giá cao nhất, nhưng đây là câu trả lời tôi thực sự sử dụng. Ngoài ra tôi không cần chỉ định thiết bị.
dùng4951

Bởi vì đó không phải là câu trả lời hay nhất: một phân vùng có thể được gắn nhãn grub là ext2 và chứa hệ thống tập tin ext4 (và sau đó sẽ được gắn kết thành ext4 với mount -t auto)
Basile Starynkevitch

15

Vẫn còn một cách khác, vì bạn biết bạn đang chạy một chút hương vị ext?, là xem danh sách tính năng của hệ thống tập tin:

# tune2fs -l /dev/sda1 | grep features

Nếu trong danh sách bạn thấy:

  • extent - đó là ext4
  • không extent, nhưng has_journal- đó là ext3
  • cũng không extentphải has_journal- đó là ext2

Các câu trả lời partedblkidtốt hơn nếu bạn muốn các heuristic này tự động chạy cho bạn. (Chúng cũng cho biết sự khác biệt với kiểm tra tính năng.) Họ cũng có thể xác định các ext?hệ thống không phải tệp.

Phương pháp này có ưu điểm là cho bạn thấy sự khác biệt ở cấp độ thấp.

Điều quan trọng cần nhận ra ở đây là ba hệ thống tập tin này tương thích về phía trước và ở một mức độ nào đó cũng tương thích ngược. Các phiên bản mới hơn chỉ cần thêm các tính năng trên đầu trang cũ.

Xem ext4 HOWTO để biết thêm thông tin về điều này.


10

hãy thử sử dụng df -Tsee man dfđể có thêm tùy chọn vẫn còn một cách nữa tôi tìm thấy làcfdisk


2
Điều này có điểm yếu tương tự như mountcâu trả lời dựa trên h3rmiller .
Warren Young

3
h3rrmiller đã xóa câu trả lời của anh ấy, vì vậy đối với những người không có đại diện để xem nó bây giờ, vấn đề là nếu bạn nói mount -t ext4trên một ext2hệ thống tập tin, df -Tbáo cáo ext4. Đó là, nó chỉ đọc những gì bảng mount nói, không nhìn vào siêu dữ liệu của hệ thống tập tin để tìm ra điều này.
Warren Young

@Warren: Đó là bởi vì nó một hệ thống tập tin ext4 trong trường hợp đó. Chỉ là một với không nhiều tính năng.
mattdm

@mattdm: Vì vậy, khi bạn ngắt kết nối nó ... nó vẫn là một hệ thống tập tin ext4?
Warren Young

@Warren: theo một nghĩa nào đó, tất cả các hệ thống tập tin ext2 cũng là hệ thống tập tin ext4, vâng. (Nhưng tất nhiên, không phải theo nghĩa của hầu hết mọi người.)
mattdm

10

Ngạc nhiên vì điều này không có ở đây. Không sudoyêu cầu:

lsblk -f


2
Nếu tôi chạy này mà không có sudocác FSTYPEcột là trống.
Flup

@Flup Tôi chỉ thử lại lần nữa và nó hoạt động hoàn hảo mà không cần sudo. Cột FSTYPE đã được điền đầy đủ. Có thể là một số khác biệt giữa các hệ thống của chúng tôi?
Freedom_Ben

@Flup - bạn phải sử dụng Debian / Ubuntu hoặc các công cụ phái sinh ... Chúng nổi tiếng vì làm điều gì đó (hoặc có thể không làm gì đó, tôi không biết) và kết quả cuối cùng là bạn cần có quyền root để liệt kê một số lsblkcột .. .
don_crissti

4

sử dụng tùy chọn -T để in loại hệ thống tệp

[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 sẽ liệt kê

Sử dụng:

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

2
Trên hệ thống nào? fdisk, trên hệ thống hiện tại tôi đang sử dụng ít nhất, chỉ hiển thị loại phân vùng, không phải loại hệ thống tệp. Điều đó có nghĩa không chỉ nó không thể biết sự khác biệt giữa ext2, ext3ext4, nó cũng không thể phân biệt ReiserFS hoặc XFS từ này.
Warren Young

+1 cho nỗ lực. Tôi đã thực hiện fdisk trước khi đặt câu hỏi này. Giữ điểm lên.
dùng4951

1

Đây là một oneliner hữu ích để chỉ lấy loại hệ thống tập tin:

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

Một ví dụ chạy là:

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

0

Điều này đã không hiển thị câu trả lời BSD mà tôi đang tìm kiếm. Tôi có ấn tượng rằng các byte loại này thực sự được chứa trong bảng phân vùng trên đĩa, không chắc chắn về điều đó. Chỉ có loại 85 cho tất cả các loại extfs của Linux, nhưng Linux cũng không nhận ra loại A6 của OpenBSD.

> 00 chưa sử dụng 20 Willowsoft 66 NetWare 386 A9 NetBSD
> 01 DOS FAT-12 24 NEC DOS 67 Novell AB MacOS X khởi động
> 02 XENIX / 27 Giành phục hồi 68 Novell AF MacOS X HFS +
> 03 XENIX / usr 38 Theos 69 Novell B7 BSDI filesy *
> 04 DOS FAT-16 39 Kế hoạch 9 70 Trao đổi đĩa B8 BSDI
> 05 DOS mở rộng 40 VENIX 286 75 PCIX BF Solaris
> 06 DOS> 32MB 41 Lin / Minux DR 80 Minix (cũ) C0 CTOS
> 07 NTFS 42 LinuxSwap DR 81 Minix (mới) C1 DRDOSs FAT12
> 08 AIX fs 43 Linux DR 82 Linux hoán đổi C4 DRDOS 09 AIX / Coherent 4D QNX 4.2 Pri 83 Linux tệp * C6 DRDOSs> = 32M
> 0A OS / 2 Bootmgr 4E QNX 4.2 Sec 84 OS / 2 ẩn C7 HPFS Disbled Disbled
> 0B Win95 FAT-32 4F QNX 4.2 Ter 85 Linux máy lẻ. CPM / C.DOS / C *
> 0C Win95 FAT32L 50 DM 86 NT FAT VS DE Dell Duy trì
> 0E DOS FAT-16 51 DM 87 NTFS VS E1 SpeedStor
> 0F Mở rộng LBA 52 CP / M hoặc SysV 8E Linux LVM E3 SpeedStor
> 10 OPUS 53 DM 93 Amoeba FS E4 SpeedStor
> 11 HĐH / 2 ẩn 54 Onrack 94 Amoeba BBT EB BeOS / i386
> 12 Compaq Diag. 55 EZ-Drive 99 Mylex EE EFI GPT
> 14 HĐH / 2 ẩn 56 Cung vàng 9F BSDI EF EFI Sys
> 16 OS / 2 ẩn 5C Priam A0 NotebookSave F1 SpeedStor
> 17 OS / 2 ẩn 61 SpeedStor A5 FreeBSD F2 DOS 3.3+ giây
> 18 AST trao đổi 63 ISC, HURD, * A6 OpenBSD F4 SpeedStor
> 19 Willowtech 64 NetWare 2.xx A7 TIẾP THEO FF Xenix BBT   
> 1C ThinkPad Rec 65 NetWare 3.xx A8 ​​MacOS X     

Định dạng có thể bị sai lệch, đó là một bảng rộng 70 cột. Nếu bạn đang ở trong fdisk của OpenBSD và bạn nhấn? Khi nó yêu cầu loại phân vùng, đây là những gì bạn nhận được. Các loại hiển thị khi bạn chỉnh sửa hoặc liệt kê bảng phân vùng.

Các loại phân vùng trên Wikipedia: https://en.wikipedia.org/wiki/Partition_type

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.