The only theory I can imagine for what you're describing is if you're booting into Safe Mode and if you are, Lion won't mount your 'unsafe' drives or even recognise them (in some instances).
nb. OS X will still write hidden dot files (.fsevents .DS_store .Trashes etc) to those unmounted drives / partitions / filesystems.
Although this theory is unlikely (as you'd surely notice the lengthy boot time - during which OS X rebuilds all the cache / kexts / preference files), you can find out whether you're booting into Safe Mode (and further investigate your issue) by opening the Terminal and sudo'ing to root.
To determine your boot parameters, type:
nvram -xp
Look for the "boot-args" field (which may not be there, in which case you aren't booting into Safe Mode) and if you have any of these listed, it means:
- -v boot verbose
- -x boot into Safe mode
- -s boot into Single-user mode (like an enhanced safe mode, used for low-level filesystem manipulation / repairs / investigation / etc
- -k boot without kernel extensions (if you have corrupted kexts, they should be rebuilt cleanly)
- -K boot without kernel cache (same deal re: corrupted cache)
You can add any of these to your nvram settings if you wish, and they'll be persistent (until you remove or adjust them) - this example below would boot you into Safe Mode with Verbose output indefinitely:
nvram boot-args="-x -v"
By design, you can safely clear your entire nvram settings and the system should rebuild upon next boot. To clear your nvram on the command line, type:
nvram -c
As for OS X recognising your drives, there is so much more information available using the Terminal. The diskutil command is very easy to use and has simple, clear instructions and output. Type something like:
diskutil list
and you'll see all disks / drives / partitions (mounted and unmounted) listed.
To see all your mounted filesystems (and their mount-points), simply type:
mount
You can mount your EFI system partition by creating a directory to use as a mountpoint:
mkdir /Volumes/EFI
then mount the 'hidden' system partition
mount_msdos /dev/disk0s1 /Volumes/EFI
or
mount -t vfat -o rw /dev/disk0s1 /Volumes/EFI
(-t is the filesystem, -o denotes mount params [rw is read/write, use ro for readonly])
and to unmount
umount -f /Volumes/EFI
diskutil and hdiutil commands give you a lot of information which will almost certainly give you enough information to work out what's wrong with the unmountable drive.
Best Answer
You can remount an ejected hd using "hdiutil attach" and the appropriate /dev/ device (the BSD name under System Information). As you said, this does not work for flash drives (the /dev/ device will disappear).
Will unmount and remount all USB storage devices...