Documentazione completa LINK

Per l’installazione e l’utilizzo del DRBD è preferibile che vi sia almeno una scheda di rete dedicata alla sincronizzazione configurata in /etc/network/interfaces su ogni nodo.

# network interface settings
auto lo
iface lo inet loopback
iface eth0 inet manual
auto eth1
iface eth1 inet static
        address  10.0.7.106
        netmask  255.255.240.0
auto vmbr0
iface vmbr0 inet static
        address  192.168.7.106
        netmask  255.255.240.0
        gateway  192.168.2.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0

Tuning dello strato di rete per DRBD da inserire in rc.local

echo 30000 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 50000 > /proc/sys/net/core/netdev_max_backlog

Nel caso di DRBD su 2 x 10Gb SFP+ in bonding la configurazione ha dato i risultati sperati e le prestazioni sono state di circa 400Mbytes/sec in TCP e 800Mbytes/sec in UDP, l’innalzamento dell’MTU e del TXQUEUELEN hanno migliorato sensibilmente le performances

ifconfig eth3 mtu 9000
ifconfig eth4 mtu 9000
ifconfig bond0 mtu 9000
ifconfig eth3 txqueuelen 5000
ifconfig eth4 txqueuelen 5000
ifconfig bond0 txqueuelen 5000

Si passa all’installazione dei tools necessari

apt-get install drbd8-utils

Sulla porzione di disco (o sul pool di dischi) da destinare al DRBD (ipotizziamo sdb) si crea una partizione di tipo 8e (Linux LVM)

Si modificano i files di configurazione /etc/drbd.d/global_common.conf

global { usage-count no; }
common { syncer { rate 30M; verify-alg md5; } }

e /etc/drbd.d/r0.res

resource r0 {
        protocol C;
        startup {
                wfc-timeout  0;     # non-zero wfc-timeout can be dangerous (http://forum.proxmox.com/threads/3465-Is-it-safe-to-use-wfc-timeout-in-DRBD-configuration)
                degr-wfc-timeout 60;
                become-primary-on both;
        }
        net {
                cram-hmac-alg sha1;
                shared-secret "my-secret";
                allow-two-primaries;
                after-sb-0pri discard-zero-changes;
                after-sb-1pri discard-secondary;
                after-sb-2pri disconnect;
                #data-integrity-alg crc32c;     # has to be enabled only for test and disabled for production use (check man drbd.conf, section "NOTES ON DATA INTEGRITY")
        }
        on proxmox-105 {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 10.0.7.105:7788;
                meta-disk internal;
        }
        on proxmox-106 {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 10.0.7.106:7788;
                meta-disk internal;
        }
}

Si fa partire il servizio drbd con

/etc/init.d/drbd start

e si creano i metadata

drbdadm create-md r0

dopodichè si attivano i device su entrambi i nodi

drbdadm up r0

E’ possibile visualizzare lo stato del drbd con

pve1:~# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by root@oahu, 2009-09-10 15:18:39
 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:2096348

Su di un solo nodo digitare

drbdadm -- --overwrite-data-of-peer primary r0

per avviare la sincronizzazione e riabbiare il drbd su entrambi i nodi per attivare la risorsa in modalità attivo/attivo con

/etc/init.d/drbd stop
/etc/init.d/drbd start

Tuning per performance DRBD 8.3 LINK

resource resource {
  net {
    max-buffers 8000;
    max-epoch-size 8000;
    ...
  }
  ...
}
resource resource {
  net {
    sndbuf-size 0;
    ...
  }
  ...
}
resource resource {
  syncer {
    al-extents 3389;
    ...
  }
  ...
}
resource resource {
  disk {
    no-disk-barrier;
    no-disk-flushes;
    ...
  }
  ...
}

A questo punto è possibile configurare LVM editando /etc/lvm/lvm.conf

# By default we accept every block device:
filter = [ "r|/dev/sdb1|", "r|/dev/disk/|", "r|/dev/block/|", "a/.*/" ]

per eliminare sdb1 dall’autoscan
e si crea un device con

 pvcreate /dev/drbd0
 vgcreate [VG_NAME] /dev/drbd0

Tramite l’interfaccia web è possibile aggiungere il disco LVM/DRBD

Documentazione completa LINK

Dopo l’installazione e l’aggiornamento dei nodi su uno di essi si crea il cluster

pvecm create [CLUSTER_NAME]

Per aggiungere nodi al cluster sul nodo da aggiungere si digita

pve add [CLUSTER_IP_ADDRES]

Per verificare lo stato del cluster

pvecm status
pvecm nodes

Per rimuovere un nodo

pvecm delnode [NODE_NAME]

Una volta instaurato il cluster con due nodi non è possibile spegnere un nodo senza perdere la possibilità di editare i files di configurazione o di effettuare backup o creare vm in quanto non viene raggiunto il quorum necessario che si ottiene con configurazioni tipiche di 3 nodi.
E possibile abbassare temporaneamente o definitivamente il quorum a 2 o aggiungere un quorumdisk.

Documentazione completa LINK

Per configurare il fencing occorre modificare il file /etc/pve/cluster.conf

cp /etc/pve/cluster.conf /etc/pve/cluster.conf.new

Ed aumentare di +1 il valore di config_version=”XX”


Nella sezione cman aggiungere expected_votes=”1″


Situazione che è possibile forzare anche manualmente con il comando

pvecm expected 1

E dopo


E’ preferibile usare ipaddr=”192.168.1.2″ al posto di hostname=”nodeA”

Poi modificare clusternode


Per applicare le modifiche nell’interfaccia web di gestione datacenter nel tab HA è possibile Attivare le modifiche, queste verranno applicate all’intero cluster.
Eventuali errori di configurazione vengono segnalati in fase di applicazione.

Documentazione completa LINK
Per attivare il fencing bisogna aggiungere ogni nodo al dencing domain

Si modifica /etc/default/redhat-cluster-pve affinchè contenga

FENCE_JOIN="yes"

E si lancia il comando su ogni nodo

fence_tool join

Per verificare lo stato

fence_tool ls

Per installare un quorum disk iSCSI presente su di un NAS

apt-get install tgt
vi /etc/iscsi/iscsid.conf  # change node.startup to automatic
/etc/init.d/open-iscsi restart

Selezionare il target

iscsiadm --mode discovery --type sendtargets --portal [iSCSI_IP]
iscsiadm -m node -T iqn.[BLAHBLAH] -p [iSCSI_IP] -l

Create una partizione primaria con fdisk e create il quorumdisk

mkqdisk -c /dev/sdc1 -l proxmox1_qdisk

Per inserirlo nella configurazione si procede come sopra

cp /etc/pve/cluster.conf /etc/pve/cluster.conf.new

si incrementa di +1 la config_version si rimuove two_node=”1″ e si aggiunge la definizione quorumd


Sempre dall’interfaccia web nel tab HA si applica la modifica, si verifica lo stato con

pvecm s

e si applicano le modifiche con

  /etc/init.d/rgmanager stop  # This will restart any VMs that are HA enabled onto the other node.
  /etc/init.d/cman reload     # This will activate the qdisk

Assicurarsi che rgmanager sia partito o avviarlo e verificare che su ogni nodo clustat riporti qualcosa del tipo

Cluster Status for proxmox1 @ Thu Jun 28 12:23:10 2012
Member Status: Quorate
 Member Name                                         ID   Status
 ------ ----                                         ---- ------
 proxmox1a                                               1 Online, Local, rgmanager
 proxmox1b                                               2 Online, rgmanager
 /dev/block/8:33                                         0 Online, Quorum Disk

Configurazione finale


Installando un sistema Linux Server, tipo Proxmox (Debian), è possibile monitorare lo stato di funzionamento del controller RAID hardware HP Smart Array P410i.

Smart Array P410i

In /etc/apt/sources.list.d è possibile creare un file hp.list contenente:

deb http://downloads.linux.hp.com/SDR/repo/mcp/ wheezy/current non-free

LIKN SITO HP

curl http://downloads.linux.hp.com/SDR/hpPublicKey1024.pub | apt-key add -
curl http://downloads.linux.hp.com/SDR/hpPublicKey2048.pub | apt-key add -
curl http://downloads.linux.hp.com/SDR/repo/mcp/GPG-KEY-mcp | apt-key add -
[code]
ad un successivo apt-get update verranno resi disponibili alcuni tools di HP tipo hpacucli
[code]
apt-get install hpacucli

è possibile invocare direttamente hpacucli

# hpacucli controller slot=0 ld all show
Smart Array P410i in Slot 0 (Embedded)
 array A
  logicaldrive 1 (558.7 GB, RAID 1+0, OK)
 array B
  logicaldrive 2 (931.5 GB, RAID 1, OK)
# hpacucli controller all show config detail
Smart Array P420i in Slot 0 (Embedded)
   Bus Interface: PCI
   Slot: 0
   Serial Number: 5001438023BB5E90
   Cache Serial Number: PBKUA0BRH3U0X9
   RAID 6 (ADG) Status: Disabled
   Controller Status: OK
   Hardware Revision: B
   Firmware Version: 3.42
   Rebuild Priority: Medium
   Expand Priority: Medium
   Surface Scan Delay: 3 secs
   Surface Scan Mode: Idle
   Queue Depth: Automatic
   Monitor and Performance Delay: 60  min
   Elevator Sort: Enabled
   Degraded Performance Optimization: Disabled
   Inconsistency Repair Policy: Disabled
   Wait for Cache Room: Disabled
   Surface Analysis Inconsistency Notification: Disabled
   Post Prompt Timeout: 15 secs
   Cache Board Present: True
   Cache Status: OK
   Cache Ratio: 25% Read / 75% Write
   Drive Write Cache: Enabled
   Total Cache Size: 512 MB
   Total Cache Memory Available: 304 MB
   No-Battery Write Cache: Enabled
   Cache Backup Power Source: Capacitors
   Battery/Capacitor Count: 1
   Battery/Capacitor Status: OK
   SATA NCQ Supported: True
   Spare Activation Mode: Activate on drive failure
   Controller Temperature (C): 64
   Cache Module Temperature (C): 32
   Capacitor Temperature  (C): 28
.............
.............

per attivare la write cache:

# hpacucli controller slot=0 modify dwc=enable

oppure utilizzare il plugin nagios

# wget 'http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=674&cf_id=24' -O check_hparray
# ./check_hparray -s 0
RAID OK - (Smart Array P410i in Slot 0 (Embedded) array A logicaldrive 1 (558.7 GB, RAID 1+0, OK) array B logicaldrive 2 (931.5 GB, RAID 1, OK))

Maggiori info qui QUI

Andrea - netlite.it

Avendo più interfacce di rete disponibili ed utilizzando switch dotati di link aggregation è possibile unire le interfacce in un bond sul quale appoggiare il bridge.

Questo deve essere configurato manualmente in quanto l’interfaccia web di proxmox non prevede questo utilizzo.

/etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
        bond-master bond0
        mtu 9000
auto eth1
iface eth1 inet manual
        bond-master bond0
        mtu 9000
auto bond0
iface bond0 inet manual
        mtu 9000
        bond-mode 802.3ad
        bond-miimon 100
        bond-slaves none
        bond-lacp-rate 4
auto vmbr0
iface vmbr0 inet static
        mtu 9000
        address  192.168.1.1
        netmask  255.255.255.0
        network  192.168.1.0
        bridge_ports bond0
        bridge_stp off
        bridge_fd 0
        post-up route add -net 10.1.1.0 netmask 255.255.255.0 gw 192.168.2.254
        pre-down route del -net 10.1.1.0 netmask 255.255.255.0 gw 192.168.2.254

Il traffico di rete si distribuirà in modo automatico (e non bilanciato) sulle due interfacce aumentando sensibilmente la banda di rete utilizzata.

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:26:55:ec:ef:b6
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:82172110 errors:0 dropped:0 overruns:0 frame:0
          TX packets:366333813 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:32549246640 (30.3 GiB)  TX bytes:1142227109649 (1.0 TiB)
          Interrupt:24 Memory:feb80000-feba0000
# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:26:55:ec:ef:b6
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:543001774 errors:0 dropped:0 overruns:0 frame:0
          TX packets:366337469 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:237725677253 (221.3 GiB)  TX bytes:469115298143 (436.8 GiB)

Andrea – Netlite.it

BASH Tips

Cancellare un file da VIM, mi capita spesso di salvare un file con il nome ù che poi è difficile cancellare da console:

:!rm %

Pacchetti installati (non come dipendenze) in ubuntu/debian:

aptitude search '~i!~M' -F '%p'

Sostituzione delle URL con _url_ utile per anonimizzare i log ad esempio in vim

s/[\w \W \s]*http[s]*[a-zA-Z0-9 : \. \/ ; % " \W]*/ _url_ /g
s!http[s]\?://\S*!!g

Sostituzione degli IP con X.X.X.X utile per anonimizzare i log ad esempio in vim

s/(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/X.X.X.X/g

Per forzare il controllo di una partizione RAID Linux

echo check > /sys/block/mdX/md/sync_action
Per forzare la ricostruzione di una partizione RAID Linux
echo repair > /sys/block/mdX/md/sync_action

Andrea – Netlite.it

Reverse Proxy

Configurazione tipo per un reverse proxy SSL basato su Gentoo Linux e apache2

TimeOut 30
SetOutputFilter DEFLATE
AddOutputFilterByType INCLUDES application/pdf
AddEncoding x-gzip .gz
AddType application/x-javascript .gz
AddType application/javascript .gz
BrowserMatch Firefox/1\.0\.[0-9] no-gzip
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch "MSIE 6" no-gzip gzip-only-text/html
SetEnvIfNoCase Request_URI \.(gif|jpg|jpeg|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(htm|html|js|jsp|asp|php|do)$ !no-gzip
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(gif|jpg|jpeg|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(htm|html|js|jsp|asp|php|do)$ !no-gzip
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
#SetEnvIfNoCase Request_URI \.* no-gzip dont-vary
#SetEnvIfNoCase Request_URI \.jsp$ !no-gzip !dont-vary
#SetEnvIfNoCase Request_URI \.htm$ !no-gzip !dont-vary
#SetEnvIfNoCase Request_URI \.html$ !no-gzip !dont-vary
#SetEnvIfNoCase Request_URI \.asp$ !no-gzip !dont-vary
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
DeflateWindowSize 15
DeflateMemLevel 9
DeflateCompressionLevel 9
ServerName nome_server
LoadModule proxy_module modules/mod_proxy.so
LoadModule ssl_module modules/mod_ssl.so
SetEnvIf User-Agent ".*MSIE.*" ssl-unclean-shutdown
SSLSessionCache shm:/var/cache/apache2/ssl_scache(4096000)
SSLSessionCacheTimeout 600
LogLevel error
ErrorLog /var/log/apache2/ssl_error_log
Listen 80
Options -All -Multiviews
AllowOverride None
Order allow,deny
Allow from all
DocumentRoot /home/domini-web/locale/www
# ServerName nome_server
# ServerAlias alias_server
DirectoryIndex index.shtml index.php index.php3 index.html
ScriptAlias /cgi-bin/ /home/domini-web/locale/cgi-bin/
CustomLog /var/log/apache2/access_log combined
AddHandler server-parsed shtml
Options +Includes
Options -Indexes -All -Multiviews +Includes
AllowOverride None
Order allow,deny
Allow from all
Include /etc/apache2/conf/*.conf

/etc/apache2/conf/server_A.conf

Listen 400
#
RewriteEngine on
#RewriteCond %{REQUEST_URI} !^/galileo/public/
#RewriteCond %{REQUEST_URI} !^/galileo/
#RewriteRule / /galileo/public/menu.faces [R,L]
# direttive proxypass ------------------------------------------
ProxyPass / http://X.X.X.X:8888/ retry=0 ttl=120 timeout=120
ProxyPassReverse / http://X.X.X.X:8888/
# autenticazione server ------------------------------------------
SSLEngine On
#128bit
SSLCipherSuite RC4-SHA:RC4-MD5:HIGH:MEDIUM:!ADH:!DSS:!SSLv2:+3DES
SSLHonorCipherOrder on
# 40 bit
#SSLCipherSuite ALL:!ADH:!EXPORT56:!EXPORT40:!SSLv2:!LOW
SSLCertificateFile /etc/apache2/ssl/server.crt
#SSLCertificateChainFile /etc/apache2/ssl/cert-new.verisign.pem
#SSLCertificateChainFile /etc/apache2/ssl/cert.verisign.pem
SSLCertificateChainFile /etc/apache2/ssl/intermediate_good.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.nopassword.key
# autenticazione client ------------------------------------------
# accesso permesso solo in presenza di comunicazione almeno a 128bit
ErrorDocument 403 http://www.tuo_sito.it/
ErrorDocument 404 http://www.tuo_sito.it/
#SSLCACertificateFile /etc/apache2/ssl/client/CAcert.chain
#SSLCARevocationFile /etc/apache2/ssl/crl.pem
#SSLVerifyClient none
#SSLVerifyDepth 10
#SSLOptions +StdEnvVars
 
ServerName www.tuo_sito.it
#ServerAlias Y.Y.Y.Y
ProxyRequests on
ProxyVia on
AddOutputFilterByType SUBSTITUTE text/html
#Eventuale sostituzione del testo proxato
#Substitute "s|test_da_sostituire|vuoto|i"
# eventuale log verso syslog esterno
#CustomLog "|/usr/bin/logger -t reverseproxy -n syslog " combined
 

 

Ulteriori personalizzazioni possono essere inserite riguardi a questi tre moduli:

mod_evasive

mod_cband

mod_security

IPSET su Debian/PROXMOX

IPSET su Debian/PROXMOX

L’installazione su Debian/PROXMOX di ipset ha presentato alcune incongruenze dovute a diverse versioni tra tools e moduli del kernel.

Non ho trovato sistema migliore di quello che segue.

apt-get install module-assistant ipset-source
apt-get install pve-headers-2.6.32-19-pve
cd /usr/src
tar vxfj ipset.tar.bz2
cd modules/
m-a a-i ipset

Per non so quale motivo la versione di IPSET nel kernel e quella così compilata differiscono e la versione del tool di gestione fa riferimento ad una versione vecchia,

Per utilizzarla comunque è necessario configurare il depmod per utilizzare il modulo presente nella dir extra appena generato.

Quindi in /etc/depmod.d/ipset.conf si inserisce:

override ip_set * extra
override ip_set * extra/ipset

 

ZFS su Ubuntu/Debian

Tips per l’installazione di ZFS su Debian Wheezy o Ubuntu

E’ possibile installare il filesystem ZFS su qualsiasi macchina Ubuntu/Debian.

Su ubuntu:

apt-get install python-software-properties (se necessario)
add-apt-repository ppa:zfs-native/stable
apt-get update
apt-get install ubuntu-zfs

Vengono installati i seguenti pacchetti.

# apt-get install ubuntu-zfs
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
binutils cpp-4.3 dkms fakeroot gcc gcc-4.3 gcc-4.3-base gcc-4.4 libc-dev-bin libc6-dev libgomp1 libnvpair1 libuutil1 libzfs1 libzpool1
linux-headers-2.6-amd64 linux-headers-2.6.32-5-amd64 linux-headers-2.6.32-5-common linux-kbuild-2.6.32 linux-libc-dev lsb-release make manpages-dev
menu spl spl-dkms zfs-dkms zfsutils
Suggested packages:
binutils-doc gcc-4.3-locales gcc-multilib autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.3-multilib libmudflap0-4.3-dev gcc-4.3-doc
libgcc1-dbg libgomp1-dbg libmudflap0-dbg gcc-4.4-multilib libmudflap0-4.4-dev gcc-4.4-doc gcc-4.4-locales libcloog-ppl0 libppl-c2 libppl7 glibc-doc lsb
make-doc menu-l10n gksu kdebase-bin kdebase-runtime ktsuss sux zfs-auto-snapshot samba-common-bin nfs-kernel-server zfs-initramfs
The following NEW packages will be installed:
binutils cpp-4.3 dkms fakeroot gcc gcc-4.3 gcc-4.3-base gcc-4.4 libc-dev-bin libc6-dev libgomp1 libnvpair1 libuutil1 libzfs1 libzpool1
linux-headers-2.6-amd64 linux-headers-2.6.32-5-amd64 linux-headers-2.6.32-5-common linux-kbuild-2.6.32 linux-libc-dev lsb-release make manpages-dev
menu spl spl-dkms ubuntu-zfs zfs-dkms zfsutils
0 upgraded, 29 newly installed, 0 to remove and 0 not upgraded.
Need to get 27.6 MB of archives.
After this operation, 95.3 MB of additional disk space will be used.

Su debian wheezy:

su -
wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_3%7Ewheezy_all.deb
dpkg -i zfsonlinux_3~wheezy_all.deb
apt-get update
apt-get install debian-zfs

Vengono installati i seguenti pacchetti.

# apt-get install debian-zfs
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'debian-zfs' for regex 'debian.zfs'
The following extra packages will be installed:
  binutils build-essential cpp-4.6 dkms dpkg-dev fakeroot g++ g++-4.7 gcc gcc-4.6 gcc-4.6-base gcc-4.7 libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libc-dev-bin libc6-dev libdpkg-perl libfile-fcntllock-perl libgomp1 libitm1 libnvpair1 libstdc++6-4.7-dev libuutil1 libzfs1
  libzpool1 linux-headers-3.2.0-4-amd64 linux-headers-3.2.0-4-common linux-headers-amd64 linux-kbuild-3.2 linux-libc-dev make manpages-dev menu
  module-init-tools spl spl-dkms zfs-dkms zfsutils
Suggested packages:
  binutils-doc gcc-4.6-locales zfs-auto-snapshot debian-keyring g++-multilib g++-4.7-multilib gcc-4.7-doc libstdc++6-4.7-dbg gcc-multilib autoconf
  automake1.9 libtool flex bison gdb gcc-doc gcc-4.6-multilib libmudflap0-4.6-dev gcc-4.6-doc libgcc1-dbg libgomp1-dbg libquadmath0-dbg libmudflap0-dbg
  binutils-gold gcc-4.7-multilib libmudflap0-4.7-dev gcc-4.7-locales libitm1-dbg libcloog-ppl0 libppl-c2 libppl7 glibc-doc libstdc++6-4.7-doc make-doc
  menu-l10n gksu kdebase-bin kdebase-runtime ktsuss sux samba-common-bin nfs-kernel-server zfs-initramfs
Recommended packages:
  linux-headers
The following NEW packages will be installed:
  binutils build-essential cpp-4.6 debian-zfs dkms dpkg-dev fakeroot g++ g++-4.7 gcc gcc-4.6 gcc-4.6-base gcc-4.7 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libc-dev-bin libc6-dev libdpkg-perl libfile-fcntllock-perl libgomp1 libitm1 libnvpair1
  libstdc++6-4.7-dev libuutil1 libzfs1 libzpool1 linux-headers-3.2.0-4-amd64 linux-headers-3.2.0-4-common linux-headers-amd64 linux-kbuild-3.2
  linux-libc-dev make manpages-dev menu module-init-tools spl spl-dkms zfs-dkms zfsutils
0 upgraded, 40 newly installed, 0 to remove and 0 not upgraded.
Need to get 33.5 MB/52.1 MB of archives.

PROXMOX RAID Setup

Tips per l’installazione di PROXMOX con RAID software

Al momento del boot da CD è possibile stabilire la dimensione del disco e dello swap, questo è utile nel caso di setup su disci molto grandi o su dischi diversi da quelli che ospiteranno definitivamente il sistema.

 linux hdsize=200 maxroot=25 swapsize=8

LINK

A questo punto si effettua il setup sul primo dei dischi disponibili, di avvia e si aggiorna con i conseguenti reboot.

Quando il setup è completato si può seguire il precedente articolo “PROXMOX Tips” per poi passare alla migrazione del sistema su un RAID software in standard Linux (mdadm).

Si duplica il partizionamento dei dischi che faranno parte del RAID10

sfdisk -d /dev/sda | sfdisk -f /dev/sdb
sfdisk -d /dev/sda | sfdisk -f /dev/sdc
sfdisk -d /dev/sda | sfdisk -f /dev/sdd

si setta la tipologia di partizione in fd

sfdisk -c /dev/sdb 1 fd
sfdisk -c /dev/sdb 2 fd
sfdisk -c /dev/sdc 1 fd
sfdisk -c /dev/sdc 2 fd
sfdisk -c /dev/sdd 1 fd
sfdisk -c /dev/sdd 2 fd

E si creano i device RAID10 senza perdere tempo nella sincronizzazione

mdadm --create --level=1 --raid-devices=4 --chunk=128 --metadata=0.9 /dev/md126 missing /dev/sdb1 /dev/sdc1 /dev/sdd1 --assume-clean
mdadm --create --level=10 --raid-devices=4 --chunk=128 /dev/md127 missing /dev/sdb2 /dev/sdc2/dev/sdd2 --assume-clean

Formattiamo /dev/md126, che diventerà la /boot, e copiamo il contenuto di /boo

mkfs.ext3 /dev/md126 -Lboot
mkdir /mnt/tmp
mount /dev/md126 /mnt/tmp
rsync -av /boot /mnt/tmp/
umount /mnt/tmp

Sostituire in /etc/fstab la voce UUID=… con LABEL=boot

LABEL=boot /boot ext3 defaults 0 1

A questo punto tentiamo un reboot.

Appena ripartito il sistema si esegue in sequenza…

echo 'GRUB_DISABLE_LINUX_UUID=true' >> /etc/default/grub
echo 'GRUB_PRELOAD_MODULES="raid dmraid"' >> /etc/default/grub
echo raid1 >> /etc/modules
echo raid1 >> /etc/initramfs-tools/modules
grub-install /dev/sda
grub-install /dev/sdb
grub-install /dev/sdc
grub-install /dev/sdd
grub-install /dev/md126
update-grub
update-initramfs -u

Uniformiamo sda alla configurazione in RAID10 e agganciamola al RAID

sfdisk -c /dev/sda 1 fd
mdadm --add /dev/md126 /dev/sda1

Terminata la sincronizzazione si può reboottare.

Ripartita la macchina possiamo sportare il contenitore LVM.

pvcreate /dev/md127
vgextend pve /dev/md127
pvmove /dev/sda2 /dev/md127
vgreduce pve /dev/sda2
pvremove /dev/sda2
sfdisk -c /dev/sda 2 fd
mdadm --add /dev/md127 /dev/sda2

Si attende la sincronizzazione e si riavvia la macchina ed il sistema si trova configurato su un sottosistema dischi affidabile e veloce.

PROXMOX tips

Tips per la personalizzazione di PROXMOX

Al momento del boot da CD è possibile stabilire la dimensione del disco e dello swap, questo è utile nel caso di setup su disci molto grandi o su dischi diversi da quelli che ospiteranno definitivamente il sistema.
Basta digitare il seguente comando.

 linux hdsize=200 maxroot=25 swapsize=8

Pacchetti da installare preliminarmente

apt-get install acpid vim mdadm dbench smartmontools irqbalance iotop tcpdump htop bmon

LINK

per la personalizzazione del prompt della bash usiamo questo, basta copiarlo in un file in /etc/bash_completion.d/

prompt-bash

echo -ne "\033]0; ${USER}@${HOSTNAME} +${SHLVL} @${SSH_TTY/\/dev\/} - `uptime` \007"
declare -x PROMPT_COMMAND="echo -en \"\\033[m\\033[38;5;2m\"\$(( \`sed -n \"s/MemFree:[\\t ]\\+\\([0-9]\\+\\) kB/\\1/p\" /proc/meminfo\`/1024))\"\\033[38;5;22m/\"\$((\`sed -n \"s/MemTotal:[\\t ]\\+\\([0-9]\\+\\) kB/\\1/Ip\" /proc/meminfo\`/1024 ))MB\"\\t\\033[m\\033[38;5;55m\$(< /proc/loadavg)\\033[m\""
declare -x PS1="\\[\\e[m\\n\\e[1;30m\\][\$\$:\$PPID \\j:\\!\\[\\e[1;30m\\]]\\[\\e[0;36m\\] \\T \\d \\[\\e[1;30m\\][\\[\\e[1;34m\\]\\u@\\H\\[\\e[1;30m\\]:\\[\\e[0;37m\\]\${SSH_TTY} \\[\\e[0;32m\\]+\${SHLVL}\\[\\e[1;30m\\]] \\[\\e[1;37m\\]\\w\\[\\e[0;37m\\] \\n(\$SHLVL:\\!)\\\$ "

LINK

mentre per il .bashrc

export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -alh'
alias ll='ls $LS_OPTIONS -alht'
alias l='ls $LS_OPTIONS -l'
alias ..='cd ..'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ports='netstat -tulanp'
alias pstree="pstree -G"
alias t="tail -f /var/log/messages"

 

Su di un HP ML310eGen8, cpu  Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz, con quattro dischi SATA in RAID10 otteniamo con pveperf

# pveperf
CPU BOGOMIPS: 24745.92
REGEX/SECOND: 1450123
HD SIZE: 19.69 GB (/dev/mapper/pve-root)
BUFFERED READS: 262.38 MB/sec
AVERAGE SEEK TIME: 7.53 ms
FSYNCS/SECOND: 1470.62
DNS EXT: 54.63 ms
DNS INT: 62.04 ms (netlite.it)

Ottimizzazione della  gestione dell’I/O da inserire in /etc/rc.conf o /etc/rc.local

#!/bin/bash
#
# rc.local
echo 0 > /proc/sys/kernel/hung_task_timeout_secs
echo 0 > /proc/sys/vm/swappiness
DISKS=$(find /sys/block/ -iname "sd*")
for DISK in $DISKS; do
        echo "Disk $DISK..."
        echo 0 > $DISK/queue/add_random;
        echo 0 > $DISK/queue/rq_affinity;
        #echo cfq > $DISK/queue/scheduler;
        echo noop > $DISK/queue/scheduler;
        #cat $DISK/queue/scheduler;
done
true > /etc/motd
if [ -e /etc/lsb-release ]
then
        grep DISTRIB_DESCRIPTION /etc/lsb-release | sed 's/^DISTRIB_DESCRIPTION="\(.*\)"$/\1/' > /etc/motd
fi
uname -a >> /etc/motd
echo >> /etc/motd
echo "server    : `cat /root/.mdg 2>/dev/null`" >> /etc/motd
echo "ip        : `cat /etc/network/interfaces | grep "address" | head -n 1 | cut -f 3 -d " "`"  >> /etc/motd
echo "hostname  : `hostname`" >> /etc/motd
echo >> /etc/motd
/bin/cat /etc/motd > /etc/issue

Scaricherei QUI i drivers più recenti per i sistemi Windows

cd /var/lib/vz/template/iso/
wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/virtio-win-0.1-74.iso

Aggiungerei in /etc/default/grub l’elevator più performante ed aggiornerei il grub2

GRUB_CMDLINE_LINUX_DEFAULT="quiet elevator=deadline"
update-grub

In alcune migrazioni (Centos 5.X) i drivers virtio non sono presenti nell’initrd quindi il sistema va in crash al momento del boot per la mancanza della root. In seguente comando rigenera l’initrd con i moduli mancanti.

mkinitrd --with virtio_net --with virtio_pci --with virtio_blk -f /boot/initrd-$(uname -r).img $(uname -r)

Dalla versione 3.1 di Proxmox è presente un fastidioso alert presentato ad ogni login, pur comprendendone le ragioni trovo fastidioso che mi venga ricordato ogni volta.
Dopo aver letto l’articolo LINK ho scritto questo comando per evitare che l’alert appaia.
Ad ogni aggiornamento potrebbe essere necessario riapplicarlo o modificarlo leggermente (grazie Federico per la segnalazione).

LINEA=$(cat -n /usr/share/pve-manager/ext4/pvemanagerlib.js | grep "if (data.status !== 'Active') {" | awk '{print $1}')
sed -i "${LINEA}s/.*/if (false) {/" /usr/share/pve-manager/ext4/pvemanagerlib.js

A volte può essere utile limitare la velocità di lettura per i backup di proxmox (vzdump) al fine di non saturare eventuali storage condivisi o non sovraccaricare l’hardware locale.
Dopo aver letto l’ articolo LINK riporto questa modifica al file /etc/vzdump.conf che limita a 40Mb/sec la lettura dai dispositivi locali.

bwlimit 40000

Backup differenziali con proxmox (vzdump).
Ho trovato QUESTO interessante articolo.

Quali drivers installare per i diversi sistemi operativi LINK.

In caso i componenti di un Cluster Proxmox si isolino le macchine virtuali continueranno a funzionare correttamente ma dall’interfaccia web non sarà più possibile amministrare i nodi remoti e non sarà possibile creare o eliminare VM.
Considerate di disabilitare l’alta affidabilità (HA) prima di procedere.
Per risolvere il problema è sufficiente eseguire i seguenti comandi su tutti i nodi in sequenza, senza un particolare ordine:

/etc/init.d/pve-cluster restart
/etc/init.d/cman restart
/etc/init.d/pvedaemon restart
/etc/init.d/pvestatd restart
/etc/init.d/pve-manager restart
/etc/init.d/pve-cluster restart

Questo simula un riavvio dei nodi SENZA riavviare le VM.

Andrea Gagliardi – netlite.it