CFS : CORBA File System for Linux
O CORBA File System (CFS) é um projeto que visa
a construção de um sistema de arquivos distribuídos
para o sistema operacional Linux, cuja comunicação entre clientes
e servidores é baseada em CORBA.
A intenção do projeto é ter um sistema de
arquivos funcional, tanto para o compartilhamento de arquivos numa rede,
quanto para a navegação pelo espaço de nomes CORBA como
uma árvore de arquivos e diretórios UNIX. Para isso, fez-se
necessária a implementação de um módulo no núcleo
do Linux, e para a comuniação entre o módulo e um cliente
CORBA em espaço de usuário, desenhamos uma arquitetura que
foi fortemente baseada nos sistemas de arquivos Coda Distributed File System e no
Parallel Virtual File
System (PVFS). Para o entendimento do projeto é altamente recomendada
a leitura do projeto de arquitetura utilizada, que está disponível
em PDF ou HTML.
O resultado do projeto foram 3 componentes distintos: um módulo para o núcleo do Linux,
um daemon para fazer a tradução
das requisições do núcleo para requisições
CORBA e vice versa, e o servidor CORBA
em espaço de usuário.
A princípio, o uso do espaço de nomes CORBA permite uma flexibilidade
grande ao sistema. Os módulos não precisam conhecer previamente
o local de origem dos arquivos. O daemon no cliente, em espaço
de usuário, só precisa encontrar um serviço de nomes
existente, e utilizá-lo para encontrar os nomes desejados, que podem
ser contextos, objetos variados, ou objetos especifcamente exportados pelo
servidor, que representam um diretório ou arquivo remotamente disponibilizado.
Um recurso interessante, conüente da implementação
do daemon, é a possibilidade
de navegação num espaço de nomes, sem que os objetos
ali disponíveis sejam conhecidos a priori.
Para mais detalhes sobre o funcionamento interno do sistema, veja a descrição do interior do CFS.
Também contamos os problemas e decisões
no processo de implementação da proposta
do CFS.
Download
Antes da instalação é necessário ter algumas
aplicações e bibliotecas já instaladas:
O código do módulo, daemon, e servidor: CFS.
Instalação
O arquivo cfs.tar.bz2
contém os seguintes diretórios e arquivos importantes para
a compilação e instalação do sistema:
corba/
linux.uml/
patch-cfs-linux-2.4.18.bz2
Primeiramente, extraia o conteúdo do cfs.tar.bz2:
tar jxvf cfs.tar.bz2
Para compilar o servidor e daemon do CFS, compile o código
do diretório corba:
cd CFS/corba/
make
Para compilar o módulo, você tem duas
opções. Pode copiar os arquivos em linux.uml para a árvore
fonte do núcleo do linux. Ou, se você não está
familiarizado com as localizações dos arquivos, pode aplicar
o patch patch-cfs-linux-2.4.18.bz2:
cd /usr/src/linux/
bunzip2 patch-cfs-linux-2.4.18.bz2 | patch -p1
Depois disso, proceda com a configuração e compilação
do núcleo. Configure da maneira preferida (make menuconfig,
por exemplo), e não esqueça de selecionar o CFS (no grupo network
file system - caso não apareça a opção CFS, veja
se a opção "Prompt for development and/or incomplete code/drivers"
está habilitada logo no primeiro grupo de opções "Code
maturity level options"). Você pode compilar o CFS como módulo
ou internamente ao núcleo. Sugerimos a compilação
como módulo. Prossiga então com a seqüência
make dep && make bzImage && make modules &&
make modules_install.
Você pode agora reiniciar seu sistema (no caso de compilar internamente
ao núcleo), ou tentar instalar o módulo:
modprobe cfs
O módulo só é necessário na máquina cliente,
que "montará" o sistema de arquivos CFS.
Uso
Antes de mais nada, deve-se iniciar um servidor de nomes, como o NSD. Para
iniciar o NSD, você pode usar o seguinte comando:
nsd -ORBIIOPAddr inet:`uname -n`:12456 &
Na máquina que hospedará o serviço de nomes. Vamos nos
referenciar a essa máquina como NSDHOST para o resto da documentação.
No diretório CFS/corba/ há um comando cfs-nsd,
que executa o comando acima.
Agora devemos iniciar os servidores. Em cada máquina que um servidor
rodar, é necessário configurar quais diretórios serão
exportados para serem usados remotamente. Isso pode ser especificado pelo
arquivo de configurações CFS/etc/cfs.exports .
Cada linha desse arquivo possui o seguinte formato:
local remote options
Onde local é o diretório local a ser
exportado, remote é o nome que os clientes usarão
para encontrá-lo no espaço de nomes, e options
são opções específicas (não implementado).
Em cada máquina, você deve iniciar o servidor com o seguinte
comando (no diretório CFS/corba/):
./cfs-server start NSDHOST
Esse comando iniciará o servidor e redirecionará sua
saída para o arquivo ./var/log/ServerCFS.log. Você
pode também iniciar o servidor diretament com o com comando:
./ServerCFS -ORBInitRef NameService=corbaloc::NSDHOST:12456/NameService
Já nas máquina que serão clientes, isto é,
que montarão o CFS, deve-se instalar o módulo no kernel (se
não instalado), iniciar o daemon, e montar o sistema de arquivos
no ponto de montagem (aqui exemplificado como /mnt):
modprobe cfs
./cfs-daemon start NSDHOST
mount -t cfs none /mnt
O daemon também pode ser iniciado pelo comando direto:
./CFSd -ORBInitRef NameService=corbaloc::NSDHOST:12456/NameService
Observe que o dispositivo de montagem é none, já
que o daemon é responsável por encontrar o serviço
de nomes. Ao acessar o diretório /mnt, poderá navegar pelo
espaço de nomes. Contextos são listados como diretórios.
Objetos quaisquer são como arquivos apenas para leitura (cujo conteúdo
mostrado pelo daemon é a IOR do objeto). E objetos registrados
pelos servidores (ServerCFS) dão acesso aos arquivos remotos do diretório
exportado.
A criação de diretórios dentro dos contextos
resulta na criação de novos contextos. A criação
de arquivos resulta na criação de um arquivo virtual, que reside
na memória do daemon. No momento, esse objeto não é
acessível por outros clientes. Todas operações num nome
que é um objeto representando o diretório remoto, ocorrem como
no sistema de arquivos comum do Linux, mas no servidor remoto.
Autores:
- Livio Baldini Soares
- Márcio Rodrigo de Freitas Carneiro
- Roberto Pires de Carvalho
Last modified: Tue Jul 9 23:32:52 BRT 2002
|