Linux

為什麼 lsblk 顯示已格式化設備的舊 FSTYPE 和 LABEL?

  • May 1, 2019

我使用 parted 將外部硬碟驅動器 (sdc) 格式化為 ntfs,創建了一個主分區 (sdc1)。在格式化設備之前,使用命令將SystemRescueCd安裝在外部硬碟驅動器上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?

從原始文章的輸出中lsblk -f,我懷疑已安裝的 SystemRescueCd 的簽名仍然存在於外部硬碟驅動器中。所以我執行了命令wipefs /dev/sdcwipefs /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正在使用分區表的TYPEandLABELiso9660不是dos(主引導記錄)分區表。要lsblk顯示正確的分區iso9660表,必須刪除分區表。請注意,dd它也可以用於從塊(磁碟)設備中清除分區表簽名,但dd也可以清除其他分區表。

因為我們只想針對特定的分區表簽名進行擦除,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從無(空字元串)更改為“新標籤”。更改文件系統標籤的命令取決於文件​​系統1 2。對於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是文件系統標籤而不是設備標籤。

引用自:https://unix.stackexchange.com/questions/516381