User Tools

Site Tools


interessen:computer:fileserver

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
interessen:computer:fileserver [2014/02/25 11:50]
tomtom
— (current)
Line 1: Line 1:
-====== Fileserver ====== 
  
-Als Fileserver nutze ich hier meinen Hauptserver mit folgenden Services 
-  * Glusterfs 
-  * NFS 
-  * rsync 
- 
-===== GlusterFS ===== 
- 
-Den Glusterfs-Service habe ich gmäss Anleitung(en) aufgesetzt. Der Server geht unter Ubuntu (server) auch ganz leicht, aber ich habe trotzdem eine Weile gebraucht, um den Client richtig zu konfigurieren.  
-Bei allen Anleitungen soll man sich nach der Installation des Server einfach per 
-  <client>:/# mount -t glusterfs <server>:<share> /<zielordner>  
-mit der Freigabe verbinden.  
-Der Befehl wurde auch ohne Fehler ausgeführt - der Ordner war aber immer leer und auch neue Dateien tauchten nicht im Server auf. 
-Nach einer Weile der Recherche im Netz hab ich dann was anderes probiert. 
-Erst hab ich einen Ordner angelegt 
-  <client>:/# mkdir /etc/glusterfs 
-danach in diesen Ordner die Volumedefinitionen aus dem **Server** aus 
-  <server>:/# /etc/glusterd/vols/<volume>/<volume>-fuse.vol 
-in den Ordner 
-  <client>:/# /etc/glusterfs/ 
-auf dem **Client** kopiert. 
-Danach war es relativ simpel in die Datei 
-  <client>:/# /etc/fstab 
-die Zeile 
-  /etc/glusterfs/<volume>-fuse.vol /<zielordner> glusterfs defaults,_netdev 0 0 
-einzufügen. 
-Nach einem  
-  <client>:/# mount -all 
-waren dann die Dateien zu sehen und auch veränderbar.  
-Endlich funktionierte es! :-D 
- 
-===== NFS ===== 
- 
- 
-NFS ist einfach via Anleitung aufgesetzt worden. Dazu gibt es die diversen Anleitungen im Internet, so dass ich hier nicht näher darauf eingehe. 
- 
- 
-===== rsync ===== 
- 
-RSYNC hat bei mir die Aufgabe meine Rechner untereinander zu sichern. Dazu habe ich auf diesen ein Script mit den jeweiligen Anpassungen laufen, das in regelmässigen Abständen nachsieht, ob der Backup-Server bzw. dessen Freigabe erreichbar ist und wenn das bestätigt ist werden vorher festgelegte Ordner synchronisiert. 
-  * [[http://rsync.samba.org/documentation.html|rsync Man pages]] 
- 
-==== ServerKonfiguration ==== 
- 
-Nach der Installation von rsync ist unter Ubuntu erstmal nur der Clientdienst aktiv. Den Serverdienst muss man erst einrichten und dann als Service definieren. 
-Zu erst wird die Datei 
-  /etc/rsyncd.conf 
-mit folgendem Inhalt angelegt 
-  <server>:/etc# cat rsyncd.conf  
-  use chroot = true 
-  strict modes = false 
-  hosts allow = <network/mask> 
-  uid = <user> 
-  gid = users 
-  max connections = 5 
-  syslog facility = local5 
-  pid file = /var/run/rsyncd.pid 
-   
-  [<Share1>] 
-  comment = backup folder on <server> 
-  path = /data1/Arbeit/ 
-  read only = no 
-  list = yes 
-  auth users = <user at source> 
-  secrets file = /etc/rsyncd.secrets 
-   
-  [<Share2>] 
-  comment = Documents folder on <server> 
-  path = /data1/Dateiablage/ 
-  read only = no 
-  list = yes 
-  auth users = <user at share> 
-  secrets file = /etc/rsyncd.secrets 
- 
-In der Datei 
-  /etc/rsyncd.secrets 
-stehen nur die User mit den dazugehörigen Passwörtern drinn. Ich wollte die nicht so unbedingt einfach in die Konfig hämmern. Mann sollte ja wenigstens den Anschein von Sicherheit wahren. :-D 
- 
-Danach hab ich noch mit 
-  apt-get install xinetd 
-den xinetd Startservice installiert. 
-In dem dazugehörigen Ordner unter  
-  /etc/xinetd.d 
-muss dann noch eine Datei rsync angelegt werden. Die sieht bei mir so aus 
-  <server>:/etc# cat xinetd.d/rsync  
-  # default: off 
-  # description: The rsync server is a good addition to an ftp server, as it \ 
-  # allows crc checksumming etc. 
-  service rsync 
-  { 
-  disable = no 
-  flags = IPv6 
-  socket_type     = stream 
-  wait            = no 
-  user            = root 
-  server          = /usr/bin/rsync 
-  server_args     = --daemon 
-  log_on_failure  += USERID 
-  } 
-Nach einem  
-  <server>:/# service xinetd restart 
-ist der rsync-Service dann erreichbar. 
- 
-==== Clientkonfiguration ==== 
- 
-Auf dem Client hab ich ein Backup-Script laufen in dem ich einer seits den/ die Server angeben kann auf die ich sichern will und anderer seits die Verzeichnisse angebe die ich sichern will. 
-Das Script wird dann über einen CRON-Job  
-  <client>:/# crontab -e 0 0-23/2 * * * /opt/backup/backup.sh >/dev/null 2>&1 
-in regelmässigen Abständen aufgerufen. 
- 
-  <clientname>:/# cat /opt/backup/backup.sh  
-  #!/bin/bash 
-  ## insert all directories to sync/ backup ## 
-  directories=( <directory1> <directory2>) 
-  workdir=<workdir>  
-   
-  ## define target 
-  user=<transferuser> 
-  server=(<targetserver1> <targetserver2>) 
-  # view /etc/rsyncd.conf at targetserver 
-  targetshare=<share at target> 
-   
-  ## generate log-file-names 
-  tstemp=`date +%Y%m%d%H` 
-  tstemp_old=`date +%Y%m%d -d yesterday` 
-  logfile=$workdir/$tstemp.backup.log 
-  logcheckfile=$workdir/$tstemp.backup.check.log 
-  # backup log 
-  logtimefile=$workdir/backup.time.log 
-  logtimefiletemp=$logtimefile.temp 
-   
-  ## clean old log from messages and let all informations since the last running backup in file 
-  clean_log() 
-  { 
-    i=1 
-    while ((i <= 100)) 
-      do 
-         if (tail -$i $logtimefile|grep done) 
-           then 
-            tail -$i $logtimefile > $logtimefiletemp 
-            cat $logtimefiletemp > $logtimefile 
-            rm $logtimefiletemp  
-     break 
-        fi 
-        i=$(( $i + 1 )) 
-      done 
-    return 0 
-  } 
-   
-  ## generate display message for graphical desktops and write backup log 
-  errormsg() 
-  { 
-    errorcount=0 
-    ## if differrents between rsync run and rsync check exists, error message will generate 
-    for i in `cat $logcheckfile | grep '<f'|cut -d\/ -f2-` 
-      do 
-       if (cat $logfile | grep $i) 
-        then  
-          ((errorcount++)) 
-        fi 
-      done 
-    if (($errorcount > 0)) 
-      then 
-        ## enable only if script run at system with graphical desktop ## 
-        #notify-send -u critical -t 3000 -i /opt/backup/pictures/error.jpg "Backup to $target failure!!" 
-        message='Backup error! Server :' 
-      else 
-        ## enable only if script run at system with graphical desktop ## 
-        #notify-send -u normal -t 3000 -i /opt/backup/pictures/symbol_check.png "Backup to $target done!" 
-        rm $logcheckfile 
-        rm $logfile 
-        message='Backup done with server: ' 
-        if (ls $workdir| grep $tstemp_old) 
-          then 
-            for i in `ls $workdir| grep $tstemp_old`  
-              do 
-                rm $i 
-             done 
-        fi 
-     fi 
-    message=`date`" : "$message$target 
-    echo $message >> $logtimefile 
-    return 0 
-  } 
-   
-  ## use for rsyncd at target server(s) ## 
-  # check if job running from other schedule 
-  if(! ps -ef | grep rsync | grep $workdir )  
-    then 
-      for target in "${server[@]}" 
-       do 
-         # check if host available 
-         if( ping -c 1  $target > /dev/null )  
-           then 
-             date >> $logfile 
-             date >> $logcheckfile 
-             for dir in "${directories[@]}" 
-               do 
-                 echo $dir >> $logfile 
-                 ## synchronize the directory 
-                 rsync -vah --partial $workdir/$dir $user@$target::$targetshare/ --password-file=/etc/rsync.pass >> $logfile 
-                 echo $dir >> $logcheckfile 
-                 ## check if directories synchron (it's a dry run with renerate a check file) 
-                 rsync -vahn --partial $workdir/$dir $user@$target::$targetshare/ --password-file=/etc/rsync.pass >> $logcheckfile 
-               done 
-             date >> $logfile 
-             clean_log 
-             errormsg 
-             ## transfer the backup-log 
-             rsync -vzh --partial $logtimefile $user@$target::$targetshare/ --password-file=/etc/rsync.pass 
-           else 
-             message=`date`" : Synchronisation host not reachable! hostname: "$target 
-             echo $message >> $logtimefile 
-           fi 
-        done 
-    fi 
-   exit 
- 
-Und nun noch unter /etc die datei rsync.pass mit dem richtigen Passwort ablegen 
-  <client>:/# sudo echo <streng geheim> /etc/rsync.pass 
-   
-Um alles richitg zu machen werden zum Abschluss die Rechte für die Datei neu gesetzt: 
-  <client>:/# sudo chmod 600 /etc/rsync.pass 
- 
-Ein kleiner Probelauf mit  
-  <client>:/# sudo /opt/backup/backup.sh 
-sollte dann auch noch die letzten kleinen Fehler aufzeigen (z.B fehlende bzw. leere rsync.pass, fehlender oder falscher Eintrag in "hosts allow" auf der Target-Seite, ...).   
interessen/computer/fileserver.1393325401.txt.gz · Last modified: 2014/02/25 11:50 by tomtom