Saltar al contenido

Tecnología

Tecnología en General

Particiones en Linux

  • ¿Dónde instalo Linux?

Linux se puede instalar en cualquier disco que tengas en tu sistema y en cualquier particion del disco duro (Primaria o extendida).
No podras tener Linux en una particion compartida con otro sistema operativo, Linux necesita su propia particion/es para funcionar.

  •  ¿Qué es una particion? ¿Cómo creo una particion?

Particionar el disco duro es una manera de dividir el disco físico en varios discos lógicos. O lo que es lo mismo, al particionar un disco, dividimos el disco en varias particiones independientes unas de otras, creando la ilusión de que tenemos diferentes discos, cuando en realidad lo que tenemos es un solo disco físico dividido en partes.

Una particion es una de estas partes (divisiones) del disco.

Existen dos clases de particiones: primarias y extendidas. En un disco solo podras tener como maximo 4 particiones primaria y 1 extendida. En la particion extendida se podran definir todas (bueno tambien existe un limite, pero es alto) las unidades logicas que queramos. Con este sistema podemos tener una gran cantidad de particiones en nuestro disco.

Cualquier disco que tengamos en nuestro ordenador tiene al menos una particion primaria, que en la mayoria de los casos tiene un tamano equivalente al total del disco.

Unos ejemplos aclararan las cosas:

  • Un disco de 1Gb con una sola particion, tendra una particion primaria de 1Gb (total del disco).
  • Ese mismo disco podria tener 4 particiones primarias de 0.25Gb cada una, dando la ilusion de que tenemos 4 discos duros de 0.25Gb en vez de un solo disco de 1Gb.
  • Otra combinacion posible podria ser 4 particiones primarias de 0.10Gb y 1 extendida con 6 unidades logicas de 0.10Gb, en este caso pareceria que tenemos 10 discos duros de 0.10Gb cada uno.

Las combinaciones son multiples y variadas y dependeran de nuestros gustos y de lo que necesitemos.

Casi todos los sistemas operativos traen un programa con el que podemos crear, modificar, borrar las particiones de nuestro disco. En Ms-Dos/Windows de llama FDISK, este programa solo puede trabajar con particiones de Ms-Dos/Windows. En Linux tambien se llama FDISK (/sbin/fdisk), pero es un programa mas potente, capaz de trabajar y crear particiones tanto para Linux como otros sistemas operativos. Si vas a trabajar con Linux, es recomendable el uso del FDISK que viene con tu distribucion, para evitar problemas.

Al contrario que Ms-Dos, Windows, OS/2, las diferentes particiones en linux no se denominan C:, D:, E:, …., etc, existe una denominacion propia:

Si los discos son IDE:

  • /dev/hda: Disco duro IDE como master en el canal IDE 1.
  • /dev/hda1: Particion primaria 1 en /dev/hda
  • /dev/hda2: Particion primaria 2 en /dev/hda
  • /dev/hda3: Particion primaria 3 en /dev/hda
  • /dev/hda4: Particion primaria 4 en /dev/hda
  • /dev/hda5: Particion extendida 1 en /dev/hda
  • /dev/hda6: Particion extendida 2 en /dev/hda
  • …..
  • …..
  • /dev/hda16: Particion extendida 16 en /dev/hda
  • /dev/hdb: Disco duro IDE como esclavo en el canal IDE 1.
  • /dev/hdb1: Particion primaria 1 en /dev/hdb
  • ……..
  • ……..
  • /dev/hdc: Disco duro IDE como master en el canal IDE 2.
  • /dev/hdc1: Particion primaria 1 en /dev/hdc
  • ……..
  • ……..
  • /dev/hdd: Disco duro IDE como esclavo en el canal IDE 2.
  • /dev/hdd1: Particion primaria 1 en /dev/hdd
  • ……..
  • ……..

Si los discos son SCSI:

  • /dev/sda: Disco duro SCSI nr.1.
  • /dev/sda1: Particion primaria 1 en /dev/sda
  • ……..
  • ……..
  • /dev/sdb: Disco duro SCSI nr.2.
  • /dev/sdb1: Particion primaria 1 en /dev/sdb
  • ……..
  • ……..

IMPORTANTE: Es muy importante saber lo que se esta haciendo cuando trabajeis con programas que modifican la tabla de particiones de un disco. Al cambiar la tabla de particiones de vuestro disco, se pierden los datos contenidos en las particiones afectadas. Realizar copias de seguridad de los datos que querais mantener antes de usar FDISK.

  • ¿Porque necesito diferentes particiones?

El particionar el disco, es simplemente una manera de organizar tu disco duro. Podrás organizarlo con una sola particion o en varias. Es el usuario el que deberá decidir cuantas particiones tendra su disco, y el tamano de las mismas, hay que recordar, que al menos hay que tener una particion primaria.

Desventajas de tener vuestro disco dividido en diferentes particiones.

  • Ninguna

Ventajas en tener vuestro disco particionado en varias particiones:

  • Si teneis un error/problema en una de ellas, las demas no se veran afectadas.
  • Poder tener diferentes sistemas operativos en vuestra maquina, totalmente independientes unos de otros.
  • Poder tener vuestros archivos de datos en particiones totalmente independientes.
  • Poder borrar/cambiar el contenido de una particion, sin que esto afecte a las demas.

  • ¿Cuantas particiones necesito para Linux?

La respuesta rapida y facil es: recomendable al menos dos, una para el sistema/datos y otra para Swap. Usualmente se suelen tener tres, una para el sistema/programas (/), otra para los datos (/home) y otra para swap.

La respuesta larga y no tan facil es mas complicada de explicar: Todo dependera muchisimo del uso que se le vaya a dar al sistema.

Para sistemas que se utilicen de forma particular y por uno o pocos usuarios bastara con las dos/tres particiones antes mencionadas, esto evitara los problemas de saber que cantidad de espacio necesitan las diferentes particiones y el quedarnos sin espacio en alguna particion vital, mientras que nos sobra en otras.

Para sistemas servidores, con gran cantidad de servicios y usuarios es muy recomendable tener varias particiones/discos. Existe un documento (HOWTO: Multi Disk System Tuning) muy bueno y quizas complicado para el principiante que explica cuantas particiones y discos y que tamano deberian tener en funcion del uso que se le vaya a dar al sistema, lo podeis encontrar en http://www.nyx.net/~sgjoen/disk.html o en cualquier servidor con documentacion Howto. Otro documento (HOWTO: Linux Partition) mas sencillo, se puede encontrar enhttp://linux-es.uio.no/docs/HOWTO/mini/Partition.

  • ¿Qué es la Swap?

La swap es un espacio reservado en tu disco duro para poder usarse como una extension de memoria virtual de tu sistema. Es una técnica utilizada desde hace tiempo para hacer creer a los programas que existe mas memoria RAM de la que en realidad existe. Es el propio sistema operativo el que se encarga de pasar datos a la swap cuando necesita mas espacio libre en la RAM y viceversa.

En Linux, la memoria total disponible por el sistema estara formada por la cantidad de memoria RAM instalada + la swap disponible. El acceso a la swap (disco duro) es mas lento que el acceso a la memoria RAM, por lo que si nuestro ordenador esta muy cargado de trabajo y hace un uso intensivo de la swap, la velocidad del sistema disminuira. Un uso muy intensivo y continuado de la swap es un indicativo de que necesitamos mas memoria en nuestro sistema para que funcione desahogado con el uso que le estamos dando.

En linux generalmente se usa como minimo una particion dedicada a swap (aunque tambien se puede tener un fichero swap).

  • ¿Cuanta Swap necesito?
  • En equipos con memoria RAM de hasta 1 Giga debería ser igual de grande la SWAP que la RAM.
  • Entre 2 y 4 Gigas, debería ser la SWAP la mitad de grande que la RAM.
  • Con más de 4 Gigas no se debería sobrepasar los 2 Gigas de SWAP como mucho.

 


Tunnelling SSH over a SOCKS proxy

  • admin 

http://crysol.org/es/node/1355

Proxy SOCKS con SSH: más fácil imposible

Pequeña receta para montar un proxy SOCKS en tu PC para salir a internet a través de un túnel SSH.

Ingredientes

  • openssh
  • autossh
  • netcat-openbsd
  • tsocks

¿Para qué quiero yo esto?

Buena pregunta. Pues sin entrar en detalles «podríamos decir» que un proxy SOCKS es una buena forma de salir a Internet por un solo puerto aunque uses distintas aplicaciones y protocolos: web, jabber, FTP,…

¿Por qué querría yo hacer algo tan raro?

Pues eso es lo bueno, que tú no quieres. Pero a veces tu empresa, instituto, universidad, el Partido, etc. decide que si te concede la gracia de darte acceso al puerto 80 (y si acaso al 443) ya tienes bastante ¿«pa» qué más?

Así que, si tienes una máquina fuera (en tu casa por ejemplo) puedes utilizarla como proxy hacia Internet.

Configuración del proxy SOCKS (en el PC de casa)

Lo único que necesitas es una computadora al otro lado del firewall (en tu casa) con un servidor SSH no demasiado viejo que esté configurado para escuchar en el puerto 443, 80 o alguno de los que te permita acceder el firewall fascista de tu empresa. Algunos incluso te permiten usar el 21 (FTP). Llamaremos a esa máquina: micasa.example.net.

Abriendo el túnel (desde el PC del trabajo)

También necesitas SSH. Ejecuta lo siguiente en una consola:

$ ssh -N -D localhost:1080 micasa.example.net -p 443

Si no tienes configurada una clave pública para acceder a esa máquina (algo que te recomiendo) te pedirá la clave. Si todo va bien se quedará ahí haciendo su trabajo como buen túnel que es. No cierres esa consola. 1080 es el puerto estándar para SOCKS pero puedes usar otro si quieres.

Configurando las aplicaciones

Muchas aplicaciones de red (aunque no todas) tienen la posibilidad de utilizar un proxy. La ventana en cuestión tendrá una pinta similar a la siguiente. Esta concretamente es la de Firefox 3.5 y la puedes encontrar en Edit->Preferences->Advanced->Network->Settings:

 


 

Debes editarlo para que quede como en la figura, que corresponde con los datos de la consola de antes.

Y ya está, ahora todas las conexión que haga el navegador se las pedirá al servidor SSH de tu casa (que actúa de proxy SOCKS).

En lugar de hacer esto en cada aplicación, tienes la posibilidad de configurar el proxy globalmente y decir a las aplicaciones que usen la configuración del sistema. Por ejemplo en GNOME 2.30 se hace en System->Preferences->Network Proxy.

Doctor, el túnel se me cae

Pues sí, los túneles tienen la mala costumbre de caerse y dejarte tirado si se rompe la conexión. Pero hay solución, se llama autossh (es paquete Debian). Y para usarlo simplemente ejecuta el comando de antes, cambiando ssh por autossh:

$ autossh -N -D localhost:1080 micasa.example.net -p 443

En este casi si que es casi obligado usar la clave pública porque si no, cuando intente recuperar el túnel, va a pedir la clave y la gracia de autossh (que es automático) no servirá de mucho.

¿Y qué pasa con SSH?

Es decir, ¿cómo puedes conectar por SSH con una máquina remota? Pues hay que hacer que el tráfico de la conexión SSH pase también a través del túnel, esto es lo que se llama «socksificar» un cliente. Es fácil socksificar el cliente SSH gracias a la opción ProxyCommand, que como su nombre indica (más o menos) sirve para conectar a un servidor SSH a través de un proxy. Aquí va un ejemplo

$ ssh -o "ProxyCommand /bin/nc.openbsd -x localhost %h %p" server.minimor.com

«socksificando» lo que haga falta

Hay muchas aplicaciones (la mayoría) que no fueron diseñadas para utilizar proxies SOCKS. Sin embargo hay un medio muy sencillo para lograr que usen el proxy sin que lo sepan.

Se basa en interceptar la invocación a la llamada connect() de la librería de sockets, de modo que cuando la aplicación abra ingenuamente una conexión normal hacia un servidor remoto, los datos serán enviados de forma transparente hacia el proxy SOCKS configurado. Esta magia (que no es tal) es posible gracias a la precarga de librería de los sistemas GNU (LD_PRELOAD) y el programa tsocks que aprovecha este principio.

Después de instalar el paquete tsocks tienes que configurar el proxy SOCKS que debe usar. Si has seguido las instrucciones anteriores, edita el fichero/etc/tsocks.conf y cambia el valor de la opción «server» para que quede así (se muestran las últimas líneas del fichero):

server = 127.0.0.1
server_type = 5
server_port = 1080

Y para socksificar cualquier programa simplemente ejecuta algo como:

$ tsocks claws-mail

o bien:

$ tsocks          # <— esto abre una nueva shell socksificada
$ claws-mail

looping the loop

Y si lo que quieres es conectar tu máquina a una VPN cuyo servidor está al otro lado del firewall. Un tema interesante…

[ToDo]

Referencias

MySQL Engines: InnoDB vs. MyISAM – A Comparison of Pros and Cons

  • admin 

The 2 major types of table storage engines for MySQL databases are InnoDB and MyISAM. To summarize the differences of features and performance,

  1. InnoDB is newer while MyISAM is older.
  2. InnoDB is more complex while MyISAM is simpler.
  3. InnoDB is more strict in data integrity while MyISAM is loose.
  4. InnoDB implements row-level lock for inserting and updating while MyISAM implementstable-level lock.
  5. InnoDB has transactions while MyISAM does not.
  6. InnoDB has foreign keys and relationship contraints while MyISAM does not.
  7. InnoDB has better crash recovery while MyISAM is poor at recovering data integrity at system crashes.
  8. MyISAM has full-text search index while InnoDB has not.

In light of these differences, InnoDB and MyISAM have their unique advantages and disadvantages against each other. They each are more suitable in some scenarios than the other.

Advantages of InnoDB

  1. InnoDB should be used where data integrity comes a priority because it inherently takes care of them by the help of relationship constraints and transactions.
  2. Faster in write-intensive (inserts, updates) tables because it utilizes row-level locking and only hold up changes to the same row that’s being inserted or updated.

Disadvantages of InnoDB

  1. Because InnoDB has to take care of the different relationships between tables, database administrator and scheme creators have to take more time in designing the data models which are more complex than those of MyISAM.
  2. Consumes more system resources such as RAM. As a matter of fact, it is recommended by many that InnoDB engine be turned off if there’s no substantial need for it after installation of MySQL.
  3. No full-text indexing.

Advantages of MyISAM

  1. Simpler to design and create, thus better for beginners. No worries about the foreign relationships between tables.
  2. Faster than InnoDB on the whole as a result of the simpler structure thus much less costs of server resources.
  3. Full-text indexing.
  4. Especially good for read-intensive (select) tables.

Disadvantages of MyISAM

  1. No data integrity (e.g. relationship constraints) check, which then comes a responsibility and overhead of the database administrators and application developers.
  2. Doesn’t support transactions which is essential in critical data applications such as that of banking.
  3. Slower than InnoDB for tables that are frequently being inserted to or updated, because the entire table is locked for any insert or update.

The comparison is pretty straightforward. InnoDB is more suitable for data critical situations that require frequent inserts and updates. MyISAM, on the other hand, performs better with applications that don’t quite depend on the data integrity and mostly just select and display the data.

Linux Directory Structure

  • admin 

Note: Files are grouped according to purpose. Ex: commands, data files, documentation.
Parts of a Unix directory tree. See the FSSTND standard (Filesystem standard)

/			Root
|---root		The home directory for the root user
|---home		Contains the user's home directories
|    |----ftp		Users include many services as listed here
|    |----httpd
|    |----samba
|    |----user1
|    |----user2
|---bin			Commands needed during bootup that might be needed by normal users
|---sbin		Like bin but commands are not intended for normal users.  Commands run by LINUX.
|---proc		This filesystem is not on a disk.  Exists in the kernels imagination (virtual).  This directory
|    |			Holds information about kernel parameters and system configuration.
|    |----1		A directory with info about process number 1.  Each process
|				has a directory below proc.  
|---usr			Contains all commands, libraries, man pages, games and static files for normal
|    |			operation.
|    |----bin		Almost all user commands.  some commands are in /bin or /usr/local/bin.
|    |----sbin		System admin commands not needed on the root filesystem.  e.g., most server 
|    |			programs.
|    |----include	Header files for the C programming language.  Should be below /user/lib for
|    |			consistency.
|    |----lib		Unchanging data files for programs and subsystems
|    |----local		The place for locally installed software and other files.
|    |----man		Manual pages
|    |----info		Info documents
|    |----doc		Documentation for various packages
|    |----tmp
|    |----X11R6		The X windows system files.  There is a directory similar to usr below this 
|    |			directory.
|    |----X386		Like X11R6 but for X11 release 5
|---boot		Files used by the bootstrap loader, LILO.  Kernel images are often kept here.
|---lib			Shared libraries needed by the programs on the root filesystem
|    |----modules 	Loadable kernel modules, especially those needed to boot the system after
|			 disasters.
|---dev			Device files for devices such as disk drives, serial ports, etc.
|---etc			Configuration files specific to the machine.
|    |----skel		When a home directory is created it is initialized with files from this directory
|    |----sysconfig 	Files that configure the linux system for networking, keyboard, time, and more.
|---var			Contains files that change for mail, news, printers log files, man pages, temp files
|    |----file
|    |----lib		Files that change while the system is running normally
|    |----local		Variable data for programs installed in /usr/local.
|    |----lock		Lock files.  Used by a program to indicate it is using a particular device or file
|    |----log		Log files from programs such as login and syslog which logs all logins,
|    |			logouts, and other system messages.
|    |----run		Files that contain information about the system that is valid until the system is
|    |			next booted
|    |----spool		Directories for mail, printer spools, news and other spooled work.
|    |----tmp		Temporary files that are large or need to exist for longer than they should in
|    |			/tmp.
|    |----catman	A cache for man pages that are formatted on demand
|---mnt			Mount points for temporary mounts by the system administrator.
|---tmp			Temporary files.  Programs running after bootup should use /var/tmp.

Discos y gestión filesystems

  • admin 

Respecto a las unidades de almacenamiento:

  • IDE 
    • /dev/hda disco master (primer conector IDE)
    • /dev/hdb disco slave (del primer conector IDE)
    • /dev/hdc disco master (segundo conector IDE)
    • /dev/hdd disco slave (segundo conector IDE)
  • SCSI
    • /dev/sda Scsi0
    • /dev/sdb Scsi1
  • Disquetes
    • /def/fdx (dónde x número disquetera empezando en 0). Hay diferentes dispositivos, dependiendo de la capacidad del disquete, por ejemplo, el disquete de 1.44MB en la disquetera A sería /dev/fd0H1440.

Respecto a las particiones presentes, el número que sigue al dispositivo representa el índice de la partición dentro del disco, y es tratado como un dispositivo independiente:/dev/hda1 primera partición del primer disco IDE, o /dev/sdc2, segunda partición del tercer dispositivo SCSI.

En el caso de los discos IDE, éstos permiten cuatro particiones denominadas primarias y un mayor número en extendidas (o lógicas). así, si /dev/hdan, n será siempre inferior o igual a 4, se tratará d euna partición primaria, si no, se tratará de una partición lógica con n superior o igual a 5.

Con los discos y los sistems de ficheros (filesystems) asociados, los procesos básicos que podemos realizar se engloban en:

  1. Creacción de particiones –> fdisk, o parecidos (cfdisk, sfdisk)
  2. Formateo de disquetes –> fdformat, superformat,mformat
  3. Creacción de filesystems Linux –> mkfs. Hay versiones específicas para crear filesystems diferentes: mkfs.ext2, mkfs.ext3, y también filesystems no Unix: mkfs.ntfs, mkfs.vfat,mkfs.msdos,mkfs.minix u otros. Ora cosa particular es la orden mkswap que permite crear áreas de swap en particiones que, más tarde, se pueden activar o desactivar con swapon y swapoff.
  4. Montaje de los filesystems: mount, unmount.
  5. Verificación de estado: fsck. También existen versiones particulares para otros sistemas de ficheros: fsck.ext2, fsck.ext3, fsck.vfat,fsck.msdos,etc… Se recomienda desmontar las particiones para realizar elp roceso si se detectan errores y hay que aplicar correcciones.
  6. Backup: tar, cpio, dd,etc…
  7. Utilidades diversas: badblocks para encontrar bloques defectuosos en el dispositivo; dumpe2fs para obtener información sobre filesystems linux; tune2fs permite hacer procesos de tunning de filesystems Linux de tipo ext2,ext3 o ext4 y ajustar diferentes parametros de comportamiento.