Hvordan ta i bruk disker i Linux?

Bilde av Jakob Owens fra Unsplash

Bilde av Jakob Owens fra Unsplash

Når man kommer fra Windows og starter med Linux er det mye som er grunnleggende annerledes. En av de tingene som er nytt er hvordan man tar i bruk harddisker og andre lagrings enheter. Før man setter i gang med det praktiske knyttet til å ta i bruk en ny disk, må man først skjønne hva som er spesielt med filsystemene som Linux bruker.

Linux er veldig fleksibelt, så hvis du for eksempel har en disk som er partisjoner og formatert med filsystemet NTFS for bruk med Windows, kan den også brukes i Linux uten problem.

Root filsystemet

Alt er bare ett digert tre som starter fra roten

I Windows er man vant med at hver logisk partisjon på en disk blir tildelt et navn som C: eller D: etter at den er skapt. Slik er det ikke i Linux. Der har man ett eneste stort filsystem tre som starter med rooten "/", og gror nedover til andre mapper.

Det vil si at når vi lager en partisjon på en disk og har formatert den, kan den plasseres hvor som helst i dette root filsystemet.

Et praktisk eksempel er at du har en disk som du har alle bildene dine på. Denne plasseres eller "mountes" i home mappen din, slik at bare du har tilgang til den disken. Ett annet eksempel er at du kan koble til en delt nettverks disk som fysisk er plassert på en filserver i huset ditt, men som du mounter ett sted i filsystemet ditt slik at den fungere som en vanlig mappe på datamaskinen din. Resultatet er at man sømløst kan ta i bruk lagningsenheter og utvide det eksisterende filsystemet.

Alle lagrings enheter du kobler til datamaskinen blir lagt til i /dev mappen etter rekkefølgen de ble oppdaget når maskinen ble skrudd på. Harddisker og SSD disker som er koblet til via SATA finner du i /dev mappen under navnene /dev/sdx, hvor x er bokstaven som gjenspeiler rekkefølgen disken ble oppdaget i.

Partisjonene på diskene er nummerert basert på hvilken partisjons nummer den har i diskens partisjons tabell. Se eksempel under.

ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 april  9 20:27 /dev/sda
brw-rw---- 1 root disk 8,  1 april  9 20:27 /dev/sda1
brw-rw---- 1 root disk 8,  2 april  9 20:27 /dev/sda2
brw-rw---- 1 root disk 8, 16 april  9 20:40 /dev/sdb
brw-rw---- 1 root disk 8, 17 april  9 20:42 /dev/sdb1
brw-rw---- 1 root disk 8, 17 april  9 20:42 /dev/sdb2

I eksempelet over kan vi se at det er to disker som er koblet til maskinen. Disse heter sda og sdb. Disken sda har to partisjoner (sda1 og sda2) og sdb har også to partisjoner (sdb1 og sdb2). Hvilke partisjons nummer som blir brukt på disken kan man bestemme selv, men det mest naturlige når man oppretter partisjoner selv, er å bruke de i rekkefølge.

fdisk

Lag en partisjon på disken

fdisk er et interaktivt terminal verktøy som du kan lage partisjoner med, det støtter mange partisjons typer (som ikke må forveksles med filsystem typer).

fdisk trenger å vite hvilke disk vi skal gjøre noe med, derfor starter vi programmet slik

sudo fdisk /dev/sdb

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


Command (m for help):

Før vi lager en ny partisjon kan det være greit å vite hvor mye ledig plass disken har, og hvilke andre partisjoner som er på disken.

For å liste opp alle partisjoner som finnes på disken skriv følgende kommando

Command (m for help): p

Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VMware Virtual S
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: 0x447b5cb2

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1          2048 1026047 1024000  500M 83 Linux
/dev/sdb2       1026048 2050047 1024000  500M 86 NTFS volume set

For å se og bekrefte hvor mye ledig plass det er på disken kjør denne kommandoen

Command (m for help): F
Unpartitioned space /dev/sdb: 9,2 GiB, 9687793664 bytes, 18921472 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

  Start      End  Sectors Size
2050048 20971519 18921472   9G

I denne guiden skal vi lage en partisjon på 1GB, og siden partisjonen skal senere formateres med et ext4 filsystem må den gjøres klar for det.

En partisjon er en logisk inndeling av en fysisk lagringsenhet. Alle lagringsenheter har partisjoner. Det vil si at en harddisk som kommer ny og ubrukt fra fabrikken må få minst 1 partisjon for at det skal være mulig for en datamaskin å formatere den til et filsystem som man kan lagre filer på. Denne partisjonen kan dekke hele disken om man ønsker det, eller man kan kan ha flere mindre partisjoner.

Vi starter med å definere en ny partisjon ved å kjøre kommandoen n - for ny (new) partisjon, etterfulgt av p - for primary partition. Deretter godtar vi det partisjons nummeret og start sektoren som programmet foreslår og skriver inn hvor stor partisjonen skal være.

Her må vi skrive inn hvor mange sektorer partisjonen skal ta i bruk. Men det enkleste er å skrive inn +<antall>M for antall MegaBytes eller +<antall>G for antall GigaBytes partisjonen skal være. Her skriver vi inn +1G for at partisjonen skal bli 1GB.

Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 
First sector (2050048-20971519, default 2050048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2050048-20971519, default 20971519): +1G

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

Her ble det automatisk valgt partisjons typen 'Linux', men det kan vi endre til noe annet om vi skulle ønske det. Alle partisjonstyper som er tilgjengelig kan vises med kommandoen:

Command (m for help): l

 0  Empty           24  NEC DOS         81  Minix / old Lin 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 extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 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 hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor      
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary  
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE 
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT

For å skifte partisjonstype skriv inn kommandoen 't' etterfulgt av det hexadecimale nummeret som står foran partisjons typen i listen. hvis vi for eksempel vil bruke ExFat - som er relativt vanlig for store eksterne disker skriver vi inn '7' og trykker enter.

Command (m for help): t
Partition number (1-3, default 3): 
ex code (type L to list all codes): 7

Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'.

For å skifte tilbake til 'Linux' kjør kommandoen 't' på nytt og velg det hexadesimale nummeret 83

Command (m for help): t
Partition number (1-3, default 3): 
Hex code (type L to list all codes): 83

Changed type of partition 'HPFS/NTFS/exFAT' to 'Linux'.

For at den nye partisjonen faktisk skal bli opprettet på disken må endringene i partisjons tabellen skrives til disken. Hvis vi bare lukke programmet uten å skrive endringene til disk, vil ikke partisjonen bli opprettet.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Hvis vi nå sjekker /dev mappen kan vi se at den nye partisjonen vi laget har dukket opp som sdb3.

ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 april  9 20:27 /dev/sda
brw-rw---- 1 root disk 8,  1 april  9 20:27 /dev/sda1
brw-rw---- 1 root disk 8,  2 april  9 20:27 /dev/sda2
brw-rw---- 1 root disk 8,  5 april  9 20:27 /dev/sda5
brw-rw---- 1 root disk 8, 16 april  9 23:05 /dev/sdb
brw-rw---- 1 root disk 8, 17 april  9 23:05 /dev/sdb1
brw-rw---- 1 root disk 8, 18 april  9 23:05 /dev/sdb2
brw-rw---- 1 root disk 8, 19 april  9 23:05 /dev/sdb3

mkfs

Formatering av partisjonen

Når en partisjon er lagd er det klart for å formatere den med det filsystemet vi ønsker å bruke. For å formatere den nye partisjonen med filsystemet ext4 kjøres følgende kommando:

sudo mkfs.ext4 /dev/sdb3

mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: e823ea37-7e5e-4826-b37c-16b82678d0e9
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376

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

mount

Ta partisjonen i bruk i root filsystemet

Nå kan den nye partisjonen med det tomme filsystemet mountes hvor vi vil i filsystemet. I dette eksempelet vil jeg mounte den i home mappen min som en mappe med navn "backup".

En lagringsenhet eller partisjon må mountes i en tom mappe. Derfor starter vi med å opprette mappen backup i home mappen min.

mkdir /home/stanley/backup

Da er det klart for å mounte partisjonen som vi opprettet og formaterte til denne mappen

sudo mount /dev/sdb3 /home/stanley/backup

Nå er denne partisjonen mountet til root filsystemet helt til man manuelt unmounter den eller skrur av datamaskinen. For å manuelt unmounte partisjonen kjør kommandoen:

sudo umount /home/stanley/backup

fstab

Listen over disker som skal mountes når maskinen starter

For at en partisjon skal automatisk moutes må den legges til i file '/etc/fstab'.

Men siden det kan være litt tilfeldig hvilken rekkefølge diskene oppdages i er det tryggest å legge til disken basert på diskens UUID (Universally Unique IDentifier).

Denne finner vi rask ved vise informasjon om partisjonen med denne kommandoen:

blkid /dev/sdb3
/dev/sdb3: UUID="e823ea37-7e5e-4826-b37c-16b82678d0e9" TYPE="ext4" PARTUUID="447b5cb2-03"

her finner vi UUID'en til sdb3. Når vi vet denne kan vi åpne fstab, og legge til partisjonen og hvor den skal mountes når maskinen skrur seg på.

/etc/fstab
...
UUID=e823ea37-7e5e-4826-b37c-16b82678d0e9     /home/stanley/backup      ext4    errors=remount-ro      0       1

Denne filen har seks kolonner.

  1. viser hvilken en enhet som skal mountes. Siden vi vil mounte den basert på UUID skriver vi inn den her.
  2. viser hvor i root filsystemet den skal mountes.
  3. viser hvilket filsystem det er på enheten som skal mountes.
  4. viser alle mount options vi ønsker å bruke.
  5. viser om enheten skal tas backup av. 1 = ja, 0 =nei.
  6. viser hvor ofte filsystemet skal sjekkes for feil ved oppstart.

Det er viktig at UUID'en som skrives inn og hvor partisjonen skal mountes stemmer. Hvis det er en feil i denne filen vil ikke maskinen klarer å starte som normalt.