Difference between revisions of "Mount-Kilimanjaro"

(AFS Setup)
 
(48 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
AVSTÄNGT
 +
 
Server named after Mho, in the Mhount namespace, Kilimanjaro being one of [http://en.wikipedia.org/wiki/Seven_Summits Seven summits].
 
Server named after Mho, in the Mhount namespace, Kilimanjaro being one of [http://en.wikipedia.org/wiki/Seven_Summits Seven summits].
  
Mount-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 samt ZFS.
+
Mount-Kilimanjaro är en filserver som vi ärvde från mho. Den har kört OpenAFS under ett par år, för information om det se [http://wiki.stacken.kth.se/wiki/index.php?title=Mount-Kilimanjaro&oldid=442 rev 442 av den här sidan].
 
 
NOTERA! Texten på den här sidan åker runt och ändrar på sig mycket, kommer snygga till när maskinen är klar.
 
 
 
== Partionera disk ==
 
 
 
Skapa partitioner på alla diskar, identiskt.
 
10G i början av disken för OS, följt av resterande för RAID:en.
 
 
 
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 ext2 10GB 100%;
 
  parted -s /dev/sd$n print;
 
done
 
 
 
Det var smidigast att göra det innan installationen, men lite beroende vad för skiva/sticka du har så kan det gå att göra det direkt på den.
 
Jag valde att bara lägga OS på fyra diskar, speglat. Det är de fyra diskarna som ligger längst ner i lådan och är märkta systemdisk.
 
Systemdiskarna som vi bootar från sitter direkt på moderkortet.
 
 
 
== 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 11 diskar på 2T styck. vi bygger en raid6 och två används som hot spare.
 
Under installationen valde jag att göra en spegel över den lilla första partitionen på fyra diskar, jag skapade sedan en lvm på spegeln och skapade två volymer för swap och root. Jag lämade lite plats över så att vi enkelt kan ta snaphots av volymerna.
 
 
 
OLD:
 
 
 
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
+
Maskinen är en AMD Athlon II X4 600e med 8Gb RAM, vilket med dagens mått gör den en trött maskin. Det är dock en av de snabbare filservrarna som vi har i dag. [[User:nsg|nsg]] har 2015-07-23 tagit över servern för att hosta OS disk för KVM-servrarna.
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
+
== OS Install ==
reboot
+
Installera med PXE boot. Välj "<code>Debian 8 preseed - Type: Fileserver</code>" under "<code>Automatic installs</code>". Servern bör installera upp en tom Debian 8 med MD RADI1 på de minsta två diskarna. Om det kommer upp någon fråga så är det i princip alltid "enter" som är rätt knapp att trycka på, undantaget är när du väljer eth1.
  
Verifera att modulerna är laddade
+
Rootlösen är <code>changeme</code>, sshd släpper inte in root med lösenord så det är säkert. Logga in fysiskt och sätt ett lämpligt root-lösen.
lsmod | grep zfs
 
  
Skapa en pool som heter vicepa med raidz2 (ungefär raid6), 8 diskar och 2 hot spare.
+
Eventuellt kanske du behöver städa bort lite gamla MD/LVM/andra partitioner m.m. nu, enklast att att göra det bekvämt över ssh så:
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.
+
=== Kopiera in min nyckel ===
zpool status
+
Än så länge har vi inte Kerberos på maskinen så svårt att logga in, jag brukar sätta upp en ssh-nyckel så länge.
mount
 
zpool list
 
  
== LVM (gammalt) ==
+
    mount-kilimanjaro# mkdir -p /root/.ssh
 +
    mount-kilimanjaro# nc -l -p 4711 >> /root/.ssh/authorized_keys
  
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.
+
    mylaptop$ cat ~/.ssh/id_rsa.pub | nc mount-kilimanjaro.stacken.kth.se 4711
  
Installera lvm
+
    mount-kilimanjaro# chmod 700 /root/.ssh && chown 600 /root/.ssh/authorized_keys
# apt-get install lvm2 xfsprogs
 
  
Förbered/formatera RAID:en för LVM
+
=== Döda gamla saker på disken ===
# pvcreate /dev/md0
 
  
Skapa en volymgrupp över hela partitionen med physical extent size satt till 64M
+
Har vi tid så skadar det inte att läsa igenom alla block, se att diskar mår bra m.m. samt vi blir av med alla gamla partitioner på köpet.
# 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.
+
Identifiera våra stora diskar:
# vgdisplay | grep "VG Size"
+
  root@mount-kilimanjaro:~# BIG_DISKS="$(fdisk -l | awk '/TiB/{print $2}' | tr -d ':')"
VG Size              10.81 TiB
+
  root@mount-kilimanjaro:~# echo $BIG_DISKS
 +
  /dev/sdb /dev/sda /dev/sdd /dev/sde /dev/sdf /dev/sdh /dev/sdi /dev/sdk /dev/sdj
 +
dd:a bort dem:
 +
  root@mount-kilimanjaro:~# for disk in $BIG_DISKS; do (dd if=/dev/zero of=$disk bs=64k&); done
  
Vi kör en loop för att skapa de fem volymerna
+
== Sätt upp mjukvara ==
for n in a b c d e; do lvcreate -L 2T -n vicep$n vicevg0; done
+
Jag installerar och konfigurerar allt förutom ZFS och GlusterFS med [http://www.github.com/stacken/ansible Ansible]. För det behöver vi python (vilket min minimala installation inte kommer med):
  
# lvs
+
  # apt-get install python
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.
+
Hämta ut repo, anpassa provisioneringen vid behov och kör ut det:
for n in a b c d e; do mkfs.xfs -l size=134217728,lazy-count=1 /dev/vicevg0/vicep$n; done
+
  mylaptop$ git clone git@github.com:stacken/ansible.git && cd ansible
 +
  mylaptop$ make deps
 +
  mylaptop$ ansible-playbook -i mount-kilimanjaro.stacken.kth.se, -u root site.yml
  
Skapa mountpoints
+
== Sätt upp ZFS ==
for n in a b c d e; do mkdir -p /vicep$n; done
 
  
Lägg till i fstab
+
Våra OS diskar heter nått med ST3500320AS (Seagate), och DATA diskarna heter SAMSUNG, så vi kan enkelt hitta våra diskar med:
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
+
  # ls -l /dev/disk/by-id/ata-SAMSUNG*
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411632 -> ../../sdf
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411633 -> ../../sdb
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411634 -> ../../sdd
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411642 -> ../../sda
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411643 -> ../../sdk
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411644 -> ../../sde
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02894 -> ../../sdj
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02895 -> ../../sdi
 +
  lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02896 -> ../../sdh
  
Montera allt
+
Låt oss bygga ZFS på dem, vi lämnar första disken som spare.
  mount -a
+
  # SPARE="$(ls /dev/disk/by-id/ata-SAMSUNG* | head -1)"
 +
# RAID="$(ls /dev/disk/by-id/ata-SAMSUNG* | tail -n+2)"
 +
# echo $SPARE
 +
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411632
 +
# echo $RAID
 +
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411633
 +
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411634
 +
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411642
 +
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411643
 +
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411644
 +
/dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02894
 +
/dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02895
 +
/dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02896
  
Sätt lite magiska parametrar vid boot<br>
+
Sätt upp en pool som heter pool
Några saker att notera:
+
  zpool create pool raidz2 $RAID spare $SPARE
* 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 ==
+
# zfs list
 +
NAME  USED  AVAIL  REFER  MOUNTPOINT
 +
pool  537K  10.1T  205K  /pool
  
Vi har installerat
+
Massa trevlig disk ...
apt-get install heimdal-clients heimdal-clients-x
 
  
== AFS Setup ==
+
# zpool status
 +
  pool: pool
 +
  state: ONLINE
 +
  scan: none requested
 +
config:
 +
 +
NAME                                    STATE    READ WRITE CKSUM
 +
pool                                    ONLINE      0    0    0
 +
  raidz2-0                              ONLINE      0    0    0
 +
    ata-SAMSUNG_HD203WI_S1UYJ1BZ411633  ONLINE      0    0    0
 +
    ata-SAMSUNG_HD203WI_S1UYJ1BZ411634  ONLINE      0    0    0
 +
    ata-SAMSUNG_HD203WI_S1UYJ1BZ411642  ONLINE      0    0    0
 +
    ata-SAMSUNG_HD203WI_S1UYJ1BZ411643  ONLINE      0    0    0
 +
    ata-SAMSUNG_HD203WI_S1UYJ1BZ411644  ONLINE      0    0    0
 +
    ata-SAMSUNG_HD204UI_S2H7J9EZB02894  ONLINE      0    0    0
 +
    ata-SAMSUNG_HD204UI_S2H7J9EZB02895  ONLINE      0    0    0
 +
    ata-SAMSUNG_HD204UI_S2H7J9EZB02896  ONLINE      0    0    0
 +
spares
 +
  ata-SAMSUNG_HD203WI_S1UYJ1BZ411632    AVAIL   
 +
 +
errors: No known data errors
  
Vi har installerat följande
+
== Sätt upp GlusterFS ==
apt-get install openafs-client openafs-fileserver openafs-modules-dkms
 
  
Installera en BosConfig i /etc/openafs/ Den skall inte installeras där dokumentationen säger.
+
Mjukvaran ska redan vara på plats från Ansible körningen innan. För tillfället har vi bara en server så låt oss sätta upp något enkelt på den här servern.
Den skall innehålla:
 
  
  restarttime 16 0 0 0 0
+
  # glusterfsd --version | head -1
checkbintime 16 0 0 0 0
+
  glusterfs 3.6.4 built on Jul 13 2015 16:30:03
bnode fs fs 1
 
parm /usr/lib/openafs/fileserver -p 23 -busyat 600 -rxpck 400 -s 1200 -l 1200 -cb 100000 -b 240 -vc 1200
 
  parm /usr/lib/openafs/volserver
 
parm /usr/lib/openafs/salvager -datelogs -parallel all8 -orphans attach
 
end
 
  
Installera CellServDB KeyFile  ThisCell  UserList i /etc/openafs/server/
+
Sätt upp en ZFS volym åt oss så vi håller saker separat
 +
  # zfs create pool/kvmimage
  
CellServDB skall innehålla hemmacellsentryt (endast)
+
Sätt upp en GlusterFS volym som heter kvm, vi behöver force så att den tillåter oss att lägga volymen direkt på en partition. Kändes onödigt att skapa en underkatalog när hela ZFS volymen är dedikerad åt GlusterFS.
 +
# gluster volume create kvm mount-kilimanjaro:/pool/kvmimage/ force
 +
volume create: kvm: success: please start the volume to access data
  
ThisCell innehåller cellnamnet
+
Nu se till att vi bara kan använda GlusterFS volymen från vårt interna 10.0.32.0/24-nät. Sätt den till virt som är provisionerad av Ansible, /var/lib/glusterd/groups/virt (stänger av lite cache m.m.) samt sätter ägare av volymen så att KVM kan skriva.
  
UserList och 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.
+
# gluster volume set kvm auth.allow 10.0.32.*
 +
# gluster volume set kvm nfs.rpc-auth-allow 10.0.32.*
 +
# gluster volume set kvm group virt
 +
# gluster volume set kvm storage.owner-uid 107
 +
# gluster volume set kvm storage.owner-gid 107
 +
# gluster volume start kvm
  
Sedan klart för att starta fileservern (startskript drar igån bosserver som gör resten).
+
# gluster volume info
 +
Volume Name: kvm
 +
Type: Distribute
 +
Volume ID: 79644dd2-3044-4a2e-8245-668206a865f3
 +
Status: Started
 +
Number of Bricks: 1
 +
Transport-type: tcp
 +
Bricks:
 +
Brick1: mount-kilimanjaro:/pool/kvmimage
 +
Options Reconfigured:
 +
network.remote-dio: on
 +
cluster.eager-lock: enable
 +
performance.stat-prefetch: off
 +
performance.io-cache: off
 +
performance.read-ahead: off
 +
performance.quick-read: off
 +
auth.allow: 10.0.32.*
 +
nfs.rpc-auth-allow: 10.0.32.*
 +
storage.owner-uid: 107
 +
storage.owner-gid: 107
  
== Se även ==
 
  
* [[Mhount-Everest]]
+
Det ska räcka, en GlusterFS server exporterar volymer både som NFS samt GlusterFS eget filsystem. Kan du så rekommenderar jag det senare då det gör att vi kan läsa från flera servrar samtidigt och det kommer inte påverka något om en server försvinner (så länge vi har redundans i kvarvarande maskiner).
  
 
[[Category: Maskiner]]
 
[[Category: Maskiner]]
 
[[Category: Filserver]]
 
[[Category: Filserver]]

Latest revision as of 08:37, 9 August 2024

AVSTÄNGT

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

Mount-Kilimanjaro är en filserver som vi ärvde från mho. Den har kört OpenAFS under ett par år, för information om det se rev 442 av den här sidan.

Maskinen är en AMD Athlon II X4 600e med 8Gb RAM, vilket med dagens mått gör den en trött maskin. Det är dock en av de snabbare filservrarna som vi har i dag. nsg har 2015-07-23 tagit över servern för att hosta OS disk för KVM-servrarna.

OS Install

Installera med PXE boot. Välj "Debian 8 preseed - Type: Fileserver" under "Automatic installs". Servern bör installera upp en tom Debian 8 med MD RADI1 på de minsta två diskarna. Om det kommer upp någon fråga så är det i princip alltid "enter" som är rätt knapp att trycka på, undantaget är när du väljer eth1.

Rootlösen är changeme, sshd släpper inte in root med lösenord så det är säkert. Logga in fysiskt och sätt ett lämpligt root-lösen.

Eventuellt kanske du behöver städa bort lite gamla MD/LVM/andra partitioner m.m. nu, enklast att att göra det bekvämt över ssh så:

Kopiera in min nyckel

Än så länge har vi inte Kerberos på maskinen så svårt att logga in, jag brukar sätta upp en ssh-nyckel så länge.

   mount-kilimanjaro# mkdir -p /root/.ssh
   mount-kilimanjaro# nc -l -p 4711 >> /root/.ssh/authorized_keys
   mylaptop$ cat ~/.ssh/id_rsa.pub | nc mount-kilimanjaro.stacken.kth.se 4711
   mount-kilimanjaro# chmod 700 /root/.ssh && chown 600 /root/.ssh/authorized_keys

Döda gamla saker på disken

Har vi tid så skadar det inte att läsa igenom alla block, se att diskar mår bra m.m. samt vi blir av med alla gamla partitioner på köpet.

Identifiera våra stora diskar:

 root@mount-kilimanjaro:~# BIG_DISKS="$(fdisk -l | awk '/TiB/{print $2}' | tr -d ':')"
 root@mount-kilimanjaro:~# echo $BIG_DISKS
 /dev/sdb /dev/sda /dev/sdd /dev/sde /dev/sdf /dev/sdh /dev/sdi /dev/sdk /dev/sdj

dd:a bort dem:

 root@mount-kilimanjaro:~# for disk in $BIG_DISKS; do (dd if=/dev/zero of=$disk bs=64k&); done

Sätt upp mjukvara

Jag installerar och konfigurerar allt förutom ZFS och GlusterFS med Ansible. För det behöver vi python (vilket min minimala installation inte kommer med):

 # apt-get install python

Hämta ut repo, anpassa provisioneringen vid behov och kör ut det:

 mylaptop$ git clone git@github.com:stacken/ansible.git && cd ansible
 mylaptop$ make deps
 mylaptop$ ansible-playbook -i mount-kilimanjaro.stacken.kth.se, -u root site.yml

Sätt upp ZFS

Våra OS diskar heter nått med ST3500320AS (Seagate), och DATA diskarna heter SAMSUNG, så vi kan enkelt hitta våra diskar med:

 # ls -l /dev/disk/by-id/ata-SAMSUNG*
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411632 -> ../../sdf
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411633 -> ../../sdb
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411634 -> ../../sdd
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411642 -> ../../sda
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411643 -> ../../sdk
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411644 -> ../../sde
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02894 -> ../../sdj
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02895 -> ../../sdi
 lrwxrwxrwx 1 root root 9 Jul 23 22:24 /dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02896 -> ../../sdh

Låt oss bygga ZFS på dem, vi lämnar första disken som spare.

# SPARE="$(ls /dev/disk/by-id/ata-SAMSUNG* | head -1)"
# RAID="$(ls /dev/disk/by-id/ata-SAMSUNG* | tail -n+2)"
# echo $SPARE
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411632
# echo $RAID
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411633
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411634
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411642
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411643
/dev/disk/by-id/ata-SAMSUNG_HD203WI_S1UYJ1BZ411644
/dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02894
/dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02895
/dev/disk/by-id/ata-SAMSUNG_HD204UI_S2H7J9EZB02896

Sätt upp en pool som heter pool

 zpool create pool raidz2 $RAID spare $SPARE
# zfs list
NAME   USED  AVAIL  REFER  MOUNTPOINT
pool   537K  10.1T   205K  /pool

Massa trevlig disk ...

# zpool status
  pool: pool
 state: ONLINE
  scan: none requested
config: 

	NAME                                    STATE     READ WRITE CKSUM
	pool                                    ONLINE       0     0     0
	  raidz2-0                              ONLINE       0     0     0
	    ata-SAMSUNG_HD203WI_S1UYJ1BZ411633  ONLINE       0     0     0
	    ata-SAMSUNG_HD203WI_S1UYJ1BZ411634  ONLINE       0     0     0
	    ata-SAMSUNG_HD203WI_S1UYJ1BZ411642  ONLINE       0     0     0
	    ata-SAMSUNG_HD203WI_S1UYJ1BZ411643  ONLINE       0     0     0
	    ata-SAMSUNG_HD203WI_S1UYJ1BZ411644  ONLINE       0     0     0
	    ata-SAMSUNG_HD204UI_S2H7J9EZB02894  ONLINE       0     0     0
	    ata-SAMSUNG_HD204UI_S2H7J9EZB02895  ONLINE       0     0     0
	    ata-SAMSUNG_HD204UI_S2H7J9EZB02896  ONLINE       0     0     0
	spares
	  ata-SAMSUNG_HD203WI_S1UYJ1BZ411632    AVAIL    

errors: No known data errors

Sätt upp GlusterFS

Mjukvaran ska redan vara på plats från Ansible körningen innan. För tillfället har vi bara en server så låt oss sätta upp något enkelt på den här servern.

# glusterfsd --version | head -1
glusterfs 3.6.4 built on Jul 13 2015 16:30:03

Sätt upp en ZFS volym åt oss så vi håller saker separat

# zfs create pool/kvmimage

Sätt upp en GlusterFS volym som heter kvm, vi behöver force så att den tillåter oss att lägga volymen direkt på en partition. Kändes onödigt att skapa en underkatalog när hela ZFS volymen är dedikerad åt GlusterFS.

# gluster volume create kvm mount-kilimanjaro:/pool/kvmimage/ force
volume create: kvm: success: please start the volume to access data

Nu se till att vi bara kan använda GlusterFS volymen från vårt interna 10.0.32.0/24-nät. Sätt den till virt som är provisionerad av Ansible, /var/lib/glusterd/groups/virt (stänger av lite cache m.m.) samt sätter ägare av volymen så att KVM kan skriva.

# gluster volume set kvm auth.allow 10.0.32.*
# gluster volume set kvm nfs.rpc-auth-allow 10.0.32.*
# gluster volume set kvm group virt
# gluster volume set kvm storage.owner-uid 107
# gluster volume set kvm storage.owner-gid 107
# gluster volume start kvm
# gluster volume info
Volume Name: kvm
Type: Distribute
Volume ID: 79644dd2-3044-4a2e-8245-668206a865f3
Status: Started
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: mount-kilimanjaro:/pool/kvmimage
Options Reconfigured:
network.remote-dio: on
cluster.eager-lock: enable
performance.stat-prefetch: off
performance.io-cache: off
performance.read-ahead: off
performance.quick-read: off
auth.allow: 10.0.32.*
nfs.rpc-auth-allow: 10.0.32.*
storage.owner-uid: 107
storage.owner-gid: 107


Det ska räcka, en GlusterFS server exporterar volymer både som NFS samt GlusterFS eget filsystem. Kan du så rekommenderar jag det senare då det gör att vi kan läsa från flera servrar samtidigt och det kommer inte påverka något om en server försvinner (så länge vi har redundans i kvarvarande maskiner).