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