Harde schijf in gebruik nemen (Linux)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Het lijkt nogal recht-toe-recht-aan te zijn, om een nieuwe schijf of SSD in gebruik te nemen. In de praktijk wil het wel eens tegenvallen. Dit artikel heeft betrekking op zowel interne primaire schijven of SSD's als op externe schijven/SSD's.

Grote plaatje

Tegenwoordig (zomer 2020) configureer ik schijven/SSD's inclusief GPT, GRUB en UEFI

Hoe het werkt

Dit lijken de stappen te zijn om een schijf in gebruik te nemen. Dit heeft vooral betrekking op externe schijven en USB-thumbdrives:

  1. Achterhaal device-id
  2. Umount de schijf
  3. Formatteer de hele schijf
  4. Definieer partitie(s)
  5. Formatteer partitie(s)
  6. Pas rechten aan

Zie de tweede casus uit juli 2020 hieronder: Dat is de meest zekere casus.

Achtergrond: Tools & concepten

  • Disks: Oa. opgenomen in Linux Mint [1]
  • GParted: Grafisch front-end voor Parted, voor bewerken van schijven en file systems. Het is opgenomen in oa. SystemRescueCd [2]
  • GPT: Standaard voor partion tables en opvolger MBR: De GUID Partition Table (GPT) bevat informatie over partities op een device middels globally unique identifies (GUID's) en is onderdeel van de UEFI-standaard [3]
  • GRUB: Boot loader: Een soort micro-OS dat zorgt dat je je juiste OS laadt, en opvolger van LILO. GRUB kan vooral goed overweg met multiboot- en multidisk-systemen. GRUB staat los van enig operating system. Meestal bevindt GRUB zich in de Linux-partitie, in /boot/grub en /etc/grub
  • MBR: Master Boot Record is een boot sector op een harde schijf of SSD. Deze bevat informatie over partities, plus uitvoerbare code om operating systems te kunnen laden vanaf deze partities. MBR is opgevolgd door GUID Partition Table (GPT). Voor de uitvoerbare code (machine-coode), is er 434 tot 446 bytes beschikbaar. Meestal is dit te weinig voor een fatsoenlijke bootloader en daarom verwijst deze code meestal naar andere locaties op de harde schijf waar zich de eigenlijke boatloader bevindt: Lege ruimte tussen partities in, of partition boot sectors
  • Parted: Commandline-utility voor het bewerken van schijven en file systems. Aka. GNU Parted. GParted is hetzelfde, maar dan met een grafische interface
  • UEFI: Opvolger van BIOS: Softwarelaag tussen hardware en OS. UEFI kan doorgaans overweg met MBR- en GPT-harde schijven.

Casus: Nieuwe externe USB-schijf (feb. 2020)

Hoera! Een nieuwe USB-harde schijf die ik ga gebruiken als backup. Het is een 'traditionele' harde schijf, met echte harde schijven. Het kostte me de nodige moeite om een betrouwbare en actuele bron te vinden voor dit klusje. Het is deze tutorial van DigitalOcean.com geworden:

Schijf & filesysteem identificeren

df -TH[4] geeft

/dev/sdb2      fuseblk   5,5T  281M  5,5T   1% /media/strompf/Seagate Expansion Drive

sudo fdisk -l geeft voor dit device (sdb):

Disk /dev/sdb: 5,5 TiB, 6001175125504 bytes, 11721045167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: AFA37668-E7A1-488A-BF85-FE751F3572E6

Device      Start         End     Sectors  Size Type
/dev/sdb1      34      262177      262144  128M Microsoft reserved
/dev/sdb2  264192 11721043967 11720779776  5,5T Microsoft basic data

Partition 1 does not start on physical sector boundary.

sudo parted -l geeft:

Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                          Flags
 1      17,4kB  134MB   134MB                Microsoft reserved partition  msftres
 2      135MB   6001GB  6001GB  ntfs         Basic data partition          msftdata

Unmount

Je moet een gemounte schijf eerst unmounten, voor je 'm kunt formatteren. Dit deed ik in Nautilus. Het kan uiteraard ook in Bash [5].

Bepaal partition standard

Je hebt twee standaarden: GPT en MBR. Ik kies deze eerste:

sudo parted /dev/sdb mklabel gpt

Dit commando is binnen een seconde klaar.

Creëer partition

Maak een partitie aan, die de hele schijf beslaat:

sudo parted -a opt /dev/sdb mkpart primary ext4 0% 100%

Creëer filesystem

Dit commando was binnen een seconde klaar:

sudo mkfs.ext4 /dev/sdb

sudo parted -l geeft nu:

Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      33,6MB  6001GB  6001GB               primary

en lsblk geeft nu:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb      8:16   0   5,5T  0 disk 
└─sdb1   8:17   0   5,5T  0 part 
sda      8:0    0 931,5G  0 disk 
├─sda2   8:2    0     1K  0 part 
├─sda5   8:5    0    16G  0 part [SWAP]
└─sda1   8:1    0 915,6G  0 part /

Maak bestandssysteem aan in deze partitie

Bestandssystemen defineer je op partities, niet op schijven. Dit was binnen een seconde klaar:

sudo mkfs.ext4 -L bu03 /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
/dev/sdb1 alignment is offset by 512 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Creating filesystem with 1465116843 4k blocks and 183140352 inodes
Filesystem UUID: 96998dda-c533-49d2-ab2a-8dea6b95f34f
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000, 214990848, 512000000, 550731776, 644972544

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

Nieuwe situatie:

lsblk --fs
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb                                                      
└─sdb1 ext4   bu03  96998dda-c533-49d2-ab2a-8dea6b95f34f 
sda                                                      
├─sda2                                                   
├─sda5 swap         770b0c79-cbec-48dd-aa7b-5f89b1817a16 [SWAP]
└─sda1 ext4         7a6b8cd3-d38a-4c25-b875-27a93dfdc86c /

Na mounten in Nautilus:

lsblk --fs
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb                                                      
└─sdb1 ext4   bu03  96998dda-c533-49d2-ab2a-8dea6b95f34f /media/strompf/bu03
sda                                                      
├─sda2                                                   
├─sda5 swap         770b0c79-cbec-48dd-aa7b-5f89b1817a16 [SWAP]
└─sda1 ext4         7a6b8cd3-d38a-4c25-b875-27a93dfdc86c /

Casus: Externe drive opnieuw formatteren (juli 2020)

Tip om te voorkomen dat ik tóch per ongeluk het verkeerde device formatteer: Het rechtervenster gebruik ik alleen om device-id's te verifiëren. In het linkervenster werk ik

Dit betreft een oudere schijf die ik voor backups gebruik. Deze blijkt NTFS-geformatteerd te zijn. Voor ik deze ga gebruiken voor backups, wil ik daar ext4 van maken. Ik heb de hele procedure nog steeds niet scherp. Het was een beetje trial-and-error:

Device-ID achterhalen

Device-ID achterhaald muv. sudo fdisk -l. Ik weet héél zeker dat dit /dev/sdb is.

Unmount

Uiteraard. Gewoon via Nemo.

Formatteer hele schijf

Zie je wel: Je moet eerst het hele device formatteren. Ook wel erg logisch.

sudo mkfs.ext4 /dev/sdb

mke2fs 1.45.5 (07-Jan-2020)
Found a dos partition table in /dev/sdb
Proceed anyway? (y,N) y
Creating filesystem with 122096639 4k blocks and 30531584 inodes
Filesystem UUID: 73c079c7-78fe-4f78-9d6f-abda0862ff56
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000

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

Dit voelt goed. Oa. werkt sudo mkfs.ext4 -L bu01 /dev/sdb1 nu niet, en dat lijkt me logisch: Er zijn nog geen partities aangemaakt.

Creëer partitie

Het viel me eerder op, dat als ik niets doe, ik een schijf krijg met een ms-dos label. Volgens mij moet dat GPT zijn. Dat vind je hier oa. terug:

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.

The old ext4 signature will be removed by a write command.

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

Command (m for help): g
Created a new GPT disklabel (GUID: 5781D674-8388-E141-BA39-09619FC0B45C).
The old ext4 signature will be removed by a write command.

Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-976773082, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-976773082, default 976773082): 

Created a new partition 1 of type 'Linux filesystem' and of size 465,8 GiB.

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

Formatteer partitie

sudo mkfs.ext4 -L bu01 /dev/sdb1
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 122096379 4k blocks and 30531584 inodes
Filesystem UUID: 0b6cf6c1-fc29-4f50-8b6d-b64cb5dc5686
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000

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

Eindresultaat

Output sudo fdisk -l voor deze schijf:

Disk /dev/sdb: 465,78 GiB, 500107835392 bytes, 976773116 sectors
Disk model:                 
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: gpt
Disk identifier: 5781D674-8388-E141-BA39-09619FC0B45C

Device     Start       End   Sectors   Size Type
/dev/sdb1   2048 976773082 976771035 465,8G Linux filesystem

chown & chgrp?

Eih, ik kan niet schrijven naar deze schijven: root is eigenaar. Da's niet moeilijk aan te passen, maar wel vreemd. Of misschien niet: Alle voorgaande commando's zijn met sudo uitgevoerd. Aanpassingen (ik betwijfel of -R nodig is):

sudo chown -R jeroen bu01
sudo chgrp -R jeroen bu01

Casus: Externe drive opnieuw formatteren (juli 2020 - 2)

Dit betreft een andere harde schijf dan hiervoor. De procedure behandel ik hier iets korter:

Achterhaal device-ID

Unmount schijf

Formatteer hele schijf

sudo mkfs.ext4 /dev/sdb

Creëer partitie

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.

The old ext4 signature will be removed by a write command.

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

Command (m for help): m

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


Command (m for help): g
Created a new GPT disklabel (GUID: 3F54C89D-DCDE-0D4D-A840-DFE824219BDC).
The old ext4 signature will be removed by a write command.

Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-1953519582, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953519582, default 1953519582): 

Created a new partition 1 of type 'Linux filesystem' and of size 931,5 GiB.

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

Formatteer partitie

sudo mkfs.ext4 -L bu02 /dev/sdb1

chgown & chgrp

Net als eerder, is root eigenaar van de schijf. Aanpassen:

sudo chown -R jeroen /media/jeroen/bu02
sudo chgrp -R jeroen /media/jeroen/bu02

P.s.: Wel handig om -R te gebruiken: Dan kun je daarna de map lost+found verwijderen.

Eindresultaat

sudo fdisk -l

Disk /dev/sdb: 931,52 GiB, 1000202043392 bytes, 1953519616 sectors
Disk model: Elements 1042   
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: gpt
Disk identifier: 3F54C89D-DCDE-0D4D-A840-DFE824219BDC

Device     Start        End    Sectors   Size Type
/dev/sdb1   2048 1953519582 1953517535 931,5G Linux filesystem

Keywords

Zoektermen waarop ik dit artikel zou kunnen zoeken, die echter niet in dit artikel voorkomen:

  • Format hard disk
  • Format harddisk
  • Format harde schijf
  • Formatteren harddisk
  • Formatteren harde schijf

Zie ook

Bronnen