Si usted es un administrador de sistemas de profesión o simplemente se ocupa de un servidor comercial doméstico que se está quedando sin espacio en su cuarto de servicio, probablemente necesite averiguar dónde se desperdiciará su espacio en disco.herramientas como esta du
y df
te involucrará. Pero cuando necesita despejar el espacio rápidamente, necesita un tipo diferente de utilidad para llenar los vacíos.
[ Learn how to manage your Linux environment for success. ]
este es mi lugar Principales generadores de informes de consumidores de disco Los servicios públicos son útiles. Esta herramienta de código abierto (GPLv3) le permite despejar el espacio con un mínimo de trabajo de detective.mediante la ejecución topdiskconsumer
Desde cualquier directorio del sistema de archivos, informa el espacio libre total, los archivos más grandes, los directorios y los archivos antiguos, y los archivos eliminados cuyo espacio aún está en uso.
Esta utilidad se puede utilizar para la administración diaria, la solución de problemas de uso del disco en servidores de producción y como herramienta de capacitación para administradores de sistemas junior.
Tabla de Contenidos
antecedentes
Creé este script hace unos años y lo he mantenido (y reescrito) desde entonces. Originalmente estaba mal codificado porque creció orgánicamente. Agregué cada función a medida que necesitaba recopilar información para incluir en las actualizaciones de tickets para justificar las acciones realizadas en el servidor. Mi pequeña frase ingeniosa finalmente se convirtió en un gigante de 2,5 KB y fue ampliamente utilizada por los clientes de una gran empresa de alojamiento. Sin embargo, a excepción de una variable (intNumFiles
) se puede asignar al comienzo del script, que está completamente codificado y se analiza torpemente con utilidades como df
Obtenga estadísticas específicas de una manera muy ineficiente.
He estado planeando reescribirlo como una utilidad de línea de comandos completa, que incluye interruptores para desactivar informes específicos, tiempos de espera, opciones de formato que no sean bbcode y pantallas de ayuda.
Todavía tengo la versión original de este script y me avergonzaría lo malo que fue el código si no fuera por cómo creció orgánicamente y sirvió como una herramienta de enseñanza para mis alumnos. Me enorgullece poder enseñar a los ingenieros junior cómo tomar la información y las herramientas que tienen, y analizar y reutilizar la salida para impulsar otras herramientas.
Instale el generador de informes de consumidores de discos principales
El proceso de instalación es simple. Aquí están los pasos básicos:
1. abierto kit de almacenamiento Un repositorio en un navegador web.
2. Haga clic en el verde el código encima de la lista de archivos.
3. Haga clic en Copiar botón.
4. Abra una terminal y cambie al directorio donde desea descargar el archivo.
5. Tipo git clone
Clona el proyecto.
6. Entrada cd storagetoolkit
Cambie al subdirectorio que Git creó para usted.
7. Entrada sudo chmod a+x
para asegurarse de que el script tiene permisos de ejecución.
8. Enumere los archivos, su nombre de usuario los tendrá:
$ sudo chmod a+x topdiskconsumer
[klazarsk@klazarsk storagetoolkit]$ ls -lh
total 16K
-rw-rw-r--. 1 klazarsk klazarsk 3.4K Jan 6 15:29 README.md
-rwxrwxr-x. 1 klazarsk klazarsk 11K Jan 6 15:29 topdiskconsumer
9. uso sudo
o privilegios de root para copiar el archivo a /usr/bin
u otro directorio del sistema en la ruta de búsqueda (o ~/.local/bin
Si no desea ejecutarlo en el directorio de su sistema, use la cuenta desde la que desea ejecutarlo):
$ sudo cp topdiskconsumer /usr/bin -v
[sudo] password for klazarsk:
'topdiskconsumer' -> '/usr/bin/topdiskconsumer'
[klazarsk@klazarsk storagetoolkit]$ ls -lh /usr/bin/topdiskconsumer
-rwxr-xr-x. 1 root root 11K Jan 6 15:32 /usr/bin/topdiskconsumer
Ahora puede ejecutar el archivo desde cualquier lugar de su sistema.
Encuentre qué archivos y directorios están usando espacio de almacenamiento
Para utilizar esta herramienta, configure el topdiskconsumer
Coloque el archivo en un directorio en la ruta de búsqueda, chmod
Viene como un ejecutable y ejecútelo desde cualquier directorio en el sistema de archivos que desea analizar.
Este script generará un informe del uso general del disco en el sistema de archivos, enumerando los 20 archivos más grandes, los 20 directorios más grandes y los 20 archivos más grandes con más de 30 días. También encontrará «fantasmas» identificando archivos no vinculados (archivos eliminados) que aún ocupan espacio debido a identificadores de archivos abiertos. Incluso muestra el identificador del archivo para que pueda recuperar ese espacio fácilmente.
He combinado los formatos HTML, ANSI y bbcode para encabezados en negrita, siendo ANSI el predeterminado. También incluí opciones de línea de comandos, incluidos tiempos de espera, la capacidad de omitir metadatos y omitir informes para ahorrar tiempo.tener una lista opciones de línea de comando el seguimiento.
Si desea ejecutarlo en sistemas de archivos enormes, le recomiendo utilizar los interruptores de la línea de comandos para desactivar los informes que no le interesan y ejecutarlo en una sesión de pantalla o tmux. Como alternativa, puede establecer un tiempo de espera para que cada informe finalice después de un tiempo específico (la ejecución de una carga con una gran cantidad de archivos puede demorar varios días).
[ Want to test your sysadmin skills? Take a skills assessment today. ]
salida de muestra
Intente ejecutar el ejemplo para ver los cinco principales consumidores de disco en su sistema. A continuación se muestra el resultado, con cada sección limitada a cinco elementos. (Darse cuenta: 5 Largest Directories
Los resultados muestran «Total» como entradas adicionales que exceden el límite de conteo. Esto es a propósito. )
$ sudo ./topdiskconsumer --number 5
#_# BEGIN REPORT
== Server Time at start: ==
Wed Jan 4 13:53:08 EST 2023
== Filesystem Utilization on [ /home ]: ==
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/RHEL-Home xfs 100G 45G 56G 45% /home
== Inode Information for [ /home ]: ==
Filesystem Type Inodes IUsed IFree IUse% Mounted on
/dev/mapper/RHEL-Home xfs 52428800 483742 51945058 1% /home
== Storage device behind directory [ /home ]: ==
/dev/mapper/RHEL-Home
== 5 Largest Files on [ /home ]: ==
21G /home/user/VirtualMachines/rhel8.qcow2
618M /home/user/ceph-common.tar
500M /home/user/scratch/bigFile
405M /home/user/Downloads/working/backup.tar
281M /home/user/.local/shareaaaaaaa1f.file
== 5 Largest Directories on [ /home ]: ==
45G total
45G /home
44G /home/user
21G /home/user/VirtualMachines
18G /home/user/.local/share
18G /home/user/.local
== 5 Largest Files on [ /home ] Older Than 30 Days: ==
21G /home/user/VirtualMachines/rhel8.qcow2
618M /home/user/ceph-common.tar
500M /home/user/scratch/bigFile
405M /home/user/Downloads/working/backup.tar
281M /home/user/abc123.file
== 5 Largest Deleted Files on [ /home ] With Open Handles: ==
Size COMMAND File Handle Filename
4MB chrome /proc/2728808/fd/14 /home/user/.config/foo.pma
== Elapsed Time: ==
0h:0m:30s
== Server Time at completion: ==
Wed Jan 4 13:53:38 EST 2023
#_# END REPORT
[Cheat sheet: Old Linux commands and their modern replacements ]
Use banderas para optimizar la salida
Este script, cuando se ejecuta sin argumentos, identifica el punto de montaje que contiene el directorio de trabajo actual. Luego, realizará un informe a partir del punto de montaje, identificando y enumerando los 20 archivos más grandes, los 20 directorios más grandes y luego los 20 archivos más grandes con más de 30 días.
Puede refinar aún más la salida con argumentos de línea de comando, que puede encontrar en documento (también disponible con --help
Ordenar):
--format
(o-f
) [format]: El título del formato eshtml
,bbcode
(negrita), oansi
(para terminal y texto enriquecido).--path
(o-p
) [path]: establezca la ruta, luegotopdiskconsumer
se ejecutará desde el punto de montaje principal del directorio.--limit
(o-l
) [number]: limita el informe al archivo más grande por sección de informe. El valor predeterminado es 20.--timeout
(o-t
) [duration]: establece un tiempo de espera para cada sección del informe. Tenga en cuenta que especificar un tiempo de espera puede generar resultados incompletos y engañosos.--skipold
(o-o
): Saltar archivos con más de 30 días.--skipdir
(o-d
): Omita el directorio más grande.--skipmeta
(o-m
): Omite metadatos como bloques reservados, horas de inicio y finalización o duración.--skipunlinked
(o-u
): Omitir archivos eliminados con identificadores abiertos.--skipfiles
(o-f
): Omita el archivo más grande.
envolver
Me gusta usar la notación húngara para mis nombres de variables y funciones, prefiero grep -E
Superar egrep
(Esto es solo un elegante alias de script de shell para grep -E
), y generalmente termino las declaraciones de Bash con punto y coma porque hace que mis scripts sean más fáciles de plegar y ajustar en una sola línea.
Puedes acceder al código fuente completo en mi repositorio.
[ Get the guide to installing applications on Linux. ]