Root-Partition verkleinern und LVM anlegen

ich möchte hier einmal beschreiben wie die Root-Partition eines laufen Servers mit einem Reboot verkleinert werden kann und anschließend der freigewordenen Speicherplatz für ein LVM genutzt wird.

Wir fangen an mit dem ersten Script für den Boot Prozess. Hier wird die nötige Vorbereitung zum Resize der Festplatte durchgeführt. Die Binary wird beim Boot Prozess deployed.

1
nano /etc/initramfs-tools/hooks/resize-hook
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case "${1:-}" in
  prereqs)
    prereqs
    exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

# copy the binary as early as possible
copy_exec /sbin/resize2fs /sbin
copy_exec /sbin/e2fsck /sbin

Das eigentliche Script zum verkleinern der Festplatte ist dann folgendes:

1
nano /etc/initramfs-tools/scripts/local-premount/resize
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
        prereqs
        exit 0
        ;;
esac

e2fsck -fy /dev/sda2
resize2fs /dev/sda2 200g

WICHTIG: Im Script ist die Größe (200g = 200GB) angeben auf die die Root-Partition verkleinert werden soll, sowie die Root-Partitions Bezeichnung: /dev/sdaX.

Annahme ist hier das Ihr soviel Platz auf dem System habt, bzw die Nutzdaten nicht die Zielgröße überschreitet. Achtung: Datenverlust möglich.

Als nächste die Script ausführbar machen und die „Initramfs“ neu bauen/aktualisieren.

1
2
chmod +x /etc/initramfs-tools/hooks/resize-hook
chmod +x /etc/initramfs-tools/scripts/local-premount/resize
1
update-initramfs -u

Anschließend wird der Server neu gestartet. Im Boot-Prozess wird dann die Festplatte auf die angegebene Größe verkleinert.

1
fdisk /dev/sda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 931 GiB, 999653638144 bytes, 1952448512 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 79E5B2B1-04FA-4367-A29A-7848BBE62B82

Device         Start        End    Sectors  Size Type
/dev/sda1       2048       4095       2048    1M BIOS boot
/dev/sda2       4096  419434495  419430400  931G Linux filesystem

Command (m for help): d
Partition number (1-3, default 3): 2

Partition 2 has been deleted.

Command (m for help): n
Partition number (2,4-128, default 2):
First sector (4096-419434495, default 4096):
Last sector, +sectors or +size{K,M,G,T,P} (4096-419434495, default 419434495): +200G

Created a new partition 2 of type 'Linux filesystem' and of size 200 GiB.
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: N

Command (m for help): p

Disk /dev/sda: 931 GiB, 999653638144 bytes, 1952448512 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 79E5B2B1-04FA-4367-A29A-7848BBE62B82

Device         Start        End    Sectors  Size Type
/dev/sda1       2048       4095       2048    1M BIOS boot
/dev/sda2       4096  419434495  419430400  200G Linux filesystem

Command (m for help):

Innerhalb von „fdisk“ die alte Partition löschen und eine neue mit der Zielgröße anlegen.

Anschließend wird das LVM auf den freigewordenen Speicherplatz angelegt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sda: 931 GiB, 999653638144 bytes, 1952448512 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 79E5B2B1-04FA-4367-A29A-7848BBE62B82

Device     Start       End   Sectors  Size Type
/dev/sda1   2048      4095      2048    1M BIOS boot
/dev/sda2   4096 419434495 419430400  200G Linux filesystem

Command (m for help): n
Partition number (3-128, default 3):
First sector (419434496-1952448478, default 419434496):
Last sector, +sectors or +size{K,M,G,T,P} (419434496-1952448478, default 1952448478):

Created a new partition 3 of type 'Linux filesystem' and of size 731 GiB.
Partition #3 contains a LVM2_member signature.

Do you want to remove the signature? [Y]es/[N]o: N

Command (m for help): t
Partition number (1-3, default 3): 3
Partition type (type L to list all types): 31

Changed type of partition 'Linux filesystem' to 'Linux LVM'.

Command (m for help): p
Disk /dev/sda: 931 GiB, 999653638144 bytes, 1952448512 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 79E5B2B1-04FA-4367-A29A-7848BBE62B82

Device         Start        End    Sectors  Size Type
/dev/sda1       2048       4095       2048    1M BIOS boot
/dev/sda2       4096  419434495  419430400  200G Linux filesystem
/dev/sda3  419434496 1952448478 1533013983  731G Linux LVM

Command (m for help): w
-> Speicher und Exit

Das LVM kann jetzt mit einem PV (Physical Volume) geschrieben werden.

1
pvcreate /dev/sda3

In unserem PV kommt dann die VG (Volume Group).

1
vgcreate "NAME" /dev/sda3

In das VG können dann mit „lvcreate“ die Partitionen angelegt werden.

Docker auf einem Odroid C2

Docker ist die Container Plattform, wenn es darum geht Microservices zu betreiben. Docker ist ziemlich leichtgewichtig und kann schnell aufgesetzt werden.

Als erstes muss der GPG Key des Repository hinzugefügt werden

1
<br />curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -<br />

Anschließend wird das offizielle Docker Repository den Quellen im System hinzugefügt.

1
<br />sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"<br />

Als nächstes ist ein Update des Paketmanagers notwendig

1
<br />sudo apt-get update<br />

Installiert wird Docker dann mit folgendem Befehl im System

1
<br />sudo apt-get install -y docker-ce<br />

Mit dem „systemcrtl“ Befehl könnt ihr den Status überprüfen

1
<br />sudo systemctl status docker<br />

1
<br />● docker.service - Docker Application Container Engine<br />Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)<br />Active: active (running) since Tue 2017-09-26 17:36:23 CEST; 1 weeks 1 days ago<br />Docs: https://docs.docker.com<br />Main PID: 1262 (dockerd)<br />

Alles ist Fertig und Docker kann nun vollständig genutzt werden.

TIPP: Netzwerkbridge einrichten und alle Container per docker-compose konfigurieren.

/etc/rc.local und Systemd

Mit der Einführung von „systemd“ ist bei Ubuntu ab Version 17.04 auch das Init-Skript „rc.local“ weggefallen.

Wer aber bei einem Systemstart weiterhin Skripte ausführen muss, kann sich über systemd sogenannte Services anlegen.

Diese Services kann man aber natürlich auch so anlegen, das sie arbeiten, bzw gestartet werden, wie die rc.local bei äteren Ubuntu Systemen.

Das grundsätzliche Anlegen eines Services für Systemd wird begonnen mit dem Anlegen der Datei /etc/systemd/system/rc-local.service:

1
sudo nano /etc/systemd/system/rc-local.service

Anschließend den Inhalt einfügen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Dann benötigen wir noch eine rc.local im „/etc“-Verzeichnis

1
sudo nano /etc/rc.local

Standardmäßig mit dem Inhalt einer rc.local:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

Rechte der Datei ändern:

1
sudo chmod +x /etc/rc.local

Neuen Systemd Service starten bzw am Dienst registrieren

1
sudo systemctl start rc-local.service

Überprüfbar ist das ganze mit dem Befehl

1
sudo systemctl status rc-local.service

Output des Befehls

1
2
3
4
5
6
7
8
9
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Thu 2017-10-05 07:17:55 CEST; 2h 39min ago
    Tasks: 0 (limit: 4915)
   Memory: 2.3M
      CPU: 496ms
   CGroup: /system.slice/rc-local.service

Breitbandmessung


Breitbandmessung – Die App zur Messung von mobilen Breitbandanschlüssen

Mit der Breitbandmessung können Sie schnell und einfach die Geschwindigkeit Ihres Internetzugangs messen und dadurch die Leistungsfähigkeit Ihres stationären und/oder mobilen Breitbandanschlusses ermitteln. Eine Messung ist anbieter- und technologieunabhängig möglich. Der Test erlaubt es Ihnen, die tatsächliche Datenübertragungsrate Ihres Breitbandanschlusses mit der vertraglich vereinbarten Datenübertragungsrate zu vergleichen. Die Breitbandmessung kann eigenständig durchgeführt werden; die Messergebnisse sind elektronisch speicherbar.

Der Test wurde von der zafaco GmbH im Auftrag der Bundesnetzagentur entwickelt.

Grundlage der Breitbandmessung sind die Transparenzvorgaben im Telekommunikationsgesetz (§§ 43a, 45n). Endkunden soll ermöglicht werden, auf einfache Weise Umfang und Qualität von Telekommunikationsdiensten zu vergleichen. Die gesetzlichen Regelungen sehen deshalb u. a. vor, dass die Bundesnetzagentur eigene Messungen durchführen oder Hilfsmittel entwickeln kann, damit Endkunden eigenständige Messungen vornehmen können.

In den Jahren 2012 und 2013 hatte die Bundesnetzagentur bereits bundesweite Messkampagnen durchgeführt, bei denen Internetnutzer die Datenübertragungsrate ihres Internetzugangsdienstes messen konnten. Die Ergebnisse dieser Messungen flossen jeweils in eine Studie zur „Dienstequalität breitbandiger Internetzugänge“ ein. Die Studien sind auf der Internetseite der Bundesnetzagentur unter https://www.bundesnetzagentur.de/qualitaetsstudie abrufbar.

Die Breitbandmessung nutzt während der kompletten Messdauer die maximal zur Verfügung stehende Bandbreite.
Bitte beachten Sie, dass Datenverkehr je nach Tarif und beim internationalen Roaming hohe Kosten hervorrufen kann.

Google Play Store: https://play.google.com/store/apps/details?id=com.zafaco.breitbandmessung&hl=de

Apple iTunes: https://itunes.apple.com/de/app/breitbandmessung/id1037354483?mt=8

kyago – more than a speedtest

kyago
kyago – Die Benchmarking-App für ihren mobilen Internetzugang

kyago ist eine App zur einfachen, umfassenden Messung und Bewertung von mobilen Internet-Zugängen auf modernen Smartphones für alle Technologien wie zum Beispiel GPRS, EDGE, UMTS, HSPA, LTE, LTE Advanced und WIFI.

Mit dem kyago Speedtest prüfen Sie in wenigen Sekunden die lokal zur Verfügung stehende Bandbreite im Up- und Download sowie die durchschnittliche Laufzeit von Anfragen. Durch die in Deutschland entwickelte Software und die nationalen Referenzsysteme wird nach höchsten Qualitätsstandards in Deutschland getestet. Alle ermittelten Speedtest-Ergebnisse lassen sich orts- und zeitgebunden auf ihrem Smartphone und in der kyago-Datenbank speichern. Die App steht Ihnen kostenlos und ohne Werbung zur Verfügung.

In Zusammenarbeit mit der Süddeutsche.de werden die Ergebnisse anonym im Rahmen einer Studie zur Netzqualität von mobilen Internet-Zugängen ausgewertet und veröffentlicht.

Entwickelt wurde kyago von der zafaco GmbH, einem Unternehmen mit langjähriger Erfahrung im Benchmarking, tätig für alle führenden DSL-, Kabel-, Mobilfunk- und VoIP-Anbieter, die Fachpresse in Deutschland sowie die Bundesnetzagentur.

Wenn Sie Anregungen, Fragen oder Kritik zu kyago haben, können Sie gerne direkt mit uns unter info@zafaco.de in Kontakt treten.

ic_launcher-web

Google Play Store: https://play.google.com/store/apps/details?id=com.zafaco.kyago

Apple iTunes: https://itunes.apple.com/de/app/kyago/id739660146

Automatisiertes Sichern mit rsync und cronjob

Rsync-Skript

Das Skript ist für die automatische Sicherung von beliebigen Ordner zuständig und durch verschiedene Parameter konfigurierbar. Die Parameter und deren Bedeutung sind folgende:

  • SOURCE – Quellordner
  • TARGET – Zielordner
  • RSYNCCONF – Parameter zum vollen Synchronisieren
  • RSYNC – Speicherort der Binärdatei von „rsync“

Sind alle Parameter konfiguriert, kann das Skript ausgeführt werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash
#
# Automatisches Sichern von speziellen anzugebenden Ordner
# mit Hilfe von "rsync" und cronjob
#
# Angabe der Ordner die gesichert werden soll.
# ACHTUNG
# /[Ordner]/ -&gt; Inhalt des Ordners wird gesichert
# /[Ordner] -&gt; Ordner wird gesichert
SOURCES="/home/[USER]/Dokumente /home/[USER]/Downloads"

# Ziel des Backups auf dem entfernten Rechner.
# Benötigt SSH-Key-Exchange
TARGET="root@[REMOTE]:/home/backup/"

# Parameter zum Synchronisieren
# --delete bewirkt ein Datenabgleich inklusive Löschen auf dem Backupmedium
RSYNCCONF="--delete"

# Dateiname des Logfile
LOGFILE="rsync_log.log"

# Ort der Binär-Datei von "rsync"
RSYNC=`which rsync`

# Befehl
$RSYNC -avrpuE $RSYNCCONF $SOURCES $TARGET &gt; $LOGFILE

exit 0

Tipp

Für eine reibungslose  Sicherung der Dateien und Ordner sollten für die Anmeldung auf dem Remote-System vorher ein SSH-Key-Exchange durchgeführt werden, damit man kein Passwort im Skript hinterlegen muss.

Cronjob

Damit man eine Automatisierung erreicht, muss das Skript regelmäßig ausgeführt werden. Dafür eignet sich ein Cronjob unter Linux bestens. Die generelle Gliederung der Zeitangaben ist die folgende:

* * * * * auszuführender Befehl
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7)
│ │ │ └────── Monat (1-12)
│ │ └──────── Tag (1-31)
│ └────────── Stunde (0-23)
└──────────── Minute (0-59)

Exemplarisch soll das Skript immer in der Mittagspause durchgeführt werden. Damit ist gewährleistet das der Rechner im Betrieb ist und er mit hoher Wahrscheinlichkeit nichts zutun hat. Ein Cronjob für die Ausführung des Skript täglich um 12 Uhr sieht wie folgt aus:

1
0 12 * * * /home/[USER]/Dokumente/rsync_script.sh

Download

Rsync-Script

Rechte

Rechte ändern nicht vergessen. Das Skript muss ausführbar sein.

1
chmod +x /home/[USER]/Dokumente/rsync_script.sh

Master Thesis – Evaluation eines IPTV Monitoringsystems auf Basis von Android

Im Zeitalter moderner Netzwerkinfrastrukturen und einer Konvergenz zum Next-Generation-Network (NGN) oder auch ALL-IP-Network (3GPP TS22978), werden altbekannte Dienste wie lineares Fernsehen, welches bisher über Kabel, Satellit oder Terrestrisch per Broadcast von den Sendeanstalten ausgestrahlt wurden, auf neue Übertragungsmedien portiert. Die gängigste Bezeichnung von Fernsehen, das über das Internet ausgestrahlt bzw. empfangen wird, ist „Internet Protocol Television“ (IPTV). Mit IPTV wird im Allgemeinen die digitale Übertragung von Audio- und Videosignalen mittels einer Breitbandinternetverbindung bezeichnet. Durch die Breitband-internetverbindung (DSL) ist eine echte Interaktion mit dem Verbraucher möglich, die neue Anwendungsgebiete und Dienste, wie zum Beispiel Video-On-Demand (VoD) realisieren lässt. Zeitgleich zeichnet sich ein Trend ab, dass Endbenutzer im Internet exzessiv Plattformen wie „YouTube“ und „Vimeo“ als Videoportale nutzen, um den täglichen Konsum von Videomaterial nachzugehen.

Auch die Entwicklung von Mobilfunktechnologien hat in den letzten Jahren enorm an Bedeutung gewonnen, sodass auch SmartPhone durch ihren technologischen Fortschritt immer mehr in der Lage sind, Video-Streaming-Dienste mobil zu nutzen. Diese multimedialen Angebote stellen große Herausforderungen an die Übertragungsnetze, denn die Nutzung dieser Dienste im Mobilfunk wird oft durch den stark fehlerbehafteten Übertragungsweg gestört, wodurch die Zufriedenheit des Endbenutzers negativ beeinflusst wird. Um die Ende-zu-Ende Dienstgüte zu ermitteln, müssen Netzwerk- und Video-Parameter analysiert werden, wobei die Analyse der aktuellen Video Qualität meistens sehr aufwendig und kostenintensiv ist.

Im Rahmen des vom Bundesministerium für Bildung und Forschung geförderten Forschungsprojektes SmartVideo wird ein kostengünstiges Verfahren zur Qualitätsbestimmung von IP-basierten Videoströmen wie IPTV oder Video-on-Demand (VoD) entwickelt. Das IPTV Monitoring System dient zur Bestimmung der Qualität an Breitbandanschlüssen (DSL) und basiert auf ressourcenschonenden Messköpfen, die als verteiltes Messsystem eingesetzt werden können. Um die Qualität einer Videoübertragung auf einem mobilen Endgerät zu erfassen, ist eine Software nötig, die Netzwerk- und Videoparameter analysiert und eine Bewertung des Videos vornimmt.

Ziel dieser Master Thesis war es, einen QoS/QoE Monitoring Sensor (Messkopf) auf Basis eines Android SmartPhone innerhalb der SmartVideo Architektur zu entwickeln. Der Sensor soll spezifische Parameter aufnehmen und eine erste Abschätzung der Qualität des Videos vornehmen. Es werden verschiedene Messverfahren evaluiert und die Android Architektur dabei untersucht, um ein
geeignetes Konzept für eine Implementierung zu finden.

Das Thema meiner Master Thesis war Evaluation eines IPTV Monitoringsystems auf Basis von Android

Architektur „SmartVideo Probe for Android“

Anbei zum Download:

Master Thesis von Stephan Küffner

Master Thesis – Evaluation eines IPTV Monitoringsystems auf Basis von Android

Chroot-Umgebung

Startet ein Linux System nicht mehr, kann es sein das Updates mit einem neuen Kernel, Grafikkarten Treibern oder Einstellungen für den Grub eingespielt worden sind. Man sieht dann im schlimmsten Fall nur noch einen schwarzen Bildschirm und hat indirekt keinen Zugriff mehr auf das System.

Zum Glück ist es kein Windows-System und somit halb so wild.

[Vorgehen]
Man startet seinen PC oder Notebook mit einer Live-CD einer Linux-Distribution seiner Wahl. Mögliche Varianten sind Kubuntu, Knoppix, Backtrack etc.

Ist das System hochgefahren, speichert man das folgende Script in einer Datei und führt es aus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#
# Initieren einer Chroot-Umgebung
# und hineinwechseln
# !Need to be Root!

if [ "$1" != "" ]; then
    mkdir /media/target
    mount "$1" /media/target
    mount -o bind /dev /media/target/dev
    mount -o bind /sys /media/target/sys
    mount -t proc /proc /media/target/proc
    chroot /media/target/
else
    echo "Usage:    ./script.sh [DEVICE]"
    echo "Device    - Root-Partition (/dev/sda1)"
    echo "Example:  - ./script.sh /dev/sda1"   
fi

Danach hat man vollen Zugriff auf sein System als Benutzer „root“ und kann die Pakete/Updates entfernen!

[Speichern des Scriptes – Konsole]

1
nano script.sh

Copy & Paste – Strg + x

1
2
chmod +x script.sh
sudo ./script.sh

[Download]
chroot-umgebung – Umbenennen in chroot-umgebung.sh

Subversion Projekt-Daten entfernen

Bei größeren Software Projekten werden meistens Versionskontrollsysteme aka SVN eingesetzt. Jedoch kommt es ab und zu vor, dass sich Fehler beim „Checkout“ und „Commit“ einschleichen, oder man sein Projekt ohne das Versionskontrollsystem kopieren muss.

SVN legt im Projekt rekursiv versteckte Ordner mit dem Namen „.svn“ an. Möchte man diese nun vollständig löschen, kann man manuell alle Ordner durchsuchen und die SVN-Ordner löschen oder man macht sich das Unix System zu nutze (Vorausgesetzt man arbeitet mit einem!) und führt die verketteten Befehle aus.

1
find ./ -type d -name ".svn" -exec rm -Rf {} \;

Der Befehl durchsucht alle Ordner ab dem Verzeichnis in dem man sich befindet und löscht die SVN-Ordner Strukturen.

Bei mir hat das Script bisher nützliche Dienste geleistet, jedoch:

[Achtung]
Ich übernehme keine Gewähr oder Haftung wenn was schiefgeht und euer Projekt gelöscht wird.

Erft-Kinesiologie

Webseite Erft-Kinesiologie – Webpräsenz einer Praxis für Kinesiologie, Stressmanagement und Lernberatung.

  • PHP5, MySQL, HTML
  • XHTML konform
  • selbstentwickelter Admin-Bereich
  • Kalender und Link Funktionen