Since there is no unallocated memory available at present, I need to first create some unallocated memory from of one the partitions (/dev/nvme0n1p3, /dev/nvme0m1p4, /dev/nvme0n1p5, /dev/nvme0n1p8). Then, I need to make that memory available either at the beginning or end of the root partition (/dev/nvme0n1p7). After that, I have to extend / resize the root partition (as it is almost full).

Now, how to perform all of the operations without losing any of the data or formatting whole system?
/dev/nvme0n1p7. Then you can resize your root partition. There is ALWAYS a risk of data loss when messing with partitions, so backups are strongly recommended. Your process will take time, but it can be done. This should be done also in a Live environment like a Live USB / DVD. Do not move the EFI or the Microsoft Resevered partitions as that could make it non-bootable. – Terrance Dec 28 '20 at 15:49