Самба слишком мала, несмотря на добавленный жесткий диск.

Вопрос или проблема

Я использую Mac mini с Ubuntu 22.04.5 LTS. Я использую его как файловый сервер. На нем работает samba и почти ничего больше. У него есть 1 ТБ.

1 ТБ всегда было более чем достаточно для меня — я никогда не использую больше 600 ГБ. Однако недавно мне потребовалось больше места. Я взял старый внешний жесткий диск на 5 ТБ и подключил его к Mac mini, затем выполнил sudo mount /dev/sda2 /samba/$myfolder/ext_hd

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

Но вчера я получил огромный 7zip от коллеги. Он весит около 700 ГБ и содержит массу данных. У меня он находится на моем Windows ПК, но я также хотел бы сохранить его на моем файловом сервере, чтобы быть уверенным.

Но хотя на моем внешнем жестком диске еще доступно 4,4 ТБ, я не могу его сохранить. Потому что samba смотрит только на изначально доступное свободное пространство на внутреннем жестком диске, подключенном к Windows ПК через samba (в настоящее время на нем осталось только около 500 ГБ).

Что я могу сделать, чтобы решить эту проблему? Буду очень благодарен любому совету. Есть ли способ сказать samba, чтобы она учитывала смонтированное дополнительное пространство?

.

Ответ или решение

Конечно, давайте рассмотрим вашу проблему более подробно и попробуем предложить подходящее решение для вашей ситуации с использованием Samba на сервере Ubuntu.

Теория

Samba — это программный пакет, который позволяет обеспечить совместимость сетевых протоколов Windows и Unix/Linux. Он предоставляет возможность ПК с Windows подключаться и использовать файловые ресурсы на серверах Linux, как в вашем случае. Одна из потенциальных проблем, с которой вы столкнулись, заключается в том, как Samba управляет дисковым пространством при монтировании различных дисков.

Проблема с доступным пространством на Samba может проистекать из нескольких факторов, наиболее вероятный из которых — это то, как Samba отображает доступное пространство для клиентов Windows. Обычно, когда вы монтируете дополнительный диск, Samba может не обновлять информацию о доступном пространстве, поскольку она по умолчанию берет данные о размере и доступном пространстве из файловой системы, на которой изначально был настроен общий доступ.

Пример

В вашем случае, вы подключили дополнительный внешний жесткий диск объемом 5 ТБ и смонтировали его в определенную папку на вашем исходном диске, в пространстве, которое вы делитесь с Windows через Samba. Хотя у вас реально стало доступно дополнительно 5 ТБ, Samba может отображать свободное пространство только для исходного внутреннего диска. В результате, когда вы пытаетесь копировать большой файл объёмом 700 ГБ, клиент Windows продолжает считать, что свободно только 500 ГБ.

Применение

Чтобы решить эту проблему, следует рассмотреть несколько подходов.

Обновление конфигурации Samba

  1. Параметр dfree command: В конфигурационном файле Samba (/etc/samba/smb.conf) можно указать специальную команду, которая заставляет Samba рассчитывать свободное пространство не по дефолтной логике, а через выполнение пользовательской команды.

    Например, вы можете добавить следующий блок в ваш конфигурационный файл:

    [global]
    dfree command = /usr/local/bin/dfree.sh

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

  2. Создание скрипта dfree.sh: Создайте скрипт, который будет выполнять команду df для подсчета свободного места и возвращать минимум:

    #!/bin/bash
    df -P | awk 'BEGIN {FS=" "} NR>1{print $4, $3}' | awk '{total+=$2; used+=$1} END {print used " " total}'

    Убедитесь, что файл исполняемый:

    chmod +x /usr/local/bin/dfree.sh
  3. Перезагрузка Samba: После изменения конфигурации, перезапустите службу Samba:

    sudo systemctl restart smbd

Проверка разрешений и путей

Убедитесь, что права доступа и владельцы каталогов установлены корректно, чтобы у Samba были все необходимые права для доступа и отображения свободного места на смонтированных дисках.

chown -R $USER:$GROUP /samba/$myfolder
chmod -R 755 /samba/$myfolder

Альтернативный подход: отдельная шаринг-конфигурация

Рассмотрите возможность выделения отдельного общего доступа в Samba для внешнего диска, чтобы повысить прозрачность процессов:

  1. Отдельный раздел: В разделе [global] добавьте новый сервис:

    [external]
    path = /samba/$myfolder/ext_hd
    browseable = yes
    writable = yes
    guest ok = no
    valid users = your_username
  2. Настроить доступ: Обновите свой конфигурационный файл, перезапустите службу и перепроверьте соединение с клиентским ПК.

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

Оцените материал
Добавить комментарий

Капча загружается...