rmt Arquivo Especial

Propósito

Fornece acesso ao driver de dispositivo de meio de armazenamento em massa sequencial de acesso sequencial.

Descrição

As fitas magnéticas são usadas principalmente para backup, arquivos de arquivos e outros armazenamento off-line. As fitas são acessadas através do /dev/rmt0, ..., /dev/rmt255 arquivos especiais. O r no nome do arquivo especial indica o acesso cru através da interface de arquivo especial de caracteres. Um dispositivo de fita não se presta bem à categoria de um dispositivo de bloco. Assim, apenas arquivos especiais de interface de caracteres são fornecidos.

Arquivos especiais associados a cada dispositivo de fita determinam qual ação é tomada durante operações abertas ou próximas. Esses arquivos também ditam, para dispositivos aplicáveis, em que dados de densidade devem ser gravados em fita. A tabela a seguir mostra os nomes desses arquivos especiais e suas características correspondentes:

Tabela 1. Características Do Arquivo Especial Da Unidade De Fita
Nome do Arquivo Especial Características
/dev/rmt*
Retroceder ao fechar
Sim
Retensão-no-Aberto
Não
Bytes por Inch
Definição de DENSIDADE nº1
/dev/rmt*.1
Retroceder ao fechar
Não
Retensão-no-Aberto
Não
Bytes por Inch
Definição de DENSIDADE nº1
/dev/rmt*.2
Retroceder ao fechar
Sim
Retensão-no-Aberto
Sim
Bytes por Inch
Definição de DENSIDADE nº1
/dev/rmt*.3
Retroceder ao fechar
Não
Retensão-no-Aberto
Sim
Bytes por Inch
Definição de DENSIDADE nº1
/dev/rmt*.4
Retroceder ao fechar
Sim
Retensão-no-Aberto
Não
Bytes por Inch
Definição de DENSIDADE nº2
/dev/rmt*.5
Retroceder ao fechar
Não
Retensão-no-Aberto
Não
Bytes por Inch
Definição de DENSIDADE nº2
/dev/rmt*.6
Retroceder ao fechar
Sim
Retensão-no-Aberto
Sim
Bytes por Inch
Definição de DENSIDADE nº2
/dev/rmt*.7
Retroceder ao fechar
Não
Retensão-no-Aberto
Sim
Bytes por Inch
Definição de DENSIDADE nº2
  1. Os valores de configuração de densidade #1 e configuração de densidade #2 vêm de atributos da unidade de fita que podem ser configurados usando SMIT. A configuração tipicamente de densidade #1 é configurada para a maior densidade possível para a unidade de fita enquanto a configuração de densidade #2 é configurada para uma menor densidade. No entanto, as configurações de densidade não são necessárias para seguir este padrão.
  2. O valor da densidade (bytes por polegada) é ignorado ao usar um dispositivo de fita magnética que não suporta várias densidades. Para unidades de fita que fazem suporte a várias densidades, o valor da densidade só se aplica ao escrever para a fita. Ao ler, a unidade padronizada para a densidade em que a fita é escrita.
  3. A maioria das unidades de fita usa tamanho de bloco 512-byte. A unidade de fita 8mm usa um tamanho de bloco mínimo de 1024 bytes. Usando o SMIT para baixar o tamanho do bloco, irá desperdiçar espaço.

Considerações De Uso

A maioria das operações de fita é implementada usando as subroutines aberto, leitura, escrevere fechar . No entanto, para fins de diagnóstico, a subroutine openx é necessária.

abrir e fechar Subroutines

Os cuidados devem ser tomados ao fechar um arquivo após a escrita. Se o aplicativo reverenciar sobre os dados apenas escritos, nenhuma marca de arquivo será escrita. No entanto, para dispositivos de fita que permitem a atualização de blocos, a menos que os espaços de aplicação na direção reversa ou retorne a posição da fita para o início da fita (BOT), uma ou duas marcas de arquivo serão escritas ao fechar o dispositivo. (O número de marcas de arquivo depende do tipo de arquivo especial.)

Para trabalhos multitape, o arquivo especial deve ser aberto e fechado para cada fita. O usuário não tem permissão para continuar se o arquivo especial for aberto e a fita ter sido alterada.

A subroutine openx é destinada principalmente para uso pelos comandos de diagnóstico e utilitários. A autoridade adequada é necessária para execução. A execução desta sub-rotina sem a autoridade adequada resulta em um valor de retorno de -1, com a variável global errno definida como EPERM.

ler e escrever Subroutines

Quando aberta para leitura ou escrita, a fita é assumida como desejada. Quando a fita é aberta como nenhum-rewind-on-close (/dev/rmt*.1) e um arquivo é escrito, uma única marca de arquivo é escrita ao fechar a fita. Quando a fita é aberta como rewind-on-close (/dev/rmt *) e um arquivo é escrito, uma marca de arquivo duplo é escrita ao fechar a fita. Quando a fita é aberta como sem rewind-on-close e lê-se a partir de um arquivo, a fita é posicionada após o fechamento após a marca de fim de arquivo (EOF) seguindo os dados apenas lidos.

Ao escolher especificamente o arquivo rmt , é possível criar várias fitas de arquivo.

Apesar de fitas serem acessadas por meio de arquivos especiais de interface de caracteres, o número de bytes necessários por uma operação de leitura ou gravação deve ser um múltiplo do tamanho do bloco definido para o dispositivo de fita magnética. Quando a unidade de fita está em modo de bloco variável, leia solicitações por menos do que o tamanho do bloco da fita devolvem o número de bytes solicitados e configure a variável global errno para um valor de 0. In this case, the readx subroutine's Extensão parameter must be set to TAPE_SHORT_READ.

Durante uma leitura, o tamanho do registro é retornado como o número de bytes lidos, até o tamanho do buffer especificado. Se uma condição de EOF for encontrada, então uma leitura de comprimento zero é devolvida, com a fita posicionada após o EOF.

Uma condição de fim de mídia (EOM) encontrada durante uma operação de leitura ou gravação resulta no retorno do número de bytes prontos ou escritos com sucesso. Quando uma gravação é tentada após o dispositivo ter atingido o EOM, um valor de -1 é retornado com a variável global errno definida para o valor ENXIO. Quando uma leitura é tentada depois que o dispositivo atingiu o EOM, uma leitura de comprimento zero é devolvida. As leituras sucessivas continuam a retornar uma leitura de comprimento zero.

Data Buffering Com um Dispositivo de Fita: Alguns dispositivos de fita contêm um buffer de dados para maximizar a velocidade de transferência de dados ao gravar em fita. Uma operação de gravação enviada para a fita é devolvida como completa quando os dados são transferidos para o buffer de dados do dispositivo de fita. Os dados no buffer são então escritos para fita de forma assíncrona. Como resultado, a velocidade de transferência de dados aumenta, uma vez que o hospedeiro não precisa esperar a conclusão de E/S.

Dois modos são fornecidos pelo driver do dispositivo de fita para facilitar o uso desses buffers de dados. O modo não buffered causa gravações em fita para contornar o buffer de dados e ir diretamente para a fita. No modo buffered, todas as subroutines de gravação são retornadas como completas quando os dados de transferência foram gravados com sucesso no buffer do dispositivo de fita. O driver do dispositivo não flush o buffer de dados até que o arquivo especial esteja fechado ou uma condição de EOM seja encontrada.

Se uma condição de EOM for encontrada enquanto executa em modo buffered, o dispositivo tenta nivelar o buffer de dados do dispositivo. A contagem residual pode exceder o comprimento de transferência de gravação em modo buffered. Em alguns casos, o flushing de dados residuais pode realmente rodar a fita fora do reel. Qualquer um dos casos é considerado uma falha e resulta em um valor de retorno de -1, com a variável global errno definida como EIO. Esses erros podem exigir que o usuário seja executado em modo não buffered.

rmt Arquivo Especial Considerações: Falhas que resultam em um reset de dispositivo enquanto a leitura ou a escrita para fita requerem que o arquivo especial seja fechado e o job reiniciado. Quaisquer comandos emitidos após essa condição ocorrer e até que o arquivo especial seja fechado resultam em um valor de retorno -1, com a variável global errno definida como EIO. Erros do tipo não reset (isto é, erros de mídia ou hardware) resultam na fita sendo deixada posicionada onde ocorreu o erro.

Para trabalhos de multi-tape, o arquivo especial deve ser aberto e fechado para cada fita. O usuário não tem permissão para continuar se o arquivo especial for aberto e a fita ter sido alterada.

Um sinal recebido pelo driver do dispositivo de fita fará com que o comando atual seja abortado. Como resultado, o aplicativo interrompe os comandos demorados (por exemplo, uma operação de apagamento) sem reciclar a energia da unidade ou aguardando um tempo limite para ocorrer.

Uso de zero (0) como um parâmetro de tamanho de bloco indica que o blocksize é de comprimento variável.

Sub-rotina ioctl

Uma única operação ioctl , IOCINFO, é definida para todos os drivers de dispositivos que usam a subroutine ioctl . Para o arquivo especial rmt , a operação STIOCTOP também foi definida.

A operação IOCINFO ioctl: A operação ioctl IOCINFO retorna uma estrutura definida no arquivo /usr/include/sys/devinfo.h .

A operação STIOCTOP ioctl: A operação ioctl STIOCTOP prevê operações de execução de comandos, tais como apagar e retensão. O parâmetro para o subroutine ioctl usando a operação STIOCTOP especifica o endereço de uma estrutura stop , conforme definido no arquivo /usr/include/sys/tape.h .

A operação encontrada nost_opcampo na estrutura parar é realizadost_countvezes, exceto as operações de revento, apagar e retensão. As operações disponíveis são:

Item Descrição
ESPALHAR Rebento.
STOFFL Rebobar e descarregar a fita. Uma fita deve ser inserida antes que o dispositivo possa ser usado novamente.
STERASE Fita de apagar; deixar em ponto de carregamento.
STRETEN Fita de retensão; deixar em ponto de carga.
STWEOF Gravação e marca de fim de arquivo.
STFSF Encaminhá arquivo de espaço.
STFSR Encaminhá registro de espaço.
STRSF Arquivo de espaço reverso.
STRSR Registro de espaço reverso.
STDEOF Desativar verificação de fim de arquivo.
Nota: O uso do comando STDEOF possibilita que um aplicativo escreva além do final da fita. Ao desabilitar a verificação de fim de arquivo, emitindo o comando STDEOF , é responsabilidade do aplicativo precarizar-se contra condições de erro que podem surgir a partir do uso deste comando.
Nota: Execução dos comandos precedentes depende do dispositivo de fita particular e quais comandos são suportados. Se o comando não for suportado em um determinado dispositivo, um valor de -1 será retornado, com a variável global errno definida como EINVAL.

Códigos De Erro

Além de códigos de erros gerais listados para subbroutines ioctl, aberto, leiturae escrever , podem ocorrer também os seguintes códigos de erro específicos:

Item Descrição
EAGAIN Uma operação aberta foi tentado a um dispositivo que já está aberto.
OCUPADO O dispositivo de destino é reservado por outro iniciador.
EINVAL O_APPEND é fornecido como um modo no qual se abrir.
EINVAL Um parâmetro nbyte para uma subroutine leitura ou escrever não é um par nem múltiplo do blocksize.
EINVAL Um parâmetro para a subroutine ioctl é inválido.
EINVAL A operação ioctl solicitada não é suportada no dispositivo atual.
EIO Não poderia espaço para frente ou inversost_countregistra antes de se cadasalar uma condição de EOM ou uma marca de arquivo.
EIO Não poderia espaço para frente ou inversost_countmarcas de arquivo antes de se cadasalar uma condição de EOM.
EMEDIA O dispositivo de fita encontrou um erro de mídia irrecuperável.
ENOMEM O número de bytes solicitados para uma leitura de um registro de comprimento variável em fita é menor do que o tamanho real (em bytes) do registro de comprimento variável.
ENOTREADY Não há fita na unidade ou a unidade não está pronta.
ENXIO Uma operação de gravação foi tentada enquanto a fita estava na EOM.
EPERM A subroutina solicitada requer autoridade apropriada.
ETIMEDOUT Um comando cronomeou para fora.
EWRPROTECT Uma operação aberta para leitura / gravação foi tentado em uma fita de leitura.
EWRPROTECT Uma operação ioctl que efeitos a mídia foi tentado em uma fita de leitura.