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

26

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

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 pessoas parecendo referir-se a cada " directory " como

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

Por que nos referiríamos a eles como filesystems ?

Se cada uma delas for uma partição, isso me deixará confuso porque, até onde eu sei, /usr e /usr/bin tendem a estar na mesma partição, mas vi que as pessoas se referem a /usr filesystem e /usr/bin filesystem .

Se filesystem aqui é equivalente a directory do Windows, não está claro para mim como aparentemente o sistema de arquivos é algo mais do que apenas diretórios. Além disso, até onde eu sei, o Linux não possui o conceito directory ; todos são arquivos.

    
por Kenny 17.12.2015 / 10:16

6 respostas

12

Como escrevi no link :

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

  1. O "sistema de arquivos" às vezes é todo o sistema de arquivos, enraizado em / e apresentado aos softwares de aplicativos pelo kernel do sistema operacional. Com esse significado, as pessoas falam de sistemas operacionais POSIX tendo uma "única árvore do 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 demarcado por algum esquema de particionamento de disco. Com esse significado, as pessoas falam, digamos, "formatando meu /usr filesystem ". " /usr " aqui é o ponto de montagem (esperado) do volume ou (em alguns esquemas de particionamento) seu rótulo de identificação.
  3. Um "sistema de arquivos" às vezes é uma árvore abstrata de arquivos e diretórios, apresentada por um driver de sistema de arquivos (ou seja, a camada VFS) para o resto do sistema. Com esse significado, as pessoas falam, por exemplo, "montando o sistema de arquivos proc em /proc " ou "usando um sistema de arquivos tmpfs para /tmp ".

Você está vendo o significado # 1 quando vir " /usr/bin filesystem". É uma árvore do sistema de arquivos com raiz no diretório /usr/bin . Sim, o Linux tem o conceito de diretórios.

O significado # 2 e o significado # 3 são o que você está lendo mal. As pessoas não estão falando sobre /usr/bin como um conjunto de dados no disco, demarcado por divisão / particionamento de disco. Eles também não estão falando sobre /usr/bin como um tipo específico de driver de sistema de arquivos ou um formato de volume de disco específico.

Leitura adicional

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

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

O conceito de sistemas 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, isso é a diferença.

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

Os diretórios localizados fisicamente na mesma partição sempre "terão 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 onde este diretório está localizado.

(Correcção menor e provavelmente não importante: por vezes o sistema de ficheiros é virtual e não existe qualquer partição correspondente. Por exemplo "/ proc" contém algo, que se parece muito com ficheiros, mas estes "ficheiros" são virtuais, não reside em nenhum disco rígido e contém informações sobre os processos em execução, e há um sistema de arquivos "procfs" especial que fornece uma interface usual de arquivo para esses dados)

    
por 17.12.2015 / 11:09
5

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

Em uma partição pode ser construído um sistema de arquivos. Para o Windows, isso é NTFS ou FAT; para Linux esta é uma das versões ext 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 ideia de como você teve a ideia de que isso não aconteceu.

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 em um diretório específico, redirecione o acesso a um sistema de arquivos diferente. (+) Freqüentemente, se você inserir um CD ou pendrive, ele aparecerá em algum lugar abaixo de /media ou /mnt .

/usr e /usr/bin geralmente estarão no mesmo sistema de arquivos, mas não precisam estar. As pessoas podem significar "o sistema de arquivos que contém o diretório /usr/bin " quando usam esse fraseado.

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

    
por 17.12.2015 / 14:40
3

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

Também é possível espalhá-lo em várias partições, com certas subárvores de diretório que estão em sistemas de arquivos diferentes. Por exemplo, é comum colocar /home , /tmp , /usr e /var em separado sistemas de arquivos. Para resolver uma das suas perguntas, às vezes /usr/bin estar em seu próprio sistema de arquivos também.

Existem vantagens para este esquema. Por exemplo, se /var for preenchido com muitos e-mails, o resto do sistema não é afetado. Da mesma forma, se um sistema de arquivos estiver corrompido devido a uma falha ou algo assim, outros os sistemas de arquivos ainda são bons e é mais fácil recuperar o sistema.

Quando o sistema inicializa, a princípio apenas o sistema de arquivos raiz está disponível. 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. Então nós execute este comando como root:

mount /dev/sda7 /home

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

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

    
por 17.12.2015 / 10:40
3

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

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 um meio de armazenamento.
  2. A metodologia usada pelo sistema operacional para oferecer aos processos acesso unificado aos dados.

O conceito de arquivos e diretórios é uma metáfora. Para um computador, há apenas dados e toda a mídia não é nada além de dispositivos que podem conter dados. Alguns dispositivos permitem ler e gravar dados (por exemplo, HDD), outros dispositivos apenas permitem a leitura de dados (por exemplo, CD-ROM) e existem dispositivos que permitem apenas a gravação de dados (por exemplo, impressora). Usamos a metáfora de arquivo e diretório para estruturar os 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 estruturante. Nós os usamos para colocar rótulos em pedaços de dados (arquivos) e para 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 é uma tarefa e, por isso, não há apenas um tipo de sistema de arquivos.

O outro aspecto dos sistemas de arquivos é que o trabalho do sistema operacional é tornar os dados armazenados em dispositivos de armazenamento acessíveis a todos os programas. Isso é feito 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 whatever. Progams / processos acessam arquivos e diretórios de maneira uniforme.

  2. O SO organiza toda a mídia de armazenamento, ou seja, seus sistemas de arquivos, em uma estrutura de superordinate. Os programas acessam arquivos e diretórios por meio dessa estrutura superior 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. Esta estrutura superordenada é freqüentemente 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 seu Linux está iniciando, o kernel cria o sistema de arquivos virtual (VFS). Logo após a criação está vazia e consiste apenas em seu ponto de entrada, a.k.a. sua raiz, transcreveu / . 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 em um disco rígido. Como é adicionado na raiz do VFS, essa partição é freqüentemente chamada de sistema de arquivos raiz.

Agora vem a parte em que as linhas se confundem 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 os quais existem na partição raiz. No entanto, cada 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 geralmente são diretórios vazios, para que não tornemos os dados inacessíveis montando outros sistemas de arquivos no topo.

Quando você instala seu sistema operacional, depende de você decidir se quer 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. Este ú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 referenciados como sistemas de arquivos.

Para os computadores que normalmente temos em casa, a divisão de sua instalação em vários sistemas de arquivos não é mais necessária. Ainda assim, pode haver boas razões para isso, mas isso está fora do escopo desta postagem.

Para manter o restante desta postagem curta: As partições são outro meio de estruturar dados em dispositivos de armazenamento. Com partições, um espaço de armazenamento contíguo é copiado de um dispositivo de armazenamento físico e é oferecido como dispositivo de armazenamento individual para o sistema operacional (no qual é possível colocar sistemas de arquivos para serem montados no VFS). Uma razão para fazer isso é que um deles tem apenas um disco rígido, mas quer empregar muitos sistemas de arquivos diferentes. A partição na qual o sistema de arquivos raiz mora é frequentemente referida como partição raiz.

    
por 17.12.2015 / 13:12
1

Você está fazendo um pouco de confusão. Filesystem indica um mecanismo pelo qual os arquivos sã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.

Mesmo o Windows usa sistemas de arquivos como NTFS ou, mais cedo, FAT .

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

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

    
por 17.12.2015 / 10:44