Por que uma partição estaria em uso pelo sistema se não estiver montada?

12

Estive migrando meu sistema do btrfs para o ext4 após encontrar problemas de desempenho com as VMs. Eu tenho dois discos rígidos no meu laptop para trabalhar. Mudei minha partição pessoal com sucesso, mas as mesmas etapas que eu usei não estão funcionando como root.

Progresso até agora:

Eu tenho dda minha partição raiz de /dev/sda3dentro /dev/sdb3. Eu modifiquei /etc/fstabpara o seguinte:

$ 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

e corra sudo mkinitcpio -p linux. Parece funcionar. Eu consigo inicializar montando a partição no segundo disco. dfmostra:

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

Então, claramente, sdb3está montado, não sda3. Aqui está a etapa problemática: Quando tento formatar sda3, que supostamente não é usado, recebo o seguinte:

$ 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!

sda3está em uso. Como e por que poderia estar em uso?

Conforme o comentário de Casey, a saída do 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)

Conforme o comentário de Warwick, desmontando:

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

Montar e desmontar o sda3 em outro local funciona com êxito, mas nada muda.

Atualização: Comportamento mais suspeito:

$ 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)

Depois de montar o sda3, o sdb3 não é mais o montador. Estranho, né?

Conforme mikeserv:

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

Isso é muito esperado, já que o sdb3 é btrfs e deve ser montado no root. Do meu arquivo mkinitcpio.conf:

MODULES=""
HOOKS="base udev autodetect modconf block filesystems keyboard fsck"
stewSquared
fonte
Tente montá-lo e depois desmontá-lo. Talvez um sinalizador esteja definido em algum lugar que o faça pensar que está montado quando não está. Se ocorrer um erro durante a montagem, espero que lhe diga o ponto de montagem em que ele pensa que está montado.
Warwick
obtenha os módulos / ganchos do kernel btrfs do initramfs. arco tem alguns deles. caso contrário, wipefscoloque-o na lista negra ou no disco para remover os superblocos ... rmmod... Existem várias maneiras pelas quais você pode seguir, mas provavelmente tudo se resume a você não carregar ou descarregar o módulo.
mikeserv
1
talvez algum outro programa tem / dev / sda3 abriu
programmerjake
1
Você realmente deveria estar fazendo isso a partir de um ambiente ao vivo ...
jasonwryan
@case Feito. / dev / sdb3 é claramente montado
stewSquared

Respostas:

5

Eu descobri. Meu carregador de inicialização não foi configurado corretamente. Parece óbvio, certo? A modificação do fstab não se enquadra na configuração do gerenciador de inicialização. Eu tive que mudar uma linha /boot/syslinux/syslinux.cgfpara me referir à partição de inicialização correta.

Dito isto, não havia necessidade de inicializar o segundo disco em primeiro lugar. Eu poderia ter evitado esse problema concluindo todo o processo em um ambiente ativo e correndo para executar mkinitcpio.

stewSquared
fonte
2
Então você inicializou o sda3 e montou o sdb3 sobre / sobre ele, que substituiu a entrada mtab, portanto, o comando mount não mostra sinais de sda3.
Kyle Jones
@KyleJones Yup. Isso resume tudo.
precisa saber é o seguinte