Kategori Linux

Paketquelle anzeigen

Sonntag, Januar 22nd, 2012

Da ich gerade mal wieder eine Viertelstunde damit vertan habe, diesen Befehl zu finden, dokumentiere ich ihn hier.

Ich suchte den Befehl, mit dem ich sehen kann, aus welcher Paktequelle ein Programm kommt. Dies bauchte ich um heraus zu finden ob das Paket ggf. aus einer PPA kommt.

apt-cache policy qemu
qemu:
  Installiert: (keine)
  Kandidat: 0.12.3+noroms-0ubuntu9.16
  Versions-Tabelle:
     0.12.3+noroms-0ubuntu9.16 0
        500 http://mirror.bauhuette.fh-aachen.de/ubuntu/ lucid-updates/universe Packages
     0.12.3+noroms-0ubuntu9.15 0
        500 http://mirror.bauhuette.fh-aachen.de/ubuntu/ lucid-security/universe Packages
     0.12.3+noroms-0ubuntu9 0
        500 http://mirror.bauhuette.fh-aachen.de/ubuntu/ lucid/universe Packages

9AA38DCD55BE302B

Mittwoch, Januar 18th, 2012

Da hatte ich mal wieder ein uhr alles etch in die finger bekommen, das auch noch veraltetet Schlüssel hatte.

server:~# apt-get update
Get:1 http://archive.debian.org etch Release.gpg [1033B]
Hit http://archive.debian.org etch Release
Ign http://archive.debian.org etch/main Packages/DiffIndex
Ign http://archive.debian.org etch/non-free Packages/DiffIndex
Ign http://archive.debian.org etch/contrib Packages/DiffIndex
Ign http://archive.debian.org etch/main Sources/DiffIndex
Ign http://archive.debian.org etch/non-free Sources/DiffIndex
Ign http://archive.debian.org etch/contrib Sources/DiffIndex
Hit http://archive.debian.org etch/main Packages
Hit http://archive.debian.org etch/non-free Packages
Hit http://archive.debian.org etch/contrib Packages
Hit http://archive.debian.org etch/main Sources
Hit http://archive.debian.org etch/non-free Sources
Hit http://archive.debian.org etch/contrib Sources
Fetched 1B in 0s (3B/s)
Reading package lists... Done
W: There is no public key available for the following key IDs:
9AA38DCD55BE302B
W: You may want to run apt-get update to correct these problems

Google verwies auf die lösung mit dem netten Server wwwkeys.eu.pgp.net der aber nicht auflösbar war.
server:~# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 9AA38DCD55BE302B
gpg: requesting key 55BE302B from hkp server wwwkeys.eu.pgp.net
?: wwwkeys.eu.pgp.net: Host not found
gpgkeys: HTTP fetch error 7: couldn't connect: Success
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

Die Lösung für das problem war ein andere Key Server:
server:~# gpg --keyserver subkeys.pgp.net --recv-key 9AA38DCD55BE302B
gpg: requesting key 55BE302B from hkp server subkeys.pgp.net
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 55BE302B: public key "Debian Archive Automatic Signing Key (5.0/lenny) " imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
server:~# gpg --armor --export 9AA38DCD55BE302B | apt-key add -
OK

Could not find source tarball busybox

Sonntag, Januar 15th, 2012

Da habe ich mal wieder etc-update vergessen.
...
* Gentoo Linux Genkernel; Version 3.4.23
* Running with options: ramdisk

Could not find source tarball /var/cache/genkernel/src/busybox-1.18.1.tar.bz2. Please refetch.
gentoo # etc-update
Scanning Configuration files...
The following is the list of files which need updating, each
configuration file is followed by a list of possible replacement files.
1) /etc/genkernel.conf (1)

Tinc Debugging

Donnerstag, Januar 5th, 2012

Um Tinc besser Debuggen zu können kann man das syslog einfach in den Hintergrund schreiben und mittels killall -USR2 tincd anstupsen. Das sieht dann folgender massen aus.

tail -F /var/log/syslog &
...
killall -USR2 tincd
srv01 tinc.vpn[28369]: Statistics for Linux tun/tap device (tun mode) /dev/net/tun:
srv01 tinc.vpn[28369]: total bytes in: 294
srv01 tinc.vpn[28369]: total bytes out: 294
srv01 tinc.vpn[28369]: Nodes:
srv01 tinc.vpn[28369]: srv02 at 1.2.3.4 port 655 cipher 91 digest 64 maclength 4 compression 0 options d status 003a nexthop srv01 via srv01 pmtu 1451 (min 1451 max 1451)
srv01 tinc.vpn[28369]: End of nodes.
srv01 tinc.vpn[28369]: Edges:
srv01 tinc.vpn[28369]: srv02 to srv01 at 1.2.3.4 port 655 options d weight 328
srv01 tinc.vpn[28369]: srv01 to srv02 at 1.2.3.5 port 655 options d weight 328
srv01 tinc.vpn[28369]: End of edges.
srv01 tinc.vpn[28369]: Subnet list:
srv01 tinc.vpn[28369]: 192.168.0.0/24#10 owner srv01
srv01 tinc.vpn[28369]: End of subnet list.

Mit fg und STRG + C kann man das teil -F wieder aus dem Hintergrund holen und beenden.

Tinc und GIT

Sonntag, Januar 1st, 2012

Tinc ist im gegenstart zu OpenVPN eine mash vpn. Damit dies funktioniert müssen aber auf jemden Server die öffentlichen Schüssel/Konfigurationsdateien bekannt sein. Um diese Schlüssel zu verteilen verwende ich GIT.

Hier ein aufbau zwischen zwei Servern (SRV01/SRV02). Jeweils habe den Ordner /opt/git/ erstell und das Git ausgeschekt. Den VPN Ordner habe ich dann mittels eines Symlinks ins /etc/tinc Verzeichnis gelinkt.
ln -s /opt/git/vpn.tinc/vpn /etc/tinc/vpn

Folgende Daten und Ordner befinden sich in meinem Git. Mittels der .d Verzeichnisse werden die einzelne Dateien auf den Servern gelinkt (siehe unten).
/etc/tinc/vpn/
hosts
hosts/srv01
hosts/srv02
tinc.conf.d
tinc.conf.d/srv01.conf
tinc.conf.d/srv02.conf
up.d
up.d/srv01-up
up.d/srv02-up
down.d
down.d/down

Die Dateien im einzelnen.
--- SRV01 ---
hosts/srv01:

Name = srv01
Address = srv01.chr.istoph.de
Cipher = blowfish
Digest = sha1
IndirectData = yes
Subnet = 10.8.0.1/32
Subnet = 192.168.0.1/24

Wichtig: bei Subnet muss einmal die Lokale Adresse auf die gelauscht werden soll mit /32 angegeben werden. Das zweite Subnet ist nur beispielhaft für weiteres netz das sich hinter SRV01 befindet.

tinc.conf.d/srv01.conf:

Name = srv01
AddressFamily = ipv4
BindToInterface = eth0
ConnectTo = srv02
Device = /dev/net/tun
Mode = router
KeyExpire = 3600
PrivateKeyFile = /etc/tinc/vpn/rsa_key.priv

up.d/srv01-up:

#!/bin/bash
ip addr add 10.8.0.1/24 dev vpn
ip link set vpn up

down.d/down:

#!/bin/bash

Auf SRV01 müssen dann natürlich nur folgende Symlinks erstellt werden.
ln -s tinc.conf.d/srv01.conf tinc.conf
ln -s up.d/srv01-up tinc-up
ln -s down.d/down tinc-down

--- SRV02 ---
hosts/srv02:

Name = srv02
Address = srv02.chr.istoph.de
Cipher = blowfish
Digest = sha1
IndirectData = yes
Subnet = 10.8.0.2/32

tinc.conf.d/srv02.conf:

Name = srv02
AddressFamily = ipv4
BindToInterface = eth0
ConnectTo = srv01
Device = /dev/net/tun
Mode = router
KeyExpire = 3600
PrivateKeyFile = /etc/tinc/vpn/rsa_key.priv

up.d/srv02-up:

#!/bin/bash
ip addr add 10.8.0.2/24 dev vpn
ip link set vpn up

ln -s tinc.conf.d/srv02.conf tinc.conf
ln -s up.d/srv02-up tinc-up
ln -s down.d/down tinc-down

--- END ---

Nach dem die Dateien angelegt sind können auf dem jeweiligen Server (SRV01 / SEV02), die Keys erstellt werden.
tincd --generate-keys=4096 -n vpn

Dies Legt den Privaten schlüssel rsa_key.priv an und legt den Öffentlichen Schlüssel in die host/srv01 Datei.

Vor dem Starten von Tinc müssen die up/down Scripte noch Ausführungsrechte auf den Jeweiligen Servern bekommen.
chmod +x up.d/srv*
chmod +x down.d/down

Nun können wir alles im GIT einchecken. Nicht vergessen nach dem einchecken von SRV01 auf SRV02 zu pullen und erst dann die Dateien anzulegen um sie zu puschen.
git add hosts/srv01 tinc.conf.d/srv01.conf up.d/srv01-up down.d/down
git commit -m "tinc: add srv01"
git puch

Wichtig hierbei ist den Privaten Schlüssel rsa_key.priv nicht einzucken. Auch aus Backup gründen macht dies keinen Sinn da dieser immer wieder neu erstellt werden kann.

Bei Ubuntu Systemen muss in der Datei /etc/tinc/nets.boot der Name des zu startenden Netzwerkes eingetragen werden. In unserem Fall VPN.
## This file contains all names of the networks to be started on system startup.
vpn

AWS Amazon Web Service EC2 Scripten

Dienstag, Dezember 20th, 2011

Für einen Lasttest habe ich etliche AWS Micro Instanzen mit Ubuntu 10.4 benötigt, die alle vorkonfiguriert werden mussten. Da man aber nicht Tausend Instanzen von Hand Einrichten und Konfigurieren will musste mal wieder ein Script her.

Als erstes braucht man die ec2-api-tools
sudo apt-get install ec2-api-tools

Dann habe ich ein Start Script Namens run-file.sh geschrieben, das z.b. so aussieht:
#!/bin/bash

apt-get update
apt-get install -y apache2-utils
ab http://blog.chr.istoph.de/

Dann habe ich die Instanzen mittels eine for Schleife gestartet.
for i in {1..1000}; do
ec2-run-instances ami-e52ce68c --instance-type t1.micro --region us-east-1 --key ca -K pk-xxx.pem -C cert-xxx.pem -user-data-file run-file.sh
done

Das starten der Instanzen sollte nicht mittels & in den Hintergrund geschoben werden, da das Programm ec2-run-instances ein sehr Speicherfressendes Java Programm ist.

Nachdem man jetzt die 1000 Instanzen eine Weile laufen gelassen hat muss man diese auch wieder beenden. Dazu kann man sich folgendermaßen alle Instanzen anzeigen:
ec2-describe-instances -K pk-xxx.pem -C cert-xxx.pem

Dem endsprechen kann man auch ALLE existierende Instanzen gelöscht werden:
ec2-terminate-instances -K pk-xxx.pem -C cert-xxx.pem $(ec2-describe-instances -K pk-xxx.pem -C cert-xxx.pem | grep INSTANCE | awk '{print $2}')

Quelle: help.ubuntu.com
uec-images.ubuntu.com

date + stdin

Donnerstag, November 24th, 2011

Endlich hab ich auf der Alug erfahren wie ich in einem Einzeller ein stdin mit einem Datum am Anfang der Zeilen versehe. Dies Brauche ich Natürlich nicht für Syslog sonden für logs die noch keine Zeitangaben in jeder Zeile haben.

tail -f /var/log/syslog | awk '{print strftime() " " $0}'

gzip vs pigz

Mittwoch, November 2nd, 2011

Heute bin ich auf das Programm pigz gestossen worden. Im Gegensatze zu gzip ist es wie der Name schon sag eine "parallel implementation of gzip". Hier habe eich mal versucht es vergleichbar zumachen.

# dd if=datei | gzip -c | dd of=/dev/null
384896+0 Datensätze ein
384896+0 Datensätze aus
197066752 Bytes (197 MB) kopiert, 2,90005 s, 68,0 MB/s
24368+1 Datensätze ein
24368+1 Datensätze aus
12476596 Bytes (12 MB) kopiert, 2,89903 s, 4,3 MB/s

# dd if=datei | pigz -c | dd of=/dev/null
384896+0 Datensätze ein
384896+0 Datensätze aus
197066752 Bytes (197 MB) kopiert, 2,16703 s, 90,9 MB/s
23787+1493 Datensätze ein
24287+1 Datensätze aus
12435252 Bytes (12 MB) kopiert, 2,17414 s, 5,7 MB/s

Man muss dazu sagen das die Datei aus dem cache kommt.
Quelle: www.zlib.net/pigz

IO Scheduler

Mittwoch, Oktober 19th, 2011

Vor einem Jahr habe ich wegen Performance Problemen im Forum mal Leitungstest mit dem IO Scheduler gemacht. Meine Testumgebung dafür war ein Syncendes RAID. Da ich gerade festgestellt habe das ich diesen Artikel nie veröffentlicht habe stelle ich ihn hier mal online. Leider habe ich vergessen zu Dokumentiert mit welchem Kernel ich das gemacht habe. Dem entsprechend muss das was ich hier gemacht habe eh noch mal wiederholt werden.

Mittels speed_limit habe ich das Syncen der HDs auf Maximum gestellt.

Dann habe ich den Scheduler verstellt.
cat /sys/block/sd*/queue/scheduler

Dabei kamm folgendes raus:

deadline 5500K/sec
noop 5200K/sec
anticipatory 45000K/sec
cfq 39000K/sec

Wobei ich von cfq sehr erschrocken war. Und dies bei Gelegenheit unter anderen umstehenden noch mal überprüfen werde.

(Geschreiben am: 17.02.2010)

swap reconfigure

Montag, Oktober 17th, 2011

blkid
/dev/sda5: UUID="000000000000-0000-0000-0000-000000000000" TYPE="swap"

Wenn blkid keine SWAP Partition anzeigt muss dieser erst erzeugt werden. Welches der richtige Pfad ist findet man über fstab -l heraus.
mkswap /dev/sda5

Anschließend den alten SWAP Pfad aus der /etc/fstab entfernen und den neuen hinzufügen:
grep -v swap /etc/fstab > /etc/.fstab
blkid | grep swap | awk '{ print $2 " none swap sw 0 0"}' >> /etc/.fstab
mv /etc/.fstab /etc/fstab
swapon -a

nvidia-settings

Sonntag, Oktober 16th, 2011

Öfters muss ich die Grafikeinstellungen Remote vornehmen. Wenn man dies mit X11 forwarding macht muss nvidia-settings mitgeteilt werden welchen Monitor er Editoren soll, sonnst nimmt er den lokalen.

nvidia-settings -c :0.0

AMD Fusion

Donnerstag, Oktober 13th, 2011

Ich habe da mal ein AMD Fusion Bord in die Hände bekommen. Soweit lief unter Ubuntu 10.04.3 LTS auch alles auf an hip, bis auf die Graphikbeschleunigung. Dafür habe ich den Proprietären AMD Treiber verwendet und tadellos zum laufen bekommen.

Was allerdings sehr enttäuscht sind die I/O perforans werte. Wie hier im Test aufgeführt liegt der Durchsatz bei nur 53MB, knapp die hälfte von 110MB was die Platte eigentlich kann.

# time $(dd if=/dev/zero of=/root/test.img bs=512 count=2048000 conv=sync)
2048000+0 records in
2048000+0 records out
1048576000 bytes (1.0 GB) copied, 19.6919 s, 53.2 MB/s

real	0m19.712s
user	0m0.760s
sys	0m10.730s
# lspci
00:00.0 Host bridge: Advanced Micro Devices [AMD] Device 1510
00:01.0 VGA compatible controller: ATI Technologies Inc Device 9802
00:01.1 Audio device: ATI Technologies Inc Device 1314
00:04.0 PCI bridge: Advanced Micro Devices [AMD] Device 1512
00:11.0 SATA controller: ATI Technologies Inc SB700/SB800 SATA Controller [AHCI mode] (rev 40)
00:12.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
00:12.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:13.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
00:13.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 42)
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA) (rev 40)
00:14.3 ISA bridge: ATI Technologies Inc SB700/SB800 LPC host controller (rev 40)
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge (rev 40)
00:14.5 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI2 Controller
00:15.0 PCI bridge: ATI Technologies Inc Device 43a0
00:15.1 PCI bridge: ATI Technologies Inc Device 43a1
00:16.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
00:16.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:18.0 Host bridge: Advanced Micro Devices [AMD] Device 1700 (rev 43)
00:18.1 Host bridge: Advanced Micro Devices [AMD] Device 1701
00:18.2 Host bridge: Advanced Micro Devices [AMD] Device 1702
00:18.3 Host bridge: Advanced Micro Devices [AMD] Device 1703
00:18.4 Host bridge: Advanced Micro Devices [AMD] Device 1704
00:18.5 Host bridge: Advanced Micro Devices [AMD] Device 1718
00:18.6 Host bridge: Advanced Micro Devices [AMD] Device 1716
00:18.7 Host bridge: Advanced Micro Devices [AMD] Device 1719
03:00.0 Ethernet controller: Marvell Technology Group Ltd. Device 4380 (rev 10)
04:00.0 USB Controller: NEC Corporation Device 0194 (rev 03)
# cat /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 20
model		: 1
model name	: AMD E-350 Processor
stepping	: 0
cpu MHz		: 1600.000
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 6
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc nonstop_tsc extd_apicid pni monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch ibs skinit wdt arat
bogomips	: 3200.50
TLB size	: 1024 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate

processor	: 1
vendor_id	: AuthenticAMD
...

Ubuntu 11.10 (Oneiric Ocelot)

Donnerstag, Oktober 13th, 2011

ist auf unserem Mirror angekommen. Jetzt fehlt noch ein Wochenende um es zu testen.

mirror.bauhuette.fh-aachen.de/ubuntu-cd/11.10/

KSM auf KVM Server

Mittwoch, Oktober 12th, 2011

KSM (Kernel Samepage Merging) ist eine Technik mit der RAM pages verglichen und gleiche Seiten ausgesiebt werden. Laufen z.b. auf einem Wirtssystem zwei VMs mit dem gleiche Kernel muss dieser, überspitzt dargestellt, nur einmal im RAM vorgehalten werden.

Wie lese ich die werte aus:
grep -v / /sys/kernel/mm/ksm/*

Was bedeuten diese Werte im Detail:
/sys/kernel/mm/ksm/full_scans:1546
wie oft alle zusammenführbar Bereiche gescannt wurden

/sys/kernel/mm/ksm/max_kernel_pages:1025500
insgesamt anzahl aller Seiten

/sys/kernel/mm/ksm/pages_shared:107994
wie viele gemeinsame Seiten gefunden wurden

/sys/kernel/mm/ksm/pages_sharing:484929
wie viele Seiten sind einzigartig, werden aber immer wieder für die Zusammenführung geprüft

/sys/kernel/mm/ksm/pages_to_scan:100 (rw)
wie vleie seiten pro durchlauf überprüft werden sollen
echo 100 > /sys/kernel/mm/ksm/pages_to_scan

/sys/kernel/mm/ksm/pages_unshared:1099675
wie viele Seiten einzigartig, aber immer wieder für die Zusammenführung geprüft

/sys/kernel/mm/ksm/pages_volatile:246482
wie viele Seiten ändern sich zu schnell

/sys/kernel/mm/ksm/run:1 (rw)
in dieser Datei setzt man den Status 1 / 0 ob ksm verwendet werden soll, in unsrem fall:
echo 1 > /sys/kernel/mm/ksm/run

/sys/kernel/mm/ksm/sleep_millisecs:20 (rw)
wie oft geprüft werden soll
echo 20 > /sys/kernel/mm/ksm/sleep_millisecs

Quelle: git.kernel.org

Welcher RAM ist verbaut

Donnerstag, September 22nd, 2011

Heute musste ich RAM nachstecken, da ein guter Administrator nicht aufsteht um nachzuschauen welcher RAM verbaut ist hat er die Möglichkeit auf der Console nachzuschauen. Hierzu habe ich das Programm dmidecode verwendet.

sudo dmidecode | grep Size
Size: 2048 MB
Size: 2048 MB
Size: No Module Installed
Size: No Module Installed

In einer manpage nach einer Option suchen

Mittwoch, September 14th, 2011

Heute suchen wir in einer manpage ein Option die -w heißt. Um danach suchen zu können habe ich folgende möglich.

/^[ ^I]+-w
Das ^I wird durch strg + i erzeugt.

Wie liest man den regex jetzt:
Erst mal das / zum suchen. Dann ein ^ für alles was am anfang mit: [ ^I] einem Tabulator begint, + danach kommt -w die Option die ich suche.

SSH agent eines andren Users

Donnerstag, September 1st, 2011

Heute bedien wir uns an einem SSH AGENT eines andren Users.

So sieht die ausgabe bei einem User aus.
user@pc:~$ env | grep SSH
SSH_AGENT_PID=1719
SSH_AUTH_SOCK=/tmp/keyring-AyZCBd/ssh

Stellen wir uns vor, wir haben uns per SSH zugang zum dem Rechner des Users gemacht, und wissen das er gerade ein gnome-panel hat. Es kann natürlich auch eine andere pid des Users benützt werden.

root@pc:~# cat /proc/$(pidof gnome-panel)/environ | xargs -0n1 echo | grep SSH
SSH_AGENT_PID=1719
SSH_AUTH_SOCK=/tmp/keyring-AyZCBd/ssh

root@pc:~# SSH_AUTH_SOCK=/tmp/keyring-AyZCBd/ssh ssh user@chr.istoph.de

Nun kann eine Verbindung mit dem agent des Users aufgebaut werden.

root die Schreibrechte entziehen

Montag, August 22nd, 2011

Auf einem ext2/ext3/ext4 basierende Dateisystem kann man root die Schreibrechte für einzelne Dateien entziehen.

Nötig war das für meinen Router der am externen Netz eine per DHCP zugewiesene IP bekommt und damit immer die /etc/resolv.conf überschreiben hat. Da ich aber auf dem Router einen bind9 laufen lasse, sollten die Lokalen DNS anfragen an die 127.0.0.1 weitergeleitet werden.

chattr +i /etc/resolv.conf

Um das ganze wieder rückgängig zu machen verwendet man die Option -i.

Quelle: wiki.ubuntuusers.de

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