Gerenciando o HD com o fdisk

O fdisk

Com o fdisk podemos criar novas partições em um disco, até 4 partições primárias e infinitas partições lógicas, dependendo somente do tamanho do disco (levando em conta que cada partição requer um mínimo de 40MB). Também podemos modificar ou deletar partições já existentes ou recém criadas no disco.

Neste artigo vamos ver alguns exemplos práticos de como trabalhar com o fdisk.

ATENÇÃO: Não crie, modifique ou apague partições do seu disco se você não sabe o que está fazendo, ou perderá todos os dados em disco.

Vamos lá, mãos a obra…

Linux: Gerenciando o HD com o fdisk

Visualizando as partições no HD

Antes de criar uma nova partição, modificar ou deletar, você vai precisar dar uma olhada em todas as partições que existem no disco. Então para esta missão vamos usar o “fdisk -l”, como abaixo:

# fdisk -l

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início   Fim     Blocos Id   Sistema
/dev/sda1   *        1   9914  79629573+  83  Linux
/dev/sda2         9914  38914  232939521   5  Estendida
/dev/sda5        38166  38914    6007808  82  Linux swap / Solaris
/dev/sda6        19429  37418  144494592  83  Linux
/dev/sda7        37418  38165    6005760  82  Linux swap / Solaris
/dev/sda8         9914  19036   73268224  83  Linux
/dev/sda9        19036  19429    3154944  82  Linux swap / Solaris

Outro exemplo:

# fdisk -l

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf6edf6ed

   Device Boot      Start    End     Blocks   Id  System
/dev/sda1               1   1959   15735636    c  W95 FAT32 (LBA)
/dev/sda2            1960   5283   26700030    f  W95 Ext'd (LBA)
/dev/sda3            5284   6528   10000462+   7  HPFS/NTFS
/dev/sda4            6529   9729   25712032+   c  W95 FAT32 (LBA)
/dev/sda5   *        1960   2661    5638752   83  Linux
/dev/sda6            2662   2904    1951866   83  Linux
/dev/sda7            2905   3147    1951866   83  Linux
/dev/sda8            3148   3264     939771   82  Linux swap / Solaris

O comando lista todas as partições de todos os discos conectados. No caso de ter vários discos, eles serão mostrados na ordem de dispositivo /dev. Exemplo: /dev/sda, /dev/sdb, /dev/sdc e assim por diante.

Ver disco específico e comandos disponíveis

Para ver apenas as partições de um determinado disco podemos incluir no comando o nome do disco como segue:

# fdisk -l /dev/sda

Para ver o “help” com todos os comandos que podem ser usados no disco podemos usar o fdisk sem a opção “-l” e usar o comando “m”, como no exemplo:

# fdisk /dev/sda

Comando (m para ajuda): m
Comando - ação
   a   alterna a opção "inicializável"
   b   edita rótulo BSD no disco
   c   alterna a opção "compatibilidade"
   d   exclui uma partição
   l   lista os tipos de partição conhecidos
   m   mostra este menu
   n   cria uma nova partição
   o   cria uma nova tabela de partições DOS vazia
   p   mostra a tabela de partições
   q   sai sem salvar as alterações
   s   cria um novo rótulo de disco Sun vazio
   t   altera a identificação da partição para o sistema
   u   altera as unidades das entradas mostradas
   v   verifica a tabela de partições
   w   grava a tabela no disco e sai
   x   funcionalidade adicional (somente para usuários avançados)

Pronto, agora que sabemos as opções disponíveis para usar com o fdisk, vamos em frente.

Deletando uma partição do HD

Digamos que você queira deletar algumas partições do disco.

Primeiro vamos ver as partições, usando agora o comando “p”, faça o seguinte:

# fdisk /dev/sda

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total de 625142448 setores
Unidades = setores de 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *        2048   159261194    79629573+  83  Linux
/dev/sda2       159262718   625141759   232939521    5  Estendida
/dev/sda5       613126144   625141759     6007808   82  Linux swap / Solaris
/dev/sda6       312117248   601106431   144494592   83  Linux
/dev/sda7       601108480   613119999     6005760   82  Linux swap / Solaris
/dev/sda8       159262720   305799167    73268224   83  Linux
/dev/sda9       305801216   312111103     3154944   82  Linux swap / Solaris

Visto, vamos deletar sda6, sda7 e sda8 usando o comando “d”, desta maneira:

Comando (m para ajuda): d
Número da partição (1-9): 6

Comando (m para ajuda): d
Número da partição (1-9): 7

Comando (m para ajuda): d
Número da partição (1-9): 8

E gravar as alterações usando o comando “w”, assim:

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.

WARNING: Re-reading the partition table failed with error 16: 
   Dispositivo ou recurso está ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Sincronizando discos.

Prontinho, partições apagadas. E agora?

Criando uma nova partição

Podemos criar uma nova partição de um tamanho específico utilizando o comando “n”, conforme abaixo:

Comando (m para ajuda): n
Comando - ação
   l   lógica (5 ou superior)
   p   partição primária (1-4)
l
Primeiro setor (305801216-625141759, padrão 305801216): 
Usando valor padrão 305801216
Last setor, +setores or +size{K,M,G} 
(305801216-312111103, padrão 312111103): 
Usando valor padrão 312111103

No caso o comando perguntou se desejava criar uma partição lógica ou uma partição primária, para o caso escolhi uma partição lógica teclando “l”.

Logo o comando faz as perguntas que vão definir o tamanho e a localização da partição. Pergunta o cilindro de início da partição e o cilindro em que ela vai acabar ou o tamanho que ela terá, usando K para kilobytes, M para megabytes ou G para gigabytes.

No caso simplesmente dei “enter” para usar os valores padrão e todo o espaço disponível em disco para a partição.

Lembre-se que a cada modificação é preciso salvar:

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.

WARNING: Re-reading the partition table failed with error 16: 
   Dispositivo ou recurso está ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Sincronizando discos.

Depois de criada a partição deve ser formatada com o comando “mkfs”, de acordo com o tipo de sistema de arquivos desejado. Digamos que tenhamos criado a partição “9”, alguns exemplos seriam:

1) Para ext4:

# mkfs.ext4 /dev/sda9

2) Para reiserfs:

# mkfs.reiserfs /dev/sda9

3) Para ntfs (Windows XP e outros):

# mkfs.ntfs /dev/sda9

Partição criada e formatada, agora é só usar.

Ver o tamanho de uma partição

Para ver o tamanho de uma partição podemos usar a opção “-s” como no exemplo:

# fdisk -s /dev/sda9
3154944

O número apresentado é o tamanho da partição em blocos, para este caso isso equivale a cerca de 3100MB.

Outros exemplos:

# fdisk -s /dev/sda1
79629573

ou

# fdisk -s /dev/sda5
6007808

Confira que usando o comando “p” também será apresentada uma coluna com os tamanhos das partições. Confira se está de acordo:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *           1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5           38166       38914     6007808   82  Linux swap / Solaris
/dev/sda6           19429       37418   144494592   83  Linux
/dev/sda7           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda8            9914       19036    73268224   83  Linux
/dev/sda9           19036       19429     3154944   83  Linux

Fácil, não é?

Marcando partições de boot

O fdisk mostra as partições de boot marcadas com um “*”, veja:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *           1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5           38166       38914     6007808   82  Linux swap / Solaris
/dev/sda6           19429       37418   144494592   83  Linux
/dev/sda7           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda8            9914       19036    73268224   83  Linux
/dev/sda9           19036       19429     3154944   83  Linux

No caso a partição 1 ou /dev/sda1 é que está marcada.

O comando “a” serve para marcar ou desmarcar a partição como de boot. Então se quisermos desmarcar a partição 1, faríamos:

Comando (m para ajuda): a
Número da partição (1-9): 1

Não esqueça de gravar as alterações usando o comando “w”, assim:

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.

WARNING: Re-reading the partition table failed with error 16: 
   Dispositivo ou recurso está ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Sincronizando discos.

Para confirmar se a alteração foi feita:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1               1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5           38166       38914     6007808   82  Linux swap / Solaris
/dev/sda6           19429       37418   144494592   83  Linux
/dev/sda7           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda8            9914       19036    73268224   83  Linux
/dev/sda9           19036       19429     3154944   83  Linux

Agora para marcar a partição 6 seria:

Comando (m para ajuda): a
Número da partição (1-9): 6

Entendido? Vamos adiante.

Corrigindo a ordem da tabela de partições

Quando você deleta partições e cria outras a ordem das partições no disco fica alterada. Se, por exemplo, deletamos as partições 2, 3 e 4 e neste espaço criamos uma nova partição que ficará sendo a partição 2, o sistema ficará com a ordem quebrada, terá no exemplo as partições 1, 2, 5, 6 etc. Veja como fica:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *           1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5           38166       38914     6007808   82  Linux swap / Solaris
/dev/sda6           19429       37418   144494592   83  Linux
/dev/sda7           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda8            9914       19036    73268224   83  Linux
/dev/sda9           19036       19429     3154944   83  Linux

Partições lógicas fora da ordem do disco

Para corrigir isso usamos o comando “f”, como ele não consta da lista de comandos precisamos ativar as funcionalidades adicionais por meio do comando “x”, fica então desta forma:

Comando (m para ajuda): x
Comando avançado (m para ajuda): f
Concluído.

Gravamos a modificação:

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.

WARNING: Re-reading the partition table failed with error 16: 
   Dispositivo ou recurso está ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Sincronizando discos.

Vamos confirmar com o comando “p” e ver que a mensagem de partições lógicas fora de ordem desapareceu, embora a ordem sda1, sda2, sda5, sda6 etc não tenha se alterado a ordem internamente para o sistema foi corrigida:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *           1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5            9914       19036    73268224   83  Linux
/dev/sda6           19036       19429     3154944   83  Linux
/dev/sda7           19429       37418   144494592   83  Linux
/dev/sda8           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda9           38166       38914     6007808   82  Linux swap / Solaris

Bem, era isso!

Fontes:

Rolar para cima