miércoles, 28 de abril de 2010

Herramientas útiles para gestión de discos en GNU\Linux

NOTA: Mucho cuidado con estos comandos y con los dispositivos a usar, una equivocación del dispositivo a particionar o del comando y será destruido. Antes de usarlos hay que estar seguro de lo que se está haciendo.

SFDISK

Sfdisk es una herramienta que nos permite usar su salida de información de particiones de un disco dado como entrada para otro disco dado y que se cree un disco idéntico en cuanto a particiones. Podemos hacerlo de la siguiente forma:

# sfdisk -d /dev/sdc | sfdisk /dev/sdd

El disco sdc será particionado exactamente igual al disco sdd. Esto es muy útil cuando manejamos muchos discos y creamos RAIDs.Es parecido al uso de los comandos prtvtoc y fmthard de solaris 10, pero usando un solo comando.

También podemos crear un fichero con la salida del comando y usarlo de entrada después. Lo que nos permite modificar el fichero si queremos, pero obviamente cambiaremos las particiones.

# sfdisk -d /dev/sdc > archivo.txt
# sfdisk /dev/sdd < archivo.txt

En el siguiente ejemplo le pasamos la información del disco f que tiene una partición raid al disco g con lo que el disco g tiene exactamente la misma tabla de particiones que f. Y lo comprobamos con fdisk.

# sfdisk -d /dev/sdf | sfdisk /dev/sdg
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdg: 1044 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
 /dev/sdg: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/sdg1            63  16771859   16771797  fd  Linux raid autodetect
/dev/sdg2             0         -          0   0  Empty
/dev/sdg3             0         -          0   0  Empty
/dev/sdg4             0         -          0   0  Empty
Warning: no primary partition is marked bootable (active)
This does not matter for LILO, but the DOS MBR will not boot this disk.
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)

# fdisk -l /dev/sdg

Disk /dev/sdg: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdg1               1        1044     8385898+  fd  Linux raid autodetect

Hdparm y smartools

Instalamos las smartmontools y hdparm para poder ver datos de los discos. Hdparm suele venir instalado.

$ sudo aptitude install smartmontools hdparm

$ sudo smartctl -i /dev/sda
smartctl version 5.38 [i686-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model:     Hitachi HDP725050GLA380
Serial Number:    GEM534RF20YJVF
Firmware Version: GM4OA52A
User Capacity:    500,107,862,016 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Wed Apr 28 13:46:29 2010 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

$ sudo hdparm -i /dev/sda

/dev/sda:

 Model=Hitachi, FwRev=GM4OA52A, SerialNo=GEM534RF20YJVF
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=56
 BuffType=DualPortCache, BuffSize=7174kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=976773168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-2,3,4,5,6,7

 * signifies the current active mode

Con hdparm podemos cambiar la caché de disco para que no se use y los datos se escriban directamente a disco. Esto es útil si usamos el disco para contener una base de datos ya que hacemos que los datos vayan a disco directamente y hacemos que ante fallos no se pierdan datos de cache. De hecho se recomienda hacerlo para discos con bases de datos ya que aunque se pierde rendimiento por no usar la cache se gana seguridad, sobretodo para bases de datos transaccionales.

Mucho cuidado con hdparm porque si usáis una opción errónea os podéis cargar los datos del disco. Así que estad seguros de lo que ponéis (no es lo mismo -w que -W).

$ sudo hdparm -W0 /dev/sda
/dev/sda:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)

$ sudo hdparm -W1 /dev/sda
/dev/sda:
 setting drive write-caching to 1 (on)
 write-caching =  1 (on) 

Blkid

Con blkid podemos ver los UUID de las particiones y dispositivos raid así como el tipo de sistema de ficheros y las etiquetas o Labels que usen.


$ sudo blkid 
/dev/sda1: UUID="5652fcfb-68e3-4920-b75d-f1cbac082a7d" TYPE="ext4" 
/dev/sda2: UUID="c796a6c3-7f0a-4928-8456-a2df0a3755a6" TYPE="swap" 
/dev/sda3: UUID="a99cd19b-52a4-4015-b32b-c11bb23e47f8" TYPE="ext4"

Hay muchas más herramientas y muchos usos pero pongo estos que considero prácticos para el día a día.
Related Posts with Thumbnails