Capítulo 8. Discos, sistemas de arquivos e boot loaders

8.1. Como posso adicionar o meu novo disco rígido ao meu sistema FreeBSD?
8.2. Como faço para mover meu sistema para o meu novo disco enorme?
8.3. Quais partições podem usar com segurança o Soft Updates? Ouvi dizer que o uso de Soft Updates no / pode causar problemas. E quanto ao Journaled Soft Updates?
8.4. Posso acessar outros sistemas de arquivos não-nativos do FreeBSD?
8.5. Como faço para montar uma partição secundária do DOS?
8.6. Existe um sistema de arquivos criptográficos para o FreeBSD?
8.7. Como inicializo o FreeBSD e o Linux ® utilizando o GRUB?
8.8. Como inicializo o FreeBSD e o Linux® usando o BootEasy?
8.9. Como faço para alterar o prompt de inicialização de ??? para algo mais significativo?
8.10. Como faço para usar uma nova unidade removível?
8.11. Por que recebo o erro Incorrect super block ao montar um CD?
8.12. Por que recebo o erro Device not configured ao montar um CD?
8.13. Por que todos os caracteres não-ingleses em nomes de arquivos aparecem como “?” em meus CDs quando montados no FreeBSD?
8.14. Um CD gravado no FreeBSD não pode ser lido sob nenhum outro sistema operacional. Por quê?
8.15. Como posso criar uma imagem de um CD de dados?
8.16. Por que não consigo usar o comando mount com um CD de áudio?
8.17. Como eu faço para usar o comando mount com um CD multi-sessão?
8.18. Como posso permitir que usuários não privilegiados montem CD-ROMs, DVDs, unidades USB e outras mídias removíveis?
8.19. Os comandos du e df mostram informações diferentes sobre a quantia disponível de espaço em disco. O que está acontecendo?
8.20. Como posso adicionar mais espaço de swap?
8.21. Por que o FreeBSD vê meu disco como sendo menor do que o fabricante diz que ele é?
8.22. Como é possível que uma partição esteja com mais de 100% de ocupação?

8.1.

Como posso adicionar o meu novo disco rígido ao meu sistema FreeBSD?

Veja a seção Adicionando Discos no Handbook do FreeBSD.

8.2.

Como faço para mover meu sistema para o meu novo disco enorme?

A melhor maneira é reinstalar o sistema operacional no novo disco e depois passar os dados do usuário. Isto é altamente recomendado ao seguir o -STABLE por mais de uma release ou ao atualizar uma release ao invés de instalar uma nova. Instale o booteasy em ambos os discos com boot0cfg(8) e use a opção de dual boot até que esteja satisfeito com a nova configuração. Pule o próximo parágrafo para descobrir como mover os dados depois de fazer isso.

Alternativamente, particione e rotule o novo disco utilizando o sade(8) ou o gpart(8). Se os discos forem formatados com MBR, o booteasy pode ser instalado em ambos os discos utilizando-se o boot0cfg(8) para que o computador possa inicializar dualmente com o antigo ou novo sistema após a conclusão da cópia.

Depois que o novo disco estiver configurado, os dados não podem ser simplesmente copiados. Em vez disso, use ferramentas que entendam device files e system flags, tais como o dump(8). Embora seja recomendado que você mova os dados com o sistema em modo single user, isto não é necessário.

Quando os discos estiverem formatados com UFS, nunca use nada além do dump(8) e do restore(8) para mover o sistema de arquivos raiz. Esses comandos também devem ser usados para mover uma única partição para uma outra partição vazia. A seqüência de etapas para usar o comando dump para mover os dados de uma partição UFS para uma nova partição é:

  1. Execute o newfs na nova partição.

  2. Utilize o mount para disponibilizá-la em um ponto de montagem temporário.

  3. Vá para o diretório desejado utilizando o comando cd .

  4. Faça o dump da partição antiga e redirecione a saída para a nova.

Por exemplo, para mover /dev/ada1s1a tendo /mnt como o ponto de montagem temporário, digite:

# newfs /dev/ada1s1a
# mount /dev/ada1s1a /mnt
# cd /mnt
# dump 0af - / | restore rf -

Reorganizar as partições com o comando dump requer um pouco mais de trabalho. Para mesclar uma partição como /var com a partição pai, crie uma nova partição grande o suficiente para conter ambas, mova a partição pai conforme descrito acima e mova a partição filha para o diretório vazio criado pela primeira movimentação:

# newfs /dev/ada1s1a
# mount /dev/ada1s1a /mnt
# cd /mnt
# dump 0af - / | restore rf -
# cd var
# dump 0af - /var | restore rf -

Para separar um diretório do seu pai, digamos colocar /var em sua própria partição quando não era antes, crie as duas partições, monte a partição filho no diretório apropriado no ponto de montagem temporário e mova a antiga partição única:

# newfs /dev/ada1s1a
# newfs /dev/ada1s1d
# mount /dev/ada1s1a /mnt
# mkdir /mnt/var
# mount /dev/ada1s1d /mnt/var
# cd /mnt
# dump 0af - / | restore rf -

Os utilitários cpio(1) e pax(1) também estão disponíveis para mover dados do usuário. Estes comandos são conhecidos por perder as flags com as informações dos arquivo, portanto, use-os com cuidado.

8.3.

Quais partições podem usar com segurança o Soft Updates? Ouvi dizer que o uso de Soft Updates no / pode causar problemas. E quanto ao Journaled Soft Updates?

Resposta curta: Soft Updates geralmente podem ser usados ​​com segurança em todas as partições.

Resposta longa: o Soft Updates possui duas características que podem ser indesejáveis ​​em determinadas partições. Primeiro, uma partição com Soft Updates tem uma pequena chance de perder dados durante uma falha do sistema. A partição não será corrompida, pois os dados serão simplesmente perdidos. Em segundo lugar, o uso de Soft Updates pode causar escassez temporária de espaço.

Ao usar o Soft Updates, o kernel pode levar até trinta segundos para gravar alterações no disco físico. Quando um arquivo grande é excluído, o arquivo ainda reside no disco até que o kernel execute a exclusão. Isso pode causar uma "race condition" muito simples. Suponha que um arquivo grande seja excluído e outro arquivo grande seja criado imediatamente. O primeiro arquivo grande ainda não foi removido do disco físico, portanto, o disco pode não ter espaço suficiente para o segundo arquivo grande. Isso produzirá um erro de que a partição não tem espaço suficiente, mesmo que um grande espaço tenha acabado de ser liberado. Alguns segundos depois, a criação do arquivo funciona conforme o esperado.

Se um sistema travar depois que o kernel tiver aceito um bloco de dados para gravar no disco, mas antes que os dados sejam realmente gravados, os dados poderão ser perdidos. Esse risco é extremamente pequeno, e geralmente gerenciável.

Esses problemas afetam todas as partições usando as Soft Updates. Então, o que isso significa para a partição raiz?

Informações vitais sobre a partição raiz mudam muito raramente. Se o sistema travar dentro da janela de 30 segundos depois de uma alteração ter sido feita, é possível que os dados possam ser perdidos. Esse risco é insignificante para a maioria dos aplicativos, mas esteja ciente de que existe. Se o seu sistema não puder tolerar este risco, não use as Soft Updates no sistema de arquivos raiz!

O / é tradicionalmente uma das menores partições. Se o /tmp estiver localizado dentro do /, pode haver problemas intermitentes de falta de espaço. A criação de um link simbólico apontando o /tmp para /var/tmp resolverá esse problema.

Por fim, o dump(8) não funciona no modo live (-L) em um sistema de arquivos, com Journaled Soft Updates (SU + J).

8.4.

Posso acessar outros sistemas de arquivos não-nativos do FreeBSD?

O FreeBSD suporta uma variedade de outros sistemas de arquivos.

UFS

Os CD-ROMs UFS podem ser montados diretamente no FreeBSD. Montar partições de disco do Digital UNIX e de outros sistemas que suportam o UFS pode ser mais complexo, dependendo dos detalhes do particionamento do disco para o sistema operacional em questão.

ext2/ext3

O FreeBSD suporta partições ext2fs e ext3fs. Veja ext2fs(5) para mais informações.

NTFS

O suporte ao NTFS baseia-se no FUSE está disponível como um port (sysutils/fusefs-ntfs). Para mais informações, consulte ntfs-3g.

FAT

O FreeBSD inclui um driver FAT de leitura-gravação. Para obter mais informações, consulte mount_msdosfs(8).

ZFS

O FreeBSD inclui um port do driver ZFS da Sun™. A recomendação atual é usá-lo apenas em plataformas amd64 com memória suficiente. Para obter mais informações, consulte zfs(8).

O FreeBSD inclui o sistema de arquivos de rede NFS e a Coleção de Ports do FreeBSD fornece vários aplicativos FUSE para suportar muitos outros sistemas de arquivos.

8.5.

Como faço para montar uma partição secundária do DOS?

As partições secundárias do DOS são encontradas depois de todas as partições primárias. Por exemplo, se E for a segunda partição DOS na segunda unidade SCSI, haverá um arquivo de dispositivo para a slice 5 em /dev. Para montá-lo:

# mount -t msdosfs /dev/da1s5 /dos/e

8.6.

Existe um sistema de arquivos criptográficos para o FreeBSD?

Sim, o gbde(8) e o geli(8). Consulte a seção Partições de Disco com Criptografia do Handbook do FreeBSD.

8.7.

Como inicializo o FreeBSD e o Linux ® utilizando o GRUB?

Para inicializar o FreeBSD usando o GRUB, adicione o seguinte ao /boot/grub/menu.lst ou ao /boot/grub/grub.conf, dependendo de qual é usado pela sua distribuição Linux ®.

title FreeBSD 9.1
	root (hd0,a)
	kernel /boot/loader

No qual hd0,a aponta para a partição raiz no primeiro disco. Para especificar o número da slice, use algo como isto (hd0,2,a). Por padrão, se o número da slice for omitido, o GRUB pesquisará a primeira slice que tiver a partição a.

8.8.

Como inicializo o FreeBSD e o Linux® usando o BootEasy?

Instale o LILO no início da partição de inicialização Linux® em vez de no Master Boot Record. Em seguida, inicialize o LILO a partir do BootEasy.

Isto é recomendado ao executar o Windows® e o Linux®, pois torna mais fácil fazer o Linux® inicializar novamente se o Windows® for reinstalado.

8.9.

Como faço para alterar o prompt de inicialização de ??? para algo mais significativo?

Isso não pode ser feito com o gerenciador de inicialização padrão sem reescrevê-lo. Há vários outros gerenciadores de inicialização na categoria sysutils da coleção de ports.

8.10.

Como faço para usar uma nova unidade removível?

Se a unidade já tiver um sistema de arquivos, use um comando como este:

# mount -t msdosfs /dev/da0s1 /mnt

Se a unidade só for usada com sistemas FreeBSD, particione-a com UFS ou ZFS. Isso fornecerá suporte a nomes longos de arquivo, melhoria no desempenho e na estabilidade. Se a unidade for usada por outros sistemas operacionais, uma escolha mais portátil, como por exemplo o msdosfs, será mais apropriada.

# dd if=/dev/zero of=/dev/da0 count=2
# gpart create -s GPT /dev/da0
# gpart add -t freebsd-ufs /dev/da0

Finalmente, crie um novo sistema de arquivos:

# newfs /dev/da0p1

e monte-o:

# mount /dev/da0s1 /mnt

É uma boa ideia adicionar uma linha ao /etc/fstab (veja fstab(5)) para que você possa digitar apenas mount /mntno futuro:

/dev/da0p1 /mnt ufs rw,noauto 0 0

8.11.

Por que recebo o erro Incorrect super block ao montar um CD?

O tipo de dispositivo a ser montado deve ser especificado. Isso está descrito no Handbook na seção Usando CDs de Dados.

8.12.

Por que recebo o erro Device not configured ao montar um CD?

Isso geralmente significa que não há CD na unidade ou a unidade não está visível no barramento. Consulte a seção Usando CDs de Dados do Handbook para uma discussão detalhada desta questão.

8.13.

Por que todos os caracteres não-ingleses em nomes de arquivos aparecem como ? em meus CDs quando montados no FreeBSD?

O CD provavelmente usa a extensão Joliet para armazenar informações sobre arquivos e diretórios. Isso é discutido na seção Usando CD-ROMs de Dados do Handbook.

8.14.

Um CD gravado no FreeBSD não pode ser lido sob nenhum outro sistema operacional. Por quê?

Isso significa que um raw file foi gravado no CD, em vez de criar um sistema de arquivos ISO 9660. Dê uma olhada na seção Usando CDs de Dados.

8.15.

Como posso criar uma imagem de um CD de dados?

Isso é discutido na seção Handbook sobre como gravar dados em um sistema de arquivos ISO . Para mais informações sobre como trabalhar com CD-ROMs, consulte a Seção Criando CDs no capítulo sobre Armazenamento do Handbook.

8.16.

Por que não consigo usar o comando mount com um CD de áudio?

Tentar montar um CD de áudio produzirá um erro do tipo cd9660: /dev/cd0: Invalid argument. Isso ocorre porque o comando mount só funciona em sistemas de arquivos. CDs de áudio não possuem sistemas de arquivos; eles têm apenas dados. Em vez disso, use um programa que leia CDs de áudio, como o pacote ou port audio/xmcd.

8.17.

Como eu faço para usar o comando mount com um CD multi-sessão?

Por padrão, o mount(8) tentará montar a última trilha de dados (sessão) de um CD. Para carregar uma sessão anterior, use o argumento de linha de comando -s. Consulte mount_cd9660(8) para exemplos específicos.

8.18.

Como posso permitir que usuários não privilegiados montem CD-ROMs, DVDs, unidades USB e outras mídias removíveis?

Como root, defina a variável vfs.usermount do sysctl como 1.

# sysctl vfs.usermount=1

Para tornar o ajuste permanente, adicione a linha vfs.usermount=1 ao arquivo /etc/sysctl.conf para que a variável seja redefinids no momento da inicialização do sistema.

Os usuários só podem montar dispositivos para os quais tenham permissões de leitura. Para permitir que os usuários montem um dispositivo, as permissões devem ser definidas em /etc/devfs.conf.

Por exemplo, para permitir que os usuários montem a primeira unidade USB, adicione:

# Allow all users to mount a USB drive.
	    own       /dev/da0       root:operator
	    perm      /dev/da0       0666

Todos os usuários agora podem montar dispositivos que eles podem ler em um diretório que eles possuem:

% mkdir ~/my-mount-point
% mount -t msdosfs /dev/da0 ~/my-mount-point

Desmontar o dispositivo é simples:

% umount ~/my-mount-point

Ativar a variável vfs.usermount, no entanto, tem implicações negativas de segurança. Uma maneira melhor de acessar uma mídia formatada para o MS-DOS® é usar o pacote emulators/mtools da Coleção de Ports.

Nota:

O nome do dispositivo usado nos exemplos anteriores deve ser alterado de acordo com a configuração.

8.19.

Os comandos du e df mostram informações diferentes sobre a quantia disponível de espaço em disco. O que está acontecendo?

Isso se deve ao modo como esses comandos realmente funcionam. O du passa pela árvore de diretórios, ele mede o tamanho de cada arquivo e apresenta os totais. O df apenas pergunta ao sistema de arquivos quanto espaço ainda resta. Eles parecem ser a mesma coisa, mas um arquivo sem uma entrada de diretório afetará df mas não du.

Quando um programa está usando um arquivo e o arquivo é excluído, o arquivo não é realmente removido do sistema de arquivos até que o programa pare de usá-lo. O arquivo é imediatamente excluído da listagem do diretório, no entanto. Como exemplo, considere um arquivo grande o suficiente para afetar a saída de du e df. Um arquivo sendo visualizado com more pode ser excluído sem causar um erro. A entrada é removida do diretório para que nenhum outro programa ou usuário possa acessá-la. No entanto, o du mostra que ele desapareceu, já que percorreu a árvore de diretórios e o arquivo não está mais listado. Já o df mostra que ele ainda está lá, pois o sistema de arquivos sabe que o comando more ainda está usando esse espaço. Quando a sessão do more terminar, o du e df apresentarão o mesmo resultado.

Essa situação é comum em servidores web. Muitas pessoas configuram um servidor web no FreeBSD e esquecem de rotacionar os arquivos de log. O log de acesso enche o /var. O administrador novato exclui o arquivo, mas o sistema ainda reclama que a partição está cheia. Parar e reiniciar o programa do servidor Web liberaria o arquivo, permitindo que o sistema liberasse o espaço em disco. Para evitar que isso aconteça, configure o newsyslog(8).

Observe que o Soft Updates pode atrasar a liberação de espaço em disco e pode levar até 30 segundos para que a alteração fique visível.

8.20.

Como posso adicionar mais espaço de swap?

Esta seção do Handbook descreve como fazer isso.

8.21.

Por que o FreeBSD vê meu disco como sendo menor do que o fabricante diz que ele é?

Os fabricantes de discos calculam gigabytes como um bilhão de bytes cada, enquanto o FreeBSD os calcula como 1.073.741.824 bytes cada. Isso explica por que, por exemplo, as mensagens de boot do FreeBSD reportarão um disco que supostamente tem 80 GB como contendo 76.319 MB.

Observe também que o FreeBSD irá (por padrão) reservar cerca de 8% do espaço em disco.

8.22.

Como é possível que uma partição esteja com mais de 100% de ocupação?

Uma parte de cada partição UFS (8%, por padrão) é reservada para uso pelo sistema operacional e pelo usuário root. O df(1) não contabiliza esse espaço ao calcular a coluna Capacity, portanto, ela pode exceder 100%. Observe que a coluna Blocks é sempre maior que a soma das colunas Used e Avail, geralmente por um fator de 8%.

Para mais detalhes, procure prls opção -m em tunefs(8).

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.