![为什么 lsblk 显示已格式化设备的旧 FSTYPE 和 LABEL?](https://linux22.com/image/152745/%E4%B8%BA%E4%BB%80%E4%B9%88%20lsblk%20%E6%98%BE%E7%A4%BA%E5%B7%B2%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%AE%BE%E5%A4%87%E7%9A%84%E6%97%A7%20FSTYPE%20%E5%92%8C%20LABEL%EF%BC%9F.png)
我使用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
信息:sdc
sdc
[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
上面的打印输出确认了iso9660
SystemRescueCd 创建的分区表仍然存在。lsblk
使用分区表的TYPE
和代替 dos(主引导记录)分区表。为了显示正确的分区表,必须删除分区表。请注意,它还可以用于擦除块(磁盘)设备中的分区表签名,但也可以擦除其他分区表。LABEL
iso9660
lsblk
iso9660
dd
dd
因为我们只想针对特定的分区表签名进行擦除,wipefs
所以是首选,因为与 不同的是dd
,wipefs
我们不必再次重新创建分区表。-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 文件系统应该仍然完好无损。