Como acompanhar um dispositivo de bloco em mudança, sem desmontar e remontar?

2

Então, estou executando o Arch no sistema miniatura (o BeagleBone Black). Nesta placa, eu tenho o cartão SD (/ dev / mmcblk1) para passar através de USB para o computador host com o módulo do kernel g_mass_storage. Isso funciona perfeitamente bem, e qualquer alteração que eu fizer nesse drive USB falso aparecerá imediatamente no arquivo de dispositivo de bloco.

O problema vem com o que eu quero fazer com este dispositivo de bloco. Eu quero tê-lo montado somente leitura na raiz do documento de um servidor Nginx. Na maioria das vezes, isso funciona bem, e qualquer alteração que eu faça na unidade USB parece aparecer bem na raiz do servidor. No entanto, as alterações exigem que o dispositivo de bloco seja desmontado e remontado antes de aparecerem. Idealmente, assim que eu fizer uma alteração na unidade USB, ela apareceria no ponto de montagem, mas imaginei que isso seria complicado de fazer.

Existe alguma maneira simples de montar um dispositivo de bloco de uma maneira que o Linux esperaria que ele mudasse constantemente, semelhante a como montagens de rede como SSH e FTP reagem a mudanças externas?

    
por user1125238 09.01.2014 / 05:06

1 resposta

0

Alguns pensamentos -

  1. Você realmente precisa desmontar e remontar para que as alterações apareçam? Geralmente você pode usar a sintaxe mount / dev / resource -o remount, ro e mount / dev / resource -o remount, rw para remontar dispositivo somente leitura ou leitura-gravação.

  2. Eu não entendo os detalhes do que você está tentando fazer, mas parece a resposta pode estar em "udev". Na maioria das versões do Linux há um conjunto de regras (No Ubuntu 12.04 em /etvc/udev/rules.d - eu esperaria algo semelhante em muitos outros distros) que mapeiam dispositivos e eventos do kernel para as coisas em que você pode agir. (Por exemplo Eu costumava detectar quando uma unidade USB externa estava conectada e executar um script. Para fazer isso, você precisa elaborar atributos específicos para o seu dispositivo de bloco (Executando o udevadm info -a -p $ (udedm info -q caminho -n / dev / sdX) e depois construir um regra usando esses atributos para criar uma ação quando você detecta uma alteração.

    O uso de UDEV não foi difícil, mas foi bastante complicado trabalhar corretamente.

por 09.01.2014 / 08:57