by Brian Fitzgerald
Introduction
This article covers “[INS-30515] Insufficient space available in the selected disks” during grid launch.
System
Installing Oracle Clusterware 19c on top of Red Hat Linux.
Installation notes
In this article, the grid owner is oracle, group dba. The grid home is /u01/app/oracle_grid/product/1930/grid. Oracle base is /u01/app/oracle
The error
You run gridSetup.sh as oracle and you see this error:
Launching Oracle Grid Infrastructure Setup Wizard... [FATAL] [INS-30508] Invalid ASM disks. CAUSE: The disks [ORCL:ORA_ASM_GRID1_03, ORCL:ORA_ASM_GRID1_02, ORCL:ORA_ASM_GRID1_01] were not valid. ACTION: Please choose or enter valid ASM disks. [FATAL] [INS-30515] Insufficient space available in the selected disks. CAUSE: Insufficient space available in the selected Disks. At least, 8 MB of free space is required. ACTION: Choose additional disks such that the total size should be at least 8 MB.
The cause is almost never insufficient space. Read on.
Logs
In /u01/app/oracle_grid/product/1930/grid/cfgtoollogs/oui/GridSetupActions2026-07-28_03-40-30PM:
... Executing ... kfod ... INFO: [Jul 28, 2026 3:40:33 PM] Parsing Error 49802 initializing ADR at /u01/app/oracle INFO: [Jul 28, 2026 3:40:33 PM] Parsing ERROR!!! could not initialize the diag context
The cause
A tool can’t run under the oracle account because the log directory is owned by root.
drwxr-x---. 3 root root 27 Jul 29 20:05 /u01/app/oracle/diag/kfod
The log directory is owned by root because the tool previously ran as root and created a root-owned log directory. kfod ran during troubleshooting or a previous gridSetup attempt.
Later, gridSetup.sh ran as oracle. gridSetup.sh called kfod, which failed because it could not create a log file.
The fix
chown -R oracle:dba /u01/app/oracle/diag
gridSetup.sh ran fine immediately after this fix.
Not the cause
None of these was the cause here; any of them can be:
- Disks too small
- Disk ownership
- Disk not initialized
- Re-used disk. Disk not clean.
- ASM search string
- asmlib filtering
- selinux
- udev rules
- kfod reset disk ownership
- /tmp mounted noexec
- NAS files not zero-padded
- multipath setup
Research
If you reached this article by searching for “[INS-30515] Insufficient space available in the selected disks”, consider that there are over 15 articles that address this message. Few of those articles reach a conclusion.
The reason for the proliferation of articles is the prevalence of the failure itself. The reason why few articles document a solution is, first, the difficulty of finding one, and second, the needlessness of the knowledge: Once solved, the knowledge is needless to the discoverer. The article is for the next person.
Error handling
In many Oracle software modules, the error message matches the purpose of the module. If the purpose is to check disk space, then for any failure, the message says the same thing about disk space. “[INS-30515] Insufficient space available in the selected disks”.
When I write code, I handle errors differently. In fact, I rarely handle errors at all. I simply make sure that any failure causes the script to stop and display its error message unfiltered. I rarely write try – catch blocks. My functions do not return null; they throw an exception (which, as I said, I don’t catch).
I get a lot of pushback on this. The counterargument goes that if there is an error, it is imperative that we write code that handles it. The problem is that people sometimes write only the catching part and save the correct handling part for later. If later never arrives, the error gets absorbed. In gridSetup.sh, the coder put “try” around everything and wrote one error message.
“try – catch” is meant in the figurative sense: the implementation depends on the language. Code intercepts a useful error message and replaces it with an unhelpful one.
The Unix Philosophy
The Unix Philosophy states principles of clean, capable software design. Among those principles is the Rule of Repair: “Repair what you can — but when you must fail, fail noisily and as soon as possible.” Code should fail in a manner that is easy to localize and diagnose. Refer to The Art of Unix Programming (2003) by Eric Raymond.
If you are not sold on the Unix philosophy, consider that the writer of gridSetup.sh was not sold on it either.
Conclusion
Oracle software error handling follows a defective pattern: gridSetup.sh is not the only example. Oracle software prints a misleading error message. Pertinent facts are in the logs, GridSetupActions.log in this case.