Почему lsblk показывает старый FSTYPE и LABEL устройства, которое было отформатировано?

Это задокументированное поведение.

От info ls:

-f:

 В основном, как и `-U'- не сортировать; перечислять файлы в том порядке, в котором они хранятся.
 порядке, в котором они хранятся в каталоге. Но также можно включить `-a' (перечислить
 все файлы) и отключить `-l', `--color', и `-s' (если они были указаны
 указаны до `-f').

То, что вы должны использовать, полностью зависит от того, что вам нужно.

2
30.04.2019, 16:59
3 ответа

Из вывода 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и LABELтаблицы разделов iso9660вместо таблицы разделов основной загрузочной записи (dos ). Чтобы заставить 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больше не имеет типа файловой системы и метки, как и все другие блочные устройства (, например. сда ). Только разделы должны иметь тип файловой системы, поскольку файловая система находится на разделе, а не на устройстве, и метку, поскольку заголовок столбца LABELявляется меткой файловой системы, а не меткой устройства.

4
27.01.2020, 22:08

lsblk, вероятно, сначала проверяет первый сектор, чтобы увидеть, какой тип файловой системы содержит устройство, и только если ничего не будет найдено, перейдет к «обычным» местоположениям для суперблоков файловой системы.

Поскольку iso9660 распознается по данным в первом секторе, lsblkне смотрит дальше и также извлекает оттуда метку тома.

Простое создание таблицы разделов оставляет большую часть первого сектора нетронутой, вот почему вы видите это.

Сначала необходимо стереть первый сектор, например, с помощью. dd if=/dev/zero of=/dev/sdc count=1, а затем заново создайте таблицу разделов. Если вы создадите его заново с теми же параметрами, файловая система NTFS, которую вы создали ранее, должна остаться нетронутой.

0
27.01.2020, 22:08

Пробовали ли вы повторно -прочитать таблицу разделов (от имени пользователя root )?

partprobe /dev/sdc
1
27.01.2020, 22:08

Теги

Похожие вопросы