What do people mean when they say 'Logical' in terms like Logical separation, Logical partition, Logical grouping etc. in software ? I know what 'Virtual' means, it means something that does not actually exist, a non existent 'thing' mapped to something that actually/physically exists. Does 'Logical' also mean the same ?
There are similarities and there are differences.
Virtual is, as you say, a layer on top of a physical layer. We have virtual data storage, virtual operating systems, etc. These virtual "things" map to real things, real storage, and real computer hardware.
Logical is a way of thinking that removes physical constraints. Back when computer hardware was lots more expensive, lots slower, and limited in size, we designed logical databases that were fully normalized, and then made the changes necessary so that the databases would run on the actual computer hardware available at the time.
Virtual is an imaginary thing that has to use real things, while logical is an imaginary thing that is not limited by real things.
Logical Separation is separating by labelling.
ie. my hard disk is one drive, but I'm calling this bit C and this bit D. And this physically separate drive I'm calling A. Now I have 3 "drives"
my application is all one executable, but I'm calling this bit the business layer and this bit the data layer
Virtual is used in many different contexts, so its hard to pin down a single meaning. But if we pick the same context of disk drives a "Virtual Drive" is one which is emulated in memory.
Virtual pertains to appearance (it isn't necessarily real but it looks that way and can pass as such). It literally means manly worthiness, as in what it is capable of, focusing on quality rather than on physical properties.
Logic pertains to reasoning. To the ability to "talk" about something or in our world, to code. To taking steps that yield a solution. As such it is tied to language and naming things.