mkfs не удается, система сообщает: “/dev/sdb, по-видимому, используется системой; файловая система здесь не будет создана”

Вопрос или проблема

Это сервер Ubuntu 11.10.

/dev/sdb не смонтирован (см. выводы ниже) и не используется ни одним процессом, насколько я могу видеть. Для подкачки он также не используется. Это второй IDE-диск на сервере, подключенный ко вторичному IDE и настроенный в аппаратном RAID как массив 2.

Я не могу смонтировать диск, так как получаю предупреждение, что он может уже использоваться. Я запустил fdisk, удалил все предыдущие разделы и создал один основной.

root@sargent:/home/harel# fdisk -l /dev/sdb

Диск /dev/sdb: 122.9 GB, 122942324736 байт
226 головок, 63 сектора/трек, 16864 цилиндров, всего 240121728 секторов
Единицы измерения - сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Входной/выходной размер (минимальный/оптимальный): 512 байт / 512 байт
Идентификатор диска: 0x00083711

   Устройство Загрузочный    Начало      Конец     Блоки  Id  Система
/dev/sdb1            2048   240121727   120059840   83  Linux

root@sargent:/home/harel# mkfs -t ext4 /dev/sdb
mke2fs 1.41.14 (22-Дек-2010)
/dev/sdb - это весь диск, а не один раздел!
Продолжать в любом случае? (y,n) y
/dev/sdb судя по всему используется системой; не буду создавать файловую систему здесь!

root@sargent:/home/harel# cat /proc/swaps 
Имя Файла                   Тип        Размер   Использовано   Приоритет
/dev/sda5                               раздел    2619388 0   -1

root@sargent:/home/harel# mount
/dev/sda1 on / type ext4 (rw,ошибки=ремонт-в-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)

Проверьте ваш способ разметки еще раз, но не указывая /dev/sda:

# fdisk -l

Если в выводе вы найдете что-то вроде /dev/md0, это значит, что у вас есть SW-массив, и диск, который вы пытаетесь отформатировать, содержит метаданные этого массива.

В этом случае выполните:

# umount /dev/md0
# mdadm --stop /dev/md0

Очистите суперблок диска:

# mdadm --zero-superblock /dev/sdb

Удалите массив

# mdadm --remove /dev/md0

Теперь вы можете работать с диском.

/dev/sdb используется, потому что на нем есть разделы, о которых знает ОС. Если вы хотите создать на нем файловую систему (что плохая идея, так как это редко делают, это будет путать администраторов и усложнит любое разделение или изменение размера), сначала удалите существующий раздел с помощью fdisk. Если вы хотите создать файловую систему на единственном разделе /dev/sdb1 (это то, что вам следует сделать, поскольку использование диска напрямую не дает преимуществ), укажите это: mkfs /dev/sdb1.

Вы получаете это сообщение об ошибке, потому что /dev/sdb имеет раздел (например, /dev/sdb1), и вызов mkfs также перезаписывает всю или части вашей таблицы разделов. В худшем случае ваша файловая система будет непригодна для использования. Или вы ‘просто’ потеряете таблицу разделов, которая может вам понадобиться. Поскольку файловые устройства и фактическая таблица разделов на диске должны отображать одну и ту же информацию, они, несомненно, ‘находятся в использовании’ ядром.

Таким образом, простое правило: если вы хотите создать файловую систему на всем дисковом устройстве, убедитесь, что все разделы удалены заранее. Например:

# ls /dev/sdb*
/dev/sdb /dev/sdb1
# sfdisk --delete /dev/sdb
# sfdisk --list /dev/sdb
# ls /dev/sdb*
/dev/sdb

Обычно инструмент разметки заботится о том, чтобы уведомить ядро об обновлении своих файлов устройств разделов. Но иногда (например, для loopback-устройств) может потребоваться явно удалить их (после удаления таблицы разделов), например, с помощью partx -dv mydev и/или kpartx -dv mydev.

Учтите, что предыдущий вызов kpartx -av mydev может создать устройства разделов как /dev/mapper/mydev* вместо /dev/mydev*. Когда они существуют, тогда mkfs жалуется на то же самое.

Это старый пост, но я столкнулся с той же проблемой, когда пытался создать файловую систему на одном из моих жестких дисков. Система жалуется и говорит

> [root@MASTER ~]# mkfs.ext4 -L squid_cache -m2 /dev/sdc1
mke2fs 1.42.9 (28-Дек-2013)
/dev/sdc1 судя по всему используется системой; не будут создавать файловую систему здесь!

Команды:

  • fuser
  • lsof

не дали ничего полезного. Вот что я сделал, чтобы найти причину проблемы. Я отправился в каталог /etc и искал любые файлы, которые упоминали диск sdc. Первый ‘find’ ничего не нашел, поэтому я расширил поиск, чтобы включить следующий уровень, и это обнаружило нарушителя

> [root@MASTER etc]# find  ./* -maxdepth 1 -type f -execdir grep -l sdc '{}' +                                                                                             
./services
./saveconfig.json

Я знаю, что эти файлы используются targetcli (iSCSI backend), поэтому, как только я отключил этот накопитель и заново запустил mkfs команду, та же команда выполнена без проблем.
Надеюсь, это поможет.

В моем случае мне пришлось отключить многопутевое устройство.

sudo multipath -f mpatha

Примечание:
многопутевое устройство относится к конфигурации хранения, обычно используемой в корпоративных средах, где одно устройство хранения (такое как жесткий диск, SSD или NVMe диск) доступно через несколько путей с сервера. Эта конфигурация часто используется для обеспечения избыточности, балансировки нагрузки и повышения доступности.

В моем случае sudo umount /dev/sdb сработал.

Ни один из этих ответов не помог мне. Я пытался форматировать первый раздел (/dev/sda1), а не весь диск, как это предполагает использование команды ‘mkfs.ext4’. Но я получаю сообщение об ошибке, что система его использует.
В моей системе я установил Ubuntu 20.04 Desktop на диск NVMe (/dev/sdb), и я также добавил HDD к системе (который теперь является /dev/sda). В GUI есть утилита под названием Disk, которая раньше имела “переключатель”, позволяющий мне подключать/отключать HDD, но теперь переключатель отсутствует! Но на этом диске вообще не должно быть ничего запущенного. Вся эта проблема началась, потому что я хотел хранить видеозаписи с камер наблюдения на этом жестком диске объемом 2 ТБ, и я хотел получить к нему удаленный доступ, чтобы можно было просматривать файлы. Поэтому, мне нужно было настроить и монтировать раздел так, чтобы система могла записывать файлы на него, но пользователь мог транслировать файлы для просмотра по локальной сети. Но сначала мне нужно его форматировать. И по какой-то причине я не могу. Я пробовал как методы через GUI, так и через CLI – оба выдают ошибку “в использовании”, но сегодня утром он даже не был подключен (вот как я узнал о переключателе в GUI).

перезагрузка помогла мне.

Я пробовал множество других решений и не смог определить, что удерживало ресурс (ранее он был смонтирован Clonezilla как /home/partimag)

Так что, неудивительно, перезагрузка заставила “отпустить” удерживаемое.

Я смог продолжить с mkfs.ext4 /dev/sdaX

Единственное, что было странным, это то, что ранее я форматировал раздел с помощью mkfs.ext4, и раздел был отформатирован как ext3 (я могу предположить, что случайно набрал mkfs.ext3, но опять же, это было единственное, что было необычным при выполнении всей этой процедуры на Ubuntu Server 22.04.4 LTS)

перезагрузка помогла мне.

То же самое у меня, не уверен, почему, но это сработало, и я смог запустить mkfs без проблем.

Попробуйте полностью очистить жесткий диск сначала с помощью:

sudo dc3dd wipe=/dev/sdb

Убедитесь, что выбрали правильный диск.

.

Ответ или решение

Конечно, решение вашей проблемы требует внимательного подхода и понимания работы с устройствами хранения данных в операционных системах Linux. Вы столкнулись с ситуацией на сервере Ubuntu 11.10, где не удается создать файловую систему на диске /dev/sdb из-за сообщения об ошибке, указывающего, что устройство уже используется системой. Давайте рассмотрим несколько возможных причин и шагов для решения этой проблемы в контексте вашего описания.

Теория

Ошибка, с которой вы столкнулись, часто возникает, когда система считает устройство используемым. Это может случиться из-за нескольких факторов:

  1. АПАРТОВКИЕ либо Программные рейды: Иногда диск может быть частью программного RAID-массива. Это особенно вероятно, если RAID был настроен ранее и для управления массивом использовалась утилита mdadm.

  2. Неправильное отображение устройства: Диски могут отображаться как многопутевые устройства (в результате настроек Multipath), что может вызвать подобные ошибки.

  3. Данные прошлого монтирования или кэшей: Старые данные о монтировании или кэшированная информация в системе также могут быть причиной ошибки, даже если устройство явно не смонтировано.

  4. Конфигурационные файлы и службы: Некоторые службы могли создать конфигурации, в которых диск назначен каким-либо образом. Например, в iSCSI или targetcli, где диск мог быть частью более сложной конфигурации.

Пример

Рассмотрим пример, где устройство /dev/sdb может быть частью программного RAID-массива. Вы запускаете fdisk и видите, что диск не используется как swap и не значится в списке смонтированных файловых систем. Тем не менее, mkfs отказывается работать.

  1. Для диагностики сначала выполните команду mdadm -Q /dev/sdb. Если она покажет, что устройство связано с md-устройством (например, /dev/md0), это укажет на участие в RAID.

  2. Если устройство подключено через многопутевую конфигурацию, команда multipath -ll может подтвердить это.

  3. Ищите любые конфигурационные файлы через find /etc -type f -exec grep '/dev/sdb' {} +, чтобы убедиться, что диск не ассоциирован с другими службами или устройствами.

Применение

На основе вышеизложенного, вашим последующим шагом будет следующее:

  1. Отключение RAID: Если устройство связано с md-устройством, выполните:

    sudo umount /dev/md0  # если оно смонтировано
    sudo mdadm --stop /dev/md0
    sudo mdadm --zero-superblock /dev/sdb
    sudo mdadm --remove /dev/md0
  2. Проверка многопутевых устройств: Если ваше устройство связано с многопутевой конфигурацией, выполните:

    sudo multipath -f <имя устройства>
  3. Ресканирование: После удаления любых прежних данных о разделах:

    sudo partprobe /dev/sdb
  4. Попробуйте снова: Теперь, без преград, создайте файловую систему:

    sudo mkfs.ext4 /dev/sdb1

Дополнительные рекомендации

Если проблема не решается после всех вышеупомянутых шагов, возможно, вам стоит перезагрузить систему. Это общее решение, которое помогает снять любые невидимые блокировки на устройстве.

Также вы можете рассмотреть полное обнуление устройства диск, если ни один из перечисленных методов не сработал. Это крайняя мера:

sudo dc3dd wipe=/dev/sdb

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

Оцените материал
Добавить комментарий

Капча загружается...