Una cosa que puede ser útil para un Prestashop es ponerlo en modo catálogo. Cuando hacemos esto, Prestashop se limitará a sólo mostrar los productos que tengamos visibles. Además se deshabilitarán todas las funcionalidades de una tienda online. Es decir, que no se podrá añadir productos al carro ni hacer la compra.
Sin embargo, se podrá seguir trabajando en el panel de control todo lo que necesitemo. Además, en el front, los visitantes seguirán pudiendo visitar los productos, buscarlos, ver las fichas detalladas, navegar por las categorías.. Así que si no queremos poner a la venta productos lo que tenemos que hacer es poner Prestashop en modo catálogo.
Cómo
En el panel de contrl entramos en Preferencias > Productos activamos el modo catálogo como se muestra en la imagen siguiente y le damos a guardar:
Una de las alternativas de almacenamiento en la nube más prometedoras es Mega. Proviene de la antigua Megaupload, de la mano de Kit Dotcom, fundador de Megaupload. Lo pusieron en marcha Kim junto a su equipo de trabajo, parece que como respuesta al cierre y confiscado de Megaupload debido a la piratería. Mega puede parecer algo novedoso, sin embargo, no es más que el mismo sistema de almacenamiento en la nube de archivos pero mucho más elaborado que el anterior. Salió al mercado hace ya cuatro años, en el 2013. Fue tanta la expectativa que hubo millones de usuarios que se registraron en muy poco tiempo hasta colapsar sus servidores. A día de hoy Kim Dotcom se ha desvinculado del proyecto, y navegando un poco puedo leer reseñas que hablan que hay alrededor de 50 millones de usuarios registrados en Mega.
Sus principales bazas en el mercado del almacenamiento en la nube han sido dos: los famosos 50 Gigas gratis, y su esfuerzo por la privacidad de los usuarios.
¡Hola de nuevo! Hoy traigo otro pequeño HOWTO para configurar en tu propio ordenador una instalación de Prestashop que tengas en Internet. Muchas veces podemos andar trabajando directamente en un Prestashop. Pero si queremos modificarlo sin peligro de romperlo, o llevándolo al extremo en sus modificaciones. Al final no hay tu tía que valga, no nos queda otra opción que instalarnos localmente el susodicho Prestashop.
Herramientas
Antes que nada, doy por sentado que si estás aquí ya habrás configurado algún que otro XAMPP, LAMPP o WAMPP. Lo recomiendo para los newbies, porque es muy sencillo instalar. Es el pack completo de programas necesarios para hacer webs localmente. AMPP se refiere a Apache, MariaDB (sustituto de Mysql), PHP y Perl; mientras que X es para X OS, L para Linux y W para Windows. Los tenemos aquí:
Estas semanas atrás hemos tenido algunos problemas en algunos WordPress. Recurrentemente, las páginas web daban resultados en blanco. Era raro pues no teníamos registros de bloqueo. No había saltado el cortafuegos por poner mal las contraseñas. De repente, no teníamos servicio, otra web.. ahora el servicio de correo.. Un compañero de trabajo, luego otro.. Con cuentagotas iban reportando las incidencias. Tirando del hilo, tirando del hilo.. llegamos a la conclusión de que ¡todo en el servidor estaba fallando! ¡no puede ser!
Se trata de un servidor administrado en el que no tenemos que hacer ninguna gestión. El sistema operativo se mantiene actualizado automáticamente por la empresa que nos aloja. Siempre ha ido todo perfecto. El cambio siempre ha sido a mejor de todas las webs aquí alojadas.. Visto esto, y sabiendo que un WordPress sin actualizar puede ser origen de una ingente cantidad de problemas, me pongo manos a la obra. Reviso las actualizaciones de toooodos los WordPress que hay en este servidor. Uno a uno, actualizándolos todos manualmente. Me encontré con algunas actualizaciones que no se habían hecho, incluso teníamos un WordPress a medio actualizar que se había quedado enganchado. Varios proyectos heredados junto con otros nuevos. En fin, tareas rutinarias que hacer para poner todo al día..
Ahora mismo ya está todo arreglado y funcionando perfectamente. Cierto es que hemos tenido algunos problemas de rendimiento a nivel de sistema operativo. Pero por otro lado teníamos algunos WordPress que actualizar y poner al día. Así que, ahora que ya volvió el agua al río, y se arrojó luz sobre el origen de los problemas.. aquí estoy con algo de material nuevo.
Ya puedes tener la estrategia de marketing mejor del mundo, la mejor campaña publicitaria, los mejores anuncios. Unas publicaciones excelentes en blogs, una gran inversión en SEM, o un SEO de contenidos inmejorable. Que si la infraestructura informática subyacente no acompaña de poco servirá. Aquí es donde entra el estar o no en la nube. Y nunca mejor dicho, poner tu aplicación web por las nubes.
¡Buenos días a todos! Voy a tratar de no perder las buenas costumbres, como esta de compartir en el blog mi granito de arena en todo esto de la informática. Hasta estos últimos días, que no he tenido la necesidad de mantener al día tantos servidores como últimamente. Estaba haciéndolo manualmente, a pelo como se suele decir, entrando en los servidores y aplicando actualizaciones, modificaciones, etc.. Todo esto es mucho tiempo así que delegar en un proveedor de hosting todo éste trabajo es una buena elección. Pero no siempre te va a valer y puede que necesites hacer configuraciones que un proveedor de hosting no te va a permitir. Administrar tu propio servidor no tiene que ser complejo.
Todo esto me ha llevado a investigar sobre paneles de control de servidores. Tenemos el gran Cpanel, Plesk, Zpanel, y un largo etcétera. Por temas laborales ya he probado algunos en los propios proveedores. Muchos funcionan de maravilla y son sencillos de gestionar. Pero no me voy a dedicar a alquilar hosts, sino que simplemente necesito mantener unos pocos servidores y no es viable comprar una solución comercial. Así que navegando y navegando al final me topé con Webmin.
Qué tiene
A grandes rasgos es una web desarrollada sobre Perl, que se instala en el puerto 10000 del servidor y se integra con el sistema operativo. Nos permite ver el estado del servidor, hacer configuraciones de red, actualizarlo, programar actualizaciones automáticas recibiendo informes a tu email. Te permite configurar usuarios, permisos, instalar bases de datos, servidor web, configurarlos. También hay módulos para instalar un servidor de correo electrónico. Puedes administrar Apache2, Mysql, Postgres, Postfix, Dovecod, etc, etc, etc.
La verdad es que te quedas mucho más tranquilo teniendo una herramienta de estas instalada en un servidor. No tienes más que entrar y de un vistazo puedes saber qué tal anda el sistema. Puedes aplicar las principales configuraciones y a correr que el tiempo es muy valioso.
Hay algunas tareas como la configuración hosts virtuales que haciéndolas a mano me he aclarado mejor. Pero deduzco que será cuestión de acostumbrarme al panel. Leo que hay extensiones de Webmin para configurar fácilmente hosts con varios dominios, permitiendo la lectura de correos a los usuarios proporcionándoles un panel de entrada al sistema.
Un detalle que me ha gustado mucho es la autenticación en dos pasos (multi-factor authentication, MFA). Con el que podemos tener por ejemplo en nuestro móvil el Google Authenticator, y tener un código de seguridad extra que se genere a cada 30 segundos, para poder entrar como en la imagen siguiente:
El theme, piel, o plantilla que podéis ver en las imágenes no es el original. Es el ‘Authentic theme’ que me ha gustado también mucho. Es totalmente sensible al dispositivo (responsive), con lo que también podemos aplicar configuraciones sobre nuestro servidor desde el móvil o tablet, cosa que se agradece en gran manera.
Aquí podemos ver lo sencillo que se hace mantener actualizado el sistema:
Aquí en la imagen se puede ver cómo configurar que todos los días se apliquen todas las actualizaciones del sistema, no sólo las de seguridad. Esto dispara cada día la instalación de todos los paquetes para actualizar y me envía un informe del resultado de la instalación a mi email. Ya os podéis hacer a la idea de que tiene muchas cosas, y lo tranquilo que me quedo con cada correo que recibo diciéndome que todo se ha actualizado correctamente.
Como buen usuario de Ubuntu, todas las pruebas y las imágenes que se ven son sobre Ubuntu. Me lo voy a anotar como indispensable en las nuevas instalaciones. Navegando y navegando por el menú lateral ya veo que no me lo voy a acabar, así que tendré que ver la documentación oficial de cada herramienta para ir más al grano en las tareas que se necesiten.
Es un proyecto alojado en Github, que por lo que veo se ve bien activo. Ahora mismo hace 4 horas que han subido una actualización, lo que denota que vamos a seguir teniendo actualizaciones frecuentemente, como todo buen proyecto Open Source.
Para el que quiera seguir investigando en esta joya de la informática, son interesantes los módulos Usermin y Virtualmin. No creo que tarde mucho en probarlos. De estos tenemos una versión gratuita y otra comercial, con las que vamos añadiendo más y más funcionalidades al panel de control.
¿Alguna sugerencia de otro programa similar para administrar servidores?
¡Hola! Este es un pequeño HOWTO para configurar los permisos de directorio de un proyecto web que está en un servidor Apache. Nos puede pasar que estamos editando los ficheros del proyecto, pero puede ser que Apache no pueda acceder correctamente a los nuevos ficheros, crearlos, modificarlos o borrarlos. También nos puede pasar que Apache cree ficheros y nosotros no podamos tocarlos. Vamos a evitarlo con unos sencillos pasos. Esto sirve para configurarlo en Ubuntu. También se puede aplicar a cualquier otro sistema operativo Linux.
El usuario por defecto de un servidor Ubuntu es ‘ubuntu’. El usuario de Apache es ‘www-data’, así que comenzamos dando permiso a Apache para que pueda usar nuestro directorio de trabajo donde desarrollamos la web. Por defecto Apache trabaja sobre con la página principal en /var/www/html pero este post es para configurar a nuestro gusto el destino el directorio donde vamos a tener la web.
Supongamos que tenemos nuestra web en desarrollo en:
/home/jaime/miweb/
Ahora bien vamos al directorio donde está nuestra web y damos permisos a Apache así:
cd /home/jaime/ sudo chown www-data:www-data -R miweb/
Doy por sentado que ya tenemos instalado Apache y que tenemos configurado el host. Ahora bien, queremos trabajar como usuario editando y viendo los resultados en el navegador. Añadimos a nuestro usuario al grupo www-data:
sudo adduser jaime www-data
Con esto ya podremos editar el contenido del directorio de la web en /home/jaime/miweb/. Antes no podíamos porque hemos dado la propiedad a www-data que es el usuario de Apache con el comando chown.
Ahora para que los nuevos archivos creados dentro del directorio de la web sigan siendo propiedad del mismo grupo www-data para que tanto Apache como el usuario (tú) podáis seguir trabajando ejecutamos lo siguiente para poner el ‘sticky-bit’ de grupo a los directorios:
Esto pone el directorio del proyecto con el sticky-bit de grupo y luego busca dentro todos los subdirectorios y también le ponemos el sticky-bit de grupo. Ahora cualquier archivo que crees dentro del directorio seguirá tendrá tu usuario de propietario, y de grupo www-data. Así Apache podrá seguir sirviendo los archivos sin problemas y podremos trabajar sin preocuparnos de dar permiso o propiedad a los archivos que ya no sean de www-data.
Hola de nuevo. Aquí traigo otro pequeño HOWTO para automatizar la instalación de un servidor Postresql. Como ya indico en el post anterior, estoy jugueteando con Vagrant y necesito instalar la base de datos automáticamente para no tener que estar haciéndolo cada vez. Así que ya puestos a usar Vagrant o simplemente a usar la línea de comandos podemos ejecutar estos comandos para instalar y configurar Postgresql sin sufrir mucho y comenzar a trabajar lo antes posible.
Porqué Postgresql
Un compañero de trabajo me hizo una vez la pregunta, ¿porqué Postgresql?
Es un gigante de las bases de datos relacionales. Robusta como ella misma, soporta clustering, integridad referencial.. una cantidad ingente de características. En sus últimas versiones no tiene nada que envidiar al resto de bases de datos. Y mucho la catalogan como la mejor base de datos relacional Open Source. Además de que tenemos el pgAdmin que funciona a las mil maravillas.
Hay cantidad de información por Internet, ya que desde 1982 leo que está dando guerra, así que te puedes hacer una idea de si es o no una buena elección. Cada cual que mire cuáles son sus requisitos pues no es objetivo de este post hacer una comparativa.
Dónde está el script
Sin más preámbulos el script de instalación es el siguiente:
postgres_conf_file=»/etc/postgresql/9.3/main/postgresql.conf» postgres_pg_hba_file=»/etc/postgresql/9.3/main/pg_hba.conf» main() { apt-get -y install postgresql sudo -u postgres psql<<EOI password postgres postgres postgres q EOI sed -i «s/#listen_addresses = ‘localhost’/listen_addresses = ‘*’/g» ${postgres_conf_file} cat <<EOI > ${postgres_pg_hba_file} local all all md5 host all all 127.0.0.1/32 md5 host all all 10.0.2.2/32 md5 host all all ::1/128 md5 EOI service postgresql restart } main exit 0
A fecha en que escribo, este código se puede incluir en un Schell Script que por ejemplo podemos llamar instalarPostgresql.sh, darle permiso de ejecución y lanzarlo. Funciona con la versión que se instala actualmente en un servidor de producción con Ubuntu Server 14.04 que es la 9.3 de Postgresql si no me falla la memoria.
Simplemente instala el servidor, se conecta con el cliente psql para cambiar la contraseña del administrador postgres, escucha en todas las interfaces de red y permite conectar por red a 127.0.0.1 y a 10.0.2.2 que es la IP que se ve desde dentro de una máquina virtualizada con Vagrant.
Este es un pequeño HOWTO para instalar la base de datos. He estado jugueteando con Vagrant estos días probando como instalar automáticamente máquinas virtuales de forma automática, y me topé con el problema de cómo hacer un script que me instalara la BD en el sistema y que además dejara configurada la contraseña de administrador.
Este script funciona para Ubuntu 15.04, el cual te instala MariaDB 10.0 por defecto, que viene a ser la última versión estable de la aplicación.
MariaDB
Esta base de datos es un replace del archi-conocido MySQL pero al cual le han mejorado en varios aspectos. Es decir, tras la compra por parte de Oracle de MySQL, el equipo de desarrollo de la base de datos se separó continuando su desarrollo en lo que ahora se conoce como MariaDB.
Hay quien dice que Oracle pretendía estancar el desarrollo porque ya tiene sus propios productos de base de datos. Pueden haber sido diferencias de opiniones entre los desarrolladores. A saber cuál ha sido el porqué, el hecho es que MariaDB ha cogido fuerza. Por lo que la he probado funciona muy bien y tengo un servidor en producción que va muy bien hasta la fecha de hoy.
Al grano, el script
Esto a continuación se puede poner en un fichero, por ejemplo, llamado instalarMariaDB.sh y ejecutarlo: echo «######################################################################################» echo «# This script will install MariaDB and will set the root password.» echo «# It only works for first time execution. If it fails, check one command each time.» echo «######################################################################################»
sudo mysql -u root<<EOI use mysql; update user set plugin=» where User=’root’; update user set password=PASSWORD(«root») where User=’root’; flush privileges; quit EOI
sudo service mysql restart
Con esto ya dejo el ordenador y al sobre. Un saludo.
En GNU/Linux dicen que no hay virus. Pero ¿es así realmente? Podemos buscar información que nos dice que en todos los sistemas operativos hay virus. Incluso en ordenadores Mac hemos tenido los sonados casos con miles de ordenadores infectados. En Linux de igual manera que podemos tener virus. Pero hay una gran diferencia, es muy raro que lleguemos a instalarnos uno.
Para administrar un servidor dedicado o virtual Linux necesitamos herramientas para controlar el uso de memoria, cpu o almacenamiento. Hay una herramienta en modo consola o de terminal con la que podemos entrar y ver su estado sin necesitar de un entorno gráfico.
Estamos entonces pensando que el servidor que hemos contratado es demasiado pequeño y vayamos a contratar uno más grande. Pero antes merece la pena no entrar en más gastos y optimizarlo. Porque tal vez tengamos mucha más máquina que lo que estamos pensando, sólo era necesario optimizar.
Instalación de htop
$ sudo apt-get install htop
Una vez instalado ejecutamos htop si todo ha ido bien y ya tenemos un informe muy interesante. Ahora sabremos si estamos al borde del colapso, si el servidor de base de datos está consumiendo demasiado, etcétera. O si simplemente le sobra memoria y algo raro le está pasando.
Frentes de ataque para optimizar un servidor
Se supone que con un servidor pequeño, de 1 procesador y 1 Giga de RAM, se deben de poder servir alrededor de 10 000 vistas de página diarias. Es mucho ¿cierto? Pues sí, no estoy exagerando, la experiencia nos dice que las configuraciones por defecto de Apache, MariaDB y PHP tal vez no se acomoden bien y el servidor vaya lento, muestre páginas en blanco, se caiga el servicio.
Para cada programa o servicio se necesita su configuración así que sin contemplar la posibilidad de ampliar el servidor físicamente podemos optimizarlo viendo lo siguiente.
Configuraciones de Apache2
En un Ubuntu Server podemos encontrar sus configuraciones en /etc/apache2/apache2.conf Una de las cosas que merece la pena activar es la caché, aumenta considerablemente su rendimiento.
Si tenemos, como en éste caso una única máquina con todo en el mismo servidor (Apache2, MariaDB y PHP5). La memoria caché APC es una buena opción y se activa muy fácilmente con PHP5 si la tenemos disponible ya en Apache2.
Configuraciones de MariaDB
He escogido ésta base de datos porque trae muchas mejoras con respecto a MySQL y podemos instalar cualquier CMS compatible con MYSQL. Aparte de que es totalmente gratis.
Cuidado con la versión que instalemos, elegir mejor una estable para producción.
Las configuraciones de MariaDB las podemos optimizar en /etc/mysql/my.cnf
Es interesante instalarnos localmente MySQL y ver los fichers my-small.cnf, my-medium.cnf, my-large.cnf y my-huge.cnf para configurar los límites de nuestra MariaDB. Cuidado porque un servidor small se supone que sólo tiene 64 MB de RAM, uno de 1 GB de RAM es un servidor grande aunque no nos lo parezca, ya uno de 4 GB de RAM es enorme (huge).
Configuraciones de PHP
Tenemos en /etc/php5.6/apache2/php.ini las configuraciones que se usan para correr los scripts de PHP desde Apache.
Puede ser interesante optimizar la configuración de la linea de comandos de PHP con el fichero /etc/php5.6/cli/php.ini Éste fichero es el que se usa cuando ejecutas php desde línea de comandos. Puede ser necesario configurarlo para usar phpunit, comandos de consola de frameworks PHP, etc.
La caché de ejecución de scripts o el tiempo máximo de ejecución de un script pueden ser valores clave que provoquen que tus webs se queden en blanco. Algunos valores a los que suelo darle más son:
Si delegas la ejecución de PHP en el servicio FPM/Fastcgi sería lo mejor. Para esto hay que instalar el módulo fpm de PHP. Y el módulo de Apache para que delegue la ejecución de scripts PHP a este servicio llamado php-fpm. En este caso, tendrás las mismas configuraciones que cito antes pero en otro fichero que carga desde /etc/php5.6/fpm/php.ini, /etc/php7.2/fpm/php.ini según la versión de PHP que tengas instalada.
Cuando se instala el FPM/Fastcgi lo que conseguimos es que tanto Apache2 como PHP se ejecuten concurrentemente, pudiendo servir más páginas en paralelo.
Está la swap creada y activada?
Por último puede ser que la memoria de intercambio no esté creada. En muchos servidores virtuales simplemente tenemos la partición del sistema de ficheros principal. Damos por sentado que cuando se nos ha dado el servidor ya tenemos swap. Entonces si realmente no la tenemos no podemos usarla y si llenamos toda la memoria RAM ya tenemos colapsado el servidor porque no tiene realmente swap.
Podemos verlo usando:
$ free -m
Por ejemplo en un servidor con 1 GB de RAM y 512 GB de memoria de intercambio swap podemos tener lo siguiente:
Si no nos sale algo parecido ya tenemos otra cosa que optimizar.
Apache Benchmark
Es interesante llevar al límite a nuestro servidor usando ésta herramienta, podemos simular fácilmente varios visitantes simultáneos hasta llegar a saturar el servidor y sabremos así cuánto aguanta y si ya es suficiente.
De nuevo si tenemos Linux como máquina local es muy sencillo instalarlo sólo con poner:
$ sudo apt-get install apache2-utils
Por ejemplo si quiero ejecutar 100 peticiones de 10 visitantes simultáneamente a mi máquina local escribimos:
$ ab -n 100 -c 10 http://localhost/
En mi caso, me sale los siguientes resultados que son bien interesantes. Junto con htop podemos ver en tiempo real qué ha pasado con nuestro servidor.
This is ApacheBench, Version 2.3 <$Revision: 1528965 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient)…..done Server Software: Apache/2.4.7 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 5306 bytes Concurrency Level: 10 Time taken for tests: 2.751 seconds Complete requests: 100 Failed requests: 0 Total transferred: 560500 bytes HTML transferred: 530600 bytes Requests per second: 36.35 [#/sec] (mean) Time per request: 275.072 [ms] (mean) Time per request: 27.507 [ms] (mean, across all concurrent requests) Transfer rate: 198.99 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 0 Processing: 21 274 659.4 58 2242 Waiting: 21 271 653.4 56 2225 Total: 21 274 659.4 58 2242 Percentage of the requests served within a certain time (ms) 50% 58 66% 65 75% 75 80% 79 90% 2241 95% 2242 98% 2242 99% 2242 100% 2242 (longest request)
Puede ser un poco bruto pero ya puestos a llevar al extremo a nuestro servidor no está de sobra probarlo. Si el servidor aguanta el test entonces eso es buena señal. Si de repente ya no tenemos las webs visibles. Jeje, pues a optimizar.
Hay personas que dedican todo su trabajo a optimizar cada uno de éstos programas. Espero que comprenda que no puedo resumirlos en un sólo post así que aquí lo dejo y me remito a la documentación oficial.
En éstos días he tenido acceso a un ordenador que ha estado trabajando con archivos grandes, generados de resultado de renderizados 3D. El ordenador ha estado trabajando duro y el disco se ha muerto. Asunto normal teniendo en cuenta la gran carga de trabajo hecho.
No ha quedado otra solución que reemplazar el disco duro, reinstalar el sistema operativo y a seguir funcionando. Pensando en ello, tengo un sistema operativo Windows, igual que el equipo en cuestión. Y resulta que hace tiempo que no desfragmentaba. Con lo que me encontré en uno de los discos la imagen del disco bastante fragmentada que adjunto.
La desfragmentación en Windows
La fragmentación ocurre cuando grabamos archivos en el disco duro en trozos dispersos. Sería mejor que un mismo archivo estuviera en el disco en el mismo sitio, mejorando así su lectura y evitando que el cabezal de lectura del disco vaya dando saltos buscando los trozos del archivo, cosa que reduce la vida del mismo aparte de su velocidad de respuesta.
Aún tenemos en los sistemas de Microsoft el problema de la fragmentación. Cuando teníamos los sistemas de archivos antiguos tipo FAT la desfragmentación era más grave. Con los nuevos sistemas de archivos NTFS se ha mejorado pero sigue pasando, con lo que el desfragmentado viene siendo necesario. Cosa que no ocurre en otros sistemas. Pero ¿porqué ocurre? ¿no sería más fácil grabar los archivos sin partirlos?
La fragmentación ocurre porque Windows da más importancia a que los datos se graben rápidamente, con lo que ahí donde esté el cabezal empezará a grabar y si queda sin espacio contiguo partirá el fichero en trozos más o menos dispersos dependiendo del espacio libre. Además si un archivo crece en tamaño y no hay espacio libre hasta el siguiente archivo entonces se fragmenta. Ésto se ha mejorado con el nuevo NTFS, dejando más espacio libre entre archivo y archivo por si acaso crece en tamaño. Pero tarde o temprano se torna necesario desfragmentar.
Otros sistemas
En los equipos Mac también ocurre la desfragmentación. En Linux, con los sistemas de archivos ‘ext’ se ha solucionado casi totalmente éste problema porque directamente dispersa los archivos por el disco duro asegurándose que no haga falta fragmentarlos. Produciéndose la desfragmentación sobre la marcha donde sólo permite un 1% de archivos fragmentados. Aunque también hay herramientas con las que se puede desfragmentar un sistema Linux.
Mejorando
Resumiendo, si queremos entonces evitar en la medida de lo posible que tu disco duro vaya dando saltos adelante y atrás, moviéndose entre discos, sectores y cilindros para leer y escribir tus datos lo que debemos hacer es desfragmentar el disco duro de vez en cuando.
En Windows 7 tenemos el desfragmentador en el botón de Inicio -> Accesorios -> Herramientas del sistema -> Desfragmentador de disco
Hay muchas soluciones en el mercado, de entre ellas, para uso personal tenemos el famoso Defraggler. Es muy completo, te permite incluso elegir qué archivos quieres compactar entre sus numerosas opciones.