Kategori Linux

mdadm: /dev/md0 assembled from 2 drives – not enough to start the array

Mittwoch, August 3rd, 2011

Beim starten des md Raid waren 2 Platten beim Starten nicht hochgekommen.

# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
# mdadm --assemble /dev/md0 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
mdadm: cannot open device /dev/sdb2: Device or resource busy
mdadm: /dev/sdb2 has no superblock - assembly aborted

Sie wurden bereits benutzt. Allerdings nicht von eine Userspace Programm / Mount wie fuser „nicht anzeigt“.
# fuser -v /dev/sdb2

An dieser Stelle haben wir vermutet das es sich um ein Fake Raid handelt. Also mal einen Blick in die device mapper blockdevices werfen…
# dmsetup table
isw_ddjcbgeaib_Volume12: 0 1875395970 linear 252:0 78124095
isw_ddjcbgeaib_Volume11: 0 78124032 linear 252:0 63
isw_ddjcbgeaib_Volume1: 0 3907039744 striped 2 256 8:16 0 8:48 0

# ls -l /dev/sdb
brw-rw---- 1 root disk 8, 16 2011-08-03 23:32 /dev/sdb

In der Tat /dev/sdb wird von device mapper verwendet.

Um das Fake Raid aufzulösen haben wir die brachial Methode genommen. Hier wird mit dem Devicemapper alle Einstellungen Deaktiviert. Somit sind die platten wieder freigegeben.

# dmsetup remove_all
# dmsetup table
No devices found

Anschießend konnte das md Software Raid wieder ordentlich gestartet werden
# mdadm --assemble /dev/md0 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
mdadm: /dev/md0 has been started with 4 drives.

Im Endeffekt hat auf die Platten ein „Facke Raid“ mittels dmraid zugegriffen. Was auch erklärt warum die „Partitionen für den Kernel verschwunden“ waren.

apt-get autoremove dmraid

Partitionen für den Kernel verschwunden

Mittwoch, August 3rd, 2011

Partitionen für den Kernel Verschwunden
Sowohl mit partx als auch mit fdisk -l und anderen Tools konnte man die Partitionen der Platte sehen.
# partx -l /dev/sdb
# 1: 63- 78124094 ( 78124032 sectors, 39999 MB)
# 2: 78124095-1953520064 (1875395970 sectors, 960202 MB)
# 3: 0- -1 ( 0 sectors, 0 MB)
# 4: 0- -1 ( 0 sectors, 0 MB)

Leider Tauchten sie aber nicht im /sys auf.

# tree /sys/ | grep sdb
│   ├── sdb -> ../devices/pci0000:00/0000:00:1f.2/host2/target2:0:1/2:0:1:0/block/sdb
│   │   ├── sdb -> ../../devices/pci0000:00/0000:00:1f.2/host2/target2:0:1/2:0:1:0/block/sdb
│   │   ├── 8:16 -> ../../devices/pci0000:00/0000:00:1f.2/host2/target2:0:1/2:0:1:0/block/sdb
│   │   │   │   │   │   │   └── sdb
│   │   │   │   ├── sdb -> ../../../../pci0000:00/0000:00:1f.2/host2/target2:0:1/2:0:1:0/block/sdb

Nach dem wir partprobe ausgeführt haben waren die Platten wieder da.
#partprobe

Platten über die Labels mounten

Mittwoch, Juli 27th, 2011

Um ls -al /dev/disk/*/ besser zu visualisieren kann tree /dev/disk nutzen.


tree /dev/disk/
/dev/disk/
├── by-id
│   ├── md-uuid-b85d697e:6cd77eb1:b1236bdc:f76d0236 -> ../../md0
│   ├── scsi-1AMCC_9VS991WE000000000000 -> ../../sdd
│   ├── scsi-1AMCC_9VS991WE000000000000-part1 -> ../../sdd1
│   ├── scsi-1AMCC_9VS992WE000000000000 -> ../../sda
│   ├── scsi-1AMCC_9VS992WE000000000000-part1 -> ../../sda1
│   ├── scsi-1AMCC_9VS993WE000000000000 -> ../../sdc
│   ├── scsi-1AMCC_9VS993WE000000000000-part1 -> ../../sdc1
│   ├── scsi-1AMCC_9VS994WE000000000000 -> ../../sdb
│   └── scsi-1AMCC_9VS994WE000000000000-part1 -> ../../sdb1
├── by-path
│   ├── pci-0000:01:03.0-scsi-0:0:0:0 -> ../../sda
│   ├── pci-0000:01:03.0-scsi-0:0:0:0-part1 -> ../../sda1
│   ├── pci-0000:01:03.0-scsi-0:0:1:0 -> ../../sdb
│   ├── pci-0000:01:03.0-scsi-0:0:1:0-part1 -> ../../sdb1
│   ├── pci-0000:01:03.0-scsi-0:0:2:0 -> ../../sdc
│   ├── pci-0000:01:03.0-scsi-0:0:2:0-part1 -> ../../sdc1
│   ├── pci-0000:01:03.0-scsi-0:0:3:0 -> ../../sdd
│   └── pci-0000:01:03.0-scsi-0:0:3:0-part1 -> ../../sdd1
└── by-uuid
└── 178053d2-17f7-4029-ba90-8cb2bba58954 -> ../../md0

Ein Upstart Job erstellen

Montag, Juli 11th, 2011

Heute erstellen wir uns mal einen Upstart Job.

/etc/init/test.conf

description	"test package"
author		"Christoph Hueffelmann <chr@istoph.de>"

start on runlevel 5
stop on runlevel 0

respawn
expect fork

exec /usr/bin/test

ln -s /lib/init/upstart-job /etc/init.d/test

und schon läuft das program test mit
services test start

Um das Upstart Script in meinem deb zu integrieren muss man die Datei nur ins Debian Verzeichnis kopieren.
cp /etc/init/test.conf debian/test.upstart

emerge dig

Donnerstag, Juni 30th, 2011

Diesmal war ich auf der suche nach dig gefunden habe ich es in emerge -av net-dns/bind-tools enthalten sind auch folgende tools:
dig, nslookup, host, nsupdate, dnssec-keygen