Linux: Menghadirkan sistem file yang lebih besar dari yang sebenarnya?

2

Adakah yang tahu apakah mungkin untuk memiliki sistem file Linux kecil tampaknya ruang bebas tanpa batas (atau sangat besar)?

Kami memiliki server Samba dengan banyak sistem file, semua tersedia dari sistem file "root" kecil yang hanya berisi symlink ke sistem file nyata (kami menggunakan tautan lebar dalam samba). Tidak ada data yang akan diletakkan di "root" ini, hanya symlinks.

Masalahnya adalah bahwa klien seseorang (windows / mac) memeriksa ukuran share ("root") dan menolak untuk menyalin data di sana jika ukurannya tampaknya tidak mencukupi, bahkan jika ada banyak ruang di lokasi sebenarnya (mis. Di mana poin symlink).

AFAICS, Samba tidak dapat memalsukan ruang disk, tetapi mungkin beberapa filesystem bisa? Adakah yang punya saran di sini?

Hans Peter
sumber

Jawaban:

0

Anda dapat menggunakan salah satu opsi global Samba untuk menyelesaikan masalah ini, seperti yang dibahas sini . Halaman Web ini secara eksplisit menyatakan:

Opsi global ini digunakan pada sistem yang secara keliru menentukan ruang kosong yang tersisa pada disk. Sejauh ini, satu-satunya sistem yang dikonfirmasi yang membutuhkan set opsi ini adalah Ultrix. Tidak ada nilai default untuk opsi ini, yang berarti bahwa Samba sudah tahu bagaimana cara menghitung ruang disk kosong sendiri dan hasilnya dianggap dapat diandalkan. Anda dapat menimpanya sebagai berikut:

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

Opsi ini harus menunjuk ke skrip yang harus mengembalikan total ruang disk dalam satu blok, dan jumlah blok yang tersedia. Dokumentasi Samba merekomendasikan yang berikut ini sebagai skrip yang dapat digunakan:

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

Pastikan saja skrip di atas telah dimodifikasi untuk memasukkan semua sistem file Anda yang berbeda, dan itu mengembalikan digabungkan angka untuk jumlah semua sistem file. Atau sebagai alternatif, untuk sistem file tertentu yang ingin Anda gunakan.

MariusMatutiae
sumber
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
Daniel Pfeilsticker
sumber
1
Bisakah Anda jelaskan bagaimana skrip ini akan membantu OP
Romeo Ninov
Sukai halaman ini "googling" dengan masalah yang sama. Ini adalah skrip "/ usr / local / bin / dfree" yang diposting / disebutkan dalam jawaban pertama. Dimodifikasi seperti yang disarankan untuk menjumlahkan ruang beberapa drive.
Daniel Pfeilsticker