2

Кто-нибудь знает, возможно ли иметь маленькую файловую систему Linux с явно безграничным (или очень большим) свободным пространством?

У нас есть сервер Samba с большим количеством файловых систем, все из которых доступны из небольшой "корневой" файловой системы, которая содержит только символические ссылки на реальные файловые системы (мы используем широкие ссылки в samba). Никакие данные никогда не будут помещены в этот "корень", только символические ссылки.

Проблема заключается в том, что клиенты smb (windows/mac) проверяют размер общего ресурса ("root") и отказываются копировать туда данные, если размер кажется недостаточным, даже если в реальном месте достаточно места (т.е. где символические ссылки).

AFAICS, Samba не может подделать дисковое пространство, но, возможно, какая-то файловая система может? Есть ли у вас какие-либо предложения здесь?

2 ответа2

0
#!/bin/bash

disks=()
disks+=('/dev/disk/by-label/usb_4tb_wd')
disks+=('/dev/mapper/centos-root')

# http://superuser.com/questions/965321/linux-presenting-a-larger-than-real-file-system
# Filesystem      1K-blocks       Used  Available Use% Mounted on
# /dev/sdb1      3845532688 2577688240 1072495968  71% /mnt/usb_4tb_wd
#                3845532688            1072495968
df_total=0
df_available=0

for disk in "${disks[@]}" ; do
  ((df_total     = df_total     + $(df $disk | tail -1 | awk '{print $2}') ))
  ((df_available = df_available + $(df $disk | tail -1 | awk '{print $4}') ))
done

echo "$df_total $df_available"

exit 0
0

Вы можете использовать один из глобальных параметров Samba для решения этой проблемы, как описано здесь. Эта веб-страница прямо заявляет:

Этот глобальный параметр используется в системах, которые неправильно определяют свободное место на диске. Пока единственной подтвержденной системой, которая нуждается в этом наборе опций, является Ultrix. Для этой опции нет значения по умолчанию, что означает, что Samba уже знает, как самостоятельно вычислять свободное место на диске, и результаты считаются надежными. Вы можете изменить это следующим образом:

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

Эта опция должна указывать на скрипт, который должен возвращать общее дисковое пространство в блоке и количество доступных блоков. Документация Samba рекомендует следующее в качестве используемого сценария:

#!/bin/sh
 df $1 | tail -1 | awk '{print $2" "$4}'

Просто убедитесь, что приведенный выше скрипт модифицирован, чтобы включить все ваши различные файловые системы, и что он возвращает объединенные цифры для суммы всех файловых систем. Или, в качестве альтернативы, для конкретной файловой системы, которую вы хотите использовать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .