Aula #9 - Particionamento e Formatação


Particionar e formatar discos rígidos é uma parte crítica da instalação do sistema. Dependendo do tamanho do sistema, do número de utilizadores, e das suas necessidades, diferentes esquemas podem ser escolhidos. Também é importante considerar o tipo de equipamento disponível, em particular o tipo de bus de dados ao qual estão ligados os dispositivos de armazenamento. É preciso ter cuidado na hora de configurar ou modificar as tabelas de partição pois erros podem ser extremamente destrutivos.

Existem vários tipos de disco, cada um com seu próprio barramento ou bus de dados e são diferentes em fatores como velocidade, capacidade de armazenamento, capacidade de trabalhar com vários discos em paralelo, etc:


TIPOS DE DISCOS:

  •     PATA/IDE e EIDE (Integrated Drive Electronics, and Enhanced IDE)
Este foi o padrão em notebooks e desktops por muitos anos. O problema é que oferecem pouco espaço de armazenamento e são lentos quando comparados com hardware mais moderno, e por isso se tornaram obsoletos;
  •     SATA (Serial Advanced Technology  Attachment)
Foi desenvolvido para substituir o Parallel ATA (PATA) ou IDE como ficaram conhecidos. São mais rápidos, com cabos menores e são apresentados ao sistema operacional como discos SCSI, o que simplifica os drivers , mesmo que o hardware não seja realmente SCSI.
 

​Comparando com dispositivos PATA, os dispositivos SATA oferecem um cabo com apenas 7 fios, suporte nativo a hot swap, e transferência de dados mais rápida e mais eficiente. Os dispostivos mais novos suportam taxas de transferência de até 16 GB/s, mas 3 GB/s e 6 GB/s são mais comuns em equipamos domésticos.
  •     SCSI (Small Computer Systems Interface)
Estes estão reinando no mundo corporativo por décadas. Enquanto os discos tem menor capacidade do que discos SATA, eles tendem a ser muito mais rápidos, e trabalham em paralelo muito melhor(para RAID por exemplo). Existem várias versões de SCSI, como por exemplo Fast, Wide, Ultra e UltraWide só para confundir, existem drivers diferentes para controladores diferentes, o que não acontece com o SATA em que drivers genéricos atendem a uma grande variedade de dispositivos diferentes.
 

A primeira versão do barramento SCSI tinha 8 bits, depois passou para 16 bits na versão wide com transferência de 5MBps e alcançou algo em torno de 160MBps com (Ultra-Wide SCSI-3). Os tipos de disco mais comuns são single-ended(terminados) ou differential(diferencial). Infelizmente os dois tipos não são compatíveis, mas podem coexistir em uma mesma controladora. Barramentos no modo single-ended podem controlar até 7 dispositivos e o cabo pode ter até 6 metros de comprimento enquanto barramentos no modo differential podem controlar até 15 dispositivos com um cabo de até 12 metros.
  •     SAS
Serial Attached SCSI é um novo protocolo ponto a ponto e serial que está substituindo a interface Parallel SCSI. Taxas de transferência são similares as obtidas com dispositivos SATA mas o desempenho geral é melhor.
  •     USB
Dispositivos Universal Serial Bus incluem pen driver e discos externos USB. O sistema operacional ve esses dispositivos como dispositivos SCSI. Na mesma categoria estão os discos Flashuma versão mais simples dos discos SSD(Solid State Drive), que tem diminuindo de preço, não tem partes móveis, usam menos energia que discos convencionais com discos rotativos, e tem taxas de transferência aceitáveis para dispositivos externos.



GEOMETRIA DE DISCO

Geometria de Disco é um conceito com uma longa história para dispositivos com mídia rotativa;
A terminologia padrão inclui: cebeças(heads), cilindors(cylinders), trilhas(tracks) e setores(sectors).
 

Discos rígidos possuem internamente um ou mais discos, cada um sendo lido por uma ou mais cabeças. 

As cabeças leem uma trilha circular a medida que o disco gira. Estas trilhas circulares são divididos em blocos de dados chamados setores, tipicamente 512 bytes de tamanho. Um cilindro é um grupo que consiste da mesma trilha em todos os discos.

Esta imagem estrutural física tem sido cada vez menos relevante já que componentes eletrônicos internos da unidade escondem estes detalhes. Além disso, discos SSD não têm partes móveis nem qualquer um dos componentes listados.

Discos modernos estão começando a ser fabricados com setores maiores do que 512 bytes; 4 KB está se tornando comum. Enquanto tamanhos maiores de setor pode aumentar a velocidades de transferência, o suporte do sistema operacional ainda não está maduro para lidar com os tamanhos maiores.

Para examinar a geometria de disco com o fdisk:

$ sudo fdisk -l /dev/sda
 

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000001

Device Boot      Start       End        Blocks      Id      System
/dev/sda1 *          1      3800      30522368      83       Linux
/dev/sda2         3800      3851        409518      83       Linux
.....


A opção -l apenas lista as partições sem entrar em modo interativo.

PARTICIONAMENTO

Os discos são divididos em partições. Em termos geométricos, trata-se de grupos fisicamente contíguos de setores ou cilindros.

Um disco pode ter até quatro partições primárias. Uma das partições primárias pode ser designada como uma partição de extensão que pode ser subdividida em partições lógicas.

O SCSI e padrões relacionados, como o SATA suportam até 15 partições no disco. As partições 1-4 são partições primárias ou estendidas; partições 5-15 são partições lógicas. Só pode haver uma partição estendida, mas esta pode ser dividida em tantas partições lógicas quanto for necessário, até o número máximo de partições permitidas.

Por exemplo, o primeiro disco SCSI ou SATA é chamado sda, o segundo sdb e assim por diante. No primeiro disco, /dev/sda1 é a primeira partição primária e /dev/sda2 é a segunda, ...
 

Se criamos uma partição estendida como /dev/sda3 , esta pode ser dividida em partições lógicas, com números maiores que 4 como /dev/sda5, /dev/sda6, ...

Nota: O Linux não exige que partições comecem ou terminem em limites delimitados por cilindros, mas outros sistemas operacionais podem reclamar se não o particionamento não respeitar estes limites. Por esta razão, os utilitários de particionamento do Linux tentam respeitar estes limites. Obviamente partições não devem sobrepor-se.

PORQUE USAR PARTIÇÕES NO LINUX?

Existem vários motivos que podem justificar dividir os diretórios do seu sistema em diferentes partições, entre elas:

  •     Separação
É desejável separar arquivos dos usuários e dados de aplicativos dos arquivos do sistema operacional, uma vez que os arquivos do sistema operacional são de somente leitura a não ser para instalação e atualizações;Por exemplo, a pasta /home, que contém os arquivos pessoais dos usuários é geralmente colocada em uma partição separada.
  •     Compartilhamento
Vários sistemas operacionais ou vários servidores podem usar o mesmo sistema de arquivos. Por exemplo, o diretório /home pode ser montado por NFS  e compartilhado por toda a rede. Ou é possível ter um servidor com vários sistemas operacionais instalados, mesmo que sejam apenas diferentes versões do Linux e pode ser interessante compartilhar algo como as pastas  /usr/local ou /home entre as diferentes instalações.
 

  •     Segurança
Pode ser desejável impor cotas, permissões e configurações personalizadas para cada parte do sistema.
  •     Tamanho
Alguns dados são praticamente constantes em tamanho enquanto outros variam muito ou são voláteis, podendo crescer muito em tamanho. Por exemplo esses dados variáveis que podem crescer muito normalmente ficam na partição /var . Caso o espaço disponível acabe apenas nessa partição é bem menos  provável que todo o sistema seja comprometido do que se outra partição mais crítica fique sem espaço.
  •     Desempenho
Arquivos que precisam ser lidos com frequência, especialmente em grandes blocos, será acessado mais rapidamente se ficar fisicamente em um dispositivo mais rápido (como um SSD) ou para discos tradicionais se os dados ficarem mais próximos do centro do disco, onde o acesso é mais rápido.
  •     Swap
Sistemas Linux preferem ter a área de swap em uma partição separada e exclusiva ao invés de um arquivo em outra partição. Isso tem uma vantagem secundária que permite ao subsistema de hibernação usar o espaço na partição de swap .

Um esquema comum de particionamento é ter uma partição para o /boot, uma partição para a raiz do sistema /, uma partição de swap, e uma partição para o /home .
 

Tenha em mente que redimensionar partições após a instalação não é uma tarefa trivial. Planeje com cuidado. Vamos ver esquemas de particionamento futuramente.

TABELA DE PARTIÇÃO

A tabela de partição é salva na Master Boot Record (MBR), que tem 512 bytes de tamanho e cuja estrutura é definida de uma forma independente do sistema operacional.

A tabela de partição tem 64 bytes e fica logo após os 446 bytes do boot record. (Curiosidade: Existem 2 bytes adicionais no final da MBR conhecidos como número mágico, palavra de assinatura, ou marcador de final de setor, que tem sempre o valor 0x55AA.)
Os primeiros 446 bytes são reservados para um programa, ou para parte de um programa. Mas não se trata de um programa qualquer, trata-se do primeiro estágio do boot loader como o GRUB.
Somente uma partição pode ser marcada como ativa. Quando o sistema é inicializado, a partição marcada como ativa será usada pelo gerenciador de inicialização para procurar por itens para carregar.


Cada entrada na tabela de partição é de 16 bytes de comprimento e descreve uma das quatro partições primárias possíveis. A informação para cada um é:


  •     Bit de partição ativa
  •     Endereço de início no formato cilindro/cabeça/setor (CHS) (ignorado pelo Linux)
  •     Código de partição: xfs, LVM, ntfs, ext4, swap, etc
  •     Endereço de fim no formato CHS (também ignorado pelo Linux)
  •     Setor de início contando linearmente desde 0
  •     Número de setores na partição

O Linux só usa os dois últimos campos para endereçamento, no formato chamado linear block addressing (LBA).


NOMEANDO DISPOSITIVOS DE DISCOS E NODES

O kernel do Linux interage em um nível baixo com discos através de nós de dispositivos normalmente encontrados no diretório /dev. Normalmente nós de dispositivo são acessados apenas através da infra-estrutura VFS (Virtual File System); Tentar acessar o disco diretamente(raw) é uma forma extremamente eficiente de destruir um sistema de arquivos. Por exemplo, você destrói todo o conteúdo de uma partição ao formatá-la:

$ sudo mkfs.ext4 /dev/sda9

Nós de dispositivo para SCSI e SATA seguem a mesma convenção de nomes:
    O primeiro disco é /dev/sda.
    O segundo disco é /dev/sdb.
    etc.

Partições são simplesmente numeradas:
    /dev/sdb1 é a primeira partição do segundo disco.
    /dev/sdc4 é a quarta partição do terceiro disco.

Nos exemplos sd significa SCSI ou SATA . De volta aos dias em que discos IDE podiam ser encontrados os nomes seriam /dev/hda3, /dev/hdb etc.

Rodar ls -l /dev vai mostrar os nós de dispositivos para os discos disponíveis no sistema.

Para dispositivos SCSI é preciso considerar que o número de controladores influencia o nome que os discos irão receber.

O nome do disco (a, b, c, etc.) é fortemente baseado no número ou ID do controlador SCSI ao invés da posição do disco no barramento.

Por exemplo, se tivéssemos dois controladores SCSI com números target 1 e 3 no controlador 0 e números target 2 e 5 no controlador 1 (tendo ID 2 como o último disco):

    ID 1 seria /dev/sda

    ID 3 seria /dev/sdb

    ID 2 (na placa 1) seria /dev/sdc

    ID 5 seria /dev/sdd

Sistemas Linux devem usar no mínimo duas partições:
 

/(root): usado para todo o sistema lógico de arquivos
    - Na prática, a maioria das instalações terá mais do que um sistema de arquivos em mais de uma partição, que são unidas em pontos de montagem.
    - É difícil redimensionar a partição raiz com a maioria dos sistemas de arquivos. Usar LVM, que discutiremos mais tarde, pode   tornar isso mais fácil. Embora seja certamente possível rodar o Linux com apenas a partição raiz, a maioria dos sistemas usam mais partições para facilitar os backups, para usar os discos de forma mais eficiente, e para melhorar a segurança.

Swap: usado como uma extensão da memória física;
    - A recomendação habitual é que o swap tenha o mesmo tamanho que a memória física; em alguns casos duas vezes é o recomendado. No entanto, a escolha correta depende de questões relacionadas com o perfil de uso do sistema, e das capacidades do hardware. 

Exemplos e inspirações estão disponíveis nos endereços https://help.ubuntu.com/community/SwapFaq e http://www.novell.com/support/kb/doc.php?id=7010157 .
    - O sistema pode ter várias partições e/ou arquivos de swap.
    - Em um sistema de apenas um disco, tente centrar a partição swap; em sistemas de vários discos, tente espalhar as partições de swap entre os   discos.
    - Adicionar mais e mais de swap não vai necessariamente ajudar, porque a certa altura, torna-se inútil. Neste ponto    será necessário   adicionar mais memória ou reavaliar a configuração e uso do sistema.

Swap é usado como memória virtual: Quando páginas dos processos são movidos da memória física, elas são geralmente armazenadas no swap.

Criar e editar partições de disco são operações perigosas. Para recuperar a tabela de partição se algo der errado, é preciso saber como fazer backup e restaurar tabelas de partição.

Fazer o backup é simples com o dd:

$ sudo dd if=/dev/sda of=arquivo_de_backup_da_mbr bs=512 count=1 

que irá fazer o backup da MBR do primeiro disco, incluindo a tabela de partição que é parte da MBR.

A MBR pode ser restaurada com:

$ sudo dd if=arquivo_de_backup_da_mbr of=/dev/sda bs=512 count=1

Os comandos acima só copiam a tabela de partição primária; eles não cobrem tabelas de partição armazenados em partições (como acontece por exemplo com partições estendidas)

Nota: Você deve sempre assumir que alterar a tabela de partição do disco pode eliminar todos os dados em todos os sistemas de arquivos do disco (talvez não, mas seja cauteloso!). Portanto, é sempre prudente fazer um backup de todos os dados antes de modificar a tabela de partição.

Em particular, deve-se ter muito cuidado com o dd: Um simples erro de digitação pode destruir todo o disco; portanto, faça backup!

Existem vários utilitários que podem ser usados ​​para gerenciar tabelas de partição:

fdisk é um editor de tabelas de partição baseado em menus. É o padrão e um dos mais flexíveis. Ele é o único que vamos discutir.
sfdisk é um programa editor de partições não-interativo que executa scripts ao invés de interagir com o usuário. Use a ferramenta sfdisk com cuidado!
parted é o programa de manipulação de partição GNU. Ele pode criar, remover, redimensionar e mover partições (incluindo alguns sistemas de arquivos).
gparted é uma interface gráfica para o parted que é amplamente utilizada.
 

Muitas distribuições Linux tem uma versão live / de instalação que pode ser executada de um CD-ROM ou pendrive. Estes ambientes geralmente incluem uma cópia do gparted, para instalação, recuperação ou para configurar novos discos.
 

Lembre-se de que o gparted pode fazer uma série de operações, além de apenas adicionar e excluir partições, ou editar o tipo de partição (que são as únicas operações que o fdisk pode fazer). O gparted pode mover e redimensionar partições além de formatá-las; Como estas ações vão muito além das funções essenciais de um editor de partições, o gparted não é unicamente um editor de partições.
Enquanto o gparted é conveniente, erros podem ser difíceis de entender e podem ter consequências graves. Assim, é sempre bom voltar para a linha de comando e fazer cada uma das operações separadamente com ferramentas de baixo nível. Na verdade, o Red Hat Enterprise Linux não suporta mais o gparted.


 

BLKID e LSBLK - Descobrindo o UUID dos dispositivos

O blkid é uma ferramenta que localiza dispositivos de bloco e exibe seus atributos. Ele usa a biblioteca libblkid. Ele aceita como argumento um dispositivo específico ou lista todos os dispositivos encontrados.
blkid só vai funcionar em partições conhecidas pelo Linux, que não estejam vazias, e que suporte metadados do tipo NOME=valor.
blkid tem duas principais formas de operação: pode procurar um dispositivo com um par NOME=valor específico, ou exibir os pares NOME=valor para mais de um dispositivo.
Sem argumentos, ele vai exibir todos os dispositivos. Existem várias opções para especificar dispositivos e atributos para exibir.
 

$ sudo blkid /dev/sda*

dev/sda: PTTYPE="dos"
/dev/sda1: LABEL="boot" UUID="b0fa22fc-8882-4f1c-bc16-6cf7fc4e9454" TYPE="ext4" PTTYPE="dos"
/dev/sda10: UUID="JQshRp-Jxa5-0oiC-X1Oe-si8d-lRQD-48aYNt" TYPE="LVM2_member"
/dev/sda11: LABEL="RHEL7" UUID="b8beaf53-af11-4b14-9e7d-b17069f336ae" TYPE="ext4" PTTYPE="dos"
/dev/sda12: LABEL="SWAP" UUID="2b2603f9-a701-4f91-b284-426769f50e51" TYPE="swap"
/dev/sda3: PTTYPE="dos"
/dev/sda5: LABEL="RHEL6-64" UUID="89a3c451-847f-40a1-97af-64a56fe27474" TYPE="ext4" PTTYPE="dos"
/dev/sda6: UUID="YJ2PA3-GSsm-m9rH-XNUM-Ca2X-fkju-OYtiO8" TYPE="LVM2_member"
/dev/sda7: LABEL="RHEL7XFS" UUID="178d0092-4154-4688-af24-cda272265e08" TYPE="xfs"
/dev/sda8: UUID="NdnbYk-ACCB-9UTX-i3kc-rK0m-Fbht-KjJZwP" TYPE="LVM2_member"
/dev/sda9: UUID="CMc2EP-ijCM-jA8V-ZH5M-B6AA-z0TD-ILMFFE" TYPE="LVM2_member"

Uma ferramenta relacionada é o lsblk que apresenta os resultados em formato de árvore como em:
$ lsblk -i

 NAME              MAJ:MIN RM   SIZE RO  TYPE MOUNTPOINT
sda                 8:0    0 465.8G  0  disk
|-sda1              8:1    0   100M  0  part /boot_master
|-sda3              8:3    0     1K  0  part
|-sda5              8:5    0  11.7G  0  part /RHEL6-64
|-sda6              8:6    0  36.2G  0  part
| `-VG-dead       254:5    0    60G  0  lvm  /DEAD
|-sda7              8:7    0    12G  0  part
|-sda8              8:8    0 353.2G  0  part
| |-VG-tmp        254:0    0     2G  0  lvm
| |-VG-local      254:1    0    24G  0  lvm  /usr/local
| |-VG-src        254:2    0    16G  0  lvm  /usr/src
| |-VG-virtual    254:3    0   225G  0  lvm  /VIRTUAL
| |-VG-iso_images 254:4    0    60G  0  lvm  /ISO_IMAGES
| |-VG-dead       254:5    0    60G  0  lvm  /DEAD
| |-VG-audio      254:6    0    12G  0  lvm
| `-VG-pictures   254:7    0    12G  0  lvm  /PICTURES
|-sda9              8:9    0  23.2G  0  part
| |-VG-virtual    254:3    0   225G  0  lvm  /VIRTUAL
| `-VG-dead       254:5    0    60G  0  lvm  /DEAD
|-sda10             8:10   0  11.7G  0  part
| |-VG-virtual    254:3    0   225G  0  lvm  /VIRTUAL
| |-VG-dead       254:5    0    60G  0  lvm  /DEAD
| `-VG-pictures   254:7    0    12G  0  lvm  /PICTURES
|-sda11             8:11   0  15.7G  0  part /
`-sda12             8:12   0     2G  0  part [SWAP]
sr0                11:0    1  1024M  0  rom


                   

USANDO FDISK

O fdisk sempre estará disponível em distribuições Linux, logo é uma boa ideia aprender como usá-lo. Você precisa ser root para rodar o  fdisk. A operação pode ser um pouco confusa no início, então tenha cuidado.
A interface do fdisk é simples e é baseada em menus de texto. Depois que iniciar em um disco específico:
$ sudo fdisk /dev/sdb
os principais comandos de uma letra são:

    m:  Exibe o menu.
    p:  Mostra a tabela de partição.
    n:  Cia uma nova partição.
    d:  Deleta uma partição.
    t:  Altera o tipo de uma partição.
    w:  Salva as alterações e sai do fdisk.
    q:  Sai do fdisk sem salvar as alterações.

Felizmente, nenhuma alteração é feita no disco até que você salve a tabela de partição com o comando w. Portanto é importante verificar se a tabela de partição está correta (com p), antes de gravar no disco com w. Se algo estiver errado, você pode sair com segurança com q.
 

O sistema não vai usar a nova tabela de partição até que o sistema seja reiniciado. Porém você pode tentar usar o comando:

$ sudo partprobe -s

para tentar ler e aplicar a nova tabela de partição. No entanto, isso nem sempre funciona e é melhor reiniciar antes de fazer coisas como formatar novas partições, já que erros envolvendo partições são geralmente catastróficos.

A qualquer momento é possível rodar:


$ cat /proc/partitions

para descobrir qual é a visão que o sistema operacional tem das partições no momento.

Mais vistos no mês:

As melhores distribuições Linux para 2017

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

Teste de Performance de Rede com Iperf

DHCP - Guia Completo

OPNsense - Firewall Open Source

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

Ophcrack: Descubra todas as senhas do Windows

SSD no linux

Oracle Linux 7.0 Server com Xfce - Instalação e configurações iniciais