MKFS

Make Filesystem

mkfs of make filesystem is de tool die we bij Windows format noemen, of met andere woorden met mkfs kunnen we een harde schijf of USB-Stick formatteren.

Maar in tegenstelling tot format bestaat mkfs uit verschillende programma's, per bestandssysteem is er een apart programma. Om de muggenzifters tevreden te stellen, moet ik voor de volledigheid zeggen dat mkfs het commando correct doorgeeft aan het programma dat specifiek gemaakt is voor het bestandssysteem dat we na de . (punt) ingeven.

Bijvoorbeeld, het commando $mkfs.ext2 zal het programma mke2fs aanroepen om het eigenlijke bestandssysteem aan te maken.

Zoals gezegd bestaat mkfs dus uit meerdere programma's en op een standaard Debian GNU/Linux systeem zijn dat:
  • mkfs.bfs : Het SCO BFS bestandssysteem
  • mkfs.cramfs : Het Compressed ROM bestandssysteem (read-only)
  • mkfs.exfat : Het exFAT bestandssysteem
  • mkfs.ext2 / mkfs.ext3 / mkfs.ext4 : Versie 2, 3 of 4 van het Linux Extended Bestandssysteem (ext3 is ext2 met een journal toegevoegd en ext2 wordt daarom enkel nog gebruikt voor de boot (opstart) partitie.)
  • mkfs.fat : Het MS-DOS FAT bestandssysteem
  • mkfs.minix : Het MINIX bestandssysteem (Minix is een UNIX-achtig besturingssysteem gemaakt door de Nederlandse professor Andrew S. Tannenbaum. Minix vormde de inspiratie voor Linus Benedict Torvalds om Linux te maken.
  • mkfs.msdos : hetzelfde als mkfs.fat

    mkfs.ntfs : het Microsoft NTFS bestandssysteem (standaard bij Windows sinds Windows NT of Windows 2000 als ik me niet vergis)

  • mkfs.vfat : ook hetzelfde als mkfs.fat

Dit zijn de mogelijkheden die standaard beschikbaar zijn op mijn Debian systeem, Linux ondersteund naast deze nog vele andere bestandssystemen zoals ReiserFS, XFS, HFS en HFS+ (gebruikt door MacOS), JFS etc.

De simpelste manier om mkfs te gebruiken is mkfs.bestandssysteem/doel -L

Een voorbeeld : sudo mkfs.ext4 /dev/sdc1 -L Sandisk
  • mkfs.ext4 : maak een Linux extended versie 4 bestandssysteem aan.
  • /dev/sdc1 : Het doel is de 1ste partitie van het apparaat op /dev/sdc (een Sandisk USB-Stick in mijn geval)
  • -L Sandisk : Maak een label aan (Sandisk in dit geval) dit is niet noodzakelijk, maar als je dit niet doet zal er automatisch een label worden toegevoegd en dat lijkt dan op 322682d7-8d23-44fc-8a6f-23874901e2b3

Hier is een voorbeeld van een USB-Stick op /dev/sdc met 1 partitie die is instesteld op Linux

Figuur 1. $ sudo fdisk /dev/sdc

Hier is een lijst met de verschillende types die je kunt instellen:

Figuur 2. fdisk mogelijke bestandssystemen

Maar zoals ik al zei, zal fdisk in een ander artikel worden besproken.

Laat me eerst tonen wat er gebeurd als we mkfs gebruiken op /dev/sdc1 om een ext4 bestandssysteem aan te maken met als label Sandisk

Figuur 3. $ sudo mkfs.ext4 /dev/sdc1 -L Sandisk

Afhankelijk van het gekozen bestandssysteem krijgen we een andere output te zien op het scherm en ook de duur om het bestandssysteem aan te maken is afhankelijk van het gekozen bestandssysteem. Zo zal een FAT bestandssysteem sneller gemaakt worden dan een ext4 bestandssysteem.

Als we een FAT bestandssysteem willen aanpassen moeten we ons commando een beetje aanpassen: sudo mkfs.fat /dev/sdc1 -n SANDISK

Bij een FAT bestandssysteem moeten we -n (name) gebruiken i.p.v. -L (label). Ook wordt het aangeraden om de naam in HOOFDLETTERS te schrijven (anders krijg je een foutmelding dat deze een probleem kunnen geven met Windows).

Figuur 4. $ sudo mkfs.fat /dev/sdc1 -n SANDISK

Als je een bepaald bestandssysteem wil aanmaken kun je dus best eerst even de manpages van het desbetreffende bestandssysteem raadplegen, bij mkfs.ext4 krijg je dan de mke2fsmanpages te zien:

Figuur 5. $ man mkfs.ext4
In de manpages staan ook een heleboel andere parameters die je kunt weergeven indien je een specifieke instelling wil gebruiken zoals oa.
  • -b : block size
  • -C : cluster size
  • -e : gedrag bij een fout:
    • continue : ga verder.
    • remount-ro : koppen het bestandssysteem aan in enkel lezen.
    • panic : veroorzaak een Kernel Panic (Het systeem zal "crashen").

  • -E : extended opties, hier zijn vooral de volgende belangrijk:
    • lazy_itable_init : Dit zal de inode table niet volledig initialiseren wat het aanmaken van het bestandssysteem versneld, het volledig initialiseren zal pas gebeuren als het bestandssysteem de 1ste keer wordt aangekoppeld.
    • lazy_journal_init : Ook dit zal het aanmaken van het bestandssysteem versnellen, dit kan wel problemen veroorzaken als het systeem vastloopt voor het journal de eerste keer volledig is overschreven (ook bij het aankoppelen voor de eerste keer).
  • -F : force dwing om een bestandssysteem aan te maken ook als het doel geen partitie op een block-device is.
  • -I : Grootte van de INODES
  • -J : Opties voor het Journal

etc.

De mogelijke opties zijn zoals al vermeld afhankelijk van het bestandssysteem (zo heeft FAT geen Journal, dus zal je deze opties ook niet zien.

Dus zoals altijd, maar informatie in de Manpages of de Infopages.