Как выполняется сетевое программное обеспечение?

Я хотел бы понять, как работает сетевое программное обеспечение. Например, на моем месте работы у нас есть программный сервер. Каждый клиентский компьютер (сотни из них) автоматически монтирует каталоги с сервера программного обеспечения при загрузке. Например, программа, подобная Matlab, устанавливается только один раз на сервере программного обеспечения, но каждый клиентский компьютер может запустить экземпляр Matlab.

Что происходит под капотом?

Скажем, я запускаю /opt/bin/matlab и /opt/ монтируется с сервера программного обеспечения, что происходит, когда я нажимаю Enter для выполнения Matlab на клиентской машине? Процесс выполняется на клиентской машине, и я уже сузил, что нет никакой неявной или скрытой передачи файлов (например, копирования Matlab на мой компьютер временно для этого сеанса), запустив Matlab на компьютере с почти нулевым дисковым пространством ( т.е. недостаточно места для передачи).

  • Поскольку Matlab был установлен на сервере, как работает мой клиентский компьютер?
  • Какой механизм контролирует это?
  • Что происходит за кулисами?

  • дистанционное управление vlc с использованием скрипта через ssh
  • Нам нужно, чтобы chmod сценарий оболочки, прежде чем он может быть rsh
  • VNC & SSH: локальный (win-putty) -> hop (linux) -> remote (linux)
  • Установка CMUSphinx на удаленном сервере /
  • Почему ssh -nq -t не может видеть переменную окружения?
  • Цвет шрифтов на удаленном экране терминала при использовании VI в linux
  • Подключение к Samba Share через туннель OpenVPN
  • ssh не возвращается при выполнении удаленного процесса в bg
  • 2 Solutions collect form web for “Как выполняется сетевое программное обеспечение?”

    Технология, которую они используют для этого, называется NFS – Network File System . Они могут дополнительно использовать другую технологию с NFS под названием automounts, в частности Autofs, если это Linux.

    NFS

    NFS позволяет папкам с одной машины быть доступными для другого. В этом нет ничего волшебного. Существует клиент и сервер, которые облегчают это соединение. Когда вы обращаетесь к одному из этих каталогов, который был установлен в вашей системе через клиент NFS, вызовы выполняются из вашей системы для передачи информации о каталоге и его содержимом.

    Если один из клиентов обращается к файлу в каталоге, сервер NFS также передает содержимое этого файла клиенту NFS.

    Autofs

    Автоматизация – это технология, позволяющая клиентской системе временно обращаться к общему удаленному ресурсу, например NFS. То есть клиентская система NFS имеет доступ к этому удаленному ресурсу NFS. Но он не активно «использует» его, пока кто-то не попытается получить доступ к общему каталогу. Только тогда клиент NFS пытается «подключить» этот удаленный каталог и его содержимое.

    Жизненный цикл содержимого файла

    В любом случае нет никакой неявной передачи файлов клиентам NFS. Иными словами, они физически не копируются клиентам в долгосрочной перспективе. Файлы передаются клиентам, когда они пытаются получить к ним доступ. После использования они исчезли; они не сохраняются у клиентов в долгосрочной перспективе.

    Чтобы дать вам приблизительную идею, вы можете использовать программу strace чтобы увидеть некоторые из системных вызовов, которые выполняются в виде прогона программы. Итак, используя эту команду, например:

     $ strace echo "hello world" > afile 

    Мы могли видеть, как файл записывается в систему. Мы могли бы также использовать эту форму для записи в установленный каталог NFS:

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

    Оба эти следа практически идентичны.

    ### Локальная запись

     $ 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 

    ### NFS write

     $ 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 

    Чтение только немного интереснее, но все же в основном идентично.

    ### Локальное чтение

     $ 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 

    ### NFS read

     $ 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 

    Прогулка по бассейну

    Если вам просто интересно узнать о протоколе NFS, вы можете узнать больше о том, как он работает здесь, в разделе « Основы протокола NFS» . Как правило, легко получить основные понятия о том, как это работает, и есть пример запроса NFS, чтобы дать вам общее представление о том, как все работает.

    Дайвинг глубже

    Если вы действительно хотите заглянуть за занавеску, вам, скорее всего, понадобится набор инструментов для сбора сетевого трафика, чтобы вы могли видеть поток бит между сервером NFS и одним из его клиентов. Такие инструменты, как tcpdump или wireshark , скорее всего, будут вашими друзьями в этом глубоком погружении.

    Я бы посоветовал вам не тратить свое время, если вы действительно не любопытный тип, так как глубокие погружения, подобные этому, требуют большого мастерства и знакомства с набором инструментов Unix, которые я бы рассматривал только тех, кто использовал Unix в течение дюжины или около того года.

    Этот сайт поможет вам в этом, если вам действительно интересно:

    LinuxTerminalServerProject «LTSP» и DisklessRemoteBootLinux «DRBL» – это бесплатные и открытые проекты, которые многие школы и предприятия используют для загрузки бездисковых клиентов PXE. Упрощает административную стоимость рабочей силы и стоимость продукта. Поскольку все работает в ОЗУ, машина работает намного быстрее. Если вам посчастливилось получить партию этих медленных чипсетов Intel sata, клиенты DRBL, обращающиеся к серверам NFS, оказались очень полезными. У меня нет номеров, но я уверен, что DRBL PXE, загруженные бездисковыми клиентами, сдувают локально загруженные SolidStateDrives. Скорость NFS больше, чем SMB.

    Linux и Unix - лучшая ОС в мире.