Como o software montado em rede é executado?

5

Eu gostaria de entender como o software montado em rede funciona. Por exemplo, no meu local de trabalho, temos um servidor de software. Cada máquina cliente (centenas deles) monta automaticamente diretórios do servidor de software na inicialização. Por exemplo, um programa como o Matlab é instalado apenas uma vez no servidor do software, mas cada máquina cliente pode iniciar uma instância do Matlab.

O que está acontecendo sob o capô?

Digamos que eu execute /opt/bin/matlab e /opt/ seja montado no servidor do software, o que acontece quando pressiono Enter para executar o Matlab em uma máquina cliente? O processo está na máquina cliente, e eu já diminuí que não há nenhuma transferência de arquivo implícita ou oculta (ou seja, copiar o Matlab para minha máquina temporariamente para aquela sessão) rodando o Matlab em um computador com quase zero de espaço em disco ( ou seja, não há espaço suficiente para transferência).

  • Desde que o Matlab foi instalado no servidor, como está o meu computador cliente executando-o?
  • Qual mecanismo está controlando isso?
  • O que está acontecendo nos bastidores?
por CptSupermrkt 02.11.2013 / 04:39

2 respostas

5

A tecnologia que eles estão usando para fazer isso acontecer é chamada de NFS - Network File System . Eles também podem estar usando outra tecnologia com NFS chamada automontagens, especificamente Autofs se for Linux.

NFS

O NFS permite que pastas de uma máquina sejam acessíveis a outra. Não há nada de mágico nisso. Existe um cliente e um servidor que facilitam essa conexão. Quando você acessa um desses diretórios que foram montados em seu sistema através do cliente NFS, são feitas chamadas de seu sistema para retransmitir as informações relativas ao diretório e seu conteúdo.

Se um dos clientes acessa um arquivo dentro do diretório, o servidor NFS também retransmite o conteúdo desse arquivo para o cliente NFS.

Autofs

A montagem automática é uma tecnologia que permite que um sistema cliente acesse um recurso remoto compartilhado, como o NFS, temporariamente. Isso quer dizer que o sistema cliente NFS tem acesso a esse compartilhamento NFS remoto. Mas não está ativamente "usando" até que alguém tente acessar o diretório compartilhado. Só então o cliente NFS tenta "montar" este diretório remoto e seu conteúdo.

Ciclo de vida do conteúdo do arquivo

Em ambos os casos, não há transferência implícita dos arquivos para os clientes NFS. Isso quer dizer que eles não são copiados fisicamente para os clientes a longo prazo. Os arquivos são transmitidos para os clientes quando eles tentam acessá-los. Depois do uso, eles se foram; eles não persistem nos clientes em qualquer forma de longo prazo.

Só para dar uma ideia aproximada, você pode usar o programa strace para ver algumas das chamadas do sistema feitas à medida que um programa é executado. Então, usando este comando por exemplo:

$ strace echo "hello world" > afile

Podemos ver como um arquivo é gravado no sistema. Também poderíamos usar este formulário para gravar em um diretório montado do NFS:

$ strace echo "hello world" > /home/sam/afile

Ambos os traços são praticamente idênticos.

### Gravação local

$ cat strace_wr_local.log 
execve("/bin/echo", ["echo", "hello world"], [/* 33 vars */]) = 0
...
fstat64(1, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f80000
write(1, "hello world\n", 12)           = 12
close(1)                                = 0

### gravação NFS

$ cat strace_wr_remote.log 
execve("/bin/echo", ["echo", "hello world"], [/* 33 vars */]) = 0
...
fstat64(1, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fbe000
write(1, "hello world\n", 12)           = 12
close(1)                                = 0

A leitura é apenas um pouco mais interessante, mas basicamente idêntica.

### Leitura local

$ cat strace_rd_local.log 
execve("/bin/cat", ["cat", "afile"], [/* 33 vars */]) = 0
...
fstat64(1, {st_mode=S_IFREG|0644, st_size=1761, ...}) = 0
open("afile", O_RDONLY|O_LARGEFILE)     = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=12, ...}) = 0
read(3, "hello world\n", 4096)          = 12
write(1, "hello world\n", 12hello world
)           = 12
read(3, "", 4096)                       = 0
close(3)                                = 0

### leitura do NFS

$ cat strace_rd_remote.log 
execve("/bin/cat", ["cat", "/home/sam/afile"], [/* 33 vars */]) = 0
...
fstat64(1, {st_mode=S_IFREG|0644, st_size=1771, ...}) = 0
open("/home/sam/afile", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=12, ...}) = 0
read(3, "hello world\n", 4096)          = 12
write(1, "hello world\n", 12hello world
)           = 12
read(3, "", 4096)                       = 0
close(3)                                = 0

Entrando na piscina

Se você está curioso sobre o protocolo NFS, pode ler mais sobre como ele funciona aqui, na seção intitulada: Noções básicas do protocolo NFS . Geralmente, é fácil obter os conceitos básicos de como funciona e há um exemplo de solicitação de NFS, apenas para dar uma ideia geral de como as coisas funcionam.

Mergulho mais profundo

Se você realmente quiser espiar atrás da cortina, provavelmente precisará trazer um conjunto de ferramentas para coletar o tráfego da rede, de modo que possa ver o fluxo de bits entre o servidor NFS e um de seus clientes. Ferramentas como tcpdump ou wireshark provavelmente serão seus amigos nesse mergulho mais profundo.

Eu o aconselharia a não perder seu tempo, a menos que você seja realmente do tipo curioso, pois mergulhos profundos como esse exigem muita habilidade e familiaridade com um conjunto de ferramentas Unix que eu consideraria apenas alguém que usava o Unix cerca de uma dúzia de anos.

Este site irá ajudá-lo com este esforço, se você estiver realmente curioso:

por 02.11.2013 / 05:36
0

O LinuxTerminalServerProject "LTSP" e o DisklessRemoteBootLinux "DRBL" são projetos gratuitos e de código aberto que muitas escolas e empresas usam para clientes sem disco PXE. Simplifica o custo de mão-de-obra da administração e o custo do produto. Como tudo roda na RAM, a máquina é muito mais rápida. Se você tivesse sorte o suficiente para obter um lote desses chipsets Intel Sata lentos, os clientes DRBL acessando servidores NFS provaram ser muito úteis. Eu não tenho números, mas eu aposto que clientes sem disco DRBL PXE inicializam os SolidStateDrives inicializados localmente. A velocidade do NFS é maior que a do SMB.

    
por 02.11.2013 / 08:45