Is it not possible If my storage is mounted on /u01 and I will create the directory within "u01/" /postgres9.4/data. And now I want to initialize my data within this directory ("/u01/postgres9.4/data").
There is any specific reason to use only this by default directory "/var/lib/pgsql/9.4/data".
you will need to mess with selinux tags to get it to cooperate.
And if I want to keep (("/u01/postgres9.4/data) this directory then what should be the command of initdb because command giving the error.
create file /etc/sysconfig/pgsql/postgresql-9.4 and add the line PGDATA=/u01/postgres9.4/data then run the postgreql94-setup initdb, it will pick up this setting and use it, as will the systemd service scripts.