This is not shown in VirtualBox manual, but it makes a better sense to me to address the raw disk or partition by its name or UUID when creating the VMDK file:
instead of
VBoxManage internalcommands createrawvmdk -filename .VirtualBox/Machines/drive.vmdk -rawdisk /dev/sdb
it is better to use e.g.:
VBoxManage internalcommands createrawvmdk -filename .VirtualBox/Machines/drive.vmdk -rawdisk /dev/disk/by-id/usb-SAMSUNG_HD503HI_1651001153fd-0:0
This way, the virtual device is not affected by the device name (dev/sdX) change