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