How to expand ZFS zpool

During my storage upgrade I ran in the following problem. How to expand an existing zpool in the case that the LVM volume the zpool is refering to grows because of new HDD. The solution is simple:

# old zpool size

zfs list storage
NAME USED AVAIL REFER MOUNTPOINT
storage 3.21T 820G 236K /storage

# to make ZFS aware of the new LV size:


zpool online -e storage /dev/vg0/Logical_Volume

DigitalOcean eröffnet Rechenzentrum Bangalore – Indien

Zwischen der Ankündigung (2/2016) und der generellen Verfügbarkeit verging doch einiges an Zeit. Doch seit gestern (01.06.2016) ist es nun soweit. DigitalOcean hat sein neues Rechenzentrum in Indien vorgestellt. Ich habe mir so schnell wie möglich in dieser Region einen Server (Droplet) geholt und werde nun ausgiebig testen. Positiv fällt auf, dass DigitalOcean auch in Indien die Preise stabiel hält. Die kleinste Instanz kostet auch hier 5 $ bei gleicher Traffic-Menge. Dies ist nicht selbstveständlich. Außerhalb von Europa und Nord Amerika ist Traffic als auch Glasfaserverbindungen noch immer deutlich teurer als hier was höhere Kosten nach sich zieht. Ein schneller Blick auf bgp.he.net zeigt, dass die neue Region im Moment bei Ipv4 nur über 2 Peers angebunden ist und bei IPv6 sogar nur über einen Peer. Dies sagt zwar noch nichts über die allgemeine Qualität aus und auch nicht über die gegebene Redundanz aber ein weiteres „multi-homing“ sollte dem Netztwerk trotzdem gut tun.

digitalocean-india

BGP-Peers DigitalOcean Netztwerk India

Ich werde nun weitere Performance-Tests als auch Tests de Internet-Anbindung durchführen und diesen Artikel dann einem Update unterziehen.

 

Wer jetzt schon Lust hat und DigitalOcean noch nicht kennt kann sich gerne hier registrieren.

 

 

 

 

 

OVH publicCloud

Heute möchte ich einmal über einen im CloudComputing noch nicht so bekanntes Produkt sprechen. Die OVH Public Cloud des französischen Anbieters OVH.  Dabei habe ich festgestellt, dass gerade bei dem kleinsten Instanztyp die OVH PublicCloud preislich sowie von der Performance gesehen eine sehr gute Alternative zu etablierten Anbietern wie z.B DigitalOcean ist.

 

OVH ist im Bereich dedicated Server schon heute einer der größten Anbieter und bitte nun seit geraumer Zeit auch eine PublicCloud an. Ich möchte in diesem Artikel nur auf die im Moment kleinste Variante eingehen. Das ist die Instanz „VPS-SSD 1“. Für einen monatlichen Preis von brutto 4,23 € oder 0,0119 € /Stunde bekommt man 1 vCore mit 2 GB Ram sowie 10 GB SSD Storage.

Ein von mir ausgeführter UNIXBENCH Lauf bringt folgendes Ergebnis:

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   OS: GNU/Linux -- 4.4.0-21-generic -- #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel Xeon E312xx (Sandy Bridge) (4788.9 bogomips)
          x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   06:48:02 up 18:32,  1 user,  load average: 0.25, 0.12, 0.08; runlevel 5

------------------------------------------------------------------------
Benchmark Run: Wed May 04 2016 06:48:02 - 07:15:51
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       27193887.1 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2043.6 MWIPS (9.8 s, 7 samples)
Execl Throughput                               3971.9 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1023453.1 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          278455.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2033643.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                             2120559.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 296778.1 lps   (10.0 s, 7 samples)
Process Creation                              10125.1 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   7387.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    957.3 lpm   (60.0 s, 2 samples)
System Call Overhead                        3365946.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   27193887.1   2330.2
Double-Precision Whetstone                       55.0       2043.6    371.6
Execl Throughput                                 43.0       3971.9    923.7
File Copy 1024 bufsize 2000 maxblocks          3960.0    1023453.1   2584.5
File Copy 256 bufsize 500 maxblocks            1655.0     278455.9   1682.5
File Copy 4096 bufsize 8000 maxblocks          5800.0    2033643.9   3506.3
Pipe Throughput                               12440.0    2120559.7   1704.6
Pipe-based Context Switching                   4000.0     296778.1    741.9
Process Creation                                126.0      10125.1    803.6
Shell Scripts (1 concurrent)                     42.4       7387.5   1742.3
Shell Scripts (8 concurrent)                      6.0        957.3   1595.5
System Call Overhead                          15000.0    3365946.9   2244.0
                                                                   ========
System Benchmarks Index Score                                        1436.7

Auf den Preis von 4,23 € bezogen bekommt man also ca. 340 Punkte/Euro. Im Vergleich dazu die kleinste Instanz von DigitalOcean für 5$/Monat

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   OS: GNU/Linux -- 4.4.0-21-generic -- #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel(R) Xeon(R) CPU E5-2650L v3 @ 1.80GHz (3595.8 bogomips)
          x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   08:31:02 up 2 days, 23:38,  1 user,  load average: 0.26, 0.14, 0.08; runlevel 5

------------------------------------------------------------------------
Benchmark Run: Mon May 02 2016 08:31:02 - 08:58:58
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       17845039.0 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1414.2 MWIPS (9.7 s, 7 samples)
Execl Throughput                               2696.6 lps   (29.5 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        674178.6 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          198712.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1340355.7 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1433482.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 185809.3 lps   (10.0 s, 7 samples)
Process Creation                               7217.2 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   4977.9 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    649.8 lpm   (60.0 s, 2 samples)
System Call Overhead                        2410957.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   17845039.0   1529.1
Double-Precision Whetstone                       55.0       1414.2    257.1
Execl Throughput                                 43.0       2696.6    627.1
File Copy 1024 bufsize 2000 maxblocks          3960.0     674178.6   1702.5
File Copy 256 bufsize 500 maxblocks            1655.0     198712.9   1200.7
File Copy 4096 bufsize 8000 maxblocks          5800.0    1340355.7   2311.0
Pipe Throughput                               12440.0    1433482.3   1152.3
Pipe-based Context Switching                   4000.0     185809.3    464.5
Process Creation                                126.0       7217.2    572.8
Shell Scripts (1 concurrent)                     42.4       4977.9   1174.0
Shell Scripts (8 concurrent)                      6.0        649.8   1082.9
System Call Overhead                          15000.0    2410957.8   1607.3
                                                                   ========
System Benchmarks Index Score                                         974.1

Auf den Preis von 5 $ pro Monat bezogen bekommt man also ca. 194  Punkte/Dollar.

Unattended-upgrades: Debian / Ubuntu Sicherheitupdates automatisieren

Eine der wichtigsten Regeln beim Betrieb eines vServers oder auch bei bare metal Servern ist, dass die eingesetzte Software immer auf dem aktuellen Stand sein sollte.  Viele angehende Serveradministratoren vernachlässigen diesen Punkt gerne. Dabei ist es recht einfach möglich dies zu automatisieren. Diese Artikel ist auch als Erweiterung zu meinem Blogpost über apticron zu sehen. Dabei geht man folgendermaßen vor:

Zuerst muss fogendes Paket über den Paketmanager installiert werden:

apt-get install unattended-upgrades

Wenn nur sicherheitsrelevante Pakete regelmäßig automatisch aktualisiert werden sollen, reicht zur Konfiguration folgendes:

dpkg-reconfigure --priority=low unattended-upgrades

Im daurauf erscheinenden Dialogfenster muss dann mit <<ja>>  geantwortet werden, wenn security-fixes automatisch installiert werden sollen.

Im Detail sollte man noch folgendes in der Konfiguration anpassen, wenn man über erfolgreich eingespielte Updates per Email auf dem Laufenden gehalten werden möchte.  Die bisher erstellte Config-Datei sollte in etwa so aussehen:

/ This option allows you to control if on a unclean dpkg exit
// unattended-upgrades will automatically run
//   dpkg --force-confold --configure -a
// The default is true, to ensure updates keep getting installed
//Unattended-Upgrade::AutoFixInterruptedDpkg "false";

// Split the upgrade into the smallest possible chunks so that
// they can be interrupted with SIGUSR1. This makes the upgrade
// a bit slower but it has the benefit that shutdown while a upgrade
// is running is possible (with a small delay)
//Unattended-Upgrade::MinimalSteps "true";

// Install all unattended-upgrades when the machine is shuting down
// instead of doing it in the background while the machine is running
// This will (obviously) make shutdown slower
//Unattended-Upgrade::InstallOnShutdown "true";

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
Unattended-Upgrade::Mail "update@xy.de";

// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
//Unattended-Upgrade::MailOnlyOnError "true";

// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";

// Automatically reboot *WITHOUT CONFIRMATION* if
//  the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";

Dazu editieren wir die Zeile Unattended-Upgrade::Mail „update@xy.de“; und fügen unsere Email Adresse ein. Weiterhin entfernen wir // am Begin der Zeile, damit die Variable auch beachtet wird. Voraussetzung für dem Empfang ist, dass au dem Server schon ein voll funktionsfähiger Mailserver wie z.B Postfix installiert ist.

 

Webstatistiken mittels awstats erstellen (Debian/Ubuntu)

Awstats ist ein mächtiges aber sehr gut dokumentiertes Tool für die Analyse von Log-Files, welche z.B vom Apache Webserver generiert werden. Aber auch die Logfiles des Proxy-Server Squid oder des Webserver nginx  können von awstats gelesen werden. In diesem kleine HowTo möchte ich zeigen, wie ich awstats in meiner Umgeben verwende.

Zuerst muss awstats installiert werden. Dazu verweden wir apt-get

apt-get install awstats libgeo-ipfree-perl libnet-ip-perl

Wenn dies erfolgt ist geht es an die Konfiguration. Zuerst kopieren wir das mitgelieferte Konfigurationsbeispiel um es an unsere Bedürfnisse anzupassen:

cd /etc/awstats/
cp /etc/awstats/awstats.conf /etc/awstats/awstats.example.com.conf
# öffnen der Datei im Editor nano
nano /etc/awstats/awstats.example.com.conf

Die mitgeliferte Konfiguration ist sehr gut dokumentiert. Um fürs erste eine funktionierede Konfiguration zu erhalten sind folgende Variablen azupassen:

LogFile="/var/log/apache2/example.com/access.log"
SiteDomain="example.com"
HostAliases="www.example.com"

Ich bevorzuge es die Reports statisch generieren zu lassen anstatt dynamisch per cgi. Um dies umsetzen muss ein Ordner erstellt werden, in welchem die Reports gespeichert werden und ein Cronjob zu generieren erstellt werden. Weiterhin werden die Cronjobs, welche von Debian per default angelegt werden auskommentiert. Dazu wird die Datei /etc/cron.d/awstats geöffnet

MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

*/10 * * * * www-data /usr/share/awstats/tools/awstats_buildstaticpages.pl -awstatsprog=/usr/lib/cgi-bin/awstats.pl -update -config=example.com -dir=/var/www/stats/ > /dev/null

In diesem Beispiel werden die Reports unter /var/www/stats abgelegt.

 

Nun muss nur noch der vHost angepasst werden unter dem die Reports angezeigt werden sollen. Dazu wird in die jeweilige vHost Datei folgendes angefügt:

Alias /webstats /var/www/stats
Alias /awstats-icon "/usr/share/awstats/icon/"
<Directory /var/www/web1/stats>
        Require all granted
        Options None
</Directory>

Nu sollte nach einmaligen ausführen von dem script unter dem User des Apache  Webservers die jeweiligen Reports erstellt werden.

*/10 * * * * www-data /usr/share/awstats/tools/awstats_buildstaticpages.pl -awstatsprog=/usr/lib/cgi-bin/awstats.pl -update -config=example.com -dir=/var/www/stats/

Über Updates bei Debian und Ubuntu informiert werden – apticron

Wer kennt das nicht. Der neue Linux Server / vServer is gerade eingerichtet und alles funktioniert so wie es soll. Da vergisst man schnell, dass ein solches System auch regelmäßige Wartung in Form von Updates benötigt. Dies wird leider sehr häufig vergessen. Um wenigstens immer eine Email zu erhlaten, wenn neue Updates für das eigene System zur Verfügung stehen bietet sich das Programm apticron an.

Hier zeige ich euch kurz wie man es schnell einrichtet. Zuerst muss es über den Paketmanager von Debian/Ubuntu installiert werden:

apt-get install apticron

Ist dies geschehen kann apticron auch schon konfiguriert werden. Es muss mitgeteilt werden an welche Email Adresse Update-Benachrichtungen geschickt werden sollen. Zu editieren ist die Datei

nano /etc/apticron/apticron.conf

Anzupassen sind folgende Variablen:

EMAIL="you@yourcompany.com"
SYSTEM="servers_name"

Wobei bei „SYSTEM“ der Servername verwendet werden kann. Zu beachten ist, dass apticron auf einen funktionierenden Mail Server wie z.B Postfix angewiesen ist.

Um dies noch einmal besser visualisieren zu können, habe ich die nötigen Schritte auch noch einmal in einem Video zusammengefasst: