Ubuntu NAS
Installation

I Denne guide vil du blive guidet igennem hvordan du laver en NAS server. Guiden er lavet på Virtualbox, og guiden er testet på en fysisk maskine, med følgende konfiguration:

Hardware
CPU Intel Dualcore
RAM 4 GB
Harddiske 1 stk 1 TB harddisk til systemdrev
2 stk 4 TB harddiske til backup (fysisk maskine)
2 stk 2 TB harddiske til backup (VirtualBox)
DVD Standard R/W

Til Guiden har jeg anvendt Ubuntuserver 18.04 live

Brænding af ISO-fil

Til at brænde ISO-filen over på en USB vi jeg anbefale at du anvender følgende programmer:

Til Windows: Rufus (https://rufus.akeo.ie/)

Til Mac: UNetbootin (http://unetbootin.github.io/)

Til Ubuntu: Brug det medfølgende program "Startup Disk Creator"

I Guiden vil der blive anvendt en blanding af skærmbilleder og beskrivelser til at vejlede dig. Det er gjort fordi guiden ellers kan blive uoverskuelig med alle de skærmbilleder.

Når USB-nøglen er brændt skal du sørge for at din NAS-maskine booter fra USB.

Start installation

Installationen af Ubuntu-server foregår ved hjælp af tasteturet.

Man skifter mellem menupunkterne ved hjælp af Tab (næste) eller Shift+Tab (tilbage). Nogle gange kan man anvende piletasterne.

Når man står på den mulighed man vil aktivere, trykker man enten på Mellemrum eller Enter.

Vil man fortryde trykker man på Esc.

Menuer med (+) åbner undermenuer.

Installationssprog

_

Sprog og lokation

Her skal du vælge keyboard layout

_

Vælg layout, og anvend "Danish".

_

Kontroller at der står "Danish" to gange og vælg

_

Fortsæt installationen ved at vælge : Install Ubuntu

_

Netværk

Netværksguiden er ret omfattende, men fremgangsmåde er som ovenfor. Vælg dit netværkskort - her enp0s3 og tryk Enter

_

Marker "Use a static IPv4 configuration" og tryk Enter

_

Her skal du indtaste dine netværksoplysninger.

_

I mit tilfælde er det:

  • Subnet: 192.168.0.0/24 (netværks adressen)
  • Address: 192.168.0.20 (computerens adresse)
  • Gateway: 192.168.0.1 (routerens adresse)
  • Nameservers: 8.8.8.8 , 8.8.4.4 (googles DNS'er)

Gå videre ved at vælge . Kontroller at Ubuntu angiver den rigtige adresse og vælg .

_

Kontroller endnu engang og vælg . VI anvender ikke en proxy, så her trykker vi blot Enter for at komme videre.

_

Opsætning af harddisk

Vi opretter først vores RAID drev efter installationen, da det er en del nemmere end at gøre det her.

I dette setup laver vi et simpelt harddisk setup. Vælg .

_

Vælg den første harddisk (systemdisken)

_

Vi følger standardindsstillingerne så vi vælger :

_

Når vu trykker , kommer der en advarsel om at alt bliver slettet hvis vi fortsætter. Og da vi er ved at installere systemet er det som det skal være. Vælg .

_

Afslut installationen

Indtast informationer om dig selv

_

Vigtigt:

  • Serverens navn skal være: nas
  • Vælg et brugerord der består af dine initialer med små bogstaver
  • Din bruger er den du skal bruge til at administrere systemet med, så kodeordet skal være godt.
  • Det eneste felt der ikke skal stå noget i er "Import SSH identity"

Vælg , hvorefter installationen går igang.

_

Når installationen er færdig står der Finished Install! øverst og du kan vælge

_

Maskinen lukker nu ned og beder dig om at fjerne boot-mediet.

Done

Første start

Når ubuntu starter op skal du logge ind. Indtast dit brugernavn samt password. Læg mærke til at du ikke kan se dine tegn når du taster password ind.

_

På første side kan man se informationer om systemet, samt om det trænger til en opdatering. Her kan vi se at systemet er fuldt ud opdateret.

_

Tillykke - du har installeret Ubuntu server 18.04.

sudo

sudo betyder SUperuser DO, og er en smart måde som man anvender til at give nogle bruger administratorrettigheder. Det gør man ved at sætte dem i sudo-gruppen. Den bruger du oprettede under installationen er automatisk tilføjet til denne gruppe, og derfor kan du lave systemarbejde.

Lad os prøve at et eksempel, hvor vi genstarter netværkstjenesten. Kør kommandoen: service networking restart - altså uden sudo.

tj@NAS:~$ service networking restart
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'networking.service'.
Authenticating as: Thomas Jensen,,, (tj)
Password: 

Her brokker programmet sig, fordi du ikke har rettighederne til at køre det. Men som en service får du muligheden for at indtaste dit password, så netværket kan genstartes.

Havde du gjort det "rigtigt" med sudo ville du have fået følgende output:

tj@NAS:~$ sudo service networking restart 
[sudo] adgangskode for tj: 

Altså ingen brok, men bare en bekræftelse på at du tilhører sudo-gruppen.

Læg mærke til, at hvis du kører flere sudo kommandoer efter hinanden, så skal du ikke indtaste dit password. Det skyldes, at Ubuntu husker det et kort stykke tid.

Af samme årsag bør man også logge af en computer før man forlader den, for at andre ikke kan misbruge dine rettigheder. Det gøres med kommandoen: exit, eller ved at lukke terminalvinduet.

Opdatering

Ubuntu opdateres ved hjælp af det som kaldes repositories. et repositorie har hele tiden den nyeste version af programmet der passer til den version af Ubuntu man kører med. Så for at opdatere skal man altså sammenligne de programmer man har installeret med dem som ligger i repository.

Det smarte ved dette system er, at man kan tilføje og fjerne repositories efter behov - og derved få fat i de programmer man ønsker.

Ændre lokalitet

Som udgangspunkt henter den installation vi har lavet sine opdateringer fra lokale servere i DK. Det er min erfaring at de nogle gange er langsommere end de generelle.

Vi ændrer det ved at køre følgende kommandoer:

  • Laver en backup af konfigurationsfilen hvis noget skulle gå galt. Bør man gøre som en helt naturlig del af ens arbejdsproces
  • sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
  • Erstat alle forekomster af dk.archive med archive
  • sudo sed -i s/dk.archive/archive/ /etc/apt/sources.list

For at tilføje partner repositoriet skal du redigere i filen /etc/apt/sources.list og fjerne et hash-tag

sudo nano /etc/apt/sources.list
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu bionic partner <-- Denne linie skal ændres
# deb-src http://archive.canonical.com/ubuntu bionic partner

Fjern # og mellemrummet foran deb linien så der står:

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner

For at gemme ændringer skal du gøre følgende, tast Ctrl+x. Nederst på skærmen kommer følgende frem

Gem ændret buffer (AT SVARE "Nej" VIL ØDELÆGGE ÆNDRINGER)?                                                              
 J Ja
 N Nej          ^C Annullér

Tast j

Filnavn at skrive: /etc/apt/sources.list                                                                                                   
^G Få hjælp     M-D DOS-format  M-A Tilføj ved eM-b SikrKopiér f
^C Annullér     M-M Mac-format  M-P Tilføj ved s^T Til filer

Tast Enter, og du er tilbage i selve terminalen.

Hvis det går galt

Vi lavede en backup med linien:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

Det vi gjorde var faktisk at kopiere /etc/apt/sources.list til en ny fil der hedder /etc/apt/sources.list.backup

For at omgøre dette gør vi det omvendte

sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list

Husk: Rigtige mænd tager ikke backup ... de græder bare ;)

Opdatering

Opdateringen består af to processer:

  • Opdatering af repositories
  • sudo apt update
  • Opdatering af programmer
  • sudo apt upgrade -y

Det kan også gøres på en linie:

sudo apt update && sudo apt upgrade -y

Det lille -y til sidst gør, at apt ikke spørger om du vil godkende opdateringerne. Hvis du vil se hvad der bliver opdateret skriver du ikke -y. Det betyder, at du skal godkende opdateringerne manuelt.

Opsætning af RAID1

Under installationen "gemte" vi de to ekstra harddiske. Det skyldes at det er nemmere at sætte dem op bagefter. Denne guide her inspireret fra: https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-16-04

Processen er følgende:

  • Konfigurering af harddiske
  • Konfigurering af Raid 1
  • Formatering og montering af Raid i filstrukturen

Konfigurerering af harddiske

Først skal vi have et overblik

lsblk
tj@nas:~$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0    7:0    0 86.6M  1 loop /snap/core/4486
sda      8:0    0    1T  0 disk
├─sda1   8:1    0    1M  0 part
└─sda2   8:2    0 1024G  0 part /
sdb      8:16   0    2T  0 disk
sdc      8:32   0    2T  0 disk
sr0     11:0    1 1024M  0 rom

Her kan vi se at de to ekstra harddiske hedder sdb og sdc. For at konfigurere dem skal vi anvende programmet parted

Det smarte ved at anvende parted er, at man kan konfiguere harddiske direkte fra kommandolinien, hvilket gør arbejdet en del nemmere. Du kan læse mere om parted her: https://www.sleeandtopher.com/how-to-partition-a-gpt-hard-drive-in-ubuntu/

sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0TB 2TB sudo -s parted /dev/sdc mklabel gpt mkpart primary ext4 0TB 2TB
tj@nas:~$ sudo parted /dev/sdb mklabel gpt mkpart primary 0TB 2TB
Information: You may need to update /etc/fstab.
tj@nas:~$ sudo parted /dev/sdc mklabel gpt mkpart primary 0TB 2TB
Information: You may need to update /etc/fstab.

Resulatet af partitioneringen kan vi se ved at køre lsblk igen. Læg mærke til at vi nu kan se partitionerne sdb1 og sdc1.

tj@nas:~$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0    7:0    0 86.6M  1 loop /snap/core/4486
sda      8:0    0    1T  0 disk
├─sda1   8:1    0    1M  0 part
└─sda2   8:2    0 1024G  0 part /
sdb      8:16   0    2T  0 disk
└─sdb1   8:17   0    2T  0 part
sdc      8:32   0    2T  0 disk
└─sdc1   8:33   0    2T  0 part
sr0     11:0    1 1024M  0 rom

Opsætning af RAID1

Til NAS-serveren har jeg valgt at køre med RAID1, hvilket betyder at de to harddiske er spejlet. HVis der sker skade på det ene drev, så ligger der en kopi på det andet drev. Det beskytter data mod harddiskfejl, men ikke hvis der sker fysisk skade på hele computeren. RAID1 er en sikring ... men ikke backup.

Man opretter er RAID (/dev/md0) med nedestående kommando:

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

Output er:

tj@nas:~$ sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 2147349504K
mdadm: automatically enabling write-intent bitmap on large array
Continue creating array? y ← Her skal du indtaste et y for at bekræfte
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Vi tester om vores RAID er blevet oprettet (jeg har markeret den sigende linie med rødt).

cat /proc/mdstat
tj@nas:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc1[1] sdb1[0]
      2147349504 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  1.5% (33847168/2147349504) finish=170.7min speed=206290K/sec
      bitmap: 16/16 pages [64KB], 65536KB chunk

unused devices: <none>

Formatering og montering

Vi formaterer vores RAID

sudo mkfs.ext4 -F /dev/md0
tj@nas:~$ sudo mkfs.ext4 -F /dev/md0
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 536837376 4k blocks and 134209536 inodes
Filesystem UUID: 02d2d0f0-8095-4077-affe-61b8f6076e0d
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Nu skal vi mounte vores RAID i filstrukturen. Det gør vi i mappen /srv, som er beregnet til serverfunktioner

sudo mount /dev/md0 /srv

Vi kontrollerer (vigtige linier markeret med rødt)

tj@nas:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0     7:0    0 86.6M  1 loop  /snap/core/4486
sda       8:0    0    1T  0 disk
├─sda1    8:1    0    1M  0 part
└─sda2    8:2    0 1024G  0 part  /
sdb       8:16   0    2T  0 disk
└─sdb1    8:17   0    2T  0 part
  └─md0   9:0    0    2T  0 raid1 /srv
sdc       8:32   0    2T  0 disk
└─sdc1    8:33   0    2T  0 part
  └─md0   9:0    0    2T  0 raid1 /srv
sr0      11:0    1 1024M  0 rom

For at ændringen skal slå igennem efter genstart skal vi genopfriske kernen og konfigurere /dev/fstab.

sudo update-initramfs -u echo '/dev/md0 /srv ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
tj@nas:~$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.15.0-20-generic ← dette tager noget tid....
tj@nas:~$ echo '/dev/md0 /srv ext4 defaults, nofail, discard 0 0' | sudo tee -a /etc/
fstab
/dev/md0 /srv ext4 defaults, nofail, discard 0 0

Kontroller at linien er indsat:

cat /etc/fstab
tj@nas:~$ cat /etc/fstab
UUID=04d1db9e-539f-11e8-8d84-7085c24ac239 / ext4 defaults 0 0
UUID=5F0E-7E69 /boot/efi vfat defaults 0 0
/swap.img	none	swap	sw	0	0
/dev/md0 /srv ext4 defaults,nofail,discard 0 0

Herefter skal computeren genstartes for at sikre os at det hele virker som det skal.

sudo reboot

Efter genstarten tjekker vi om vores RAID drev stadig er monteret med kommandoen lsblk.