Mount-Kilimanjaro
Server named after Mho, in the Mhount namespace, Kilimanjaro being one of Seven summits.
Mhount-Kilimanjaro är en AFS-filserver som vi ärvde från mho. Det är en AMD Athlon II X4 600e med 8Gb RAM, en 40Gb SSD som systemdisk och 8x2T snurr-diskar som har fungerat som lagringsserver, något som vi på Stacken kommer använda den som. Då vi har mer kompetens inom Linux än OpenSolaris/Indiana/... så valde vi att sätta upp en Debian-maskin med Linux mjukvaruraid.
Contents
Partionera disk
Skapa partitioner på alla diskar, identiskt. 10G i början av disken för OS, följt av resterande för zfs.
for n in a b c d f g h i j k l ; do parted -s /dev/sd$n mklabel gpt; parted -s /dev/sd$n mkpart primary ext2 0% 10GB; parted -s /dev/sd$n mkpart primary zfs 10GB 100%; parted -s /dev/sd$n print; done
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
Installerade paket
- heimdal-clients
- heimdal-clients-x
- openafs-client
- openafs-fileserver
- openafs-modules-dkms
- mdadm
RAID Setup
Maskinen har 10 diskar på 2T styck, två används som hot spare. Vi har skapat två speglar, m0 och m1. Syftet är ett köra från den ena spegeln och ha den andra som en backup om någon lyckas förstöra systemet.
Om du inte redan har mdadm installerat, installera det med:
apt-get install mdadm
Skapa md0 av fyra diskar, och en hot spare
mdadm --create /dev/md0 --level=raid1 --raid-devices=4 /dev/sd{d,f,g,h}1 --spare-devices=1 /dev/sda1 --metadata=0.90
Gör samma sak med md1
mdadm --create /dev/md1 --level=raid1 --raid-devices=4 /dev/sd{i,j,k,l}1 --spare-devices=1 /dev/sdb1 --metadata=0.90
Lägg in array:en i mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
(eventuellt kan det inte behövas göras på vissa/nyare system, kolla så du inte har dubbletter i /etc/mdadm/mdadm.conf)
ZFS
Installera de nödvändiga paketen
apt-get install build-essential gawk fakeroot linux-headers-2.6.32-5-amd64 \ alien zlib1g-dev uuid-dev libblkid-dev libselinux-dev parted lsscsi git
Clona SPL, bygg och installera
git clone https://github.com/zfsonlinux/spl -b spl-0.6.0-rc9 cd spl git checkout spl-0.6.0-rc9 ./configure make deb dpkg -i *.deb cd ..
Gör samma sak med ZFS
git clone https://github.com/zfsonlinux/zfs cd zfs/ git checkout zfs-0.6.0-rc9 ./configure --with-spl=/usr/src/spl-0.6.0-rc9/2.6.32-5-amd64 make deb dpkg -i *.deb
Starta om datorn
reboot
Verifera att modulerna är laddade
lsmod | grep zfs
Skapa en pool som heter vicepa med raidz2 (ungefär raid6), 8 diskar och 2 hot spare.
zpool create -f vicepa raidz2 /dev/sd{d,f,g,h,i,j,k,l}2 spare /dev/sd{a,b}2
kolla status m.m.
zpool status mount zpool list
LVM (gammalt)
Vi vill ha många partitioner, även om AFS kan hantera partitioner större än 2T så är inte all mjukvara helt ikapp på den punkten. För att inte ställa till det så vill vi ha partitioner på 2T som störst. Vi kommer få många partitioner så vi använder LVM.
Installera lvm
# apt-get install lvm2 xfsprogs
Förbered/formatera RAID:en för LVM
# pvcreate /dev/md0
Skapa en volymgrupp över hela partitionen med physical extent size satt till 64M
# vgcreate -s 64M vicevg0 /dev/md0
Vi har 10.81T data, det ger oss 5 volymer på 2T. 800G lämnad opartiorenat och finna att användas vid behov.
# vgdisplay | grep "VG Size" VG Size 10.81 TiB
Vi kör en loop för att skapa de fem volymerna
for n in a b c d e; do lvcreate -L 2T -n vicep$n vicevg0; done
# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert vicepa vicevg0 -wi-a- 2.00t vicepb vicevg0 -wi-a- 2.00t vicepc vicevg0 -wi-a- 2.00t vicepd vicevg0 -wi-a- 2.00t vicepe vicevg0 -wi-a- 2.00t
Bygg filsystem på partitionerna, vi använder xfs.
for n in a b c d e; do mkfs.xfs -l size=134217728,lazy-count=1 /dev/vicevg0/vicep$n; done
Skapa mountpoints
for n in a b c d e; do mkdir -p /vicep$n; done
Lägg till i fstab
for n in a b c d e; do echo "/dev/vicevg0/vicep$n /vicep$n xfs noatime,nodiratime,logbufs=8 0 0" >> /etc/fstab; done
Montera allt
mount -a
Sätt lite magiska parametrar vid boot
Några saker att notera:
- Jag har rc2.d för att debians vanliga runlevel är 2. Om du kör det här på ett redhat-system så vill du nog använda rc3.d.
- Vi har 10000 satt som sync_speed_min 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 går sönder.
- Att lägga filer i /etc/rc?.d/* är inte helt rätt, saker bör ligga i /etc/init.d/ men det här funkar och var lättare.
echo 'test -f /sys/block/md0/md/stripe_cache_size && echo 16384 > /sys/block/md0/md/stripe_cache_size' >> /etc/rc2.d/S99local echo 'test -f /sys/block/md0/md/sync_speed_min && echo 10000 > /sys/block/md0/md/sync_speed_min' >> /etc/rc2.d/S99local
Kerberos Setup
Vi har installerat
apt-get install heimdal-clients heimdal-clients-x
AFS Setup
Vi har installerat följande
apt-get install openafs-client openafs-fileserver openafs-modules-dkms