View previous topic :: View next topic |
Author |
Message |
pacho2 Developer
Joined: 04 Mar 2005 Posts: 2599 Location: Oviedo, Spain
|
Posted: Mon Jun 26, 2006 3:14 pm Post subject: [HOWTO] Optimizando particiones |
|
|
Puesto que en este tema no estoy muy ducho, agradeceré enormemente las contribuciones que queráis hacer.
El proposito de este hilo es que vayamos contando las opciones que consideremos "mejores" (bien por rendimiento, o bien por seguridad) para:
1. Montar las particiones
2. Crear las particiones
Se analizarán, en principio, los siguientes sistemas de archivos: ReiserFS, EXT2, EXT3, XFS y JFS (si queréis añadir alguno no tenéis más que pedirlo).
(este hilo esta en permanente desarrollo)
......
Saludos y gracias
____________________
EN CONTRUCCIÓN
____________________
0. Sistemas de archivos
- EXT2
EXT2 (second extended filesystem o "segundo sistema de archivos extendido") fue el sistema de archivos estándar en el sistema operativo GNU/Linux por varios años y continúa siendo ampliamente utilizado. Fue diseñado originalmente por Rémy Card. EXT2 no implementa Journaling
El ext2 tiene un tamaño de i-nodo fijo entre 1 y 4K, independientemente del tamaño de la partición. El tamaño del i-nodo se selecciona al crear el sistema de archivos y es seleccionable por el usuario. El ext2 tiene una unidad similar al cluster, llamada bloque, y que es, por lo general de 1K, especificable por el usuario e independiente del tamaño de la partición, lo cual asegura un buen aprovechamiento del espacio libre con archivos pequeños.
- EXT3
EXT3 (third extended filesystem o "tercer sistema de archivos extendido") es un sistema de archivos con Journaling. Posee la ventaja de permitir migrar del sistema de archivos EXT2 sin necesidad de reformatear el disco.
La única diferencia entre EXT2 y EXT3 es el registro por diario. Un sistema de archivos EXT3 puede ser montado y usado como un sistema de archivos EXT2.
EXT3 utiliza un árbol binario balanceado (árbol AVL).
- ReiserFS
ReiserFS es un sistema de archivos de propósito general, diseñado e implementado por un equipo de la empresa Namesys, liderado por Hans Reiser. Actualmente es soportado por Linux y existen planes de futuro para incluirlo en otros sistemas operativos. Es el sistema de archivos por defecto en varias distribuciones, como Slackware, SuSE, Xandros, Yoper, Linspire, Kurumin Linux, FTOSX y Libranet.
Posee Journaling. Podemos aumentar el tamaño del sistema de ficheros mientras lo tenemos montado y desmontado (online y offline). Para disminuirlo, únicamente se permite estando offline (desmontado). Namesys nos proporciona las herramientas para estas operaciones, e incluso, podemos usarlas bajo un gestor de volúmenes lógicos como LVM o EVMS. Tail packing (para agrupar los ficheros muy pequeños).
ReiserFS almacena metadatos sobre los ficheros, entradas de directorio y listas de inodos en un único árbol B+ cuya clave principal es un identificador único. Los bloques de disco asignados a los nodos del árbol son los "bloques internos formateados" y los bloques de las hojas son los "bloques de hojas formateados". Todos los bloques restantes son los "bloques sin formatear", que contienen los datos de los ficheros. Los directorios con muchas entradas, ya sean directas o indirectas, que no caben en un sólo nodo, se reparten con el nodo vecino de la derecha. La asignación de bloques se lleva a cabo mediante un bitmap de espacio libre almacenado en localizaciones fijas.
En contraste, EXT2 y otros sistemas de ficheros, usan una fórmula fija para calcular localizaciones de inodos, por lo que limitan el número de archivos que pueden almacenar. Otros también almacenan los directorios como una simple lista de entradas, lo que provoca que las búsquedas y modificaciones sean operaciones lineales temporalmente y degradan el rendimiento el directorios con muchos contenidos. El árbol B+ en ReiserFS evita estos problema
- XFS
XFS es un sistema de archivos con journaling de alto rendimiento creado por SGI (antiguamente Silicon Graphics Inc.) para su implementación de UNIX llamada IRIX. Como características principales: Journaling, implementación paralelizada, que escala con el número de CPU's, direccionamiento de 64 bits.
- JFS
JFS es un sistema de archivos con respaldo de transacciones desarrollado por IBM y usado en sus servidores. JFS utiliza un método interesante para organizar los bloques vacíos, estructurándolos en un árbol y usa una técnica especial para agrupar bloques lógicos vacíos. JFS fue desarrollado para AIX. La primera versión para Linux fue distribuida en el verano de 2000. La versión 1.0.0 salió a la luz en el año 2001.
JFS, al igual que ReiserFS, sigue el principio de metadata only. En vez de una completa comprobación sólo se tienen en cuenta las modificaciones en los metadatos provocadas por las actividades del sistema. Esto ahorra una gran cantidad de tiempo en la fase de recuperación del sistema tras una caída. Las actividades simultáneas que requieren más entradas de protocolo se pueden unir en un grupo, en el que la pérdida de rendimiento del sistema de ficheros se reduce en gran medida mediante múltiples procesos de escritura.
JFS abarca diversas estructuras de directorios. En pequeños directorios se permite el almacenamiento directo del contenido del directorio en Inode. En directorios más grandes se utiliza Btrees, que facilitan considerablemente la administración del directorio.
- Reiser4
Se trata de la versión más reciente del sistema de archivos ReiserFS, implementada desde cero. Entre sus ventajas se encuentran:
* Soporte eficiente de gran cantidad de archivos pequeños.
* Manejo de directorios con cientos de miles de archivos.
* Infraestructura flexible que permite extensiones.
* Transacciones atómicas en la modificación del sistema de archivos.
* Manejo eficiente del diario por la vía de logs.
* Estructura del archivos dinámicamente optimizada.
* Integración de metadatos en el espacio de nombres del sistema de archivos.
Pero aún esta en fase experimental y no tiene soporte oficial en el kernel.
- FAT
http://es.wikipedia.org/wiki/FAT
- NTFS
http://es.wikipedia.org/wiki/NTFS
........
1. Algunas opciones para montar las particiones
noatime -> Es una opción muy utilizada y cuyo uso no supone ningún peligro. Al montar una partición con esta opción haremos que los tiempos de acceso a un fichero no se actualicen siempre.
Es importante recordar que si empleamos esta opción deberemos añadir la opción --ctime a su fichero de configuración (ver link)
nodiratime -> Lo mismo que noatime aplicado a los directorios.
data (por aj2r) -> Puede tomar tres valores y nos permite ajustar hasta cierto punto la forma en que actúa el journaling:
- data=writeback. En este modo no se hace journalling de los datos, sólo de los metadatos. Aunque con esta opción se consigue el mejor rendimiento, si se produce un apagón repentino es probable que los últimos ficheros modificados se corrompan.
- data=ordered (modo predeterminado). En este modo sólo se hace journalling de los metadatos, pero agrupa de forma lógica metadatos y bloques de datos en unidades llamadas transacciones. A la hora de escribir los metadatos al disco, primero se escriben los datos asociados. Este modo solventa la corrupción de datos y sin requerir el journalling de todos los datos. En general es un poco menos eficiente que writeback, pero significativamente más rápidp que un journalling completo.
- data=journal. En este método se realiza journal de todos los datos y metadatos. Todos los datos son escritos primero en el "journal" y luego en su localización final.
notail (Para ReiserFS) (por a2jr) -> ReiserFS agrupa los restos de todos los ficheros en un mismo bloque, lo que permite utilizar más racionalmente el espacio disponible a cambio de un aumento del tiempo utilizado en operaciones del disco (porque siempre tiene que hallar un trozo adecuado de memoria en el que colocar este resto). La opción notail desactiva esta característica de ReiserFS otorgando una ligera (yo, pacho2, diría "ligerísima" ) mejora en el rendimiento (en lo que a rapidez se refiere) a costa de ocupar algo más de disco.
.........
Last edited by pacho2 on Thu Jun 29, 2006 8:37 pm; edited 6 times in total |
|
Back to top |
|
|
aj2r l33t
Joined: 11 Sep 2005 Posts: 705 Location: Granada/Andalucía/España
|
Posted: Mon Jun 26, 2006 3:45 pm Post subject: |
|
|
Pues voy a hacer la primera contribución, y si me equivoco en lo que digo corregidme
Para reiserfs, a la hora de montarlo, existe la opción notail, que lo hace un poco más rápido y menos consumidor de CPU a cambio de no realizar el empaquetado de colas, una de las características que más me gustan de reiserfs y que hace que sea el sistema de ficheros que mejor aprovecha el espacio físico (aunque reiser4 lo hace aún mejor).
Para reiserfs y ext3 existe la opción de montaje data que puede tomar tres valores:
data=writeback
En el modo data=writeback, no se hace journalling de los datos, sólo de los metadatos. Aunque con esta opción se consigue el mejor rendimiento, si se produce un apagón repentino es probable que los últimos ficheros modificados se corrompan.
data=ordered (modo por defecto)
En este modo sólo se hace journalling de los metadatos, pero agrupa de forma lógica metadatos y bloques de datos en unidades llamadas transacciones. A la hora de escribir los metadatos al disco, primero se escriben los datos asociados. Este modo solventa la corrupción de datos y sin requerir el journalling de todos los datos. En general es un poco menos eficiente que writeback, pero significativamente más rápidp que un journalling completo.
data=journal mode
En este método se realiza journal de todos los datos y metadatos. Todos los datos son escritos primero en el "journal" y luego en su localización final.
|
|
Back to top |
|
|
pacho2 Developer
Joined: 04 Mar 2005 Posts: 2599 Location: Oviedo, Spain
|
Posted: Mon Jun 26, 2006 6:32 pm Post subject: |
|
|
Muchas gracias por tu contribución
Saludos |
|
Back to top |
|
|
aj2r l33t
Joined: 11 Sep 2005 Posts: 705 Location: Granada/Andalucía/España
|
Posted: Mon Jun 26, 2006 8:16 pm Post subject: |
|
|
Añadir que reiserfs no sólo mete en un mismo nodo hoja varias colas(tails) sino que también las comprime, y por eso principalmente consume más CPU y tiempo y consigue tan buenos resultados.
EDITO-> Una opción muy interesante para ext3 es ala hoar de dar formato a la partición usar la opción -O dir_index, que lo que hace básicamente es que se usen b-trees con tablas de referencia (hashed b-trees) para acelerar las búsquedas en directorios grandes. Puede aplicarse a una partición ya formateada con datos dentro haciendo Code: | tune2fs -O dir_index /dev/hdXX
e2fsck -D /dev/hdXX | y reiniciando.
Se nota la diferencia a costa de perder un poco de espacio.
VUELVO A EDITAR-> Se me ocurre que podrías poner además al principio una breve descripción de los sistemas de ficheros, si quieres puedes copiar lo que tengo al principio de mi benchmark |
|
Back to top |
|
|
LinuxBlues l33t
Joined: 26 Mar 2005 Posts: 892
|
Posted: Tue Jun 27, 2006 2:04 pm Post subject: |
|
|
aj2r wrote: | Code: | tune2fs -O dir_index /dev/hdXX
e2fsck -D /dev/hdXX |
|
Si no añades -Df a e2fsck el sistema de ficheros se queda sin modificar, a no ser que le toque revisión en el siguiente montaje. Cuidado con esto: pruébalo y verás. Muchas gracias por tu apoyo aj2r. |
|
Back to top |
|
|
aj2r l33t
Joined: 11 Sep 2005 Posts: 705 Location: Granada/Andalucía/España
|
Posted: Tue Jun 27, 2006 2:22 pm Post subject: |
|
|
LinuxBlues wrote: | Muchas gracias por tu apoyo aj2r. |
No se merecen
Por cierto LinuxBlues ¿podrías explicar por aquí lo de que reiserfs en los núcleos 2.6 usa bloques de 128kB, y cómo hacer para que use 4kB y si se no ta la diferencia? |
|
Back to top |
|
|
pacho2 Developer
Joined: 04 Mar 2005 Posts: 2599 Location: Oviedo, Spain
|
Posted: Tue Jun 27, 2006 2:25 pm Post subject: |
|
|
LinuxBlues wrote: | aj2r wrote: | Code: | tune2fs -O dir_index /dev/hdXX
e2fsck -D /dev/hdXX |
|
Si no añades -Df a e2fsck el sistema de ficheros se queda sin modificar, a no ser que le toque revisión en el siguiente montaje. Cuidado con esto: pruébalo y verás. Muchas gracias por tu apoyo aj2r. |
Gracias por el apunte
aj2r wrote: | LinuxBlues wrote: | Muchas gracias por tu apoyo aj2r. |
No se merecen
Por cierto LinuxBlues ¿podrías explicar por aquí lo de que reiserfs en los núcleos 2.6 usa bloques de 128kB, y cómo hacer para que use 4kB y si se no ta la diferencia? |
Cuantos más colaboremos mejor
Saludos y muchas gracias a los dos |
|
Back to top |
|
|
LinuxBlues l33t
Joined: 26 Mar 2005 Posts: 892
|
Posted: Tue Jun 27, 2006 2:42 pm Post subject: |
|
|
aj2r wrote: | Por cierto LinuxBlues ¿podrías explicar por aquí lo de que reiserfs en los núcleos 2.6 usa bloques de 128kB, y cómo hacer para que use 4kB y si se no ta la diferencia? |
Estás en plenas pruebas de sistemas de ficheros, he aquí la puerta de entrada a mi casa:
/etc/fstab wrote: |
/dev/hdb3 /home reiserfs noatime,nodiratime,nolargeio=1,data=writeback 0 0
|
Estoy por jurar que el data=writeback es redundante ya que reiserfs sólo usa caché de metadatos, pero de lo contrario el kernel me lo monta en ordered data mode |
|
Back to top |
|
|
aj2r l33t
Joined: 11 Sep 2005 Posts: 705 Location: Granada/Andalucía/España
|
Posted: Tue Jun 27, 2006 2:47 pm Post subject: |
|
|
LinuxBlues wrote: |
Estoy por jurar que el data=writeback es redundante ya que reiserfs sólo usa caché de metadatos, pero de lo contrario el kernel me lo monta en ordered data mode |
Creo que ya he escrito antes por aquí la diferencia entre ordered y writeback. Ordered es prácticamente tan seguro como un journal completo de los datos, mientras que writeback en un apagón o cuelgue del sistema probablemente hará que surjan inconsistencias en el sistema de ficheros. Los dos hacen sólo journalling de los metadatos, pero el algoritmo de escritura en disco es diferente. |
|
Back to top |
|
|
pacho2 Developer
Joined: 04 Mar 2005 Posts: 2599 Location: Oviedo, Spain
|
Posted: Tue Jun 27, 2006 3:27 pm Post subject: |
|
|
LinuxBlues wrote: | aj2r wrote: | Por cierto LinuxBlues ¿podrías explicar por aquí lo de que reiserfs en los núcleos 2.6 usa bloques de 128kB, y cómo hacer para que use 4kB y si se no ta la diferencia? |
Estás en plenas pruebas de sistemas de ficheros, he aquí la puerta de entrada a mi casa:
/etc/fstab wrote: |
/dev/hdb3 /home reiserfs noatime,nodiratime,nolargeio=1,data=writeback 0 0
|
Estoy por jurar que el data=writeback es redundante ya que reiserfs sólo usa caché de metadatos, pero de lo contrario el kernel me lo monta en ordered data mode |
Entonces lo de los bloques de 128kb u 4kb, se "regula" con la opción nolargeio?
¿tiene alguna ventaja que use los de 4kb en lugar de 128kb? ¿alguna desventaja?
Saludos y gracias por la información |
|
Back to top |
|
|
aj2r l33t
Joined: 11 Sep 2005 Posts: 705 Location: Granada/Andalucía/España
|
Posted: Tue Jun 27, 2006 4:21 pm Post subject: |
|
|
pacho2 wrote: |
Entonces lo de los bloques de 128kb u 4kb, se "regula" con la opción nolargeio?
|
Así es, con nolargeio=1 se usan bloques de 4kB
pacho2 wrote: |
¿tiene alguna ventaja que use los de 4kb en lugar de 128kb? ¿alguna desventaja?
|
Según tengo entendido, el principal motivo de usar 128kB es para poder manejar particiones de tamaños superiores, el inconveniente por el que alguien podría querer desactivarlo es que a la hora de posicionarte en un fichero (seek) y leer de él, obviamente no es lo mismo leer 128kB que 4kB cada vez que te posiciones y leas. Si me equivoco corregidme. |
|
Back to top |
|
|
Kensai Guru
Joined: 09 Mar 2004 Posts: 568 Location: Puerto Rico
|
Posted: Sun Aug 20, 2006 6:10 pm Post subject: |
|
|
# tune2fs -O dir_index /dev/hdx#
# tune2fs -O has_journal -o journal_data /dev/hdx#
# tune2fs -m 1 /dev/hdx#
En verdad no se explicarlas todas pero dan el mejor performance y estabilidad. La ultima cambia el numero de blockes reservados a 1. _________________ Gentoo: Gigabyte: nFORCE 2: nVIDIA GeForce 6600: AMD Athlon XP 3200+
Perspective of a Thinking Human Being |
|
Back to top |
|
|
MarcosLuis Tux's lil' helper
Joined: 25 May 2006 Posts: 87 Location: Cuba
|
Posted: Fri Oct 06, 2006 3:51 pm Post subject: |
|
|
LinuxBlues wrote: | aj2r wrote: | Por cierto LinuxBlues ¿podrías explicar por aquí lo de que reiserfs en los núcleos 2.6 usa bloques de 128kB, y cómo hacer para que use 4kB y si se no ta la diferencia? |
Estás en plenas pruebas de sistemas de ficheros, he aquí la puerta de entrada a mi casa:
/etc/fstab wrote: |
/dev/hdb3 /home reiserfs noatime,nodiratime,nolargeio=1,data=writeback 0 0
|
Estoy por jurar que el data=writeback es redundante ya que reiserfs sólo usa caché de metadatos, pero de lo contrario el kernel me lo monta en ordered data mode |
Porqué en vez de montar la partición en /mnt/ como se hace normalmente la montas en /home ? Esto es recomendable? Otra cosa: cuando uno agrega al fstab data=writeback no tiene que hacer mas nada en otro fichero?
Esta modificacion no afecta otros ficheros del sistema ? Cuales son?
Saludos _________________ Ing. Marcos Ortiz Valmaseda
Gentoo 2008.0 r1 User
PostgreSQL 8.3.7 User && PostgreSQL 8.4 Beta Tester
Linux user # 418229
ASUS P5GD-VM1 Intel Pentium 4 Processor a 3.00 GHz 1GB RAM DDR2 |
|
Back to top |
|
|
pacho2 Developer
Joined: 04 Mar 2005 Posts: 2599 Location: Oviedo, Spain
|
Posted: Fri Oct 06, 2006 7:22 pm Post subject: |
|
|
Creo que la monta en home porque su /dev/hdb3 es su partición para home (eso depende de cada instalación ) |
|
Back to top |
|
|
MarcosLuis Tux's lil' helper
Joined: 25 May 2006 Posts: 87 Location: Cuba
|
Posted: Fri Oct 06, 2006 8:41 pm Post subject: otra cosa Pacho |
|
|
Cuando tu vas a opmizar con data=writeback, no habia que ageagar estas lineas al /boot/grub/menu.lst
noaltoptions=quiet splash rootflags=data=writeback
altoptions=(recovery mode) single rootflags=data=writeback
despues en la consola: #tune2fs -o journal-data_writeback /dev/hda3
y reinicio después para aplicar los cambios.
Esto yo lo hice en Ubuntu, en Gentoo hay que hacerlo tambien? _________________ Ing. Marcos Ortiz Valmaseda
Gentoo 2008.0 r1 User
PostgreSQL 8.3.7 User && PostgreSQL 8.4 Beta Tester
Linux user # 418229
ASUS P5GD-VM1 Intel Pentium 4 Processor a 3.00 GHz 1GB RAM DDR2 |
|
Back to top |
|
|
LinuxBlues l33t
Joined: 26 Mar 2005 Posts: 892
|
Posted: Sun Oct 08, 2006 8:40 pm Post subject: Re: otra cosa Pacho |
|
|
MarcosLuis wrote: | #tune2fs -o journal-data_writeback /dev/hda3 |
Con respecto a lo de grub es innecesario, [supongo que te referías a la partición root (/)] dado que con este comando estás aplicando el journaling en modo writeback por defecto, y se aplicará cada vez que montes la partición. (Consulta dmesg si tienes dudas).
De cualquier modo si estás hablando de tune2fs, supongo que estás hablando de una partición ext3, en cuyo caso, curiosamente, el modo más rápido de hacerlas operar es con data=journal (por increíble que parezca, dado que en teoría deberá escribir los datos dos veces). Consulta este artículo de Daniel Robbins:
http://www-128.ibm.com/developerworks/linux/library/l-fs8.html#4
En cuanto a ext3 estoy pensando en escribir un apartado en este mismo hilo del foro, dado que he descubierto que tiene features no documentadas. Últimamente me ha dado por estudiar ext4 y estoy descubriendo muchas cosas acerca de ext3, usando bajo RedHat tune2fs -l /dev/hdXY (L minúscula), he visto la gran cantidad de features que se le puede añadir a ext3.
Bueno, no prometo nada, cada vez visito menos estos foros... Quizá más adelante publique una guía que vaya mucho más allá del dir_index. De momento no voy a decir absolutamente nada de las cosas que he descubierto acerca de ext3 porque he de hacer muchas pruebas y sé que proporcionar información incompleta puede ocasionar pérdidas de datos muy dolorosas para cualquiera... Por ello no diré nada más. Si alguna vez me pongo a sacar las conclusiones de todos mis tests, lo haré también en este hilo del foro. |
|
Back to top |
|
|
MarcosLuis Tux's lil' helper
Joined: 25 May 2006 Posts: 87 Location: Cuba
|
Posted: Sun Oct 08, 2006 11:06 pm Post subject: |
|
|
Buenos LinuxBlues vamos a estar esperando con ansiedad tus pruebas y tus features, ya que , por lo menos en ambas distros que tengo,uso como FS Ext3,asi que cuando más rápido puedas publicar la guia te lo voy a agradecer.
Saludos _________________ Ing. Marcos Ortiz Valmaseda
Gentoo 2008.0 r1 User
PostgreSQL 8.3.7 User && PostgreSQL 8.4 Beta Tester
Linux user # 418229
ASUS P5GD-VM1 Intel Pentium 4 Processor a 3.00 GHz 1GB RAM DDR2 |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|