Harddiske på Linux

Lagerenheder på Linux systemer

I Linux er lagerenheder integreret i filsystemet på to forskellige niveauer: den fysiske disk/partition og monteringspunktet. Skemaet herunder beskriver hvordan de fysiske enheder er præsenteret i filsystemet.

Harddiske og USB-diske
1. harddisk /dev/sda
2. harddisk /dev/sdb
3. harddisk /dev/sdc
CD/DVD
1. CD/DVD /dev/sr0
2. CD/DVD /dev/sr1

Læg mærke til at SATA og USB diske har samme betegnelse. Det skyldes at begge er indeholder partitionstabeller og dermed kan indeholde en eller flere partitioner. Modsat har CD/DVD'er ikke partitionstabeller og derved bliver monteret per enhed.

Hvis en enhed indeholder flere partitioner angives den enkelte partition ud fra dets oprettelse. De primære med tallene 1-4 og de logiske med 5 og frem. Herunder er angivet et eksempel hvor der er installeret en harddisk og isat en USB disk:

Fysiske disk - partition Diskens placering i filsystemet Navngivning i Windows 7 →
1. disk - 1. partition (primær) /dev/sda1 Ikke synlig - boot partition
1. disk - 2. partition (primær) /dev/sda2 C:
1. disk - 3. partition (logisk) /dev/sda5 D:
1. disk - 4. partition (logisk) /dev/sda6 E:
2. disk - 1. partition (primær) /dev/sdb1 F:

Navngivningen af drevene på et Windows7+ system kan være anderledes end det er angivet ovenfor. Navngivningen af C drevet vil altid være systempartitionen, men denne kan f.eks. være den 3. partition på 1. disk. Derfor bør man altid tjekke harddiskkonfigurationen med lsblk eller fdisk -l. Se eksemplet herunder:

tj@tj-VirtualBox:~$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0 46,6G  0 part /
├─sda2   8:2    0  3,8G  0 part [SWAP]
└─sda3   8:3    0 28,9G  0 part /data
sr0     11:0    1 1024M  0 rom 

Det er disse enheder der "monteres" i filsystemet. Der skal være en /, men ellers kan man navngive ens monteringspunkter som man vil, f.eks: /minedata, Backup. Man kan med fordel montere en fysisk partition som f.eks. /home. På den måde kan man installere et nyt styresystem, og montere brugerens data og indstillinger direkte på det nye system. I ovenstående tilfælde kunne man f.eks. have /dev/sda1 monteret som /.

Montering af filsystemer

Linux er et netværksoperativsystem og derfor er Linux ligeglad med om det er et fysisk drev eller et netværksressource der skal monteres. Drev kan monteres ved opstart gennem filen /etc/fstab, men kan også anvendes til løbende montere drev efter efter behov og afmontere dem med umount.

mount -t *filsystem* *enhed* *mappe* -o *optioner*
mount Kommandoen der monterer enhederne
-t [Filsystem] Angiver hvilket filsystem der anvendes på enheden
enhed Enhedens placering i /dev
mappe Der hvor drevet skal monteres i filstrukturen
optioner Videre konfiguration af monteringen.

Optioner

Optionerne er dem som sætter egenskaberne for delingen. De startes med et -o fulgt af optionerne adskilt af kommaer (,). Herunder er et eksempel på et netværks drev der bliver monteret, hvor /mnt/backup bliver monteret som "read-only" og brugeren tj til at verificere. Som det ses herunder kræver Ubuntu at få brugerens password.

tj@tj-VirtualBox:~$ sudo mount //10.0.2.10/alle /mnt/backup -o ro, user=tj, uid=1003
Password for tj@//10.0.2.10/alle:
ro og rw

Sætter skriverettighederne i drevet. Det kan være en fordel at anvende ro i tilfælde hvor man det er unødvendigt at skrive til et drev, f.eks. hvis NTFS filsystemer er "brudt sammen" og man har brug for at hente data ud derfra. Ofte vil man kunne hente data ud fra en NTFS partioneret harddisk ved hjælp af ro også i situationer hvor windows nægter at starte op.

user=*user* Sætter brugernavnet
pass=*passwd* Sætter password. Kan ikke anbefales da det gør man skriver sin kode direkte i kommandolinien og gemmes i bash-historikken.
uid=*user* Sætter brugerens id. NFS verificerer brugere ved dette ID og giver brugeren adgang til denne brugeres ressourcer på serveren
gid=*group* Tilføjer brugeren til den konkrete gruppe på serveren.
cred=*file* Giver adressen til en fil, hvori ens brugeroplysninger ligger

umask

Som standard bliver filer oprettet med læse/skrive rettigheder til alle (666) og mappper med læse/skrive/udføre rettigheder (777). Hvis man vil ændre det gøres det med umask.

umask fungerer ved at den trækker fra i forhold til systemets standardopsætning (666 for filer og 777 for mapper), hvor værdierne angiver henholdsvis brugerens, gruppens og alles rettigheder.

Talværdi r
2² = 4
w
2¹ = 2
x
2⁰ = 1
Samlet Rettigheder
7 1 1 1 rwx Alle (læse, skrive og udføre)
6 1 1 0 -wx Læse og skrive
5 1 0 1 r-x Læse og udføre
4 1 0 0 r-- Læse
3 0 1 1 -wx Skrive og udføre
2 0 1 0 -w- Skrive
1 0 0 1 --x udføre
0 0 0 0 --- Ingen

umask fungerer som sagt ved at "trække fra". Den umask-værdi man ofte anvender er 022.

umask værdi 022 for filer:
  • Standard filrettighed: 666
  • umask: 022
  • Filer oprettes med: 666 - 022 = 644 (rw-r--r--)
umask værdi 022 for mapper:
  • Standard mapperettighed: 777
  • umask: 022
  • Filer oprettes med: 777 - 022 = 755 (rwxr-xr-x)

Hvis du ønsker at sætte sikkerhedsniveauet helt op anvendes en umask værdi på 077. Det vil medføre at alle rettigheder trækkes fra gruppen og alle

  • Filer: 666 - 077 = 600 (rw-------)
  • Mapper: 777 - 077 = 700 (rwx------)

Du kan teste det ganske simpelt med følgende kommandoer (vist i terminalen). Start terminalen op med Ctrl+Alt+T. umask-værdien resetter sig selv efter at den kørende session er lukket ned.

tj@tj-VirtualBox:~$ touch testfile
tj@tj-VirtualBox:~$ mkdir testdir
tj@tj-VirtualBox:~$ ls -al | grep test
drwxrwxr-x  2 tj tj 4096 maj  4 12:55 testdir
-rw-rw-r--  1 tj tj    0 maj  4 12:55 testfile
tj@tj-VirtualBox:~$ umask 077
tj@tj-VirtualBox:~$ touch testfile1
tj@tj-VirtualBox:~$ mkdir testdir1
tj@tj-VirtualBox:~$ ls -al | grep test
drwxrwxr-x  2 tj tj 4096 maj  4 12:55 testdir
drwx------  2 tj tj 4096 maj  4 12:59 testdir1
-rw-rw-r--  1 tj tj    0 maj  4 12:55 testfile
-rw-------  1 tj tj    0 maj  4 12:59 testfile1

Her ovenfor kan du se, at de nyoprettede filer ikke har fået rettigheder til gruppe og alle.

Vær opmærksom på at umask kun kan begrænse rettigheder og atumask ikke kan give flere rettigheder end der er i forvejen. Et hurtigt overblik over anvendte umask-værdier og sikkerhed:

umask-værdi Sikkerheds
Niveau
Mappe tilladelse Fil tilladelse
022 Åben 755 644
026 Moderat 755 644
027 Moderat 750 640
077 Lukket 700 600

Læs mere: http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

Montering af lokale partitioner

  • Montering af ext2/3/4 partitioner
  • Montering af NTFS partitioner lokalt
  • Montering af ISO filer
  • Montering af vfat partitioner lokalt
Montering af ext2/3/4 partitioner

ext4 er standard filsystemet i Ubuntu og er det simpleste at montere. Det er ikke nødvnendigt at angive filsystemet. Nedestående kommando monterer /dev/sdb1/mnt/datadrev.

mount /dev/sdb1 /mnt/datadrev Montering af NTFS partitioner lokalt

For at montere NTFS partitioner anvendes ntfs-3g og monteringsmappen er /mnt/windows, da vi kun er interesseret i at kigge på windows' systemdrev. Normalt anvendes ntfs-3g fremfor -t ntfs. Det skyldes at ntfs-3g er bedre til at håndtere rettighederne i NTFS.

ntfs-3g /dev/sda2 /mnt/windows Montering af ISO filer

ISO filer er brændt i iso9660 formatet. Nedestående kommando monterer Ubuntudesktop ISO filen i /media/ubuntudesktop.

mount -o loop -t iso9660 /srv/isofiler/ubuntu-14.04.3-desktop-amd64.iso /media/ubuntudesktop

Læg mærke til -o loop. Dette er et "pseudo" enhed - egentlig blot en fil - der får det som er monteret til at opføre sig som en harddisk.

Montering af vfat partitioner lokalt

For at montere vfat anvendes -t vfat. Havde vi f.eks. haft et USB drev monteret på systemet ville Linux under opstarten have monteret det som en fysisk disk efter SATA drevene. I vores eksempel som /dev/sdb1. Læg mærke til at Linux ikke skelner mellem USB og SATA drev, men "kun" ser på at det er enheder der har et partitionstabel.

mount -t vfat /dev/sdb1 /mnt/USB01

Montering af netværksdrev

mount anvendes også til montering af netværksdrev. En væsentlig forskel er, at man ofte har brug for at kunne logge på med sit brugernavn og adgangskode.

Server IP 10.0.2.10/24
Deling /srv/backup
Bruger tj

Montering af NFS shares (Linux)

mount 10.0.2.10:/srv/backup /mnt/backup -o user=tj

Før du får adgang til NFS-delingen bliver du bedt om at give dit password.

Montering af SMB shares (Windows shares)

For at montere SMB/NTFS shares anvendes cifs - Common Internet File System

Herunder er et eksempel på hvordan man montere et SMB share på 10.0.2.10 som hedder backup. Det bliver monteret i den lokale mappe /mnt/backup, som er oprettet automatisk af SystemrescueCD.

mount -t cifs //10.0.2.10/backup /mnt/network

Når man anvender et NTFS share spørges der til ens rettigheder. Derfor vil denne kommando ofte medføre at der spørges til roots password. Er drevet delt så alle har adgang trykker du blot [Enter].

root@sysresccd /root  % mount -t cifs //10.0.2.10/alle /mnt/backup_alle  
Password for root@//10.0.2.10/alle:

Hvis drevet er delt med rettigheder skal du medsende dine credentials f.eks:

mount -t cifs //10.0.2.10/admin /mnt/backup -o user=tj,pass=123qwe

Hvis du ikke ønsker at medsende dit password i klartekst, kan du vælge at udelade kodeordet. Mount vil spørge om kodeordet.

mount -t cifs //10.0.2.10/admin /mnt/backup -o user=tj
root@sysresccd /root  % mount -t cifs //10.0.2.10/alle /mnt/backup_alle  -o user=tj
Password for tj@//10.0.2.10/alle:

Denne metode er på ingen måde sikker, da den ikke er krypteret, og at man sender sine kodeord i klartekst. Men for at forsimple ting kan man blot sørge for at oprette en bruger med begrænsede rettigheder til at udføre disse ting med.

filsystem kommando
FAT32 -t vfat
NTFS -t ntfs-3g
ext2/3/4 intet - filsystemet konfigureres automatisk
Netværks share Kommando
NFTS share -t cifs
nfs -t nfs

nr. 2 harddisk monteres i computeren, der har en NTFS partition og monteres som /media/backup

mount -t ntfs-3g /dev/sdb1 /media/backup

Hvis harddisken er monteret med ext2/3/4 behøver du ikke angive -t *filsystem. Hvis den er FAT32 formateret anvendes -t vfat

Montering af Windows share "backup" på server 192.168.2.15 som /media/windowsbackup

mount -t cifs //192.168.2.15/backup /mnt/windows -o user=tj,pass=123qwe

Læg mærke til at password og navn skal angives i klartekst, hvilket er uhensigtsmæssigt. Det kan gøres ved at anvende en "credentialsfile": https://help.ubuntu.com/community/MountWindowsSharesPermanently#Credentials_File.

Afmontering af filsystemer

Filsystemer afmonteres med umount. Eks:

umount /dev/sdb1

Konfigurering af harddiske på Linux

For at montere filsystemer permanent på et linux system skal man anvende /etc/fstab. Herunder er vist et eksempel hvor Ubuntu selv har sat harddisken op under installationen, og hvor vi efterfølgende har installeret en ny harddisk.

Partition Betegnelse Størrelse type Opstartsflag Anvendelse
/dev/sda1 / 92 Gb Primær Ja System
/dev/sda2 Ingen 8 GB Logisk - Swap
/dev/sdb Ingen 100 GB - - -

Når vi kigger i /etc/fstab får vi følgende informationer:

tj@tj-VirtualBox:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=34bb7b7d-54b7-43c0-bba7-0bf0565c563d /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=9b832ca1-217e-4308-bdf3-225b789946c9 none            swap    sw              0       0

Hver linie i filen angiver ved hjælp af forskellige parametre hvordan Linux skal anvende dem. Der er 5 parametre der skal sættes, som er adskilt af et mellemrum.

<file system> - Partitionens adresse

Her beskrives hvor filsystemet er monteret. Som det kan ses er det vist ved hjælp af enten en sti eller et UUID (Universally Unique IDentifier). Det første filsystem er angivet ved hjælp af en sti: /dev/mapper/vg01-system. Dette er en sti der læses af LVM (Logical Volume Management), som vil blive gennemgået længere nede. UUID'en angiver en fysisk partition på disken, i dette tilfælde /dev/sda1. Ved at anvende UUID'er som monteringspunkt bliver den fysiske harddisk unikt identificeret af systemet, og det vil blive opdaget hvis nogen har skiftet disken ud.

UUID'en er "praktisk" unikt, forstået på den måde at UUID'en bliver dannet i det system det anvendes og at sandsynligheden for at en anden enhed i systemet får samme UUID er ekstrem lille. Du kan finde harddiskenes UUID på dit system ved at anvende kommandoen sudo blkid. På ovenstående system giver det:

tj@tj-VirtualBox:~$ sudo blkid
/dev/sda1: UUID="34bb7b7d-54b7-43c0-bba7-0bf0565c563d" TYPE="ext4" PARTUUID="f5fc72dc-01"
/dev/sda5: UUID="9b832ca1-217e-4308-bdf3-225b789946c9" TYPE="swap" PARTUUID="f5fc72dc-05"

Læg mærke til at systemet endnu ikke kender til /dev/sdb.

<mount point> - Partitionens monteringspunkt

Fortæller hvor på filsystemet partitionen er monteret

<type> - Partitionens formatering

Fortæller hvilket filsystem partionen er formateret i.

<options> - Partitionens indstillinger

Her er det muligt at angive en række indstillinger for hvordan filsystemet skal opføre sig. På den første partition /dev/mapper/vg01-system, hvor roden ligger er det sat til errors=remount-ro. Det betyder at hvis computeren opdager en fejl (error) på dette filsystem under boot processen, så vil det blive monteret som skrivebeskyttet. På denne måde sikrer man sig at der ikke bliver skrevet på disken, men at man kan sikre sig de data der er på partitionen.

<dump> - Backup

dump er et program, der undersøger filer på ext filsystemet og bestemmer om der er nogle der skal tages backup af. Bliver i realiteten ikke brugt, hvilket er årsagen til at det har værdien 0.

<pass> - Kontrol af partitionen

Fortæller i hvilken prioritering kontrol af filsystemet har under opstart.

I dette setup er der i alt 6 partitioner, hvoraf de 5 er styres af LVM (Logical Volume Management). I Ubuntu får alle fysiske harddiske en UUID (Universally Unique IDentifiers).

Tilføje ny harddisk

Denne guide er rettet mod LVM, men det kan være godt at vide hvordan man tilføjer nye harddiske til Linux. Anvender man LVM er det kun trin 1 der skal udføres, da resten skal gøres i LVM. Dette vil blive gennemgået senere.

  1. Konfiguration af harddisken med fdisk
  2. Formatering af disken
  3. Konfiguration af /etc/fstab

Konfiguration af harddisken med fdisk

Først skabes et overblik med lsblk. Herunder er outputtet fra ovenstående konfiguration isat en ny 100GB SATA disk

tj@tj-VirtualBox:~$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  100G  0 disk 
sda      8:0    0  100G  0 disk 
├─sda2   8:2    0    1K  0 part 
├─sda5   8:5    0    8G  0 part [SWAP]
└─sda1   8:1    0   92G  0 part /

Kør fdisk

sudo fdisk /dev/sdb
tj@tj-VirtualBox:~$ sudo fdisk /dev/sdb
[sudo] adgangskode for tj: 

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x0da5ea98.

Kommando (m for hjælp):

Ved at trykke m får man menuen frem:

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table


Kommando (m for hjælp): 

Før vi gør noget andet skal vi lige tjekke om vi har den rigtige harddisk. Tast p

Kommando (m for hjælp): p
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x014dbe7d

Lær mærke til linien der er med fed skrift. Herefter skal der gøres er følgende:

Trin Input Forklaring
1 m * Vis alle kommandoerne
2 n Opret ny partition
3 p Den skal være primær
4 Enter Du skal vælger første partition – [Enter gør det som standard]
5 Enter Du skal vælge første sektor – [Enter gør det som standard]
6 Enter Du skal vælge sidste sektor – [Enter gør det som standard]
7 p * Tjek partionstabellen
8 w Skriv ændringerne til disken
Kommando (m for hjælp): n [ENTER] 
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p [ENTER]
Partitionsnummer (1-4, default 1): [ENTER]
First sector (2048-209715199, default 2048): [ENTER]
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): [ENTER]

Created a new partition 1 of type 'Linux' and of size 100 GiB.

Kommando (m for hjælp): p [ENTER]
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x014dbe7d

Enhed      Opstart Start      Slut  Sektorer  Size Id Type
/dev/sdb1           2048 209715199 209713152  100G 83 Linux

Kommando (m for hjælp): w [ENTER]
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Som vi kan se herover bliver harddisken som standard sat til Id/Type 83/Linux, og harddisken er sat korrekt op.

Lad os tjekke om disken er sat korrekt op - altså om det er en Linux partition der er på.

sudo fdisk -l /dev/sdb
tj@tj-VirtualBox:~$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x014dbe7d

Enhed      Opstart Start      Slut  Sektorer  Size Id Type
/dev/sdb1           2048 209715199 209713152  100G 83 Linux

Ændring af ID/Type

Her overfor er harddisken sat op til et Linux-filsystem. Ønsker du at sætte den op til et andet filsystem (f.eks. NTFS) kan du gøre det ved at køre fdisk igen - eller gøre det efter trin 7 før du skriver til disken.

sudo fdisk /dev/sdb

Herefter skal der vælges system-ID, som passer til det filsystem der skal anvendes. De mest anvendte er:

Kode Filsystem Anvendelse
7 HPFS/NTFS/exFAT Windows 7/8/10
c 95 FAT32 (LBA) USB drev
83 Linux ext 2/3/4
8e LINUX LVM LVM partitioner

Herunder vil vi ændre partitionen til NTFS

Trin Input Forklaring
1 p Tjek partionstabellen
2 l Få et overblik over tilgængelige filsystemer
3 t Aktivier prompten til at vælge ID
4 7 Vælg NTFS
5 p Tjek partionstabellen
6 w Skriv ændringerne til disken

Angående filsystem ID kan man få et overblik frem med l:

Kommando (m for hjælp): p [Enter]
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc0b6b3c8

Enhed      Opstart Start      Slut  Sektorer  Size Id Type
/dev/sdb1           2048 209715199 209713152  100G 83 Linux

Kommando (m for hjælp): l [Enter]

 0  Tom             24  NEC DOS         81  Minix / gammel  bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux udvidet   c7  Syrinx         
 5  Udvidet         41  PPC PReP Opstar 86  NTFS diskenheds da  Ikke-filsystemd
 6  FAT16           42  SFS             87  NTFS diskenheds db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux råtekst   de  Dell-værktøj   
 8  AIX             4e  QNX4.x 2. part  8e  Linux LVM       df  BootIt         
 9  AIX opstartbar  4f  QNX4.x 3. part  93  Amoeba          e1  DOS access     
 a  OS/2-opstartshå 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad dv ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 udvidet (LB 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drev         a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Skjult FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC o
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  Skjult FAT16 <3 61  SpeedStor       ab  Darwin opstart  f4  SpeedStor      
16  Skjult FAT16    63  GNU HURD eller  af  HFS / HFS+      f2  DOS sekundær   
17  Skjult HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE 
1b  Skjult W95 FAT3 70  DiskSecure Mult bb  Boot Wizard skj fd  Linux raid auto
1c  Skjult W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  Skjult W95 FAT1 80  Gammel Minix    be  Solaris opstart ff  BBT            

Kommando (m for hjælp): t [Enter]
Selected partition 1
Partition type (type L to list all types): 7
Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'.

Kommando (m for hjælp): p [Enter]
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc0b6b3c8

Enhed      Opstart Start      Slut  Sektorer  Size Id Type
/dev/sdb1           2048 209715199 209713152  100G  7 HPFS/NTFS/exFAT

Kommando (m for hjælp): w [Enter]
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Efter partitioneringen af disken fås følgende output af fdisk -l

tj@tj-VirtualBox:~$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc0b6b3c8

Enhed      Opstart Start      Slut  Sektorer  Size Id Type
/dev/sdb1           2048 209715199 209713152  100G  7 HPFS/NTFS/exFAT
 

NOTE: For at fortsætte guiden skal du ændre harddisken tilbage til et Linux Filsystem (83). Kontroller med fdisk -l /dev/sdb.

Formatering af disken

Linux har mange forskellige filsystemer, hvor ext2 og ext4 er det mest almindelige. Herunder er det vist hvordan man formaterer de forskellige filsystemer:

Filsystem Formatering Kontrol
ext2 mkfs.ext2 *partition* e2fsck *partition*
ext4 mkfs.ext4 *partitioner* e2fsck *partition*
vfat mkfs.vfat *partitioner* fsck.vfat *partition*
NTFS mkfs.ntfs *partitioner* -

Herunder formaterer vi harddisken til ext4:

sudo mkfs.ext4 /dev/sdb1
tj@tj-VirtualBox:~$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
Opretter filsystem med 26214144 4k blokke og 6553600 iknuder
Filsystem UUID: c0a52ac1-0d8c-4db9-9ee6-e436f9c3d198
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872

Allokerer gruppetabeller: færdig                          
Skriver iknudetabeller: færdig                          
Opretter journal (32768 blokke): færdig
Skriver superblokke og filsystemets registreringsinformation: færdig 

Fast montering af disken

I første kapitel gennemgik vi hvordan man mounter partitioner. Herunder vil vi gøre sådan at harddisken automatisk bliver monteret når computeren starter op. Vi vil montere mappen i /data.

Først vil vi tjekke harddisken og dens opsætning og herefter oprette mappen:

sudo fdisk -l /dev/sdb sudo mkdir /data
tj@tj-VirtualBox:~$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x014dbe7d

Enhed      Opstart Start      Slut  Sektorer  Size Id Type
/dev/sdb1           2048 209715199 209713152  100G 83 Linux
tj@tj-VirtualBox:~$ sudo mkdir /data
tj@tj-VirtualBox:~$

For at kunne montere disken ved hjælp af /etc/fstab, så den også er monteret herefter skal vi finde diskens UUID og indsætte denne linie 8 /etc/fstab. UUID er markeret med rødt.

lsblk -f
tj@tj-VirtualBox:~$ lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb                                                      
└─sdb1 ext4         c0a52ac1-0d8c-4db9-9ee6-e436f9c3d198 /data
sr0                                                      
sda                                                      
├─sda2                                                   
├─sda5 swap         9b832ca1-217e-4308-bdf3-225b789946c9 [SWAP]
└─sda1 ext4         34bb7b7d-54b7-43c0-bba7-0bf0565c563d /
Hvorfor UUID

UUID er en unik streng, der er dannet til hver partition på computeren. Det virker umiddelbart som ekstra bøvl, men er lavet som en ekstra sikkerhed. Linux er designet til at fungere i netværk, og når man ikke har fysisk adgang til maskinen, så skal man have andre metoder til at verifere at harddisken er den rigtige.

I Linux tankegangen kommer sikkerhed før let at sætte op.

Følgende linier indsættes i /etc/fstab :

sudo nano /etc/fstab
#/data er indsat i filsystemet af tj 31052017
UUID=c0a52ac1-0d8c-4db9-9ee6-e436f9c3d198  /data   ext4	defaults       0   2

Herefter vil /data være tilgængelig hver gang maskinen startes. For at få adgang til disken med det samme skal vi "genmounte" vores filsystemer . Det gøres med kommandoen:

sudo mount -a

Lad os kontrollere med lsblk

tj@tj-VirtualBox:~$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  100G  0 disk ← vores nye disk - ikke monteret
sda      8:0    0  100G  0 disk 
├─sda2   8:2    0    1K  0 part 
├─sda5   8:5    0    8G  0 part [SWAP]
└─sda1   8:1    0   92G  0 part /
tj@tj-VirtualBox:~$ sudo mount -a
tj@tj-VirtualBox:~$  lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  100G  0 disk 
└─sdb1   8:17   0  100G  0 part /data ← vores nye disk - monteret
sda      8:0    0  100G  0 disk 
├─sda2   8:2    0    1K  0 part 
├─sda5   8:5    0    8G  0 part [SWAP]
└─sda1   8:1    0   92G  0 part /

Kontrol af harddiske

Ubuntu kører normalt med ext4-filsystem, og det kan man kontrollere med e2fsck. Kommandoen skal køres mens partitionen ikke er monteret. Det betyder at hvis man vil kontrollere rod-drevet, så skal computeren genstartes med en live linuxdistribution som f.eks. SystemrescueCD (https://www.system-rescue-cd.org/Download). Fordelen ved at anvende den fremfor Ubuntu selv er, at SystemrescueCD ikke mounter nogle drev.

Herunder har jeg afmonteret /dev/sdb1 og laver et filcheck på den:

tj@tj-VirtualBox:~$ sudo umount /dev/sdb1
tj@tj-VirtualBox:~$ sudo e2fsck /dev/sdb1
e2fsck 1.42.13 (17-May-2015)
/dev/sdb1: ren, 11/6553600 filer, 459349/26214144 blokke
tj@tj-VirtualBox:~$ sudo mount /dev/sdb1

Hvor meget plads er der?

For at finde ud af hvor meget plads der er tilgængelig på systemet anvendes kommandoen df -h -t ext4

tj@tj-VirtualBox:~$ df -hT -t ext4
Filsystem      Størr Brugt  Tilb Brug% Monteret på
/dev/sda1        91G  5,3G   81G    7% /
/dev/sdb1        99G   60M   94G    1% /data

Kommandoen virker meget kryptisk, men den er et udtryk for UNIX tankegangen. df viser hvordan harddiskpladsen bliver anvendt. Med denne kommando filtrerer man output ved at vise det Human readable (-h) og ved at begrænse det til ext4 (-t ext4) filsystemer. Se forskellen mellem kommandoerne herunder:

tj@tj-VirtualBox:~$ df
Filsystem      1K-blokke   Brugt  Tilbage Brug% Monteret på
udev             4066068       0  4066068    0% /dev
tmpfs             817492    9516   807976    2% /run
/dev/sda1       94824040 5504644 84479576    7% /
tmpfs            4087444     384  4087060    1% /dev/shm
tmpfs               5120       4     5116    1% /run/lock
tmpfs            4087444       0  4087444    0% /sys/fs/cgroup
/dev/sdb1      103080224   61044 97759968    1% /data
tmpfs             817492      16   817476    1% /run/user/121
tmpfs             817492      20   817472    1% /run/user/1000
tj@tj-VirtualBox:~$ df -t ext4
Filsystem      1K-blokke   Brugt  Tilbage Brug% Monteret på
/dev/sda1       94824040 5504644 84479576    7% /
/dev/sdb1      103080224   61044 97759968    1% /data
tj@tj-VirtualBox:~$ df -h -t ext4
Filsystem      Størr Brugt  Tilb Brug% Monteret på
/dev/sda1        91G  5,3G   81G    7% /
/dev/sdb1        99G   60M   94G    1% /data

Tvinge ændringer igennem

Hvis man har lavet ændringer på en harddisk med fdisk, så kan man risikere, at kernen ikke kan arbejde med de nye informationer. Det kan løses enten ved at genstarte maskinen, eller at anvende programmet partprobe.

partprobe