编辑 /etc/fstab 后无法再挂载硬盘

Hug*_*uff 5 filesystems mount

我有一个 SSD 来保存 / 和我的主目录,但我还有一个 1TB 的硬盘驱动器,里面有我的大部分音乐。我尝试编辑 /etc/fstab 以自动挂载硬盘以节省时间。我正在运行 Kubuntu。

我打开 KDE 分区管理器检查文件系统的类型,它读取 ext3

我添加的行是:

/dev/sda /media/HDD ext3 defaults 0 2
Run Code Online (Sandbox Code Playgroud)

重新启动时,启动屏幕上的“Kubuntu”下出现错误,提示文件系统无法挂载,因此我按 S 跳过尝试挂载。

跑步sudo blkid节目:

/dev/sda1: LABEL="HDD" UUID="00000000-dba3-409e-a185-345c60459125" TYPE="ext2" 
/dev/sdb1: UUID="44cdc69c-0746-4a99-9c48-ccf7fca69768" TYPE="ext4" 
/dev/sdb5: UUID="478bf04c-8bf6-46c4-86e8-e844380cf8e7" TYPE="swap" 
Run Code Online (Sandbox Code Playgroud)

我记得我最初创建分区时,我没有将它设置为 ext2(即使这是大约 2 年前)

我尝试了几次不同的选项(将默认值更改为其他命令 rw、async、auto...)。HDD 将不再安装。在 dolphin 中打开时,消息如下:

访问“主页”时发生错误,系统响应:请求的操作失败:将 /dev/sda1 挂载到 /media/myname/HDD 时出错:命令行 `mount -t "ext2" -o "uhelper=udisks2, nodev,nosuid" "/dev/sda1" "/media/myname/HDD"' 以非零退出状态 32 退出:安装:错误的 fs 类型,错误的选项,/dev/sda1 上的超级块错误,缺少代码页或帮助程序, 或其他错误 在某些情况下,可以在 syslog 中找到有用的信息 - 尝试 dmesg | 尾巴左右

KDE 分区管理器说类型未知。单击“属性”将其显示为未格式化

fdisk -l 给出以下内容:

    Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
    255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000819ae

Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63  1953520064   976760001   83  Linux
Partition 1 does not start on physical sector boundary.

Disk /dev/sdb: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
Units = sectors of 1 * 512 = 512 bytes                    
Sector size (logical/physical): 512 bytes / 512 bytes     
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001a3c6                                    

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048   233330687   116664320   83  Linux
/dev/sdb2       233332734   250068991     8368129    5  Extended
/dev/sdb5       233332736   250068991     8368128   82  Linux swap / Solaris
Run Code Online (Sandbox Code Playgroud)

尝试安装会出现错误

~ $ sudo mount /dev/sda /media/HDD
[sudo] password for myname: 
mount: wrong fs type, bad option, bad superblock on /dev/sda,
   missing codepage or helper program, or other error
   In some cases useful info is found in syslog - try
   dmesg | tail  or so
Run Code Online (Sandbox Code Playgroud)

dmesg | tail 说:

[ 5632.049404] EXT2-fs (sda): error: ext2_check_descriptors: Block bitmap for group 880 not in group (block 0)!
[ 5632.049411] EXT2-fs (sda): group descriptors corrupted
[ 5669.867629] EXT2-fs (sda): error: ext2_check_descriptors: Block bitmap for group 880 not in group (block 0)!
[ 5669.867632] EXT2-fs (sda): group descriptors corrupted
[ 6894.395961] EXT2-fs (sda1): error: can't find an ext2 filesystem on dev sda1.
[ 7040.625599] EXT3-fs (sda1): error: fragsize 1024 != blocksize 4096 (unsupported)
[ 7045.462213] EXT2-fs (sda1): error: can't find an ext2 filesystem on dev sda1.
[ 7048.975278] EXT4-fs (sda1): VFS: Can't find ext4 filesystem
[ 7421.551590] EXT2-fs (sda1): error: can't find an ext2 filesystem on dev sda1.
[ 7451.874417] EXT2-fs (sda1): error: can't find an ext2 filesystem on dev sda1.
Run Code Online (Sandbox Code Playgroud)

跟踪:

$ strace -s 2000 -o mount.log blkid

/dev/sda1: LABEL="HDD" UUID="00000000-dba3-409e-a185-345c60459125" TYPE="ext2" 
/dev/sdb1: UUID="44cdc69c-0746-4a99-9c48-ccf7fca69768" TYPE="ext4" 
/dev/sdb5: UUID="478bf04c-8bf6-46c4-86e8-e844380cf8e7" TYPE="swap" 
Run Code Online (Sandbox Code Playgroud)

/proc/文件系统:

$ cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   pipefs
nodev   anon_inodefs
nodev   devpts
        ext3
        ext4
nodev   ramfs
nodev   hugetlbfs
        vfat
nodev   ecryptfs
        fuseblk
nodev   fuse
nodev   fusectl
nodev   pstore
nodev   mqueue
nodev   binfmt_misc
        ext2
        udf
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 7

有多种方法可以确定驱动器文件系统类型。这是我熟悉的工具列表。

1. 黑色

无论设备是否安装都有效。

$ blkid
/dev/sda1: UUID="XXXX" TYPE="ext4" 
/dev/sda2: UUID="XXXX" TYPE="LVM2_member"
Run Code Online (Sandbox Code Playgroud)

2. 挂载

这仅在块设备被挂载后才有用。

$ sudo mount | grep /dev/sda1
/dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered)
Run Code Online (Sandbox Code Playgroud)

3. lsblk

显示驱动器拓扑,但不显示设备上的文件系统类型。

$ sudo lsblk -a
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                         8:0    0 465.8G  0 disk 
??sda1                      8:1    0   500M  0 part /boot
??sda2                      8:2    0 465.3G  0 part 
Run Code Online (Sandbox Code Playgroud)

tune2fs

$ tune2fs -l /dev/sda1 | grep magic
Filesystem magic number:  0xEF53
Run Code Online (Sandbox Code Playgroud)

显示与设备关联的幻数,您可以在此站点上查找这些,Linux 幻数。它也在一个文件中,通常在这里,/usr/share/magic. 您可以使用locate /magic.

转储2fs

$ sudo dumpe2fs /dev/sda1 | grep magic
dumpe2fs 1.42.7 (21-Jan-2013)
Filesystem magic number:  0xEF53
Run Code Online (Sandbox Code Playgroud)

同样的事情适用于tune2fs.

/开发/安装

这是内核维护的“文件”,用于显示已挂载的设备。注意:此列表中的许多工具通常使用此文件的内容。

$ sudo cat /proc/mounts | grep /dev/sda1
/dev/sda1 /boot ext4 rw,seclabel,relatime,data=ordered 0 0
Run Code Online (Sandbox Code Playgroud)

文件

您还可以使用该file命令显示有关已卸载文件系统的信息。

$ sudo file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=XXXX (needs journal recovery) (extents) (huge files)
Run Code Online (Sandbox Code Playgroud)

另一种语法(以 root 身份):

$ file - </dev/sda1
/dev/stdin: Linux rev 1.0 ext4 filesystem data, UUID=XXXX (needs journal recovery) (extents) (huge files)
Run Code Online (Sandbox Code Playgroud)

你的安装问题

我怀疑您尝试挂载的文件系统不是您认为的那样。要么用文件系统 ( /dev/sda)格式化整个设备,在这种情况下,您将安装整个驱动器。您可以像这样测试这个假设:

$ sudo mount /dev/sda /mnt
Run Code Online (Sandbox Code Playgroud)

如果您需要明确说明要使用的文件系统:

$ sudo mount -o ext2 /dev/sda /mnt
Run Code Online (Sandbox Code Playgroud)

注意:这通常不是将整个文件系统放在整个设备上的情况/dev/sda,而是将它们划分为/dev/sda1等。

或者驱动器已被分区。在这种情况下,你会看到这些分区使用上述命令lsblk,在那里他们会显示为/dev/sda1/dev/sda2等等。如果这是你,那么你就需要挂载分区,而不是像这样的情况:

$ sudo mount /dev/sda1 /mnt
Run Code Online (Sandbox Code Playgroud)

再次特别注意设备文件系统上使用的格式,您有时必须将其逐字指定为mount.

由于您的输出fdisk显示您拥有/dev/sda1我倾向于认为您的文件系统位于第一个分区。

Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63  1953520064   976760001   83  Linux
Run Code Online (Sandbox Code Playgroud)

所以像这样安装它应该可以解决问题:

$ sudo mount -o ext2 /dev/sda1 /mnt
Run Code Online (Sandbox Code Playgroud)

/etc/fstab

如果上述挂载命令有效,那么您可以将其添加到您的/etc/fstab文件中。

/dev/sda1 /media/HDD ext2 defaults 0 2
Run Code Online (Sandbox Code Playgroud)


Hau*_*ing 6

您的挂载条目

/dev/sda /media/HDD ext3 defaults 0 2
Run Code Online (Sandbox Code Playgroud)

包含几个错误:

  1. sda必须是sda1(或sdb1

  2. ext3必须是ext2ext4(取决于(1))

通常你

  1. 在输入卷之前,应该在命令行上成功挂载卷 fstab

  2. 使用发行版的工具进行编辑 fstab