fdisk is a menu driven program for creation and manipulation of partition tables.  It understands DOS type partition tables and BSD or SUN type disklabels.

But fdisk doesn't understand GUID Partition Table (GPT) and it is not designed for large  partitions(2TB).  In
particular case use more advanced GNU parted.

Here are some mostly used examples:

List the disk(or LUN) info and partition table

# fdisk -l /dev/sda

Disk /dev/sda: 299.9 GB, 299892736000 bytes
255 heads, 63 sectors/track, 36459 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: 0x0005ae60

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      208813+  83  Linux
/dev/sda2              27         218     1542240   83  Linux
/dev/sda3             219         480     2104515   82  Linux swap / Solaris
/dev/sda4             481       36459   289001317+   5  Extended
/dev/sda5             481         991     4104576   83  Linux
/dev/sda6             992        4179    25607578+  83  Linux
/dev/sda7            4180        7367    25607578+  83  Linux
/dev/sda8            7368        7434      538146   83  Linux
/dev/sda9            7435       36459   233141248   83  Linux

Another one, an empty disk lun

# fdisk -l /dev/mapper/SATA_A2_LUN15

Disk /dev/mapper/SATA_A2_LUN15: 1749.4 GB, 1749393866752 bytes
255 heads, 63 sectors/track, 212685 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

fdisk menu

# fdisk /dev/mapper/SATA_A2_LUN15
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x3114e3a7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/mapper/SATA_A2_LUN15: 1749.4 GB, 1749393866752 bytes
255 heads, 63 sectors/track, 212685 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: 0x3114e3a7

                     Device Boot      Start         End      Blocks   Id  System

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)

Create a partition

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-212685, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-212685, default 212685): +100G                         

Command (m for help): p

Disk /dev/mapper/SATA_A2_LUN15: 1749.4 GB, 1749393866752 bytes
255 heads, 63 sectors/track, 212685 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: 0x4417e08b

                     Device Boot      Start         End      Blocks   Id  System
/dev/mapper/SATA_A2_LUN15p1               1       13055   104863263   83  Linux

Change the partition type

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 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
Hex code (type L to list codes): bf
Changed system type of partition 1 to bf (Solaris)

Command (m for help): p

Disk /dev/mapper/SATA_A2_LUN15: 1749.4 GB, 1749393866752 bytes
255 heads, 63 sectors/track, 212685 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: 0x4417e08b

                     Device Boot      Start         End      Blocks   Id  System
/dev/mapper/SATA_A2_LUN15p1               1       13055   104863263   bf  Solaris

List partition type

You can either type L when you changing the partition type, or user l command

Command (m for help): l
..

Save the partition

Command (m for help): v
Remaining 3207058369 unallocated 512-byte sectors

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Extra options

Options:
 -b <size>                 sector size (512, 1024, 2048 or 4096)
 -c                        switch off DOS-compatible mode
 -h                        print help
 -u <size>                 give sizes in sectors instead of cylinders
 -v                        print version
 -C <number>               specify the number of cylinders
 -H <number>               specify the number of heads
 -S <number>               specify the number of sectors per track

-b, sector size, in recent kernel, it knows the sector size.

For other options, you can change the number you want, of course they are not for real physical numbers, so why would anyone want to do so? It looks useless to me.