When is it best to use VMDK, RDM-V or RDM-P?
I have always defaulted to using the standard VMFS5 Datastores with VMDK files for each server. However I typically use RDM-V when I need an excessive amount of storage on a VM for something like archive data storage or backup servers. On these systems I would give the server a OS Partition, and then a Raw mapped Data partition. Is there a reason not to do this?
There's no much point in using RDM these days unless your VM is sort of a "controller" VM and it uses ZFS or similar to aggregate multiple individual physical disks into single unified namespace. Think about Nutanix for example. For all other cases VMDK is just as well I/O performing as RDM but RDM-x doesn't support at least some nice features and has issues with backup applications.
http://houseofbrick.com/vmfs-vs-rdm-part-i/
https://www.reddit.com/r/vmware/comments/3wghbf/do_you_use_rdms_anymore/
The only exception is multi-PB volumes of course but in such a case you simply don't have a choice with VMDK.
VMDKs are performing very good and I haven’t seen almost any difference between VMDK and RDM. Of course, you have to pay attention to the type of provisioning since Eager Zero vs Lazy Zero VMDKs performance differs a lot https://communities.vmware.com/thread/436685?start=0
If you need some virtualized storage shared or mirrored between hosts you can use an additional software storage controller, so-called “controller VM” like Starwind https://www.starwindsoftware.com/starwind-virtual-san that has nice additional features like caching/deduplication that native VMDK does not.
RDM lets the storage array do things like do array level snapshots of volumes. Maybe only useful for large databases, but it is still in use.
Its a question of functionality, whether you use more storage features at the virtualization level or the array level.