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

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

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

NAME       FSTYPE      LABEL           UUID   MOUNTPOINT
sda                                                                            
├─sda1     ntfs        System Reserved                       
├─sda2     ntfs                                               
├─sda3     ntfs                                               
├─sda4                                                                         
sdc        iso9660     sysrcd-5.2.2                     
└─sdc1     ntfs        sysrcd-5.2.2          /run/media/user/sysrcd-5.2.2

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

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

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

答案1

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

[root@fedora user]# wipefs /dev/sdc
DEVICE OFFSET TYPE    UUID                   LABEL
sdc    0x8001 iso9660                        sysrcd-5.2.2
sdc    0x1fe  dos                            
[root@fedora user]# wipefs /dev/sdc1
DEVICE OFFSET TYPE UUID             LABEL
sdc1   0x3    ntfs  
sdc1   0x1fe  dos

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

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

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

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

[root@fedora user]# wipefs /dev/sdc
DEVICE OFFSET TYPE UUID LABEL
sdc    0x1fe  dos       
[root@fedora user]# wipefs /dev/sdc1
DEVICE OFFSET TYPE UUID             LABEL
sdc1   0x3    ntfs 34435675G36Y4776 
sdc1   0x1fe  dos 

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

NAME       FSTYPE      LABEL           UUID   MOUNTPOINT
sda                                                                            
├─sda1     ntfs        System Reserved                       
├─sda2     ntfs                                               
├─sda3     ntfs                                               
├─sda4                                                                         
sdc                            
└─sdc1     ntfs        34435675G36Y4776          /run/media/user/34435675G36Y4776

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

[root@fedora user]# ls -l /dev/disk/by-label
total 0
lrwxrwxrwx. 1 root root 10 Apr 30 19:47 'System\x20Reserved' -> ../../sda1

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

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

ntfslabel /dev/sdc1 "new-label"

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

NAME       FSTYPE      LABEL           UUID   MOUNTPOINT
sda                                                                            
├─sda1     ntfs        System Reserved                       
├─sda2     ntfs                                               
├─sda3     ntfs                                               
├─sda4                                                                         
sdc                            
└─sdc1     ntfs        new-label          /run/media/user/new-label

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

答案2

您是否尝试过重新读取分区表(以 root 身份)?

partprobe /dev/sdc

答案3

lsblk可能首先检查第一个扇区以查看设备包含的文件系统类型,并且只有在没有找到任何内容的情况下,才会移至文件系统超级块的“通常”位置。

由于可以从第一个扇区中的数据识别出 iso9660,因此lsblk不再进一步查看并从那里提取卷标。

简单地创建分区表会使第一个扇区的大部分完好无损,这就是您看到此情况的原因。

您需要先用eg擦除第一个扇区dd if=/dev/zero of=/dev/sdc count=1,然后重新创建分区表。如果您使用相同的参数重新创建它,您之前创建的 NTFS 文件系统应该仍然完好无损。

相关内容