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)
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.
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.
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.
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