- harde schijven
Harde schijven krijgen in linux, een device naam; net zoals een cdrom of usb-stick.
Die device naam begint meestal met/dev/sd
De eerste harde schijf krijgt als naam/dev/sda
de tweede/dev/sdb
enzoverder.
- partities
Harde schijven worden verdeeld in partities. Partities zijn delen van een harde schijf die mekaar niet overlappen. Partitioneren is een techniek om een harde schijf onder te verdelen o.a. voor gebruik met verschillende besturingssystemen (bijvoorbeeld een windows gedeelte en een linux gedeelte) of om besturingssysteem en data van mekaar te scheiden. In dat geval zorgt een 'disk-full' home-directory niet voor problemen met het besturingssysteem zelf.
Linux gebruikt minstens 2 partities:
een gewone root-partitie die begint bij de directory/
en een swap-partitie. (uitzonderlijk kan ook een swap-file worden gebruikt)
De swap-partitie wordt gebruikt voor virtueel geheugen, net zoals eenpagefile.sys
bij microsoft besturingssystemen.
Om te partitioneren bestaat er enerzijdsfdisk
voor een MBR-partitionnering, anderzijdsgdisk
voor een GPT-partitionnering .
Tenslotte is er ook nog de CLI-toolparted
al dan niet met een GUI-frontend:gparted
, waarmee je veel meer kan dan alleen partitionneren.
Schijven groter dan 2 TeraByte kunnen niet gepartitionneerd worden metfdisk
.
Ik verwijs naar praktijkpagina's om de partitionnering met deze 3 tools onder de knie te krijgen.
-
MBR-partitietabel
In ons eerste voorbeeld brengen we een MBR-partitetabel op scherm. We kunnen de partities alleen aanmaken of aanpassen metfdisk
.
Metfdisk -l
breng je de partitietabel op scherm:$ sudo fdisk -l Disk /dev/sda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders, total 234441648 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 Disk identifier: 0x00029b5b Device Boot Start End Blocks Id System /dev/sda1 * 2048 217686015 108841984 83 Linux /dev/sda2 217688062 234440703 8376321 5 Extended /dev/sda5 217688064 234440703 8376320 82 Linux swap / Solaris
In een MBR-structuur zijn er maximaal 4 primary partitions, en die krijgen de nummers 1 t.e.m. 4; één van deze primary partitions kan een extended partition zijn, waarin we een tiental logische partities kunnen parkeren. (
fdisk
spreekt over logical volumes, maar die term is misleidend). De logische partities krijgen de nummers 5 en hoger, ook al zijn er maar twee primary partitions.We proberen even
gdisk
op dezelfde schijf,
maar de waarschuwing over MBR slaan we zeker niet in de wind !!!$ sudo gdisk -l /dev/sda GPT fdisk (gdisk) version 0.8.8 Partition table scan: >>> MBR: MBR only <<< BSD: not present APM: not present GPT: not present *************************************************************** Found invalid GPT and valid MBR; converting MBR to GPT format in memory. *************************************************************** Disk /dev/sda: 234441648 sectors, 111.8 GiB Logical sector size: 512 bytes Disk identifier (GUID): 4F3BE656-BC8A-424C-A1BE-5C063B2ADEF8 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 234441614 Partitions will be aligned on 2048-sector boundaries Total free space is 4973 sectors (2.4 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 217686015 103.8 GiB 8300 Linux filesystem 5 217688064 234440703 8.0 GiB 8200 Linux swap
gdisk
is niet geschikt voor MBR-ingedeelde partitietabellen. Je kan ze wel zichtbaar maken, maargdisk
geeft een waarschuwing. In ons voorbeeld blijft de extended partite onzichtbaar in degdisk
display.
Nogmaals dezelfde schijf maar metparted
:$ sudo parted /dev/sda print Model: ATA OCZ-ARC100 (scsi) Disk /dev/sda: 120GB Sector size (logical/physical): 512B/512B Partition Table: >>> msdos <<< Number Start End Size Type File system Flags 1 1049kB 111GB 111GB primary ext4 boot 2 111GB 120GB 8577MB extended 5 111GB 120GB 8577MB logical linux-swap(v1)
parted
brengt de partitietabel op scherm, en detecteert de MBR als type 'msdos'
- GPT-partitietabel
In dit tweede voorbeeld tonen we een GPT-ingedeelde schijf, weerom met de drie disk-tools:fdisk
,gdisk
engparted
.
We beginnen met de ongeschiktefdisk
$ sudo fdisk -l /dev/sdb WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes 255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 1 3907029167 1953514583+ ee GPT Partition 1 does not start on physical sector boundary.
fdisk
waarschuwt dat deze een GPT-tabel niet kan aanpassen. Om ervoor te zorgen dat GPT-onkundige software een lege MBR-partitetabel zou detecteren, werd er doorgdisk
een MBR-partitie aangemaakt van het type ee of GPT, die de ganse schijf bezet.fdisk
ziet alleen deze valse-partitie.
Als we de GPT-schijf bekijken metgdisk
is alles in orde:$ sudo gdisk -l /dev/sdb >>> GPT <<< version 0.8.8 Partition table scan: MBR: protective BSD: not present APM: not present >>> GPT: present <<< Found valid GPT with protective MBR; using GPT. Disk /dev/sda: 3907029168 sectors, 1.8 TiB Logical sector size: 512 bytes Disk identifier (GUID): 13840249-01D4-4F3C-94FB-690CA8C0C6CD Partition table holds up to 128 entries First usable sector is 34, last usable sector is 3907029134 Partitions will be aligned on 2048-sector boundaries Total free space is 2157 sectors (1.1 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 1050623 512.0 MiB EF00 EFI System Partition 2 1050624 1550335 244.0 MiB 8300 3 1550336 3907028991 1.8 TiB 8E00
GPT-partities krijgen de nummers 1 t.e.m. 128, (tenzij er bij aanvang plaats is voorzien voor meer dan 128 partities).
Ook metparted
is alles in orde:$ sudo parted /dev/sdb print Model: ATA WDC WD2003FZEX-0 (scsi) Disk /dev/sdb: 2000GB Sector size (logical/physical): 512B/4096B >>> Partition Table: gpt <<< Number Start End Size File system Name Flags 1 1049kB 538MB 537MB fat32 EFI System Partition boot 2 538MB 794MB 256MB ext2 3 794MB 2000GB 2000GB
parted
is de enige linux disk-tool waarme we beide formaten kunnen aanpassen.
-
formatteren
Om je partities te kunnen gebruiken moet je deze formatteren. In linux heb je de keuze tussen de volgende courante filesystems:
ext3
Third Extended File System oftewel ext3 is een bestandssysteem dat wordt gebruikt door Linux-besturingssystemen. Het is tegenwoordig standaard voor de meeste Linux-distributies. Ext3 is in essentie een ext2-bestandssysteem aangevuld met een journaal.
ext4
De opvolger van ext3. Kan partities aan tot 1 EXAbyte, verbeterde automatische defragmentatie, meer dan 32000 subdirectories, journaal checksumming, sneller maar toch achterwaards compatibel met ext3 en ext2.
xfs
XFS heeft de volgende eigenschappen: alleen journaliseren van metadata, dynamische uitbreiding van filegrootte, striped allocation: optimalisering van doorvoer door I/O-operaties te laten samenvallen met de stripes op een RAID-disksysteem, defragmentatie terwijl het bestandssysteem wordt gebruikt
een realtime-I/O-API (voor hard- of soft-realtimetoepassingen, zoals videostreaming), allocate-on-flush: een manier om fragmentatie te verminderen door het samenvoegen van allocaties voor langzaam groeiende bestandenbtrfs
Btrfs (B-tree FS, uitgesproken als Butter FS[1][2]) is een copy-on-write-bestandssysteem ontworpen en geïmplementeerd door Oracle en uitgebracht onder de GNU General Public License (GPL) voor Linuxsystemen. Btrfs is gemaakt als een antwoord op ZFS en de tekortkomingen van de huidige bestandssystemen. (source: nl.wikipedia)
zfs
De naam betekent Zettabyte File System, maar is nu bekend als een letterwoord. Dit omdat de datalimiet een zettabyte is. ZFS is een 'nextgen'- of hybride-bestandsysteem, met name omdat er enkele functies, zoals RAID en volume management, geïntegreerd zijn. Dit is bij de momenteel gangbare bestandssystemen niet het geval. Met ZFS kan indien data op een (RAID) set van meerdere harde schijven is opgeslagen, deze set schijven vervolgens aan een ander systeem (met ZFS) gekoppeld worden om verder te worden gebruikt. (source: nl.wikipedia)
ext4 en xfs, zijn momenteel binnen linux de meest populaire filesystems. Binnen linux kan je ook schijven en USB-disks lezen, schrijven en formatteren onder FAT32, NTFS en exFAT.
Om na te gaan welke filesystems je linuxmachine momenteel ondersteunt, tik je het volgende commando:$ ls /sbin/mkfs* -l -rwxr-xr-x 1 root root 10440 Sep 2 2015 /sbin/mkfs -rwxr-xr-x 1 root root 18736 Sep 2 2015 /sbin/mkfs.bfs -rwxr-xr-x 1 root root 31216 Sep 2 2015 /sbin/mkfs.cramfs lrwxrwxrwx 1 root root 6 Sep 9 2015 /sbin/mkfs.ext2 -> mke2fs lrwxrwxrwx 1 root root 6 Sep 9 2015 /sbin/mkfs.ext3 -> mke2fs lrwxrwxrwx 1 root root 6 Sep 9 2015 /sbin/mkfs.ext4 -> mke2fs lrwxrwxrwx 1 root root 6 Sep 9 2015 /sbin/mkfs.ext4dev -> mke2fs -rwxr-xr-x 1 root root 27608 Mar 18 2014 /sbin/mkfs.fat -rwxr-xr-x 1 root root 27144 Sep 2 2015 /sbin/mkfs.minix lrwxrwxrwx 1 root root 8 Mar 18 2014 /sbin/mkfs.msdos -> mkfs.fat lrwxrwxrwx 1 root root 6 Dec 18 2013 /sbin/mkfs.ntfs -> mkntfs lrwxrwxrwx 1 root root 8 Mar 18 2014 /sbin/mkfs.vfat -> mkfs.fat -rwxr-xr-x 1 root root 269880 Dec 18 2013 /sbin/mkfs.xfs
Je kan
mkfs
gebruiken -- met de juiste opties -- om te formatteren in een van de op jouw systeem geinstalleerde filesystems:$ mkfs Usage: mkfs [options] [-t type fs-options] device [size] Options: -t, --type=TYPE file system type, when undefined ext2 is used fs-options parameters to real file system builder device path to a device size number of blocks on the device -V, --verbose explain what is done defining -V more than once will cause a dry-run -V, --version output version information and exit -V as version must be only option -h, --help display this help and exit For more information see mkfs(8).
Maar het is makkelijker gebruik te maken van de commando-reeks
mkfs.<fs>
Hieronder formatteren we/dev/sdb6
in ext4:# mkfs.ext4 /dev/sdb6 mke2fs 1.42.9 (4-Feb-2014) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 262144 inodes, 1047808 blocks 52390 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1073741824 32 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
Hieronder formatteren we/dev/sdc3
in xfs:$ sudo mkfs.xfs /dev/sdc3 meta-data=/dev/sdc3 isize=256 agcount=4, agsize=393152 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=1572608, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
En tenslotte formatteren we/dev/sda1
in fat32:$ sudo mkfs.vfat /dev/sda1 mkfs.fat 3.0.26 (2014-03-07)
Om een swap-partitie in te richten gebruik je het commandomkswap
:# mkswap /dev/sda3 Setting up swapspace version 1, size = 2096124 KiB no label, UUID=65a03aaa-782f-4280-a643-cf9661a5c552
-
mounten
Omdat linux partities geen drive letters krijgen moet alles vertrekken vanuit de
/
root-directory. Dat betekent dat een cdrom ergens een plaats vindt in de directoryhiërarchie.
Die plaats noemen we een mountpoint.
Mountpoints maak je zelf, metmkdir
, meestal als root.
Je systeem heeft minstens EEn mountpoint, en dat is de root-directory,/
Als we het commando mount zonder opties gebruiken, krijgen we een overzicht van alle reeds ge-mount-te filesystems:$ mount /dev/sda2 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/sda5 on /home/ftp type xfs (rw) /dev/sdc1 on /home/ftp/images type xfs (rw) //172.16.0.15/install on /hades type cifs (ro,mand) //172.16.0.100/x_drive$ on /xdrive type cifs (rw,mand) /dev/scd0 on /media/cdrom0 type iso9660 (ro,noexec,nosuid,nodev,user=bert)
Om de eerder (in punt 5 ) geformatteerde partities te mounten kun je de volgende commando's intikken:$ sudo mkdir /home2 $ sudo mount /dev/sdc3 /home2 $ sudo mkdir /mnt/dosdir $ sudo mount /dev/sdc1 /mnt/dosdir/ $
Je kan de mounts ook bekijken metdf
:$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 30831612 4983392 24259024 18% / none 4 0 4 0% /sys/fs/cgroup udev 1009124 4 1009120 1% /dev tmpfs 204980 1148 203832 1% /run none 5120 0 5120 0% /run/lock none 1024880 76 1024804 1% /run/shm none 102400 24 102376 1% /run/user /dev/sdc3 6280192 32928 6247264 1% /home2 /dev/sdc1 5232640 4 5232636 1% /mnt/dosdir
-
fstab
Mounten is tijdelijk. Als je na het mounten je machine herstart zijn al je eerdere mounts weg. Om je mounts permanent te maken moet je ze bewaren in een bestand/etc/fstab
:/etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> # # / was on /dev/sda1 during installation UUID=8edab9a6-56fc-434f-a489-02de4bb85d2f / ext4 errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=f8d0f84f-7c36-4687-a6b3-dad4de924f55 none swap sw 0 0 # # dit is commentaar # # dit wordt onze eerdere # mount /dev/sdc3 /home2 /dev/sdc3 /home2 xfs defaults 0 0
Om de
/etc/fstab
te testen moeten we eerst de originele/home2
in ons voorbeeldumount
-en. Dat kunnen we doen met:$ sudo
umount /home2
We testen daarna met
df
of die eerste manuele mounts werkelijk weg zijn.
Daarna kunnen we gebruik maken van het volgende commando om te zien of de fstab goed is geconfigureerd:
$ sudo
mount -a
En dat kontrolleren we tenslotte met
df
Als je umount kun je dit doen op mountpoint of op device-naam. Je kan een partitie op verschillende plaatsen tegelijk mounten. Als je umount op device-naam wordt de laatste mount eerst ge-umount.