Linux: Apresentando um sistema de arquivos maior que o real?

2

Alguém sabe se é possível ter um pequeno sistema de arquivos Linux com aparentemente espaço livre ilimitado (ou muito grande)?

Temos um servidor Samba com muitos sistemas de arquivos, todos disponíveis a partir de um pequeno sistema de arquivos "raiz" que contém apenas links simbólicos para os sistemas de arquivos reais (usamos links largos no samba). Nenhum dado jamais será colocado nessa "raiz", apenas links simbólicos.

O problema é que os clientes smb (windows / mac) verificam o tamanho do compartilhamento ("root") e se recusam a copiar os dados se o tamanho parece ser insuficiente, mesmo que haja bastante espaço no local real ( ou seja, onde o link simbólico aponta).

AFAICS, o Samba não pode falsificar espaço em disco, mas talvez algum sistema de arquivos possa? Alguém tem alguma sugestão aqui?

    
por Hans Peter 31.08.2015 / 17:03

2 respostas

0

Você pode usar uma das opções globais do Samba para resolver esse problema, conforme discutido aqui . Esta página da Web declara explicitamente:

This global option is used on systems that incorrectly determine the free space left on the disk. So far, the only confirmed system that needs this option set is Ultrix. There is no default value for this option, which means that Samba already knows how to compute the free disk space on its own and the results are considered reliable. You can override it as follows:

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

This option should point to a script that should return the total disk space in a block, and the number of available blocks. The Samba documentation recommends the following as a usable script:

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

Apenas certifique-se de que o script acima seja modificado para incluir todos os seus diferentes sistemas de arquivos e que ele retorne os valores combinados para a soma de todos os sistemas de arquivos. Ou alternativamente, para o sistema de arquivos específico que você deseja usar.

    
por 31.08.2015 / 18:51
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
    
por 08.03.2016 / 12:26