Sistemas de arquivos vs partições x diretórios


30

Eu sou novo no Linux, então me perdoe pela possível confusão que você possa encontrar nesta pergunta.

Pelo que entendi, o sistema de arquivos especifica como uma partição armazena / gerencia arquivos, com padrões como ext2, ext3, reiserfs, xfs, etc. Ocasionalmente, vejo que as pessoas parecem se referir a cada " directory" como

    /boot filesystem
    /usr/bin filesystem
    /root filesystem
    /bin filesystem

Por que nos referiríamos a eles como filesystems ?

Se cada um deles é uma partição, isso me confunde porque, tanto quanto eu sei, /usre /usr/bintendem a estar na mesma partição, mas vi pessoas se referirem a ambos /usr filesysteme /usr/bin filesystem.

Se filesystemaqui é equivalente ao do Windows directory, não está claro para mim, pois aparentemente o sistema de arquivos é algo mais do que apenas diretórios. Além disso, até onde eu sei, o Linux não tem directoryconceito; todos são arquivos.


Eu nunca vi uma instância do "sistema de arquivos / root". Qualquer sistema de arquivos montado em "/" é "o sistema de arquivos raiz". Alguns outros pontos de montagem prováveis ​​em uma distribuição Linux moderna seriam "/ boot", "/ home" e "/ mnt / xx" ou "/ media / xx" para vários valores de "xx". As distribuições do kernel 2.x + (?) Terão "/ proc" e "/ sys", o Systemd possui pontos de montagem "/ var / run / nnnn" para vários UIDs numéricos nnnn. Instalações mais antigas do Unix podem montar "/ usr" via NFS, mas isso é improvável em uma distribuição pessoal do Linux. "/ bin" e "/ usr / bin" normalmente não seriam pontos de montagem separados.
David

Existe uma raiz / , não existe? Você quer dizer que nunca fica em um sistema de arquivos separado?
Kenny

Direita. "/ root" é o diretório inicial padrão do usuário "root", mas normalmente é apenas outro diretório no sistema de arquivos raiz.
David

Este tópico foi discutido extensivamente no Ask Ubuntu , que, IMNSHO, é bobo, pois, no AFAIK, os conceitos não são diferentes no Ubuntu, pois estão em qualquer outra forma de Unix ou Linux. Por exemplo, o que é "montagem"? foi perguntado apenas alguns dias atrás.
19415 Scott

Estou bastante impressionado com as perguntas. Vindo de pouco conhecimento, você já pode compreender bastante neste momento e que perdeu a conclusão de que "/ root filesystem" pode se referir ao sistema de arquivos em que a partição está montada /root, acho que isso é descartável, considerando a complexidade do situação.
precisa saber é o seguinte

Respostas:


14

Como escrevi em https://superuser.com/a/293160/38062 :

O problema aqui é a palavra "sistema de arquivos". Nos mundos POSIX / Unix / Linux, é usado para significar várias coisas diferentes.

  1. O "sistema de arquivos" às vezes é todo o sistema de arquivos, enraizado /e apresentado aos softwares de aplicativos pelo kernel do sistema operacional. Com esse significado, as pessoas falam de sistemas operacionais POSIX com uma "única árvore de sistema de arquivos ", por exemplo.
  2. Um "sistema de arquivos" às vezes é uma (ou mais) fatia (s) de um (ou vários) DASD (s) - uma ou mais coleções de setores de disco contíguos formatados como um único volume com um determinado formato - como demarcada por alguma partição de disco esquema. Com esse significado, as pessoas falam, digamos, em "formatar meu /usrsistema de arquivos ". "/usr " aqui está o ponto de montagem (esperado) do volume ou (em alguns esquemas de particionamento) seu rótulo de identificação.
  3. Às vezes, um "sistema de arquivos" é uma árvore abstrata de arquivos e diretórios que pode ser juntada, apresentada por um driver de sistema de arquivos (ou seja, a camada VFS) para o restante do sistema. Com esse significado, as pessoas falam de, por exemplo, "montar o sistema de arquivos proc/proc " ou "usar um sistema de arquivos tmpfs/tmp ".

Você está vendo o significado nº 1 quando vê " /usr/binsistema de arquivos". É uma árvore de arquivos raiz no diretório /usr/bin. Sim, Linux muito faz tem o conceito de diretórios.

O significado 2 e 3 são o que você está lendo errado. As pessoas não estão falando /usr/bincomo um conjunto de dados em disco, demarcado pela divisão / divisão de disco. Eles também não estão falando de /usr/binum tipo específico de driver de sistema de arquivos ou de um formato específico de volume de disco.

Leitura adicional

  • Ramesh Bangia (2010). "sistema de arquivo". Dicionário de Tecnologia da Informação . Publicações de Laxmi, Ltd. ISBN 9789380298153. p. 224
  • Sistema de arquivos . "Definições básicas". As especificações básicas do grupo aberto . Edição 7 IEEE 1003.1. O grupo aberto. 2013.
  • Binh Nguyen (16/08/2004). "sistema de arquivo". O dicionário do Linux . Versão 0.16. p. 616

8

Claro que o Linux usa o conceito de diretórios. O conceito de diretórios é o mesmo do Windows.

O conceito de sistema de arquivos também é muito semelhante ao usado no Windows. O Windows geralmente usa NTFS ou FAT - o Linux geralmente usa ext2, ext3, ext4 e assim por diante, essa é a diferença.

O que é diferente é que no Linux os arquivos / diretórios de todas as partições disponíveis são organizados em uma única árvore. No Windows, você se refere a diferentes partições usando uma letra, fe "a:", "c:", no Linux, o caminho completo para qualquer arquivo disponível começa com "/" - o diretório raiz. Por exemplo, existe uma partição separada no seu HDD com arquivos necessários para inicializar o sistema: você executa o comando 'mount' com argumentos apropriados e o conteúdo dessa partição fica disponível no caminho "/ boot /". Portanto, os caminhos fe "/ boot" e "/ home" podem se referir a dados em diferentes partições, essas partições podem ter sistemas de arquivos diferentes. Provavelmente causou seu mal-entendido.

Os diretórios localizados fisicamente na mesma partição sempre "teriam o mesmo sistema de arquivos". Quando alguém fala sobre o sistema de arquivos de algum diretório, na verdade é sobre o sistema de arquivos da partição em que esse diretório está localizado.

(Correção menor e provavelmente não importante: às vezes o sistema de arquivos é virtual e não existe nenhuma partição correspondente. Por exemplo, "/ proc" contém algo que se parece muito com arquivos, mas esses "arquivos" são virtuais, não residem em qualquer disco rígido e contém informações sobre os processos em execução. Existe um sistema de arquivos "procfs" especial que fornece uma interface semelhante a arquivo para esses dados)


Você mencionou "sistema de arquivos de um diretório", ele faz cascata em todos os seus subdiretórios. É possível que um diretório e seus subdiretórios tenham um sistema de arquivos diferente? Por exemplo / a e / a / b , com / b há outra partição com seu próprio sistema de arquivos F2 montado em um sistema de arquivos F1?
21715 Kenny

Quanto a saber se os diretórios localizados na mesma partição são de fato parte do mesmo sistema de arquivos, podem ficar um pouco confusos para alguns sistemas de arquivos muito modernos, como o ZFS ou o btrfs; você pode ter um volume ZFS com vários sistemas de arquivos compartilhando-o, com seus próprios pontos de montagem totalmente distintos.
Charles Duffy

@ Kenny Sim, você está certo. Exemplo ao vivo: insiro um disco compacto na unidade de CD. Meu linux monta o CD em "/ mount / cdrom". O diretório "/ mount" (e todos os arquivos que eu criar nele) está localizado no meu disco rígido. Mas o conteúdo "/ mount / cdrom" já está no CD.
lesnik

6

Um disco é dividido em uma ou mais partições . Para o Windows, geralmente há apenas um, talvez com uma partição de recuperação oculta em algum lugar. Uma partição é uma área logicamente contígua do disco, por exemplo, "setores 1 a 10.000.000".

Em uma partição pode ser construído um sistema de arquivos. Para Windows, isso é NTFS ou FAT; para Linux, esta é uma das extversões ou várias outras opções.

Dentro de um sistema de arquivos existem arquivos e diretórios. O Linux tem diretórios, não tenho idéia de como você teve a ideia de que não.

Como um sistema operacional apresenta várias partições em vários discos para o usuário? No Windows, isso é feito com letras de unidade : C:, D:etc. No Linux, não há letras de unidade e tudo é feito com pontos de montagem : em um diretório específico, o acesso reroute para um sistema de arquivos diferente (+) Muitas vezes, se você inserir um CD. ou stick USB, ele aparecerá em algum lugar abaixo /mediaou /mnt.

/usre /usr/bingeralmente estará no mesmo sistema de arquivos, mas não é necessário. As pessoas podem significar "o sistema de arquivos que contém o /usr/bindiretório" quando usam esse fraseado.

(+) Você também pode fazer isso com pontos de junção NTFS, mas as pessoas raramente o fazem. Até ficarem sem letras de unidade.


Corrija-me se estiver errado: No Linux, um disco físico pode ser dividido em várias partições, cada uma com seu próprio sistema de arquivos? Analogamente à maneira como um disco rígido no Windows contém várias partições, uma pode ser FAT e a outra NTFS?
Kenny

1
Sim, você está correto: mas não é análogo, é exatamente o mesmo mecanismo subjacente. Máquinas de inicialização dupla podem ter partições NTFS e ext3 no mesmo disco, e o gerenciador de disco de cada sistema operacional vê o mesmo conjunto de partições. É só que o Windows não pode ver montar as partições ext3 para ver os arquivos.
Pjc50

3

É possível manter um sistema Linux inteiro em uma partição, com todos os subdiretórios em um sistema de arquivos.

Também é possível espalhá-lo por várias partições, com determinadas subárvores de diretório em diferentes sistemas de arquivos. Por exemplo, é comum colocar /home, /tmp, /usr, e /varem sistemas de arquivos separados. Para resolver uma de suas perguntas, às vezes /usr/bintambém estará em seu próprio sistema de arquivos.

Existem vantagens para esse esquema. Por exemplo, se /varmuitos emails forem preenchidos, o restante do sistema não será afetado. Da mesma forma, se um sistema de arquivos está corrompido devido a uma falha ou algo assim, outros sistemas de arquivos ainda são bons e é mais fácil recuperar o sistema.

Quando o sistema é inicializado, inicialmente apenas o sistema de arquivos raiz está disponível. Os programas mantidos lá são executados durante o processo de inicialização. Um desses programas mounté executado várias vezes, usando dados do arquivo /etc/fstab, a tabela do sistema de arquivos. Para dar um exemplo: originalmente, /homeé apenas um diretório comum no sistema de arquivos raiz. Em seguida, executamos este comando como root:

mount /dev/sda7 /home

Isso informa ao sistema que o sistema de arquivos na partição /dev/sda7 deve ser montada no diretório /home. Então agora, tudo nesse sistema de arquivos é considerado inferior /home.

Você pode ver o que está montado atualmente executando df.


3

Às vezes nos referimos a eles como filesystems, porque às vezes esses diretórios são pontos de montagem. Tanta coisa para a única pergunta que você fez ...

filesystem pode se referir a duas coisas diferentes ... ou, na verdade, dois aspectos muito diferentes da mesma coisa:

  1. A estrutura lógica usada para organizar dados em uma mídia de armazenamento.
  2. A metodologia usada pelo SO para oferecer aos processos acesso unificado aos dados.

O conceito de arquivos e diretórios é uma metáfora. Para um computador, existem apenas dados e toda mídia não passa de dispositivos que podem armazenar dados. Alguns dispositivos permitem a leitura e gravação de dados (por exemplo, HDD), outros dispositivos apenas permitem a leitura de dados (por exemplo, CD-ROM) e existem até dispositivos que permitem apenas a gravação de dados (por exemplo, impressora). Usamos a metáfora de arquivo e diretório para estruturar dados, para que possamos acessar pequenos pedaços de dados, em vez de tudo ao mesmo tempo.

Os sistemas de arquivos que colocamos na mídia de armazenamento, por exemplo, ext4, xfs, fat fazem a parte da estruturação. Nós os usamos para colocar rótulos em blocos de dados (arquivos) e ter uma lista estruturada consistente de todos os rótulos (diretórios). A lista estruturada é na verdade uma árvore. O aspecto mais importante é que uma árvore tem exatamente um começo, sua raiz. Manter essa estrutura e garantir que os dados estejam e permaneçam acessíveis é bastante uma tarefa, e é por isso que não há apenas um sabor do sistema de arquivos.

O outro aspecto dos sistemas de arquivos é que é tarefa do sistema operacional tornar os dados armazenados nos dispositivos de armazenamento acessíveis a todos os programas. Isso é realizado por duas coisas:

  1. O sistema operacional oferece precisamente uma interface (de programação) para acessar e interagir com arquivos e diretórios. Para programas / processos, não importa se o sistema de arquivos no dispositivo de armazenamento é ext2, xfs, fat ou qualquer outra coisa. Os programas / processos acessam arquivos e diretórios de maneira uniforme.

  2. O sistema operacional organiza toda a mídia de armazenamento, ou seja, seus sistemas de arquivos, em uma estrutura superordenada. Os programas acessam arquivos e diretórios por meio dessa estrutura superordenada e não precisam interagir diretamente com os dispositivos de armazenamento. Dessa forma, os programas não precisam se preocupar com qual dispositivo os dados realmente residem. Essa estrutura superordenada é frequentemente chamada de "sistema de arquivos virtual" do kernel.

Adicionar o sistema de arquivos de um dispositivo de armazenamento ao sistema de arquivos virtual é chamado "montar" um sistema de arquivos. Quando o Linux está inicializando, o kernel cria o sistema de arquivos virtual (VFS). Logo após a criação, ele está vazio e consiste apenas em seu ponto de entrada, também conhecido como raiz, transcrito /. Em seguida, o kernel monta um sistema de arquivos na raiz do VFS. Este é um ramdisk ou imediatamente um sistema de arquivos em uma partição no disco rígido. Como é adicionada na raiz do VFS, essa partição é frequentemente chamada de sistema de arquivos raiz.

Agora, aqui vem a parte em que as linhas ficam borradas e vemos que os sistemas de arquivos nos dispositivos de armazenamento e o VFS do kernel são na verdade dois aspectos da mesma tarefa do sistema operacional: Com a montagem de um sistema de arquivos raiz, o VFS contém muitos arquivos e diretórios, todos eles existe na partição raiz. No entanto, todo diretório pode se tornar um "ponto de montagem". Um ponto de montagem é onde o VFS coloca o ponto de entrada em um sistema de arquivos em um dispositivo de armazenamento. Isso significa que, sempre que montamos um sistema de arquivos em um diretório, informamos ao VFS que, em vez de acessar os dados armazenados nesse diretório, preferimos acessar os dados em um dispositivo de armazenamento diferente. Os pontos de montagem são geralmente diretórios vazios, para que não tornemos os dados inacessíveis montando outros sistemas de arquivos na parte superior.

Quando você instala o sistema operacional, cabe a você decidir se deseja colocar todos os dados em um sistema de arquivos que se torna seu sistema de arquivos raiz ou se deseja dividir seus dados entre vários sistemas de arquivos. O último requer que seu sistema operacional monte todos os sistemas de arquivos individuais, para tornar todos os dados acessíveis. Como você divide as coisas é uma questão de como você projeta seu sistema. É por isso que às vezes os diretórios que você conhece da sua instalação são referidos como sistemas de arquivos.

Para os computadores que geralmente temos em casa, dividir sua instalação em vários sistemas de arquivos não é mais necessário. Ainda pode haver boas razões para fazê-lo, mas isso está fora do escopo desta publicação.

Para manter o restante desta postagem curta: Partições são outro meio de estruturar dados em dispositivos de armazenamento. Com as partições, é possível extrair espaço de armazenamento contíguo de um dispositivo de armazenamento físico e oferecê-lo como dispositivo de armazenamento individual ao sistema operacional (no qual é possível colocar sistemas de arquivos para montar no VFS). Uma razão para fazer isso pode ser porque um possui apenas um disco rígido, mas deseja empregar muitos sistemas de arquivos diferentes. A partição na qual o sistema de arquivos raiz vive é frequentemente chamada de partição raiz.


1

Você está fazendo um pouco de confusão. Filesystemindica um mecanismo pelo qual os arquivos estão localizados e organizados em um dispositivo de armazenamento ou em uma memória de massa, como um disco rígido ou um CD-ROM e, em alguns casos, também na RAM.

Até o Windows usa sistemas de arquivos como NTFSou, anteriormente FAT.

Seu exemplo mostra uma prática comum para sistemas linux e unix, para ter seu próprio sistema composto por diferentes sistemas de arquivos montados em diretórios denominados ponto de montagem. Isso permite, em caso de problemas, limitar o dano a um ou mais, mas não a todos os sistemas de arquivos.

Portanto, FS não é equivalente a diretório, e também no linux existem diretórios, que são um tipo especial de arquivo

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.