Mount-Everest

Revision as of 21:11, 4 October 2012 by Nsg (talk | contribs) (AFS)

Server named after Mho, in the Mhount namespace, Everest being one of Seven summits.

Mhount-Everest är en AFS-filserver som vi ärvde från mho. Det är en AMD Athlon(tm) II X2 250 med 8Gb RAM. Då vi har mer kompetens inom Linux än OpenSolaris/Indiana/... så valde vi att sätta upp en Debian-maskin med Linux mjukvaruraid. Maskinen är fylld med 12 st 2T diskar och uppsatta med RAID.

Installation

Föreberedelse

Det är enklare att partitionera diskarna i förväg från en liveskiva, det sparar tid och är mycket trevligare att t.ex. boota en liveskiva och köra följande kommando.

for n in a b c d e f g h i j k l ; do
  parted -s /dev/sd$n mklabel msdos;
  parted -s /dev/sd$n mkpart primary ext2 0% 10GB;
  parted -s /dev/sd$n mkpart primary ext2 10GB 100%;
done

OBS Notera att troligtvis har din USB-sticka/skiva hamnat med i listan på diskar, se till att du har med rätt diskar.

Vi valde sedan att plocka bort de diskarna som vi inte skulle ha med i vår system-RAID, det var för att göra det simpelt för oss. Vi valde att använda partition ett på de sex diskarna som sitter i 5,2 tums plattserna för systemet.

OS installation

Grund-installationen gjordes med en Debian 6.0.3 AMD64 netinst CD. Vi valde engelska som språk, en_US.UTF-8 samt svenska som layout.

Vid Task Select valde vi att inkludera SSH server samt avmarkera Graphical desktop enviroment. Följande var valt:

  • SSH Server
  • Standad system utilities

Vi satte upp en mirror (RAID 1) över första partitionen på fyra diskar, samt två spares. På den RAID:en har vi sedan lagt LVM med två volymer, root för systemet samt swap för swap.

# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sda1[0] sde1[4](S) sdf1[5](S) sdd1[3] sdc1[2] sdb1[1]
     9763768 blocks super 1.2 [4/4] [UUUU]
# lvs
  LV   VG       Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  root vgmirror -wi-ao   8.38g                                      
  swap vgmirror -wi-ao 952.00m  

Några problem som upptäcktes var att något blev knas när vi körde med gpt partitioner, gissningvis är det kanske ett problem om inte existerar vid nästa installation av filserver. Då diskarna inte var större än 2T så valde vi att välja den enkla vägen och köra klassisk partitionstabell á msdos.

När installationsprogrammet skulle skriva ner grub så blev något fel, vi valde att hoppa över det steget i installationen och gå vidare. Efter att installationen var klar så bootade vi en live-skiva igen och körde följande (exempel från Ubuntu-skriva):

# Installera paket, sätt ihop arrayen (RAID:en)
apt-get install mdadm lvm2
mdadm -A --scan
partprobe
# Chroota in i installationen
mkdir /target
mount /dev/vgmirror/root /target
mount -o bind /proc /target/proc
mount -o bind /dev /target/dev
mount -o bind /sys /target/sys
chroot /target /bin/bash
# Kör grub-install på alla system-diskar
for n in a b c d e f; do 
  grub-install /dev/sd$n; 
done
update-grub

'OBS! Notera att din usb-sticka/skiva förmodligen ligger någon bland diskarna, akta så att du inte av misstag kör grub-install på din usb-sticka, eller att du grömmer en disk.

Vi stängde sedan av datorn och satte i de resterande sex diskarna igen och bootade datorn.

Konfiguration

Uppdatera systemet

apt-get update
apt-get upgrade
apt-get dist-upgrade

MD

Installera user land verktyget mdadm för att administrera arrayen. Du kommer få en fråga om vilka arrayer att starta vid boot, lämna det på default (all).

apt-get install mdadm

Nu vill vi skapa en RAID6 över partition två på alla diskar med två hot spares.

mdadm --create /dev/md1 --level=raid6 --raid-devices=10 /dev/sd{a,b,c,d,e,f,g,h,i,j}2 \
  --spare-devices=2 /dev/sd{k,l}2

Klart, nu ser det ut så här på vår nya array

# mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Thu Oct  4 21:49:24 2012
     Raid Level : raid6
     Array Size : 15549976576 (14829.61 GiB 15923.18 GB)
  Used Dev Size : 1943747072 (1853.70 GiB 1990.40 GB)
   Raid Devices : 10
  Total Devices : 12
    Persistence : Superblock is persistent

    Update Time : Thu Oct  4 21:49:24 2012
          State : clean
 Active Devices : 10
Working Devices : 12
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 512K

           Name : mount-everest:1  (local to host mount-everest)
           UUID : 66880268:b4971097:4c767927:280fd9a6
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync   /dev/sda2
       1       8       18        1      active sync   /dev/sdb2
       2       8       34        2      active sync   /dev/sdc2
       3       8       50        3      active sync   /dev/sdd2
       4       8       66        4      active sync   /dev/sde2
       5       8       82        5      active sync   /dev/sdf2
       6       8       98        6      active sync   /dev/sdg2
       7       8      114        7      active sync   /dev/sdh2
       8       8      130        8      active sync   /dev/sdi2
       9       8      146        9      active sync   /dev/sdj2

      10       8      162        -      spare   /dev/sdk2
      11       8      178        -      spare   /dev/sdl2

Vi sätter sync_speed_min till 10000 då vi inte vill att det ska ta för lång tid att bygga om raid:en om en disk går sönder. Vi vill inte att den ska gå sönder innan nästa disk hinner går sönder.

Fyll i nedan i /etc/rc.local

test -f /sys/block/md0/md/stripe_cache_size && echo 16384 > /sys/block/md0/md/stripe_cache_size
test -f /sys/block/md0/md/sync_speed_min && echo 10000 > /sys/block/md0/md/sync_speed_min
test -f /sys/block/md1/md/stripe_cache_size && echo 16384 > /sys/block/md1/md/stripe_cache_size
test -f /sys/block/md1/md/sync_speed_min && echo 10000 > /sys/block/md1/md/sync_speed_min

Slutligen vill vi att vår nya array ska finnas med i /etc/mdadm/mdadm.conf så att den startas vid boot. Uppdatera filen med utdata från följande kommando.

mdadm --examine --scan

LVM

Formatera våran nya array till lvm med pvcreate

pvcreate /dev/md1

Skapa en volymgrupp över hela partitionen med physical extent size satt till 64M

vgcreate -s 64M vicevg0 /dev/md1

Vi börjar med att skapa tre volymer för afs, vid ramtida behov så är det enkelt att skapa flera.

lvcreate -L 2T -n vicepa vicevg0
lvcreate -L 2T -n vicepb vicevg0
lvcreate -L 2T -n vicepc vicevg0

XFS

apt-get install xfsprogs

Skapa filsystem på våra nya volymer

mkfs.xfs -l size=134217728,lazy-count=1 /dev/vicevg0/vicepa
mkfs.xfs -l size=134217728,lazy-count=1 /dev/vicevg0/vicepb
mkfs.xfs -l size=134217728,lazy-count=1 /dev/vicevg0/vicepc

Lägg till följande i /etc/fstab

/dev/vicevg0/vicepa /vicepa xfs noatime,nodiratime,logbufs=8 0 0
/dev/vicevg0/vicepb /vicepb xfs noatime,nodiratime,logbufs=8 0 0
/dev/vicevg0/vicepc /vicepc xfs noatime,nodiratime,logbufs=8 0 0

Skapa kataloger och montera

mkdir /vicepa
mkdir /vicepb
mkdir /vicepc
mount -a

Heimdal

apt-get install heimdal-clients

AFS

apt-get install openafs-client openafs-fileserver

cellen är stacken.kth.se, cache kan du lämna på default.

Installera en BosConfig i /etc/openafs/ Den skall inte installeras där dokumentationen säger. Den skall innehålla:

restarttime 16 0 0 0 0
checkbintime 16 0 0 0 0
bnode fs fs 1
parm /usr/lib/openafs/fileserver -udpsize 131071 -sendsize 131071 -nojumbo -p 128 -busyat 1200 -rxpck  800 -s 2400 -l 2400 -cb 1000000 -b 480 -vc 2400
parm /usr/lib/openafs/volserver
parm /usr/lib/openafs/salvager -datelogs -parallel all8 -orphans attach
end

/etc/openafs/server/CellServDB samt /etc/openafs/server/ThisCell bör vara automatiskt configurerade, men kolla gärna i dem så att de är korrekta. server/CellServDB skall innehålla hemmacellsentryt (endast).

Skapa /etc/openafs/server/UserList som innehåller administratörer, kopiera filen från en redan existerande server. Notationen ska vara i formatet nsg.admin

/etc/openafs/server/UserList/KeyFile hämtar man från en annan AFS server. KeyFile är HEMLIGT och måste hämtas på ett säkert, crypterad sätt. KeyFile ska ha rättigheterna 600 root:root satta.

Sedan klart för att starta fileservern (startskript drar igån bosserver som gör resten).

Se även