Imagine que eu formatei a raiz com um sistema de arquivos ext3 em uma partição separada que existe em um HDD SATA e o diretório home em uma partição btrfs diferente que existe em um SSD Intel.
Baixei um arquivo da Internet e salvei-o temporariamente no /tmp
(no sistema de arquivos raiz), depois decidi movê-lo para o meu diretório pessoal (a segunda partição).
Eu posso sentir o processo doloroso que acontece em segundo plano para fazer um mv
comando tão simples funcionar.
Então, primeiro, é possível que o root e o home tenham diferentes sistemas de arquivos? Em segundo lugar, supondo que a resposta para a pergunta anterior fosse "sim", como o sistema operacional gerencia toda essa transição de e ext3
para o btrfs
uso de diferentes drivers de dispositivo para diferentes tipos de disco (HDD e SSD)?
fonte
Respostas:
A resposta é sim, você pode ter qualquer diretório em qualquer dispositivo, executando qualquer sistema de arquivos que o sistema operacional possa suportar.
Então você pode ter
/
/var
/home
/opt
e até/home/afr0ck
em diferentes dispositivos, diferentes partições, diferentes sistemas de arquivos.Não apenas você pode, mas é comum. Por exemplo, é sempre recomendável manter
/var
e/home
em partições diferentes,/
pois estas provavelmente consumirão espaço em disco inadvertidamente - se elas forem preenchidas, isso não afetará muito o sistema. Se eles estiverem na mesma partição que o root, isso poderá fazer com que o sistema pare.E você pode querer que diretórios diferentes sejam executados em dispositivos diferentes por motivos de velocidade. E use diferentes sistemas de arquivos para diferentes propósitos. Por exemplo, talvez ext4 seja o que você deseja para os arquivos do sistema operacional, pois eles não mudam muito, mas você pode querer btrfs para / home para poder manter instantâneos para backups. Essas são todas as decisões que podem ser tomadas por cada pessoa para seu caso de uso específico.
A parte do espaço do usuário do sistema operacional não precisa entender os diferentes tipos de dispositivos e sistemas de arquivos. Tudo o que faz é pedir ao kernel para mover um arquivo, e o kernel orquestra tudo a partir daí. Portanto, o
mv
comando (por exemplo) é independente do sistema de arquivos e do tipo de dispositivo. O kernel chama os drivers necessários para ler e gravar nas diferentes partições.fonte
mv(1)
primeiro tentarename(2)
o arquivo. Depois, ele volta a copiar e excluir. Então, tentar renomear é comomv
descobrir se é possível de uma maneira independente da FS. (rename(2)
Sempre falha quando se deslocam entre diferentes dispositivos, se eles usam o mesmo driver de sistema de arquivos ou não, @ afr0k.)mv
não bifurca / executa orename(1)
comando, apenas tenta arename(2)
chamada do sistema. Não há umrename
comando shell padrão . Em alguns sistemas, é o comando de renomeação de vários arquivos de substituição de padrão do util-linux. Eu não estava falando sobre o comando shell, apenas comomv
funciona internamente.Sim, sistemas de arquivos separados (pontos de montagem) podem ser diferentes tipos de sistemas de arquivos.
/proc
é sempre umprocfs
sistema de arquivos e/sys
é sempre umsysfs
. Os sistemas de arquivos temporários (às vezes incluindo/tmp
) são frequentementetmpfs
e, nas configurações de grupos de trabalho, é comum que os diretórios pessoais do usuário (e seus diretórios de produtos de trabalho) sejamnfs
ou outros tipos de sistemas de arquivos remotos (rede / compartilhados).Não há gerenciamento especial para o sistema operacional. Até certo ponto, no nível do usuário, todos os sistemas de arquivos são parecidos, no sentido de que uma
ls
listagem terá a mesma aparência em qualquer diretório. Além desse ponto, os sistemas de arquivos não interagem. Mesmo entre dois sistemas de arquivos (partições) no mesmo disco físico, do mesmo tipo de sistema de arquivos, não há vínculo 1 . Por exemplo, mover um arquivo de um sistema de arquivos (ponto de montagem) para outro sempre envolve fazer uma cópia e excluir o original. Não importa se são partições em discos diferentes. Não importa se um deles é HDD e um é SSD. Não importa se éext3
e se ébtrfs
. Não importa se um é interno (dentro da caixa do computador) e outro externo (a alguns centímetros do lado de fora, conectado por um cabo) - ou remoto (acessado pela rede).Falando em rede, é um pouco análogo
ssh
. Ele lê do teclado e envia os caracteres digitados para a rede. Simultaneamente, ele lê da rede e exibe os resultados na tela.Ou considere o seguinte: imagine que você está ao telefone e está mediando uma conversa entre a pessoa do outro telefone e outra pessoa na sala. Não é grande coisa.
________
1, exceto pelos links simbólicos - mas eles podem cruzar os limites do sistema de arquivos.
fonte
/tmp
no tmpfs? Eu também pensei que era praticamente uma prática padrão, já que você sempre pode colocar coisas/var/tmp
(embora isso não seja limpo na inicialização). Não sou especialista em padrões de distribuição cruzada, apenas no Debian / Ubuntu e Arch. Com aqueles e o RedHat, isso cobre uma grande fração dos sistemas Linux instalados por aí (mas não uma fração tão grande do total das distribuições).tmpfs
Linux é recente apenas nos últimos 5 a 7 anos. por exemplo, o Fedora estava discutindo a mudança em seu wiki ~ 2012, e acredito que foi introduzida no Debian Wheezy.