home       inleiding       sysadmin       services       links       bash       werk       nothing      

  1. 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.
     
  2. 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 een pagefile.sys bij microsoft besturingssystemen.
     
    Om te partitioneren bestaat er enerzijds fdisk voor een MBR-partitionnering, anderzijds gdisk voor een GPT-partitionnering .
    Tenslotte is er ook nog de CLI-tool parted 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 met fdisk.
    Ik verwijs naar praktijkpagina's om de partitionnering met deze 3 tools onder de knie te krijgen.
     
  3. MBR-partitietabel
     
    In ons eerste voorbeeld brengen we een MBR-partitetabel op scherm. We kunnen de partities alleen aanmaken of aanpassen met fdisk.
    Met fdisk -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, maar gdisk geeft een waarschuwing. In ons voorbeeld blijft de extended partite onzichtbaar in de gdisk display.
     
    Nogmaals dezelfde schijf maar met parted:

    $ 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'
     

  4. GPT-partitietabel
     
    In dit tweede voorbeeld tonen we een GPT-ingedeelde schijf, weerom met de drie disk-tools: fdisk, gdisk en gparted.
     
    We beginnen met de ongeschikte fdisk
    $ 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 door gdisk 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 met gdisk 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 met parted 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.
     
     

  5. 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 bestanden

    btrfs

    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 commando mkswap:

    # mkswap /dev/sda3
    Setting up swapspace version 1, size = 2096124 KiB
    no label, UUID=65a03aaa-782f-4280-a643-cf9661a5c552

     

  6. 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, met mkdir, 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 met df:

    $ 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

     

  7. 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 voorbeeld umount -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.