Sistemas de arquivos especiais Sistema de arquivos do kernel (procfs) É um sistema de arquivos especial que apresenta informações sobre os processos, dispositivos, parâmetros de configuração do sistema operacional. A forma de apresentação é similar aos sistemas de arquivos comuns, sendo de fácil navegação e interação. Este sistema é montado em /proc no boot do sistema e não armazena as modificações de forma permanente. Um exemplo de uso é a habilitação de roteamento no sistema, que é feita modificando para o valor 1 o seguinte parâmetro: echo 1 > /proc/sys/net/ipv4/ip_forward Outra forma de configurar estes parâmetros é por meio do arquivo /etc/sysctl.conf e o comando sysctl. Este arquivo é lido na inicialização do sistema e as modificações são aplicadas. Outra forma de aplicar as modificações em tempo de execução é por meio da edição do arquivo /etc/sysctl.conf e a execução do comando sysctl com a seguinte sintaxe: sysctl -p /etc/sysctl.conf Para saber os valores dos parâmetros configuráveis do sistema operacional, pode-se utilizar o comando sysctl -a Para cada processo existe uma estrutura de diretórios com informações. Por exemplo, para o processo de PID 10690, pode-se: Saber o estado do processo: more /proc/10690/status Saber a linha de comando utilizada na carga da aplicação: more /proc/10690/cmdline Copiar a imagem do executável em memória para disco em /tmp: cp /proc/10690/exe /tmp Pseudo Sistema de arquivos (Pseudo File System) No Linux, é possível a criação de um arquivo que se comporte como um sistema de arquivo completo. Este procedimento é similar ao que é feito em discos rígidos de ferramentas de virtualização tais como VmWare e VirtualBox. Para obter este tipo de sistema de arquivos deve-se usar o parâmetro -o loop no comando mount. O interessante é que este pseudo sistema de arquivos pode ser copiado para qualquer outro sistema operacional, mantendo toda a estrutura de diretórios. Um exemplo de criação de um pseudo sistema de arquivo: Para criar um arquivo vazio de 160MB (4096x40000) em /mount, com o nome de meusistema: dd if=/dev/zero of=/mount/meusistema bs=4096 count=40000 Para criar o sistema de arquivos do tipo FAT32: mkfs.vfat /mount/meusistema Para montar em /mount/pendrive: mount -t vfat -o loop /mount/meusistema /mount/pendrive Outro exemplo interessante é a montagem de arquivos .ISO para ver o conteúdo. Um exemplo de comando seria este: mount -t iso9660 -o loop /tmp/arquivo.iso /mount/arqcd O comando mount possui uma opção chamada remount para remontar uma partição com parâmetros. Um exemplo seria a remontagem de uma partição para somente leitura, com o objetivo de realizar algum backup sem problemas de inconsistências. A sintaxe do comando é a seguinte; mount -o remount,ro /mount/meusistema /mount/lixo (Remonta o sistema de arquivos /mount/meusistema somente com leitura) mount -o remount,rw /mount/meusistema /mount/lixo (Remonta o sistema de arquivos /mount/meusistema com leitura e escrita) Sistemas de arquivos em CD/DVD (isofs) Para criar um sistema de arquivos que seja compatível com o padrão ISO9660, deve utilizar o comando mkisofs (deve ser instalado no CentOS com o comando yum install mkisofs). O uso é o seguinte: mkisofs -o /tmp/cd.iso /meucd/ (Monta um arquivo cd.iso contendo a estrutura de diretórios que estão dentro do diretório meucd) Para gerar um arquivo .ISO de um cd já existente pode-se utilizar o comando dd da seguinte forma: dd if=/dev/cdrom of=/tmp/meucdrom.iso (Cria um arquivo de nome meucdrom.iso contendo toda a estrutura de arquivos e diretórios do cd inserido no drive) Área de Swap A área de swap pode ser definida na instalação do sistema ou pode ser adicionada posteriormente. Esta área pode ser uma partição ou um arquivo, ambas tem a mesma funcionalidade. Para criar uma área de swap deve-se usar o comando mkswap. Para usar uma partição como swap, aplica-se o comando passando como parâmetro a identificação da partição. Por exemplo, para criar a partição de swap no dispositivo /dev/sda6, a sintaxe do comando seria esta: mkswap /dev/sda6. Para usar um arquivo como área de swap, deve-se criar o arquivo usando o comando dd e após usar a mesma sintaxe anterior. Por exemplo, o arquivo /var/swap.file foi criado para ser utilizado como swap. Para criar a definir o sistema de arquivos usa-se o comando mkswap /var/swap.file. Para ativar as áreas de swap criadas, deve-se utilizar o comando swapon. Um exemplo de uso para o arquivo /var/swap.file seria swapon /var/swap.file. Para ativar na inicialização do sistema, deve-se editar o arquivo /etc/fstab. Conforme o exemplo anterior, a entrada no arquivo /etc/fstab seria a seguinte: /var/swap.file swap swap defaults 0 0 Sistemas de arquivos em memória Pode ser necessário por motivos de desempenho, que se use a memória |RAM como um sistema de arquivos. Este conceito chama-se RAM DISK e pode ser bastante útil em casos onde a quantidade de dados a serem acessados não é muito grande, não é necessária o armazenamento persistente e existe grande demanda por acessos simultâneos, tal como o cache de alguma aplicação. Deve-se ter muito cuidado com o tamanho desta partição porque o uso da mesma corresponderá ao uso de memória RAM. Um exemplo de uso: mount -t tmpfs -o size=500M,mode=0755 tmpfs /mount/ramdisk (Cria um sistema de arquivos temporário com 500MB de tamanho e o disponibiliza em /mount/ramdisk) Recuperação de arquivos apagados A recuperação de arquivos em sistemas EXT3 é bastante complicado. Não existe uma ferramenta que faça esta recuperação automaticamente, mas existem ferramentas que podem ajudar bastante no procedimento. A ferramenta Photorec (http://www.cgsecurity.org/wiki/PhotoRec) possibilita a procura de arquivos apagados por tipo, .jpg, .png, .txt, na partição inteira. Nas figuras 1 e 2, exemplos das telas do utilitário Photorec. Para executar o utilitário, basta digitar photorec no shell. Tarefas: 1) Instalar e utilizar a ferramenta PhotoRec. 1. Testar a ferramenta apagando arquivos e tentado recuperá-los. 2) Criar uma área de ram disk do tamanho da memória RAM alocada para a máquina virtual. Realizar os seguintes procedimentos na área criada: 1. Criar um arquivo de 20MB na área de RAM disk e analisar o tempo gasto no procedimento. Para verificar o tempo, utilizar o comando time, de acordo com o exemplo a seguir: time dd if=/dev/zero of=/tmp/lixo bs=4096 count=5000 2. Criar um arquivo de 20MB na área normal do sistema de arquivos e analisar o tempo gasto no procedimento. Comparar o tempo gasto com o da atividade anterior. 3. Criar um arquivo de 100MB dentro da RAM disk. Verificar a ocupação de memória RAM do sistema. 4. Criar um arquivo do tamanho da área da RAM disk. Verificar a ocupação de memória RAM do sistema.