← Назад к вопросам

Как работает технология shared folders?

1.7 Middle🔥 172 комментариев
#Linux и администрирование#Виртуализация

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Принцип работы технологии Shared Folders

Shared Folders (Общие папки) — это технология совместного доступа к файлам и каталогам по сети, позволяющая нескольким пользователям или системам взаимодействовать с одними и теми же данными. В основе лежит сетевая файловая система, где ресурсы предоставляются сервером и монтируются клиентами как локальные диски или каталоги.

Ключевые компоненты архитектуры

  1. Сервер (или хост): система, на которой физически расположены данные и запущена служба общего доступа (например, smbd для SMB, nfsd для NFS).
  2. Клиент: система, подключающаяся к общей папке для чтения или записи.
  3. Сетевой протокол: определяет правила взаимодействия. Основные:
    *   **SMB/CIFS** (Server Message Block / Common Internet File System): доминирует в экосистеме Windows, также реализован в *Samba* для Linux.
    *   **NFS** (Network File System): стандарт для Unix-подобных систем (Linux, macOS).
    *   **AFP** (Apple Filing Protocol): исторически для macOS.
  1. Службы и демоны: фоновые процессы, обрабатывающие сетевые запросы (Samba service, NFS server).

Процесс работы на примере SMB/CIFS

  1. Объявление ресурса (Шаринг):
    Администратор на сервере создает папку и назначает её для общего доступа, определяя права (например, "Чтение/Запись для группы разработчиков").

```powershell
# Пример PowerShell (Windows Server): создание общей папки
New-SmbShare -Name "ProjectX" -Path "C:\Projects\X" -FullAccess "DevTeam"
```

```bash
# Пример настройки Samba (Linux) в /etc/samba/smb.conf
[project_x]
path = /srv/projects/x
valid users = @devteam
writable = yes
```

2. Обнаружение и подключение клиента:

    Клиент обнаруживает сервер через сетевой просмотр (NetBIOS для SMB) или по прямому адресу. Затем выполняет аутентификацию и монтирует папку.

```bash
# Linux: монтирование SMB-шары
sudo mount -t cifs //server_ip/ProjectX /mnt/projectx -o username=user1,password=pass

# Windows: подключение сетевого диска (команда в PowerShell)
New-PSDrive -Name "X" -PSProvider FileSystem -Root "\\server_ip\ProjectX" -Persist
```

3. Обработка операций ввода-вывода:

    Когда клиент пытается прочитать файл, его ОС отправляет по сети **SMB-запрос** (например, `READ`). Серверный демон (`smbd`) проверяет права доступа, читает данные с локального диска и отправляет **SMB-ответ** с содержимым файла клиенту. Запись работает аналогично.

```python
# Упрощённая логика сервера на псевдокоде
def handle_smb_read_request(file_path, user):
    if check_permissions(user, file_path, "read"):
        data = read_local_file(file_path)
        return SmbResponse(data=data, status="OK")
    else:
        return SmbResponse(error="ACCESS_DENIED")
```

Критические аспекты для DevOps-инженера

  • Производительность и задержки: Сетевые операции медленнее локальных. Для NFS часто используют кеширование (атрибутов и данных) и UDP для операций чтения. В SMB 3.0+ появилось SMB Direct (использование RDMA) для минимизации задержек.
  • Согласованность данных (Coherency): При одновременной записи нескольких клиентов необходим механизм блокировок. Opportunistic locks (oplocks) в SMB и связка lockd+statd в NFS позволяют временно кешировать изменения на клиенте, а затем атомарно применять их на сервере, предотвращая конфликты.
  • Безопасность:
    *   **Аутентификация**: Интеграция с Active Directory (Kerberos) для SMB или `krb5` для NFSv4.
    *   **Авторизация**: Контроль списков доступа (ACL/NTFS-права).
    *   **Шифрование трафика**: **SMB 3.0+** поддерживает сквозное шифрование AES-128-GCM. Для NFS можно использовать **Kerberos с шифрованием** или `sec=krb5p`.
  • Отказоустойчивость и кластеризация: В современных реализациях, таких как SMB Transparent Failover, клиентское подключение автоматически переносится на другую ноду кластера при сбое без разрыва сессии.

Пример NFS-экспорта в инфраструктуре DevOps

В облачных средах (AWS, GCP) общие папки часто предоставляются как управляемые сервисы (Amazon EFS, Azure Files, Google Filestore), абстрагирующие настройку сервера.

# На сервере NFS: экспорт директории /data для доверенной сети
# /etc/exports
/data 10.0.1.0/24(rw,sync,no_subtree_check,no_root_squash)

# На клиенте (Kubernetes Worker Node): монтирование для Pod
sudo mount -t nfs -o vers=4.1 10.0.1.100:/data /mnt/k8s-storage
# Пример PersistentVolume в Kubernetes, использующего NFS
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 10.0.1.100
    path: "/data"

Технология Shared Folders остается фундаментальным строительным блоком для распределённых систем, CI/CD пайплайнов (общие артефакты), кластеров баз данных (общие конфиги) и сред разработки. Понимание её внутренних механизмов, протоколов и тонкостей производительности критически важно для проектирования надежной и эффективной инфраструктуры.

Как работает технология shared folders? | PrepBro