Ubuntu - Aucun espace laissé sur l'appareil (NTFS)

11

J'ai un serveur qui stocke beaucoup de données, je garde de nombreux répertoires imbriqués contenant des millions de fichiers.

En essayant de déplacer un gros répertoire (~ 700 Go) d'un disque à un autre, j'obtiens une erreur:

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

"No space left on device"

De plus, essayer de créer un petit fichier txt sur le disque ne fonctionne pas:

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

J'ai vérifié de nombreuses options en ligne, aucune n'a fonctionné.

sortie df -h:

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

sortie 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

En lisant en ligne, les gens ont dit que des problèmes similaires se produisent en raison de l'accès à une énorme quantité de fichiers et que le fait de définir fs.inotify.max_user_watches à un niveau élevé pourrait le résoudre, je l'ai augmenté de 8192 à 1000000 mais cela n'a pas aidé.

PeterN
la source
As-tu essayé lsof +L1? man lsof: Une spécification du formulaire + L1 sélectionnera les fichiers ouverts qui ont été dissociés.
AB
Il n'y a aucune raison mvd'utiliser le inotifymécanisme. Jetez un œil ici : certains processus peuvent encore utiliser des fichiers non liés du système de fichiers de destination.
John WH Smith
Les fichiers supprimés apparaîtront toujours dans l'utilisation donnée par df...
Stephen Kitt
@StephenKitt Non. Les fichiers non liés qui sont détenus par le sous-système de fichiers en raison du référencement des inodes le seront. Ceux qui ont été complètement inutilisés et non liés ("supprimés") n'apparaissent pas. Voyez ici .
John WH Smith
1
Vérifiez les ntfsinfo -m /dev/DEVindices. Cela fait partie de ntfs-3g. Notez également qu'il ne peut y avoir que 2 ^ 32 fichiers sur un seul volume NTFS. Je ne ferais confiance à aucun outil natif linux / unix pour signaler le nombre d'inodes NTFS avec précision.
mikky

Réponses:

1

Exécutez ce qui suit:

lsof -s | sort -nrk 7 | head

Vous verrez une sortie comme ceci:

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

Remarque; ce qui précède est juste un exemple dont vous aurez besoin d'utiliser votre jugement pour trouver l'utilisation de l'espace.

À propos de la sortie:

  • La colonne 7 est la taille de l'espace utilisé.
  • La colonne 4 est le descripteur de fichier.

Vous pouvez supprimer le contenu du descripteur de fichier pour récupérer cet espace:

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

De toute évidence, cela détruira toutes les données de ce descripteur de fichier.


la source
Si les problèmes se reproduisent, je vais essayer
PeterN
0

Vous pouvez essayer un tar pour copier toutes les données, puis les supprimer ensuite:

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

Cela préservera tous les droits de propriété, autorisations et liens

Chad Smith
la source
Aucune copie n'a fonctionné .. Non seulement cela, la création d'un simple fichier vide n'a renvoyé aucune exception d'espace
PeterN
0

J'aurais utilisé rsync -avrz storage3 storage4puis supprimé les fichiers par la suite, mais j'ai une autre question: pourquoi avez-vous ces partages en utilisant le système de fichiers NTFS si vous utilisez Linux (Ubuntu), alors j'aurais opté pour ext4 ou ReiserFS, ButterFS. SI ces partages se trouvent sur une boîte Windows, essayez de déplacer ces fichiers de Windows vers Windows en utilisant robocopy, ce qui est excellent à cet égard. Robocopy fonctionne principalement comme rsync.

page de manuel pour rsync: http://linux.die.net/man/1/rsync

page d'aide de robocopy: https://technet.microsoft.com/en-us/library/cc733145.aspx

page de support pour les pilotes 3g-ntfs pour Linux: www.tuxera.com/community/open-source-ntfs-3g/

FAQ pour 3g-ntfs: www.tuxera.com/community/ntfs-3g-faq/

Je soupçonne que quelque chose devrait être corrigé dans les pilotes du système de fichiers NTFS que vous utilisez dans votre installation Ubuntu, quelle distribution de NTFS utilisez-vous, comment avez-vous monté les disques, sont-ils connectés localement à la boîte ubuntu sur laquelle vous êtes assis ou sont-ils montés utiliser iSCSI à partir d'un SAN?

Il y a plus à ce dépannage que, juste "Je ne peux pas déplacer mes fichiers, ils se trouvent sur NTFS et j'exécute ubuntu pour les déplacer."

OMG-1
la source
Comme mentionné, aucune copie n'a fonctionné, j'ai essayé toutes sortes de commandes rsync. Mais, même la création d'un fichier vide sur storage4 a renvoyé une exception. \ n La raison d'utiliser NTFS est que nous avons d'autres serveurs qui exécutent des fenêtres et que nous voulions permettre un transfert facile des disques d'un serveur à un autre. Rétrospectivement, je n'aurais pas utilisé NTFS à cause de tous les problèmes qu'il apporte, Ubuntu est très instable avec un montage NTFS. \ n Les disques sont connectés via un câble SATA directement à la carte mère de l'ordinateur, pas de SAN ou quoi que ce soit. C'est un montage direct sur le système Linux.
PeterN
Je vous conseillerais deux choses, lorsque vous utilisez des technologies MS, passez au MS pur, utilisez un serveur de fichiers Microsoft Windows si vous avez besoin d'avoir NTFS, sinon allez avec ext4 ou un autre système de fichiers Linux et partagez le disque avec Smb.
OMG-1
Enregistrez-vous quelques problèmes et n'essayez jamais de combiner Windows et Linux. Aucune aide ne vous sauvera à long terme, cela finira toujours en larmes. Cela semble être un problème avec les poignées d'inode ou de fichier, mais lorsque vous mettez NTFS dans le mix ... bombe à retardement. Si votre environnement a besoin d'une interaction entre Linux et NTFS, placez le NTFS sur un serveur Windows et effectuez l'interaction de cette façon. Ne pas essayer de se combiner sur le même système.
Baazigar