为什么 lsblk 显示已格式化设备的旧 FSTYPE 和 LABEL?

bit*_*bit 6 linux partition kernel parted block-device

我使用parted将外部硬盘驱动器(sdc)格式化为ntfs,创建一个主分区(sdc1)。在格式化设备之前,使用命令将SystemRescueCd安装在外部硬盘驱动器上dd,以便用作可启动 USB。但是,当列出设备时lsblk -f我仍然得到格式化设备(sdc)的旧FSTYPE(iso9660)和LABEL(sysrcd-5.2.2):

\n\n
NAME       FSTYPE      LABEL           UUID   MOUNTPOINT\nsda                                                                            \n\xe2\x94\x9c\xe2\x94\x80sda1     ntfs        System Reserved                       \n\xe2\x94\x9c\xe2\x94\x80sda2     ntfs                                               \n\xe2\x94\x9c\xe2\x94\x80sda3     ntfs                                               \n\xe2\x94\x9c\xe2\x94\x80sda4                                                                         \nsdc        iso9660     sysrcd-5.2.2                     \n\xe2\x94\x94\xe2\x94\x80sdc1     ntfs        sysrcd-5.2.2          /run/media/user/sysrcd-5.2.2\n
Run Code Online (Sandbox Code Playgroud)\n\n

如图所示,lsblk -f只有分区的FSTYPEsdc1是正确的,sdc1分区的LABEL、sdc块设备的FSTYPE和LABEL都是错误的。nautilus GUI 应用程序还显示旧设备标签 (sysrcd-5.2.2)。

\n\n

创建新的分区表后,建议我在将设备格式化为ntfsparted之前重新启动系统,但我决定卸载 sdc 而不是重新启动。

\n\n
    \n
  • 难道是因为我没有重新启动系统,内核仍在使用旧的 FSTYPE 和 LABEL 吗?我是否必须重新启动系统才能删除旧的 FSTYPE 和 LABEL?
  • \n
  • 作为重新启动的替代方法,是否有一种方法可以手动重命名块设备的 FSTYPE 和 LABEL,以便我可以将它们更改为外部硬盘驱动器附带的原始 FSTYPE 和 LABEL?
  • \n
\n

bit*_*bit 5

从原始帖子的输出lsblk -f中,我怀疑已安装的 SystemRescueCd 的签名仍然存在于外部硬盘驱动器中。所以我运行了命令wipefs /dev/sdc,它打印了有关所有分区的wipefs /dev/sdc1信息sdcsdc

\n\n
[root@fedora user]# wipefs /dev/sdc\nDEVICE OFFSET TYPE    UUID                   LABEL\nsdc    0x8001 iso9660                        sysrcd-5.2.2\nsdc    0x1fe  dos                            \n[root@fedora user]# wipefs /dev/sdc1\nDEVICE OFFSET TYPE UUID             LABEL\nsdc1   0x3    ntfs  \nsdc1   0x1fe  dos\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面的打印输出确认了iso9660SystemRescueCd 创建的分区表仍然存在。lsblk使用分区表的TYPE和代替 dos(主引导记录)分区表。为了显示正确的分区表,必须删除分区表。请注意,也可用于从块(磁盘)设备中擦除分区表签名,但是LABELiso9660lsblkiso9660dddd也可以擦除其他分区表。

\n\n

因为我们只想针对特定的分区表签名进行擦除,所以wipefs是首选,因为与 不同的是ddwipefs我们不必再次重新创建分区表。该-a命令的选项wipefs会擦除设备上的所有可用签名,但-t该命令的选项wipefs与该选项一起使用时-a会将签名限制为仅擦除某种类型的分区表。下面我们擦除iso9660分区表。这-f--force擦除块设备上的分区表签名时需要

\n\n
[root@fedora user]# wipefs -a -t iso9660 -f /dev/sdc\n/dev/sdc: 5 bytes were erased at offset 0x00008001 (iso9660): 43 44 30 30 31\n
Run Code Online (Sandbox Code Playgroud)\n\n

擦除iso9660分区表后我们再次检查分区表,确认分区表iso9660已被擦除:

\n\n
[root@fedora user]# wipefs /dev/sdc\nDEVICE OFFSET TYPE UUID LABEL\nsdc    0x1fe  dos       \n[root@fedora user]# wipefs /dev/sdc1\nDEVICE OFFSET TYPE UUID             LABEL\nsdc1   0x3    ntfs 34435675G36Y4776 \nsdc1   0x1fe  dos \n
Run Code Online (Sandbox Code Playgroud)\n\n

但是现在有问题的iso9660分区表已被删除,lsblk现在使用UUID分区的作为挂载点目录名称,因为之前使用的标签iso9660分区表标签不再存在:

\n\n
NAME       FSTYPE      LABEL           UUID   MOUNTPOINT\nsda                                                                            \n\xe2\x94\x9c\xe2\x94\x80sda1     ntfs        System Reserved                       \n\xe2\x94\x9c\xe2\x94\x80sda2     ntfs                                               \n\xe2\x94\x9c\xe2\x94\x80sda3     ntfs                                               \n\xe2\x94\x9c\xe2\x94\x80sda4                                                                         \nsdc                            \n\xe2\x94\x94\xe2\x94\x80sdc1     ntfs        34435675G36Y4776          /run/media/user/34435675G36Y4776\n
Run Code Online (Sandbox Code Playgroud)\n\n

我们可以检查目录中哪些卷(即分区)有标签/dev/disk/by-label,该目录列出了所有有标签的分区:

\n\n
[root@fedora user]# ls -l /dev/disk/by-label\ntotal 0\nlrwxrwxrwx. 1 root root 10 Apr 30 19:47 \'System\\x20Reserved\' -> ../../sda1\n
Run Code Online (Sandbox Code Playgroud)\n\n

ntfs分区上的文件系统sda1是唯一有标签的分区

\n\n

为了使挂载点的目录名称更易于阅读,我们更改了标签ntfs分区上文件系统的标签sdc1从无(空字符串)更改为“新标签”。更改文件系统标签的命令取决于文件系统1 2。对于ntfs文件系统,更改标签是使用以下命令完成的ntfslabel

\n\n

ntfslabel /dev/sdc1 "new-label"

\n\n

ntfs现在,更改文件系统上的标签后,lsblk使用"new-label"作为挂载点目录的名称:

\n\n
NAME       FSTYPE      LABEL           UUID   MOUNTPOINT\nsda                                                                            \n\xe2\x94\x9c\xe2\x94\x80sda1     ntfs        System Reserved                       \n\xe2\x94\x9c\xe2\x94\x80sda2     ntfs                                               \n\xe2\x94\x9c\xe2\x94\x80sda3     ntfs                                               \n\xe2\x94\x9c\xe2\x94\x80sda4                                                                         \nsdc                            \n\xe2\x94\x94\xe2\x94\x80sdc1     ntfs        new-label          /run/media/user/new-label\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:此外,该设备sdc不再像所有其他块设备(例如 sda)一样具有文件系统类型和标签。只有分区才应具有文件系统类型,因为文件系统位于分区而不是设备上,并且只有分区应具有标签,因为列标题LABEL是文件系统标签而不是设备标签。

\n