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

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