Tag Archives: Featured
hdd25

Dump di un disco via rete

Facile ricetta, 1 stella di difficoltà.

se vogliamo effettuare una copia di un disco locale su una macchina remota:

dd if=/dev/sdX | ssh host.destinazione.com dd of=file.dd

se vogliamo anche comprimere:

dd if=/dev/sdX | gzip -1 | ssh host.destinazione.com gzip -dc | dd of=file.dd

🙂

Comments ( 0 )

Creazione di un dispositivo raid MD e del filesystem

Se creiamo un dispositivo MD su linux (sia raid 1 che raid 5) la ricostruzione inizia immediatamente.

Se vogliamo creare anche il filesystem e magari fare qualche prova appena effettuata la creazione possiamo andare incontro a rallentamenti veramente imbarazzanti (specie su dischi di grande capienza)

Si può ovviare a tutto questo creando un raid degradato – per il sistema è impossibile aggiornare il mirror o i dati di ridondanza quindi momentaneamente il raid non viene riallineato e lo possiamo utilizzare per fare le nostre prove.

vediamo come

# apt-get install mdadm
mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sda1 missing
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

se controlliamo lo stato del dispositivo:

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
      1953510841 blocks super 1.2 [2/1] [U_]
 unused devices:

vediamo che è degradato ed in questo momento non c’è il riallineamento

possiamo creare il filesystem velocemente e fare tutte le prove del caso:

# mkfs.ext4 -m 1 -L RAID /dev/md0
mke2fs 1.41.12 (17-May-2010)
Etichetta del filesystem=RAID
Tipo SO: Linux
Dimensione blocco=4096 (log=2)
Dimensione frammento=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
122101760 inode, 488377710 blocchi
4883777 blocchi (1.00%) riservati per l'utente root
Primo blocco dati=0
Maximum filesystem blocks=4294967296
14905 gruppi di blocchi
32768 blocchi per gruppo, 32768 frammenti per gruppo
8192 inode per gruppo
Backup del superblocco salvati nei blocchi:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
	102400000, 214990848
Scrittura delle tavole degli inode: fatto
Creating journal (32768 blocks): fatto
Scrittura delle informazioni dei superblocchi e dell'accounting del filesystem: fatto
Questo filesystem verrà automaticamente controllato ogni 26 mount, o
180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per cambiare.

appena finito aggiungiamo al raid il disco mancante; inizierà il riallineamento

# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

a questo punto parte la sincronizzazione dei due dischi:

cat /proc/mdstat
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sda1[0]
      1953510841 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.0% (1430016/1953510841) finish=788.5min speed=41258K/sec
unused devices:

e ci vorrà un bel pò…

🙂

Comments ( 0 )

Rimuovere il partizionamento GPT da un disco

Per rimuovere da un disco il partizionamento di tipo GPT si può procedere così:

# apt-get install parted

appena installato parted eseguirlo (tipicamente parted /dev/sdx)

al prompt di parted eseguire “mktable” e definire una partizione msdos

# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable
New disk label type? msdos
(parted) quit
Information: You may need to update /etc/fstab.

la partizione gpt è sparita!

🙂

Comments ( 0 )

ISC DHCP e log dei lease

Ecco come fare per loggare i client che richiedono un ip al nostro server dhcp in modo moooolto elegante!

nel file /etc/dhcp/dhcp.conf si aggiunge una direttiva come questa:

on commit {
  set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
  set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
  log(concat("Commit: IP: ", ClientIP, " Mac: ", ClientMac));
  execute("/root/scripts/dhcp-event", "commit", ClientIP, ClientMac);
}

e poi creiamo un semplice script (/root/scripts/dhcp-event):

#!/bin/bash
date=$(date)
echo "date: "$date >> /tmp/dhlog
echo "orig: "$1 >> /tmp/dhlog
echo "  ip: "$2 >> /tmp/dhlog
echo " mac: "$3 >> /tmp/dhlog
a=$(host $2)
name=$(echo $a | cut -d" " -f5)
echo "name: "$name >> /tmp/dhlog

a questo punto è banale prendere questi dati e metterli su un database oppure generare la lista di conversione ip/nomi per sarg (così, tanto per fare un esempio…)

le direttive che possiamo usare (in modo pressochè identico) sono:

– on commit
– on release
– on expiry

🙂

a.

Comments ( 0 )