为什么 mount 强迫我为一个分区指定 -t ext4 而不是另一个分区?

pfl*_*rre 6 linux mount centos scientific-linux

我有两个非常相似的分区,/dev/sdb1(标记为“bigb”)和/dev/sdc1(标记为“bigc”)。我以前可以两者使用来安装mount -n -L bigX /mnt/donottouch/localX(与Xbc)。但是, mount 最近开始要求我指定,-t ext4 但仅限于 bigc

bigb 安装得很好:

# mount -n -L bigb  /mnt/donottouch/localb -vvv
mount: fstab path: "/etc/fstab"
mount: mtab path:  "/etc/mtab"
mount: lock path:  "/etc/mtab~"
mount: temp path:  "/etc/mtab.tmp"
mount: UID:        0
mount: eUID:       0
mount: spec:  "/dev/sdb1"
mount: node:  "/mnt/donottouch/localb"
mount: types: "(null)"
mount: opts:  "(null)"
final mount options: '(null)'
mount: you didn't specify a filesystem type for /dev/sdb1
       I will try type ext4
mount: mount(2) syscall: source: "/dev/sdb1", target: "/mnt/donottouch/localb", filesystemtype: "ext4", mountflags: -1058209792, data: (null)
/dev/sdb1 on /mnt/donottouch/localb type ext4 (rw)
Run Code Online (Sandbox Code Playgroud)

但是 bigc 出错了:

# mount -n -L bigc  /mnt/donottouch/localc -vvv
mount: fstab path: "/etc/fstab"
mount: mtab path:  "/etc/mtab"
mount: lock path:  "/etc/mtab~"
mount: temp path:  "/etc/mtab.tmp"
mount: UID:        0
mount: eUID:       0
mount: spec:  "/dev/sdc1"
mount: node:  "/mnt/donottouch/localc"
mount: types: "(null)"
mount: opts:  "(null)"
final mount options: '(null)'
mount: you didn't specify a filesystem type for /dev/sdc1
       I will try all types mentioned in /etc/filesystems or /proc/filesystems
mount: you must specify the filesystem type
Run Code Online (Sandbox Code Playgroud)

...除非我指定-t ext4

# mount -n -L bigc  /mnt/donottouch/localc -vvv -t ext4
mount: fstab path: "/etc/fstab"
mount: mtab path:  "/etc/mtab"
mount: lock path:  "/etc/mtab~"
mount: temp path:  "/etc/mtab.tmp"
mount: UID:        0
mount: eUID:       0
mount: spec:  "/dev/sdc1"
mount: node:  "/mnt/donottouch/localc"
mount: types: "ext4"
mount: opts:  "(null)"
final mount options: '(null)'
mount: mount(2) syscall: source: "/dev/sdc1", target: "/mnt/donottouch/localc", filesystemtype: "ext4", mountflags: -1058209792, data: (null)
/dev/sdc1 on /mnt/donottouch/localc type ext4 (rw)
Run Code Online (Sandbox Code Playgroud)

Mount 声称它将尝试“/etc/filesystems 或 /proc/filesystems 中提到的所有类型”,但它显然没有这样做,因为这两个文件包含 ext4:

# cat /etc/filesystems 
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus

# cat /proc/filesystems 
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   tmpfs
nodev   devtmpfs
nodev   binfmt_misc
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   anon_inodefs
nodev   inotifyfs
nodev   devpts
nodev   ramfs
nodev   hugetlbfs
        iso9660
nodev   pstore
nodev   mqueue
nodev   rpc_pipefs
nodev   nfs
nodev   nfs4
        ext4
nodev   fuse
        fuseblk
nodev   fusectl
nodev   autofs
nodev   nfsd
        ext3
Run Code Online (Sandbox Code Playgroud)

此外,为什么它决定为 bigb 尝试 ext4,而为 bigc 尝试所有文件系统类型?

更奇怪的是,blkid 能够将 bigc 检测为 ext4:

# blkid -o value -s TYPE /dev/sdb1
ext4
# blkid -o value -s TYPE /dev/sdc1
ext4
# mount -V
mount from util-linux-ng 2.17.2 (with libblkid and selinux support)
Run Code Online (Sandbox Code Playgroud)

tune2fs -l 表明除了 inode 大小外,两个分区基本相同:

# tune2fs -l /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   bigb
Last mounted on:          /mnt/donottouch/localb
Filesystem UUID:          2ceadc5b-c302-43d1-b289-047069a15537
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent sparse_super large_file uninit_bg
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              122101760
Block count:              488378000
Reserved block count:     24418900
Free blocks:              101141916
Free inodes:              118086875
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      907
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   1024
Filesystem created:       Fri May 13 18:08:33 2011
Last mount time:          Fri Jul 19 11:59:32 2013
Last write time:          Fri Jul 19 11:59:32 2013
Mount count:              4
Maximum mount count:      39
Last checked:             Thu Mar 14 15:11:01 2013
Check interval:           15552000 (6 months)
Next check after:         Tue Sep 10 15:11:01 2013
Lifetime writes:          439 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               512
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      ad841c26-0111-4f32-bab5-e8ebc9616f18
Journal backup:           inode blocks

# tune2fs -l /dev/sdc1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   bigc
Last mounted on:          /mnt/donottouch/localc
Filesystem UUID:          74d41e82-d431-4b3d-ae1a-01dcb363a047
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent sparse_super large_file uninit_bg
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              122101760
Block count:              488378000
Reserved block count:     24418900
Free blocks:              103460007
Free inodes:              118032588
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      907
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Wed Apr 27 14:55:53 2011
Last mount time:          Fri Jul 19 12:01:47 2013
Last write time:          Fri Jul 19 12:01:47 2013
Mount count:              6
Maximum mount count:      35
Last checked:             Sat Mar  2 14:09:26 2013
Check interval:           15552000 (6 months)
Next check after:         Thu Aug 29 15:09:26 2013
Lifetime writes:          381 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      f36ed43e-46b4-473c-8af0-07dc2a8d90c8
Journal backup:           inode blocks
Run Code Online (Sandbox Code Playgroud)

一些额外的系统信息:

# cat /etc/system-release
Scientific Linux release 6.4 (Carbon)
# uname -ar
Linux ml44 2.6.32-358.14.1.el6.x86_64 #1 SMP Tue Jul 16 14:24:33 CDT 2013 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

lsblk --fs 似乎在 bigc 上打嗝:

# lsblk --fs /dev/sdb1
NAME FSTYPE LABEL UUID                                 MOUNTPOINT
sdb1 ext4   bigb  2ceadc5b-c302-43d1-b289-047069a15537 /mnt/donottouch/localb
# lsblk --fs /dev/sdc1
NAME FSTYPE LABEL UUID MOUNTPOINT
sdc1                   /mnt/donottouch/localc
# e2label /dev/sdc1
bigc
Run Code Online (Sandbox Code Playgroud)

它们都不在 /etc/fstab 或 /etc/mtab 中。根据e2fsck,它们都是干净的。有任何想法吗?最近我能想到的唯一重大变化是从 Scientific Linux 6.1 到 6.4 的更新。

rep*_*lay 1

我认为sdb1的分区类型设置为83,这表明Linux fs类似于Ext4。虽然 sdc1 似乎被设置为其他类型,但根据您的lsblk.

fdisk您可以通过或等实用程序修改分区类型cfdisk。如果我没记错的话,fdisk您可以使用t命令然后输入 83 来更改它。