ASMLib for Linux is not required, but it simplifies device management. For instance, it automatically discovers ASM devices and provides them under /dev/oracleasm. To unload ASMLib you need to stop your ASM instance, which is using those devices.
If you do not use ASMLib you will need to configure the udev subsystem to set oracle device ownership and permissions and configure the appropriate ASM diskstring parameter. Keep in mind that the device tree is under Linux kernel 2.6 is rebuild at very system restart, which resets the ownership of devices to root, which won't work for ASM.
And how it is connected with the ASM instance - I mean ASMlib, why it cannot be unmounted while ASM instance is running?
I thought that ASMlib is used for device management - labeling, connecting to /dev/oracleasm so it has not 'real' efect on ASM itself. I think it is just preparing devices for AMS so this is why I do not understand why it cannot be umnounted. Like separate process helping to user/admin deal with the devices, not helping ASM itself.
I am not against ASMlib (I will try udev, but ASMlib is simplifying things - at least for me ) - I saw there are many discussion, it is not my case, just wish to understand clearly.
ASMLib uses a version depending kernel driver to manage I/O and disk handles. It's obvious to me that you cannot or should not unload the module while you have programs relying on it.
Perhaps you find the following useful: https://blogs.oracle.com/wim/entry/asmlib