There are many questions in there...
1) DNS and Active Directory can be installed on both servers. Having the same FQDN for two DNS servers seems a little strange question, as DNS servers are always specified by IP, never by FQDN. (Afterall, the DNS is who would translate the FQDN to the
IP in the first place...) The way to do it is to install active directory + DNS + global catalog on both servers and ensure that your clients have both IPs specified in their DNS settings. But this is a database forum, so the details on that are better off
somewhere else...
2) Using the storage: You can use pretty much any storage by now for a SQL Server database. The question is: Will both servers use the same storage? In this case be careful that you don't have your storage as a single point of failure, meaning: If you storage
breaks, you loose everything...
3) DB availability: This vastly depends on your SQL license and the effort you want to go throuhg. If both DBs have the same storage behind it you can use a SQL Server Failover Cluster to achieve high availability. But this one would need Windows Enterprise
Edition + SQL Enterprise Edition as far as I know. (I'm not a licensing expert though either...) Database mirroring is always an easy solution for this scenario, but keep in mind that you don't have automatic failover with two servers. You need to do the failover
manually after a server failure.
Here are some links for you:
http://msdn.microsoft.com/en-us/library/ms190941.aspx
http://msdn.microsoft.com/en-us/library/ff877884.aspx