É possível que as partições raiz e home tenham diferentes sistemas de arquivos e estejam localizadas em dispositivos físicos separados?

10

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 mvcomando 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 ext3para o btrfsuso de diferentes drivers de dispositivo para diferentes tipos de disco (HDD e SSD)?

Karim Manaouil
fonte
3
É feito com camadas. A camada do sistema de arquivos é construída sobre a camada do dispositivo de bloco. Você pode usar qualquer sistema de arquivos adequado na camada de sistema de arquivos. Você pode usar qualquer dispositivo de bloco adequado nessa camada. Cada ponto de montagem pode ter seu próprio sistema de arquivos e dispositivo.
sawdust
@sawdust, isso é uma coisa muito interessante que você apontou, a camada do sistema de arquivos e a camada do dispositivo de bloco. Como eles se relacionam? Qualquer leitura será útil.
Karim Manaouil
Não sei muito sobre sistemas de arquivos, mas presumo que o processo não seria tão diferente de copiar os arquivos para uma unidade FAT32 externa
Blaine
Por que você ainda usa o ext3 em 2017 quando é tão simples atualizar para o ext4?
David Foerster

Respostas:

25

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 /opte até /home/afr0ckem diferentes dispositivos, diferentes partições, diferentes sistemas de arquivos.

Não apenas você pode, mas é comum. Por exemplo, é sempre recomendável manter /vare /homeem 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 mvcomando (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.

Paulo
fonte
7
Útil para apontar que mv(1)primeiro tenta rename(2)o arquivo. Depois, ele volta a copiar e excluir. Então, tentar renomear é como mvdescobrir 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.)
Peter Cordes
1
@ PeterCordes hein, eu não sabia que renomear era uma coisa. Eu sempre usei mv para renomear as coisas.
5
@stanri: mvnão bifurca / executa o rename(1)comando, apenas tenta a rename(2)chamada do sistema. Não há um renamecomando 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 como mvfunciona internamente.
Peter Cordes
Até o / usr pode residir em uma partição diferente, é por isso que algumas coisas realmente essenciais estão em / bin / lib e / sbin - se todos os instaladores o suportam é outra questão.
rackandboneman
7

Sim, sistemas de arquivos separados (pontos de montagem) podem ser diferentes tipos de sistemas de arquivos.  /procé sempre um procfssistema de arquivos e /sysé sempre um sysfs. Os sistemas de arquivos temporários (às vezes incluindo /tmp) são frequentemente tmpfse, nas configurações de grupos de trabalho, é comum que os diretórios pessoais do usuário (e seus diretórios de produtos de trabalho) sejam nfsou 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 lslistagem 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 é ext3e 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.

G-Man diz que 'restabelece Monica'
fonte
1
Concordo amplamente com a sua resposta, mas não é realmente típico do / tmp ser um tmpfs (embora talvez seja definido em algumas distribuições) - normalmente está fora da partição raiz e é limpo na inicialização. Ubuntu TAND tipo Redhat distros usar / dev / shm como tmpfs,
davidgo
Eu estava confuso. Eu atualizei minha resposta.
G-Man diz 'Reinstate Monica'
1
@ Davidgo: Quais distros do Linux não são padrão /tmpno 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).
Peter Cordes
(ignorando sistemas embarcados) Eu só uso o Centos e o Ubuntu regularmente - os quais usam disco para / tmp. - Tenho certeza que isso significa que o Debian, Redhat e Mint seguirão a mesma convenção. Meu dispositivo Android não possui / tmp
davidgo 3/17
2
@ PeterCordes A ascensão do tmpfsLinux é 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.
Bob