12.10. Rede, Memória, e Sistemas de Arquivos em Imagens

Reorganizado e melhorado por Marc Fonvieille.

Além dos discos que você insere fisicamente ao seu computador: disqutetes, CDs, discos rígidos, ou qual seja; outras formas de discos são entendidas pelo FreeBSD - os discos virtuais.

Insto inclui sistemas de arquivos em rede como o Network File System e o Coda, sistemas de arquivos baseados em memória e sistema de arquivos em imagens.

Dependendo da versão de FreeBSD que você usa, você terá que utilizar ferramentas diferentes para criar e utilizar sistemas de arquivos em imagens e baseados em memória.

Nota: O usuários do FreeBSD 4.X utilizarãoo MAKEDEV(8) para criar os dispositivos necessários. O FreeBSD 5.0 e versões superiores utilizarão o devfs(5) para alocar os nós de dispositivos de maneira transparente para o usuário.

12.10.1. Sistemas de arquivos em arquivo de imagem no FreeBSD 4.X

O utilitário vnconfig(8) configura e disponibiliza o vnode que é um dispositivo para pseudo-discos. Um vnode é uma representação de um arquivo e é o foco para a atividade com os arquivos. Isto significa que o vnconfig(8) utiliza arquivos arquivos para criar e operar sistemas de arquivos. Uma das utilizações possíveis seria a montagem de arquivos de imagens de CDs ou de disquetes.

Para utilizar o vnconfig(8) você precisa do suporte vn(4), para adicioná-lo ao seu arquivo de configuração de kernel coloque:

pseudo-device vn

Para montar uma imagem de um sistema de arquivos:

Exemplo 12-3. Utilizando o vnconfig para montar uma imagem de um sistema de arquivos no FreeBSD 4.X

# vnconfig vn0 diskimage
# mount /dev/vn0c /mnt

Para criar uma nova imagem de sistema de arquivos com o vnconfig(8):

Exemplo 12-4. Criando uma nova imagem de disco com o vnconfig

# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# vnconfig -s labels -c vn0 newimage
# disklabel -r -w vn0 auto
# newfs vn0c
Warning: 2048 sector(s) in last cylinder unallocated
/dev/vn0c:     10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
        5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
super-block backups (for fsck -b #) at:
 32
# mount /dev/vn0c /mnt
# df /mnt
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/vn0c        4927        1     4532     0%    /mnt

12.10.2. Sistemas de arquivos em imagem no FreeBSD 5.X

O utilitário mdconfig(8) é utilizado para configurar e ativar discos em memória, md(4) no FreeBSD 5.X. Para usar o mdconfig(8) você terá que carregar o módulo md(4) ou adicionar o suporte no arquivo de configuração do kernel:

device md

O comando mdconfig(8) suporta três tipos de discos em memória: discos de memória alocados com o malloc(9), discos de memória utilizando um arquivo e espaços de troca. Um possível uso é a montagem de arquivos de imagens de disquetes e CDs.

Para montar um sistema de arquivos existente em um arquivo de imagem:

Exemplo 12-5. Usando o mdconfig para montar um arquivo de imagem de um sistema de arquivos no FreeBSD 5.X

# mdconfig -a -t vnode -f diskimage -u 0
# mount /dev/md0c /mnt

Para criar uma nova imagem de sistema de arquivos com o mdconfig(8):

Exemplo 12-6. Criando um novo disco em arquivo de imagem com o mdconfig

# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# mdconfig -a -t vnode -f newimage -u 0
# disklabel -r -w md0 auto
# newfs md0c
/dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
    using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
super-block backups (for fsck -b #) at:
 32, 2624, 5216, 7808
# mount /dev/md0c /mnt
# df /mnt
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/md0c        4846        2     4458     0%    /mnt

Se você não especificar o número da unidade com a opção -u, o mdconfig(8) utilizará o md(4) para selecionar automaticamente um dispositivo não utilizado. O nome da unidade alocada será impresso na saída padrão como o md4. Para mais detalhes sobre o mdconfig(8) visite a página de manual dele.

Nota: Desde o FreeBSD 5.1-RELEASE, o utilitário bsdlabel(8) substituiu o velho programa disklabel(8). Com o bsdlabel(8) algumas opções e parâmetros obsoletos foram retirados; no exemplo que foi dado a opção -r deveria ser removida. Para mais informações, por favor, visite a página de manual do bsdlabel(8).

O utilitário mdconfig(8) é muito útil, entretanto ele precisa de diversas linhas de comando para criar um arqivo de imagem de um sistema de arquivos. O FreeBSD 5.0 também vem com uma ferramenta chamada mdmfs(8), este programa configura um disco md(4) utilizando o mdconfig(8), e coloca um sistema de arquivos UFS em uso com o newfs(8), e monta-o utilizando o mount(8). Por exemplo, se você quer criar e montar a mesma imagem de sistema de arquivos citada anteriormente, simplesmente digite como segue abaixo:

# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records in
5120+0 records out
# mdmfs -F newimage -s 5m md0 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md0        4846    2  4458     0%    /mnt

Se você usar a opção md sem um númnero de unidade, o mdmfs(8) utilizará o md(4) que com suas funcionalidades selecionará automaticamente um dispositivo não utilizado. Para mais detalhes sobre o mdmfs(8), por favor, visitem a página de manual dele.

12.10.3. Sistemas de arquivos baseados em memória no FreeBSD 4.X

O controlador md(4) é simples, eficiente o suficiente para criar sistemas de arquivos em memória no FreeBSD 4.X. O malloc(9) é utilizado para alocar memória.

Simplesmente, pegue um sistema de arquivos que você tenha preparado como, por exemplo, o vnconfig(8), e:

Exemplo 12-7. Discos de memória md no FreeBSD 4.X

# dd if=newimage of=/dev/md0
5120+0 records in
5120+0 records out
# mount /dev/md0c /mnt
# df /mnt
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/md0c        4927        1     4532     0%    /mnt

Para mais detalhes, por favor, visitem a página de manual do md(4).

12.10.4. Sistemas de arquivos baseados em memória no FreeBSD 5.X

As mesmas ferramentas são utilizadas para os discos baseados em memória e os baseados em arquivos de imagem: mdconfig(8) ou mdmfs(8). O armazenamento para os sistemas de arquivos baseados em memória é alocado com o malloc(9).

Exemplo 12-8. Criando um novo disco baseado em memória com o mdconfig

# mdconfig -a -t malloc -s 5m -u 1
# newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
    using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
    with soft updates
super-block backups (for fsck -b #) at:
 32, 2624, 5216, 7808
# mount /dev/md1 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md1        4846    2  4458     0%    /mnt

Exemplo 12-9. Criando um novo disco baseado em memória com o mdmfs

# mdmfs -M -s 5m md2 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md2        4846    2  4458     0%    /mnt

Ao invés de utilizar o sistema de arquivos alocado com o malloc(9) é possível utilizar swap, para isso apenas substitua a opção malloc com swap na linha de comando do mdconfig(8). O utilitário mdmfs(8) por padrão (sem a opção -M) cria um disco baseado em swap. Para mais detalhes, por favor, visitem a página de manual do mdconfig(8) e do mdmfs(8).

12.10.5. Desconectando um disco de memória do sistema

Quando um disco baseado em memória ou um baseado em um arquivo de imagem não é utilizado, você deve liberar todos os recursos para o sistema. A primeira coisa a fazer é desmontar o sistema de arquivos, então use o mdconfig(8) para desconectar o disco do sistema e os recursos serão liberados.

Por exemplo, para desconectar e liberar os recursos utilizados pelo /dev/md4, faça:

# mdconfig -d -u 4

É possível listar informações sobre o dispositivo md(4) configurado utilizando o comando mdconfig -l.

Para o FreeBSD 4.X, o vnconfig(8) é utilizado para desconectar os dispositivos. Por exemplo, para desconectar e liberar todos os recursos utilizados pelo /dev/vn4, faça:

# vnconfig -u vn4

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.