web-dev-qa-db-fra.com

Le fichier/proc kcore est énorme

Après avoir rencontré une attaque DDOS, /proc/kcore est très énorme, j’utilise une petite classe php pour vérifier l’espace disque actuel et le nombre d’utilisations.

Il montre ce qui suit:

Total Disk Space: 39.2 GB
Used Disk Space: 98 GB
Free Disk Space: 811.6 MB

Ma question est la suivante: est-il prudent de supprimer le fichier /proc/kcore? Ou existe-t-il une solution pour obtenir une taille normale?.

La taille du fichier de /proc/kcore est 140.737.486.266.368 octets

J'ai hébergé mon serveur chez DigitalOcean.

Si vous avez besoin d'informations supplémentaires, merci de demander;)

Merci beaucoup!

Modifier...

df -h renvoie:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         40G   37G  755M  99% /
udev            993M   12K  993M   1% /dev
tmpfs           401M  224K  401M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none           1002M     0 1002M   0% /run/shm

du -shx renvoie:

du -shx *
8.7M    bin
27M     boot
12K     dev
6.3M    etc
4.8M    home
0       initrd.img
229M    lib
4.0K    lib64
16K     lost+found
8.0K    media
4.0K    mnt
4.0K    opt
du: cannot access `proc/3765/task/3765/fd/3': No such file or directory
du: cannot access `proc/3765/task/3765/fdinfo/3': No such file or directory
du: cannot access `proc/3765/fd/3': No such file or directory
du: cannot access `proc/3765/fdinfo/3': No such file or directory
0       proc
40K     root
224K    run
8.0M    sbin
4.0K    selinux
4.0K    srv
0       sys
4.0K    tmp
608M    usr
506M    var
0       vmlinuz

Résultats de lsof | grep deleted:

mysqld     1356      mysql    4u      REG              253,0           0    1835011 /tmp/ib4jBFkc (deleted)
    mysqld     1356      mysql    5u      REG              253,0           0    1835012 /tmp/ibcE99rr (deleted)
    mysqld     1356      mysql    6u      REG              253,0           0    1835013 /tmp/ibrxYEzG (deleted)
    mysqld     1356      mysql    7u      REG              253,0           0    1835014 /tmp/ibK95UJV (deleted)
    mysqld     1356      mysql   11u      REG              253,0           0    1835015 /tmp/iboOi8Ua (deleted)
    nginx     30057       root    2w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30057       root    5w      REG              253,0 37730323404     268273 /etc/nginx/off (deleted)
    nginx     30057       root    6w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30058   www-data    2w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30058   www-data    5w      REG              253,0 37730323404     268273 /etc/nginx/off (deleted)
    nginx     30058   www-data    6w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30059   www-data    2w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
    nginx     30059   www-data    5w      REG              253,0 37730323404     268273 /etc/nginx/off (deleted)
    nginx     30059   www-data    6w      REG              253,0           0     789548 /var/log/nginx/error.log (deleted)
29
Love2Code

En réponse à votre question initiale:

"Est-il possible de supprimer le fichier /proc/kcore? Ou bien existe-t-il une solution Pour le ramener à une taille normale."

Non, ce n'est pas sécuritaire. Eh bien, je ne voudrais pas parier sur ce qui arriverait si vous le supprimiez quand même!

Le répertoire /proc est le point de montage de procfs (exécutez mount et voyez le résultat comme ci-dessous:)

proc on /proc type proc (rw)

procfs est un peu de magie noire; aucun fichier n'est réel. Cela ressemble à un système de fichiers, agit comme un système de fichiers et est un système de fichiers. Mais pas celui qui est stocké sur le disque (ou ailleurs).

/proc/kcore est spécifiquement un fichier qui mappe directement sur chaque octet disponible dans votre mémoire virtuelle ... Je ne suis pas absolument clair sur les détails; les 128 To proviennent de Linux, allouant 47 bits sur les 64 bits disponibles pour la mémoire virtuelle.

(On discute de la limite de 128 To ici: https://unix.stackexchange.com/questions/116640/what-is-maximum-ram-supportable-by-linux )

Quoi qu'il en soit, laissant de côté les limites de mémoire virtuelle codées en dur de Linux - ce que nous en venons de comprendre dans le contexte de votre question est la suivante: /proc/kcore est un fichier système fourni par le système de fichiers procfs virtuel et n'est pas un fichier réel.

Ne le supprimez pas ;-)


Mise à jour: 2016-06-03

Ma réponse ici continue à être régulièrement votée - donc je suppose que les gens cherchent toujours une explication de ce que /proc/kcore est.

Il existe un article utile sur Wikipedia intitulé Tout est un fichier qui donne un peu de contexte. Si vous êtes vraiment curieux, jetez un coup d'œil au système d'exploitation Plan9.

Espérons que ma réponse initiale explique suffisamment la variable kcore elle-même. J'imagine que les lecteurs de cette réponse pourraient être également curieux de connaître d'autres fichiers dans /proc - voici donc d'autres exemples "intéressants".

  • /proc/sys/* est un mécanisme permettant à l'utilisateur (vous) de lire/écrire les détails depuis le cœur de Linux (le noyau et les pilotes associés, etc.). Un exemple mignon d’article r/w est " IP forwarding ":

    Lire:cat /proc/sys/net/ipv4/ip_forward (0 est désactivé, 1 est activé)

    Write:echo 1 > /proc/sys/net/ipv4/ip_forward

    Comme avec kcore, ce n'est pas un vrai fichier. Mais cela agit comme un. Ainsi, lorsque vous écrivez dessus, vous modifiez en fait les paramètres du logiciel plutôt que les octets sur un disque.

  • /proc/meminfo et /proc/cpuinfo sont en lecture seule. Vous pouvez cat ou less les, ou fopen() à partir de votre propre application. Ils vous montrent des détails sur votre matériel (mémoire et CPU).

  • /proc/[0-9]+ sont en fait ID de processus en cours d'exécution sur votre ordinateur! Ce sont (IMHO) de loin la fonctionnalité la plus cool de /proc. À l'intérieur, vous trouverez plus de faux fichiers comme cmdline qui vous indiquent quelle commande a été utilisée pour lancer le processus.

Enfin, il existe d'autres exemples de "systèmes de fichiers intéressants", tels que /proc. Il y a purement en mémoire et "espace utilisateur" pour n'en nommer que deux. Encore une fois, ceux-ci (en général) ne consomment aucun espace disque réel, bien que des outils tels que df et ls puissent signaler des tailles de fichier réelles.

46
wally

Il est tout à fait sûr d'exécuter la commande Sudo rm /proc/kcore. Il va juste dire rm: cannot remove '/proc/kcore': Operation not permitted.

Tous les fichiers de /proc n'existent pas sur votre disque dur et ne peuvent donc pas être supprimés. Ces fichiers représentent des informations sur le système. Par exemple, lorsque vous faites ls /proc, vous demandez au noyau de fournir une liste des processus du système. Si vous exécutez ls -l /proc/22/exe, vous demandez au noyau le chemin du fichier de l'exécutable du processus numéro 22. Et ainsi de suite.

4
tbodt

On dirait que vous devez nettoyer le disque des fichiers supprimés mais réservés. Vous pouvez utiliser la commande 'tune2fs' avec quelque chose comme:

tune2fs -m 1 /dev/<drive>

Cela devrait libérer de l'espace réservé aux blocs et vous donner accès à l'espace disque réservé aux processus privilégiés. Notez que 1 est le pourcentage qui sera ensuite attribué aux processus privilégiés. Ne le faites que si vous disposez de suffisamment d'espace disque pour les processus critiques tels que syslog ou ssh.

REMARQUE: vous ne gagnerez jamais d’espace disque en supprimant les fichiers de '/ proc'. Il s’agit d’un système de fichiers virtuel qui n’a absolument rien à voir avec l’espace disponible sur votre disque dur. 

1
Atari911

veuillez vérifier votre espace de fichier journal. J'ai supprimé tous les journaux d'erreurs et d'accès et mon site Web est en cours d'exécution.

En utilisant cette commande, quel dossier prend plus d’espace.

cd /
Sudo du -sh * 2>/dev/null | sort -h
0
Dinesh Gurjar