LX-INL-INFO-fdisk

updated aug/11/2010 13:49

fdisk: schijf partitionneren

In dit hoofdstuk laten we je zien hoe je een harddisk partitionneert met fdisk. De BIOS van een IBM compatibele PC (dat is momenteel elk PC moederbord met een amd of intel processor) laat slechts 4 primary partities toe. Dat is voor Linux ook zo. 


Eén van deze primary partitions, de extended partition, kunnen we nog verder onderverdelen in logical volumes.

We verdelen een schijf in partities met de command line utility fdisk.


  1. syntax

    # fdisk <device>


  2. welk device:

    1. algemeen:

      Een sata schijf, de enige schijf in je PC:

      /dev/sda

      Heb je meerdere sata schijven, dan is de eerste schijf sda, de tweede sdb enz.

      sata schijf 1
      /dev/sda
      sata schijf 2
      /dev/sdb
      ...

      sata schijf 5
      /dev/sde

      Een ide schijf, krijgt een naam afhankelijk van zijn bekabeling en jumpersetting:

      primary master:
      /dev/hda
      primary slave:
      /dev/hdb
      secondary master:
      /dev/hdc
      secondary slave: /dev/hdd

      Sommige linux distributies gebruiken de sata notatie ook voor ide schijven.

      Alle linux distributies gebruiken de /dev/sd notatie ook voor USB memory devices en geheugenkaarten.
    2. fdisk -l

      Een betere manier om te weten te komen op welke schijf we fdisk gaan uitvoeren, is eerst een lijst op scherm te brengen van alle partities. Aan de hand van de gegevens die we per schijf zien (o.a. grootte en reeds bestaande partities), is het dan makkelijker de devicenaam te identificeren:

      Op een ubuntu machine:

      $ sudo fdisk -l
      [sudo] password for jan:

      Disk /dev/sda: 160.0 GB, 160041885696 bytes
      255 heads, 63 sectors/track, 19457 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xc7eec7ee

         Device Boot   Start      End      Blocks   Id  System
      /dev/sda1   *        1     3187    25599546   83  Linux
      /dev/sda2         3188     3795     4883760   82  Linux swap / Solaris
      /dev/sda3         3796     6227    19535040    5  Extended
      /dev/sda4         6228    19457   106269975   83  Linux
      /dev/sda5         3796     6227    19535008+  83  Linux



      Op een debian server:

      # fdisk -l
      Disk /dev/sda: 160.0 GB, 160041885696 bytes
      255 heads, 63 sectors/track, 19457 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0x000b6e7e

         Device Boot   Start         End      Blocks   Id  System
      /dev/sda1            1      243     1951866   82  Linux swap / Solaris
      /dev/sda2          244     2431    17575110   83  Linux
      /dev/sda3   *     2432     4620    17583142+  83  Linux
      /dev/sda4         4621    19457   119178202+   5  Extended
      /dev/sda5         4621    19457   119178171   83  Linux

      Disk /dev/sdb: 500.1 GB, 500107862016 bytes
      255 heads, 63 sectors/track, 60801 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0x3d105e8f

         Device Boot   Start      End      Blocks   Id  System
      /dev/sdb1            1    60801   488384001   83  Linux



      Op een oude RedHat Server:

      root@pyongyang: ~# fdisk -l

      Disk /dev/hda: 81.9 GB, 81964302336 bytes
      255 heads, 63 sectors/track, 9964 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0x0003299a

         Device Boot   Start         End      Blocks   Id  System
      /dev/hda1   *      228     9964    78212452+  83  Linux
      /dev/hda2            1      227     1823346   82  Linux swap / Solaris

      Partition table entries are not in disk order

      Disk /dev/hdb: 20.4 GB, 20491075584 bytes
      255 heads, 63 sectors/track, 2491 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0x000efa2c

         Device Boot   Start         End      Blocks   Id  System
      /dev/hdb1            1      182     1461883+  82  Linux swap / Solaris
      /dev/hdb2          183     2491    18547042+  83  Linux


      In de hogerstaande voorbeelden zijn de aanwezige schijven vetjes weergegeven.


  3. fdisk gebruiken

    Zodra we weten welke de devicenaam is van de schijf die we willen partitionneren, kunnen we fdisk uitvoeren op deze schijf.

    We werken als root user.
    We gebruiken device /dev/sda in ons voorbeeld:

    1. help en display

      # fdisk /dev/sda

      The number of cylinders for this disk is set to 38913.
      There is nothing wrong with that, but this is larger than 1024,
      and could in certain setups cause problems with:
      1) software that runs at boot time (e.g., old versions of LILO)
      2) booting and partitioning software from other OSs
         (e.g., DOS FDISK, OS/2 FDISK)

      Command (m for help):

      Na het intikken van het commando verschijnt het hogere scherm. Fdisk rapporteert een probleem met oudere hardware (pré 1995). We negeren dit!
      Fdisk stelt voor om m in te tikken voor help; dat doen we dan maar:

      Command (m for help): m
      Command action
         a   toggle a bootable flag
         b   edit bsd disklabel
         c   toggle the dos compatibility flag
         d   delete a partition
         l   list known partition types
         m   print this menu
         n   add a new partition
         o   create a new empty DOS partition table
         p   print the partition table
         q   quit without saving changes
         s   create a new empty Sun disklabel
         t   change a partition's system id
         u   change display/entry units
         v   verify the partition table
         w   write table to disk and exit
         x   extra functionality (experts only)

      Command (m for help):

      In vetjes staan de meest courante operaties met fdisk. Die gaan we uitvoeren en bespreken. We beginnen met het onderzoeken van de huidige partition table. Dat doen we met de letter p (print the partition table - met print bedoelt men display)

      Command (m for help): p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1   *           1        3891    31254426    7  HPFS/NTFS

      /dev/sda2            3892       38913   281314215    7  HPFS/NTFS

      Op deze schijf staan nog twee NTFS partities uit een vroegere configuratie onder windows. We gaan deze partities verwijderen:

      Command (m for help): d
      Partition number (1-4): 2

      Command (m for help): d
      Selected partition 1

      We hebben eerste de tweede partitie verwijderd: drukten d en daarna 2,
      daarna hebben we de eerste partitie verwijderd, ook met d. fdisk vraagt niet meer welke partitie hij moet verwijderen, want er is er maar één meer. Hij zegt wel dat die geselecteerd werd.

      We drukken nu onze partitietabel af:

      Command (m for help): p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot      Start         End      Blocks   Id  System


      En inderdaad alles is weg.
    2. een nieuwe partitietabel creëren

      Nu willen we een nieuwe partitietabel opbouwen als volgt:

      • een primary partitie van 30G voor een linux systeem
      • nog een primary partitie van 30G voor een later te installeren update van een linux systeem,
      • een extended partition op de rest van de harde schijf

      In de extended partition:

      • een logical volume van 4GB voor swap,
      • een logical volume van 50GB voor een database
      • een logical volume van de rest van schijf voor /home

    3. we beginnen met een primary partitie van 30G

      Command (m for help): n
      Command action
         e   extended
         p   primary partition (1-4)

      p
      Partition number (1-4): 1
      First cylinder (1-38913, default 1): <enter>
      Using default value 1
      Last cylinder, +cylinders or +size{K,M,G} (1-38913, default 38913): +30G

      Ik tik eerst n om een nieuwe partitie te maken,
      dan kies ik p voor een primary partition,
      het is de eerste primary partition dus die geef ik nummer 1
      De eerste cylinder van een partitie (default) wordt altijd goed gekozen door fdisk zelf, dus ik druk enter
      Tenslotte geef ik de grootte mee met +30G i.p.v. een cylinder. Dat is veel makkelijker. (Pas op: als je geen + tikt gaat het fout)

      Ik kijk nog even of alles goed gegaan is:

      Command (m for help): p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1               1        3917    31463271   83  Linux



      en dat is inderdaad het geval. Device /dev/sda1 is 31.463.271 blokken groot. Elk blok is 1kB.
    4. nog een primary partitie van 30G

      Command (m for help): n
      Command action
         e   extended
         p   primary partition (1-4)

      p
      Partition number (1-4): 2
      First cylinder (3918-38913, default 3918): <enter>
      Using default value 3918
      Last cylinder, +cylinders or +size{K,M,G} (3918-38913, default 38913): +30G

      Command (m for help): p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1               1        3917    31463271   83  Linux
      /dev/sda2            3918        7834    31463302+  83  Linux


      Dit ging op dezelfde manier als de eerste partitie. We hebben nu 2 gelijke partities.

    5. een extended partition van de rest van harde schijf

      Command (m for help): n
      Command action
         e   extended
         p   primary partition (1-4)

      e
      Partition number (1-4): 3
      First cylinder (7835-38913, default 7835): <enter>
      Using default value 7835
      Last cylinder, +cylinders or +size{K,M,G} (7835-38913, default 38913):<enter>
      Using default value 38913

      Command (m for help): p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1               1        3917    31463271   83  Linux
      /dev/sda2            3918        7834    31463302+  83  Linux
      /dev/sda3            7835       38913   249642067+   5  Extended


      We drukken hier weer de letter n voor een nieuwe partitie,
      daarna de e van extended.
      We geven een extended ook een primary nummer, dat wordt hier dus 3.
      De extended is even groot als de rest van de harde schijf. Fdisk stelt telkens de twee uiterste waarden voor, en dat is exact wat we willen, we drukken twee keer enter. We visualiseren weer met p.

    6. een logical volume van 4GB voor swap

      Command (m for help): n
      Command action
         l   logical (5 or over)
         p   primary partition (1-4)
      l
      First cylinder (7835-38913, default 7835): <enter>
      Using default value 7835
      Last cylinder, +cylinders or +size{K,M,G} (7835-38913, default 38913):
      +4G

      Command (m for help):
      p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1               1        3917    31463271   83  Linux
      /dev/sda2            3918        7834    31463302+  83  Linux
      /dev/sda3            7835       38913   249642067+   5  Extended
      /dev/sda5            7835        8357     4200966   83  Linux


      Een logical volume maken is even makkelijk als een primary partition, tenminste als we er aan gedacht hebben eerst een extended te maken. We drukken weer n voor een nieuwe partitie, daarna l voor logical volume, enter voor een default begin en +4G voor een grootte van 4GB.

      Merk op dat dit logical volume in de extended zit: de start cylinder is dezelfde als die van de extended partition.

      Eén ding is nog niet correct: het partition id staat nog niet op 82 voor swap. Dat doen we als volgt:

      Command (m for help): t
      Partition number (1-5):
      5
      Hex code (type L to list codes):
      82
      Changed system type of partition 5 to 82 (Linux swap / Solaris)

      Command (m for help):
      p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot   Start      End      Blocks   Id  System
      /dev/sda1            1     3917    31463271   83  Linux
      /dev/sda2         3918     7834    31463302+  83  Linux
      /dev/sda3         7835    38913   249642067+   5  Extended
      /dev/sda5         7835     8357     4200966   82  Linux swap/Solaris


      Met t van toggle zeggen we fdisk dat we een partition id willen aanpassen. We tikken het partition nummer 5 in (van /dev/sda5), en daarna 82

      We kunnen alle mogelijke partition id's op scherm brengen door l in te tikken. Dan krijgen we volgend scherm:

      Command (m for help): l

       0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
       1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
       2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
       3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
       4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
       5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
       6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
       7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
       8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
       9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
       a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
       b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
       c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
       e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
       f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
      10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
      11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
      12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
      14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
      16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
      17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
      18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
      1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
      1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
      1e  Hidden W95 FAT1


      De meest courante id's heb ik vetjes afgebeeld.

    7. een logical volume van 50GB voor een database

      Command (m for help): n               
      Command action
         l   logical (5 or over)
         p   primary partition (1-4)
      l
      First cylinder (8358-38913, default 8358):  
      <enter>
      Using default value 8358
      Last cylinder, +cylinders or +size{K,M,G} (8358-38913, default 38913):
      +50G

      Command (m for help):
      p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot   Start      End      Blocks   Id  System
      /dev/sda1            1     3917    31463271   83  Linux
      /dev/sda2         3918     7834    31463302+  83  Linux
      /dev/sda3         7835    38913   249642067+   5  Extended
      /dev/sda5         7835     8357     4200966   82  Linux swap / Solaris
      /dev/sda6         8358    14885    52436128+  83  Linux


      Hier valt ook weer niet veel te melden: een gelijkaardige handeling als bij de vorige partitie. Hier is geen toggle nodig.

    8. een logical volume van de rest van schijf voor /home

      Command (m for help): n
      Command action
         l   logical (5 or over)
         p   primary partition (1-4)
      l
      First cylinder (14886-38913, default 14886):<enter>
      Using default value 14886
      Last cylinder, +cylinders or +size{K,M,G} (14886-38913, default 38913): <enter>
      Using default value 38913

      Command (m for help):
      p

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot   Start      End      Blocks   Id  System
      /dev/sda1            1     3917    31463271   83  Linux
      /dev/sda2         3918     7834    31463302+  83  Linux
      /dev/sda3         7835    38913   249642067+   5  Extended
      /dev/sda5         7835     8357     4200966   82  Linux swap / Solaris
      /dev/sda6         8358    14885    52436128+  83  Linux
      /dev/sda7        14886    38913   193004878+  83  Linux


      En ook hier niets nieuws; we gebruiken hier twee keer de default cylinder value, want we willen weer de rest van schijf.

      Onze partitietabel is nu compleet en correct. We mogen niet vergeten hem op te slaan.

    9. partitietabel opslaan

      We moeten we de partitietabel nog wegschrijven met w
      (als je denkt dat je alles hebt verpest kun je ook uit fdisk weg zonder te schrijven met q)

      Command (m for help): w   
      The partition table has been altered!

      Calling ioctl() to re-read partition table.
      Syncing disks.
    10. herstarten

      Vooraleer we kunnen formatteren moeten we nog herstarten. De huidige live-cd of linux distributie maakt waarschijnlijk nog gebruik van de oude partitietabel. We controlleren eerst nog even met

      # fdisk -l

      Disk /dev/sda: 320.1 GB, 320072933376 bytes
      255 heads, 63 sectors/track, 38913 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      Disk identifier: 0xa70f5c6c

         Device Boot   Start      End      Blocks   Id  System
      /dev/sda1            1     3917    31463271   83  Linux
      /dev/sda2         3918     7834    31463302+  83  Linux
      /dev/sda3         7835    38913   249642067+   5  Extended
      /dev/sda5         7835     8357     4200966   82  Linux swap / Solaris
      /dev/sda6         8358    14885    52436128+  83  Linux
      /dev/sda7        14886    38913   193004878+  83  Linux


      en herstarten daarna de linux pc met een

      # shutdown -r now