Bruab Schrader publicó en su blog un curioso truco de baja tecnología que me pareció especialmente interesante por lo anti-intuitivo que resulta. Lo ha titulado simplemente Why All My Servers Have an 8GB Empty File y sirve para evitar uno de los problemas más típicos de muchos servidores, el temido «disco lleno».
El caso es que cabría preguntarse por qué alguien querría guardar un fichero gigantesco en su servidor para evitar problemas de «disco lleno» si al hacerlo precisamente se llena un poco más el disco. Tal y como explica Schrader el caso es que en muchas máquinas Linux y de otro tipo cuando se llenan suele ser algo tanto difícil de detectar como de recuperar rápidamente. ¿Puedes ampliar el disco en cuestión de minutos? Normalmente, no. ¿Qué borras cuando el disco está lleno? Lo que no sirva. ¿Estás seguro de que eso que pretendes borrar no sirve? Mmm…
El truco es que si cuando tienes el disco con una ocupación adecuada, digamos 30 de 100 GB, añades un «fichero falso» o «fantasma» de 8 GB [el tamaño puede variar] si llega el temido momento del fallo por «disco lleno» simplemente borras ese fichero y mágicamente tendrás a tu disposición un montón de GB libres. Y es entonces cuando ganas tiempo para buscar otra solución más adecuada y ponerla en marcha, ya sea borrar otras cosas, ampliar el espacio en disco, etcétera.
Una forma simple de crear el fichero en cuestión es ejecutando:
head -c 8000000000 /dev/urandom > random_file.txt
o bien (es más rápido, pero sólo admite hasta 2,1 GB)
dd if=/dev/zero of=random_file.txt bs=2000000000 count=1
o si se utiliza Mac OS X:
mkfile 8g random_file.txt
(donde el número indica cuántos bytes tendrá el fichero fantasma en cuestión). En el primer caso el contenido es aleatorio –y por tanto no se puede comprimir– y según se configure la copia de seguridad también ocupará espacio allí, por lo que tal vez sea mejor eximirlo de la copia. Las otras variantes quedan simplemente llenas de ceros y en las copias comprimidas ocupan mucho menos.
Lo del «disco lleno» lo hemos vivido más de una vez en el servidor en el que alojamos el blog, donde aparecía creando caos y confusión de forma impredecible porque los logs crecían sin control, o había demasiadas copias de seguridad mal gestionadas, algo que ya solucionamos hace tiempo. (Ayuda mucho recibir un mini-informe semanal por correo). En algunos momentos tras entender cuál era el problema tuvimos que «borrar cosas» cruzando los dedos para no perder más tiempo y volver a tenerlo funcionado lo antes posible, y hubiera estado bien tener esta especie de «solución salvavidas» al alcance de un borrado rápido de un fichero concreto.
Según cómo se mire, el truco puede compararse con llevar piedras en una mochila cuando te persigue un león: si las arrojas al suelo, corres más rápido y escapas más fácilmente… pero podrías no llevarlas desde un principio y quizá así no te perseguiría el león (!) En fin, quizá sea por eso por lo que algunos atletas entrenan con piedras, para anticiparse a un «escenario peor».