Команда mkfs.ext4 /dev/sdb1 завершается сообщением «/dev/sdb1 is apparently in use by the system; will not make a filesystem here» — это защитный механизм mkfs, который обнаружил, что устройство занято: смонтировано, задействовано в RAID, LVM, device-mapper или открыто другим процессом. Утилита отказывается создавать файловую систему, чтобы не уничтожить данные на активном разделе.
Ошибка появляется и в случаях, когда диск визуально «свободен»: например, на нём остались метаданные старого RAID-массива или незакрытое отображение device-mapper. Ниже разберём, как точно определить, кто держит устройство, и как безопасно его освободить. Все команды выполняются с правами root или через sudo.
Что означает это сообщение
Утилиты семейства mkfs перед записью проверяют состояние блочного устройства. Если ядро сообщает, что устройство используется — открыт дескриптор, есть активное монтирование или отображение через device-mapper — создание файловой системы блокируется. Это не сбой, а штатная защита от потери данных.
Типичные «держатели» устройства:
- 🔹 Смонтированная файловая система — самый частый случай.
- 🔹 Активный swap на этом разделе.
- 🔹 Устройство входит в mdadm RAID или используется как физический том LVM.
- 🔹 Остаточные отображения device-mapper: dm-crypt, multipath, старые тома LVM.
- 🔹 Процесс держит устройство открытым (например, незавершённый
ddили виртуальная машина).
Ошибка «is apparently in use by the system» — это защита mkfs от записи на занятое устройство. Задача — найти и корректно освободить «держателя», а не обходить проверку.
Диагностика: кто использует устройство
Прежде чем что-либо отключать, нужно выяснить, чем именно занят диск. Начните с общего обзора блочных устройств:
lsblk -o NAME,TYPE,FSTYPE,MOUNTPOINT /dev/sdb
Вывод покажет дерево: если над разделом есть точка монтирования, запись lvm, crypt или raid — вот и ответ. Дополнительно проверьте открытые дескрипторы:
lsof /dev/sdb1
fuser -v /dev/sdb1
Отдельно стоит посмотреть таблицу device-mapper — именно там часто «прячется» проблема:
dmsetup ls
dmsetup table
Если устройство фигурирует в выводе dmsetup, значит, ядро держит его через отображение, даже когда никакая файловая система не смонтирована. Это характерно для дисков, которые раньше были частью LVM, шифрованного тома или программного RAID.
Пошаговое решение
Действуйте последовательно, от простого к сложному. После каждого шага повторяйте команду mkfs — возможно, устройство уже освободилось.
Шаг 1. Размонтируйте файловую систему. Если lsblk показал точку монтирования:
umount /dev/sdb1
Если получаете «target is busy» — найдите процессы через lsof и завершите их, либо используйте umount -l (ленивое размонтирование) как крайнюю меру.
Шаг 2. Отключите swap, если раздел использовался как подкачка:
swapoff /dev/sdb1
Шаг 3. Деактивируйте LVM, если раздел был физическим томом:
vgchange -an имя_группы
lvchange -an /dev/имя_группы/имя_тома
Шаг 4. Остановите RAID, если диск был членом массива mdadm:
mdadm --stop /dev/md0
mdadm --zero-superblock /dev/sdb1
Шаг 5. Удалите остаточные отображения device-mapper:
dmsetup remove имя_отображения
☑️ Освобождение устройства перед mkfs
⚠️ Внимание: командыmdadm --zero-superblockиdmsetup removeнеобратимо удаляют метаданные и отображения. Перед выполнением убедитесь по выводуlsblkиblkid, что работаете именно с тем диском — ошибка в имени устройства приведёт к потере данных на другом накопителе.
Диск из RAID или с остаточными метаданными
Особый случай — диск, извлечённый из массива или другого сервера. Файловой системы на нём уже нет, но остаточные сигнатуры RAID, LVM или multipath заставляют ядро считать устройство занятым. Утилита mkfs видит эти метаданные и отказывается работать.
Проверить сигнатуры можно так:
blkid /dev/sdb1
wipefs /dev/sdb1
Команда wipefs без ключей только показывает найденные сигнатуры, ничего не удаляя. Чтобы стереть их, добавьте ключ -a:
wipefs -a /dev/sdb1
После очистки сигнатур имеет смысл выполнить partprobe /dev/sdb или переподключить диск, чтобы ядро перечитало состояние устройства. Затем повторите создание файловой системы.
Команда wipefs без параметров безопасна — она лишь выводит список сигнатур. Сначала посмотрите, что найдено, и только потом удаляйте с ключом -a.
Принудительное создание ФС и его риски
Некоторые утилиты mkfs поддерживают ключ принудительного выполнения (например, mkfs.ext4 -F, а для mkfs.xfs — -f). Он отключает часть проверок, но не снимает блокировку device-mapper — если устройство занято на уровне ядра, форматирование всё равно может завершиться ошибкой или повредить активную структуру данных.
| Подход | Когда применять | Риск |
|---|---|---|
| umount / swapoff | Раздел смонтирован или в swap | Минимальный |
| vgchange -an, dmsetup remove | LVM, crypt, multipath | Средний — проверить имя тома |
| mdadm --stop + --zero-superblock | Диск из RAID-массива | Удаление метаданных RAID |
| wipefs -a | Остаточные сигнатуры ФС/RAID/LVM | Стирание служебных метаданных |
| mkfs с ключом -F / -f | Только когда устройство точно свободно | Обход защиты, потеря данных |
⚠️ Внимание: принудительные ключи-Fи-fне решают проблему занятости, а лишь отключают предупреждения. Если устройство реально используется, запись на него повредит данные активного тома. Применяйте их только после того, как диагностика подтвердила, что устройство свободно.
Почему mkfs видит «занято», хотя диск пуст
Ядро Linux кэширует информацию о блочных устройствах. Если диск ранее входил в LVM или RAID, отображение device-mapper могло остаться активным даже после физического удаления тома. Проверьте вывод dmsetup ls и уберите «висячие» записи, затем выполните partprobe для обновления таблицы разделов.
Если ничего не помогло
Бывают ситуации, когда устройство остаётся занятым несмотря на все шаги. Возможные причины: фоновая служба multipathd автоматически захватывает диск, виртуальная машина или контейнер держит его открытым, либо ядро закэшировало устаревшее состояние.
Что можно сделать безопасно:
- 🔄 Проверить, не запущен ли
multipathd, и при необходимости добавить устройство в чёрный список его конфигурации. - 🔄 Убедиться, что диск не примонтирован внутри контейнера или виртуальной машины на этом хосте.
- 🔄 Перезагрузить систему — это гарантированно сбрасывает все «висячие» отображения и дескрипторы, после чего диагностику стоит повторить с чистого листа.
Перезагрузка — не «костыль», а легитимный способ вернуть устройство в предсказуемое состояние, когда ручная разборка зависимостей не даёт результата.
Если устройство остаётся занятым после всех шагов — проверьте multipathd, виртуальные машины и контейнеры, а затем перезагрузитесь и повторите диагностику с lsblk и dmsetup.
Частые вопросы
Можно ли просто игнорировать ошибку и форматировать с -F?
Технически ключ -F у mkfs.ext4 отключает часть проверок, но если устройство реально занято (смонтировано или отображено через device-mapper), запись повредит активные данные. Сначала освободите устройство — принудительный ключ уместен только когда занятость ложная.
Диск новый, из магазина — почему ошибка всё равно появляется?
Проверьте, не смонтировала ли система раздел автоматически (часто бывает с USB-накопителями), и не захватил ли диск multipathd. Также убедитесь, что вы указываете правильное устройство в команде mkfs.
Чем wipefs отличается от dd с обнулением диска?
wipefs -a точечно стирает известные сигнатуры файловых систем, RAID и LVM — быстро и без полной перезаписи. Обнуление через dd затирает всё подряд и занимает значительно больше времени; для снятия «занятости» это избыточно.
Ошибка появляется после перезагрузки снова — что делать?
Значит, какой-то сервис захватывает устройство при загрузке: проверьте /etc/fstab на предмет записей для этого диска, конфигурацию multipath и автоматическую активацию LVM. Уберите устаревшие записи, относящиеся к этому устройству.
Как узнать, какой процесс держит устройство?
Используйте lsof /dev/sdb1 или fuser -v /dev/sdb1 — они покажут PID и имя процесса. Если список пуст, а устройство занято, ищите причину на уровне ядра: dmsetup ls и lsblk.