How to create an MBR Partition

How to create an MBR Partition

 

Preamble: For all extensive purposes follow the same instructions for a GPT partition, keep in mind there are a few exceptions. These exceptions include using the gdisk (you can also use parted, but if you are familiar with fdisk it makes sense to just use gdisk) instead of the fdisk command. There are 128 primary partitions instead of 4 primary partitions. As well,  where with MBR partitions you can chose to change the disk label, GPT partitions require you to choose a specific disk label for each partition.

 

1) See what disks are currently available in this system through fdisk –l:

fdisk -l

 

 Example:

Disk /dev/xvda: 6442 MB, 6442450944 bytes

255 heads, 63 sectors/track, 783 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x7d833f39

 

Disk /dev/xvdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

  

Disk /dev/xvdc: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

 

Disk /dev/xvdd: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 byte

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

 

2) For this example, we will use fdisk /dev/xvdd, at command prompt, enter:

fdisk /dev/xvdd

 

3) To see available options in fdisk you can type m

Command (m for help):

Command action [all the actions you can execute in fdisk]

   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)

 

4) As you can see from the above example n is to add a new partition

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

 

5) First you enter in p for one of the primary partitions, then you enter 1

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-2610, default 1):

 

6) The next two steps you will enter in the first value and the last value for the partition

First cylinder (1-2610, default 1): 1

Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): 2610

 

7) If you put in + and number than you specifying the size of the disk:

Partition number (1-4): 1

First cylinder (1-2610, default 1): 1

Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G

 

8) You need to enter w into order to write the partition:

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

 

9) The l or L option allows you to list the specific label types for a new partition

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

 

10) If you want to change the System ID you can enter in t and then chose from the list above

Before:

    Device Boot      Start         End      Blocks   Id  System

/dev/xvdd1               1         262     2104483+  83  Linux

 

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): 8e

Changed system type of partition 1 to 8e (Linux LVM)

 

    Device Boot      Start         End      Blocks   Id  System

/dev/xvdd1               1         262     2104483+  8e  Linux LVM

 

11) Keep on doing it until using the entire partition

12) Mkfs –t [filesystem] and then partition in question, below example is changing filesystem for xvdd1 to ext4

mkfs -t ext4 /dev/xvdd1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

131648 inodes, 526120 blocks

26306 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=541065216

17 block groups

32768 blocks per group, 32768 fragments per group

7744 inodes per group

Superblock backups stored on blocks:

        32768, 98304, 163840, 229376, 294912

 

Writing inode tables: done

Creating journal (16384 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 25 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

13) Blkid - list all the UUID so you can attach it to /etc/fstab so the changes are persistent after reboot

Blkid

/dev/xvdd1: UUID="fc679b73-1259-4953-91bc-d0e4c85be15c" TYPE="ext4"

14) Need to create a location to mount device [either you can create a new directory to mount the partition or use an existing directory

15) Then you need to mount the filesystem to the file directory

Mount /dev/xvdd1 /mnt/testserver

16) You need to edit the /etc/fstab to make the partition persistent after rebooting the system, like the below example:

LABEL=/         /               ext4    defaults        0 0

LABEL=ebs-swap  none            swap    sw              0 0

devpts          /dev/pts        devpts  gid=5,mode=620  0 0

tmpfs           /dev/shm        tmpfs   defaults        0 0

proc            /proc           proc    defaults        0 0

sysfs           /sys            sysfs   defaults        0 0

#Add the below information

UUID="fc679b73-1259-4953-91bc-d0e4c85be15c" /mnt/testserver ext4 defaults  1 2

17) Then you need to run mount –a to make sure all devices are mounted

18) If you type df –h, you should see the filesystem, size, used space, available space, and where it is mounted on. If you missed or did something incorrectly it will not show up in a df –h

df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/xvde1      5.8G  1.4G  4.1G  26% /

tmpfs           299M     0  299M   0% /dev/shm

/dev/xvdd1      2.0G   68M  1.9G   4% /mnt/testserver

 

Important Things to note:

 

  • Be aware that the mount is connected to the filesystem not the mount location, so if you mount the filesystem to another location, the files will be in another location
  • After deleting or creating a partition, it is good practice to run the command partprobe (otherwise generic error message is Re-reading partition table failed with error: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe)
  • UUID mounts the partition with a unique ID as this ID will not change, but the mount part could change