25.4. Dispositivo de armazenamento virtual USB
Anterior | Capítulo 25. Modo de dispositivo USB/USB OTG | Próxima

## 25.4. Dispositivo de armazenamento virtual USB

### Nota:

O driver cfumass(4) é um driver de modo de dispositivo USB disponibilizado pela primeira vez no FreeBSD 12.0.

O target de armazenamento em massa é fornecido pelos templates 0 e 10. Os módulos de kernel usb_template(4) e cfumass(4) devem ser carregados. O cfumass(4) faz interface com o subsistema CTL, o mesmo usado para os targets iSCSI ou Fibre Channel. No lado do host, os inicializadores do armazenamento em massa USB só podem acessar um único LUN, o LUN 0.

### 25.4.1. Configurando o target de armazenamento em massa USB usando o script de inicialização cfumass

A maneira mais simples de configurar um target de armazenamento USB somente de leitura é usar o script rc `cfumass`. Para configurá-lo dessa maneira, copie os arquivos a serem apresentados para a máquina host USB no diretório `/var/cfumass` e inclua esta linha no `/etc/rc.conf` :

    cfumass_enable="YES"

Para fazer valer a configuração sem reiniciar, execute este comando:

    # service cfumass start

Diferentemente da funcionalidade serial e de rede, o modelo não deve ser definido como 0 ou 10 no `/boot/loader.conf`. Isso ocorre porque o LUN deve ser configurado antes de definir o template. O script de inicialização cfumass define o número do modelo correto automaticamente quando iniciado.

### 25.4.2. Configurando o armazenamento em massa USB usando outros meios

O restante deste capítulo fornece uma descrição detalhada da configuração do target sem usar o arquivo rc cfumass. Isso é necessário se, por exemplo, alguém quiser fornecer um LUN gravável.

O armazenamento em massaUSB não exige que o daemon ctld(8) esteja em execução, embora ele possa ser usado se desejado. Isso é diferente do iSCSI. Portanto, existem duas maneiras de configurar o target: o ctladm(8) ou o ctld(8). Ambos exigem que o módulo do kernel `cfumass.ko` seja carregado. O módulo pode ser carregado manualmente:

    # kldload cfumass

Se o `cfumass.ko` não foi compilado estaticamente no kernel, o `/boot/loader.conf` pode ser configurado para carregar o módulo na inicialização:

    cfumass_load="YES"

Um LUN pode ser criado sem o daemon ctld(8):

    # ctladm create -b block -o file=/data/target0

Isto apresenta o conteúdo do arquivo de imagem `/data/target0` como um LUN para o host USB. O arquivo deve existir antes de executar o comando. Para configurar o LUN na inicialização do sistema, adicione o comando ao `/etc/rc.local`.

O ctld(8) também pode ser usado para gerenciar LUNs. Crie `/etc/ctl.conf`, adicione uma linha ao `/etc/rc.conf` para certificar-se ctld(8) é iniciado automaticamente na inicialização e, em seguida, inicie o daemon.

Este é um exemplo de um arquivo de configuração `/etc/ctl.conf` simple. Consulte ctl.conf(5) para obter uma descrição mais completa das opções.

    target naa.50015178f369f092 {
    	lun 0 {
    		path /data/target0
    		size 4G
    	}
    }

O exemplo cria um único target com um único LUN. O `naa.50015178f369f092` é um identificador de dispositivo composto por 32 dígitos hexadecimais aleatórios. A linha `path` define o caminho completo para o arquivo ou zvol que suporta o LUN. Esse arquivo deve existir antes do ctld(8) ser iniciado. A segunda linha é opcional e especifica o tamanho do LUN.

Para ter certeza que o daemon ctld(8) foi iniciado na inicialização, adicione esta linha ao `/etc/rc.conf`:

    ctld_enable="YES"

Para iniciar o ctld(8) agora, execute este comando:

    # service ctld start

Quando o daemon ctld(8) é iniciado, ele lê o `/etc/ctl.conf`. Se esse arquivo for editado depois que o daemon iniciar, recarregue as alterações para que elas entrem em vigor imediatamente:

    # service ctld reload

Anterior | Acima | Próxima
25.3. Interfaces de rede do modo de dispositivo USB | Principal | Parte IV. Comunicação de rede

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>.