Ubuntu - Brak miejsca na urządzeniu (NTFS)

11

Mam serwer, który przechowuje wiele danych, przechowuję wiele zagnieżdżonych katalogów z milionami plików.

Podczas próby przeniesienia jednego dużego katalogu (~ 700 GB) z jednego dysku na drugi pojawia się błąd:

mv /media/storage3/dir /media/storage4/

"No space left on device"

Ponadto próba utworzenia małego pliku txt na dysku nie działa:

Error opening file '/media/storage4/Untitled Document': No space left on device

Sprawdziłem wiele opcji online, żadna nie działała.

df -h wyjście:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdg7        77G  9.2G   64G  13% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             32G  4.0K   32G   1% /dev
tmpfs           6.3G  1.4M  6.3G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G   76K   32G   1% /run/shm
none            100M   48K  100M   1% /run/user
/dev/sdg6        19G  6.7G   11G  39% /home
/dev/sdb1       440G  278G  140G  67% /var
/dev/sda1       2.8T  2.0T  764G  73% /media/storage1
/dev/sdh1       2.8T  1.6T  1.3T  56% /media/storage2
/dev/sdi1       2.8T  1.7T  1.2T  60% /media/storage3
/dev/sdf1       2.8T  876G  1.9T  32% /media/storage4

wyjście df -i:

Filesystem         Inodes    IUsed      IFree IUse% Mounted on
/dev/sdg7         5079040   514215    4564825   11% /
none              8242449        2    8242447    1% /sys/fs/cgroup
udev              8239750      611    8239139    1% /dev
tmpfs             8242449      696    8241753    1% /run
none              8242449        5    8242444    1% /run/lock
none              8242449        4    8242445    1% /run/shm
none              8242449       28    8242421    1% /run/user
/dev/sdg6         1220608   218613    1001995   18% /home
/dev/sdb1        29310976 12863877   16447099   44% /var
/dev/sda1       858436804 41630853  816805951    5% /media/storage1
/dev/sdh1      1356948436 38728057 1318220379    3% /media/storage2
/dev/sdi1      1217505624 34748869 1182756755    3% /media/storage3
/dev/sdf1      2048962648 36308921 2012653727    2% /media/storage4

Czytając online, ludzie mówili, że podobne problemy zdarzają się z powodu dostępu do ogromnej liczby plików i że ustawienie fs.inotify.max_user_watches na dużą liczbę może go rozwiązać, zwiększyłem go z 8192 do 1000000, ale to nie pomogło.

PeterN
źródło
Próbowałeś lsof +L1? man lsof: Specyfikacja formularza + L1 wybierze otwarte pliki, które zostały rozłączone.
AB
Nie ma powodu, mvaby korzystać z inotifymechanizmu. Spójrz tutaj : niektóre procesy mogą nadal korzystać z niepowiązanych plików z docelowego systemu plików.
John WH Smith
Usunięte pliki nadal pojawiałyby się w użyciu określonym przez df...
Stephen Kitt
@StephenKitt Nie. Pliki niepowiązane, które są przechowywane przez podsystem plików z powodu odwoływania się do i-węzła, będą. Te, które zostały całkowicie nieużywane i niepowiązane („usunięte”) nie są wyświetlane. Zobacz tutaj .
John WH Smith
1
Sprawdź ntfsinfo -m /dev/DEVwskazówki. Jest częścią NTFS-3G. Pamiętaj również, że na jednym woluminie NTFS może znajdować się tylko 2 ^ 32 pliki. Nie ufałbym żadnemu natywnemu narzędziu linux / unix, aby dokładnie raportować liczbę i-węzłów NTFS
mikky

Odpowiedzi:

1

Uruchom następujące czynności:

lsof -s | sort -nrk 7 | head

Zobaczysz dane wyjściowe w następujący sposób:

firefox    2997                     j   52rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   50rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j    3rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   39rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   31ur     REG              252,0 10485760    5505182 /some/path

Uwaga; powyższe jest tylko przykładem, który musisz wykorzystać, aby ocenić wykorzystanie przestrzeni.

O produkcji:

  • Kolumna 7 to wielkość używanej przestrzeni.
  • Kolumna 4 to deskryptor pliku.

Możesz usunąć zawartość deskryptora pliku, aby odzyskać to miejsce:

cat /dev/null > /proc/2997/fd/50

Oczywiście zniszczy to wszystkie dane w tym deskryptorze pliku.


źródło
Jeśli problemy wystąpią ponownie, spróbuję
PeterN
0

Możesz spróbować tar, aby skopiować wszystkie dane, a następnie usunąć je później:

cd /media/storage3/; tar cfp - ./dir | ( cd /media/storage4; tar xfp - )

Pozwoli to zachować całą własność, uprawnienia i linki

Chad Smith
źródło
Żadna kopia nie działała. Nie tylko to, że utworzenie prostego pustego pliku nie zwróciło wyjątku miejsca
PeterN
0

Chciałbym użyć, rsync -avrz storage3 storage4a następnie usunąć pliki później, ale mam inne pytanie, dlaczego masz te udziały za pomocą systemu plików NTFS, jeśli używasz Linuksa (Ubuntu), to wybrałbym ext4 lub ReiserFS, ButterFS. JEŻELI te udziały znajdują się na pudełku Windows, spróbuj przenieść te pliki z Windows do Windows za pomocą robocopy, co jest doskonałe pod tym względem. Robocopy działa głównie jak rsync.

strona podręcznika dla rsync: http://linux.die.net/man/1/rsync

strona pomocy dla robocopy: https://technet.microsoft.com/en-us/library/cc733145.aspx

strona pomocy technicznej dla sterowników 3g-NTFS dla systemu Linux: www.tuxera.com/community/open-source-ntfs-3g/

Często zadawane pytania dotyczące 3g-NTFS: www.tuxera.com/community/ntfs-3g-faq/

Podejrzewam, że coś powinno zostać naprawione w sterownikach systemu plików NTFS, których używasz w instalacji Ubuntu, jakiej dystrybucji systemu NTFS używasz, w jaki sposób zamontowałeś dyski, czy są one lokalnie podłączone do urządzenia Ubuntu, na którym siedzisz, czy też są zamontowane używasz iSCSI z SAN?

Rozwiązywanie problemów polega na czymś więcej niż tylko: „Nie mogę przenieść moich plików, które znajdują się w systemie plików NTFS i korzystam z Ubuntu, aby je przenieść”.

OMG-1
źródło
Jak wspomniano, żadna kopia nie działała, próbowałem różnego rodzaju poleceń rsync. Ale nawet utworzenie pustego pliku w magazynie4 zwróciło wyjątek. \ n Powodem korzystania z NTFS jest to, że mamy inne serwery, które działają pod Windowsem, i chcieliśmy umożliwić łatwy transfer dysków z jednego serwera na drugi. Patrząc wstecz, nie używałbym NTFS z powodu wszystkich problemów, które ze sobą niesie, Ubuntu jest bardzo niestabilny z zamontowaniem NTFS. \ n Dyski są podłączone kablem SATA bezpośrednio do płyty głównej komputera, bez SAN ani niczego. Jest to bezpośrednie mocowanie w systemie Linux.
PeterN
Poradziłbym ci dwie rzeczy, gdy korzystasz z technologii MS przejdź do czystego MS, użyj serwera plików Microsoft Windows, jeśli potrzebujesz NTFS, w przeciwnym razie skorzystaj z ext4 lub innego systemu plików Linux i udostępnij dysk Smb.
OMG-1
Zaoszczędź sobie problemów i nigdy nie próbuj łączyć systemu Windows i Linux. Żadna pomoc nie uratuje cię na dłuższą metę, ostatecznie to zawsze skończy się łzami. Wydaje się, że to problem z uchwytami i-węzłów lub plików, ale kiedy umieścisz NTFS w miksie ... bomba zegarowa. Jeśli twoje środowisko potrzebuje interakcji Linuksa i NTFS, umieść NTFS na serwerze Windows i wykonaj interakcję w ten sposób. Nie próbuje połączyć się w tym samym systemie.
Baazigar