Mount-Kilimanjaro
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.
Contents
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).