Почему раздел будет использоваться системой, если он не смонтирован?


12

Я перенес свою систему с btrfs на ext4 после того, как столкнулся с проблемами производительности виртуальных машин. У меня в ноутбуке два жестких диска для работы. Я успешно переместил свой домашний раздел, но те же шаги, которые я использовал, не работают для root.

Прогресс на данный момент:

Я сделал ddсвой корневой раздел /dev/sda3в /dev/sdb3. Я изменил /etc/fstabследующее:

$ cat /etc/fstab
# 
# /etc/fstab: static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>
# UUID=95f13c34-96ca-49e3-bcb2-ff594df31506
/dev/sdb3               /               btrfs           rw,noatime,ssd,space_cache,discard      0 0

# UUID=0fe04f59-599f-41e2-ac30-2ad0f17a9727
/dev/sda2               /boot           ext2            rw,relatime     0 2

# UUID=44741e0f-924a-4841-80ef-2132bef84182
/dev/sda4               /home           ext4            rw,noatime,discard      0 0

и беги sudo mkinitcpio -p linux. Вроде работает. Я могу загрузиться, смонтировав раздел на втором диске. dfшоу:

$ df
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb3        28G   18G  9.8G  65% /

Так что, понятно, sdb3монтируется, а не sda3. Вот проблемный шаг: когда я пытаюсь отформатировать sda3, который предположительно не используется, я получаю следующее:

$ sudo mkfs.ext4 /dev/sda3
[sudo] password for stew: 
mke2fs 1.42.11 (09-Jul-2014)
/dev/sda3 contains a btrfs file system
Proceed anyway? (y,n) y
/dev/sda3 is apparently in use by the system; will not make a filesystem here!

sda3используется Как и почему это может быть использовано?

Согласно комментарию Кейси, вывод mount:

mount | grep sd
/dev/sdb3 on / type btrfs (rw,noatime,ssd,discard,space_cache)
/dev/sda4 on /home type ext4 (rw,noatime,discard,data=ordered)
/dev/sda2 on /boot type ext2 (rw,relatime)

Согласно комментарию Уорика, размонтирование:

$ sudo umount /dev/sda3
umount: /dev/sda3: not mounted

Монтирование и размонтирование sda3 в другом месте работает успешно, но ничего не меняет.

Обновление: более подозрительное поведение:

$ mount | grep sd
/dev/sdb3 on / type btrfs (rw,noatime,ssd,discard,space_cache)
/dev/sda4 on /home type ext4 (rw,noatime,discard,data=ordered)
/dev/sda2 on /boot type ext2 (rw,relatime)
$ sudo mount /dev/sda3 mnt
[sudo] password for stew: 
$ mount | grep sd
/dev/sda3 on / type btrfs (rw,noatime,ssd,discard,space_cache)
/dev/sda4 on /home type ext4 (rw,noatime,discard,data=ordered)
/dev/sda2 on /boot type ext2 (rw,relatime)
/dev/sda3 on /home/stew/mnt type btrfs (rw,relatime,ssd,discard,space_cache)

После монтирования sda3 sdb3 больше не монтируется. Странно, а?

Согласно миксерву:

$ rmmod btrfs
rmmod: ERROR: Module btrfs is in use

Это очень ожидаемо, так как sdb3 является btrfs и должен быть смонтирован в root. Из моего файла mkinitcpio.conf:

MODULES=""
HOOKS="base udev autodetect modconf block filesystems keyboard fsck"

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

вытащить модули / хуки ядра btrfs из initramfs. Арка имеет несколько из них. еще занести его в черный список или wipefsна диск, чтобы удалить суперблоки ... rmmod.... Вы можете пойти разными путями, но, вероятно, все они сводятся к тому, что вы не загружаете или не выгружаете модуль.
mikeserv

1
может быть, какая-то другая программа открыла / dev / sda3
programmerjake

1
Вы действительно должны делать это из живой среды ...
jasonwryan

@ case Done. / dev / sdb3 четко смонтирован
stewSquared

Ответы:


5

Я понял. Мой загрузчик не был настроен должным образом. Звучит очевидно, верно? Изменение fstab не совсем подходит для настройки загрузчика. Мне пришлось изменить строку, /boot/syslinux/syslinux.cgfчтобы сослаться на правильный загрузочный раздел.

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


2
Таким образом, вы загрузили sda3, а затем подключили sdb3 поверх или поверх него, что перезаписало запись mtab, следовательно, вывод команды mount не показывал никаких признаков sda3.
Кайл Джонс

@KyleJones Да. Это подводит итог.
stewSquared
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.