So far we have shown you how to copy files between machines, log onto remote machines, and run commands on remote machines. While these Unix remote commands make computing on more than one machine easy, it is still far from the envisioned ``transparent computing environment'' mentioned earlier. The problem is that each machine has its own file storage, and therefore, if you log onto a different machine, you will get a different home directory and different files. You can, of course, try to maintain multiple sets of files and programs using rcp, but this is an ever increasing pain and waste of resources, especially as the scope of your problem and the number of machines you use grow.
The solution is to have only a single home directory on a single machine holding the hard disk containing your files. The other machines then mount these disks using a remote file system like NFS or AFS. To the user each machine appears to have the same hard disk. In practice, an NFS-mounted hard disk has the same look and feel as a local disk except it is slower, especially for writing files, and naturally its access is susceptible to network disturbances. The machine that actually contains the hard disk which other machines use is called a fileserver. It may be a general purpose workstation or a special purpose machine. In fact, with NFS any machine can be both server and importer of files.
Owing to the finite nature of transmission times, NFS is only useful when the sharing is at the same site, preferably on the same network. It also requires that the system administrators for each machine cooperate in configuring and sharing file systems. Configuring NFS mounts is not that complicated but it is beyond the scope of this book. One requirement worth mentioning is that each user hoping to share his or her files must have the same user ID and group id on all machines. If you have a different user ID on the remote machine, the files will look like they belong to different user and NFS will not let you edit or create files.
It is possible, and at times even desirable, to mount directories to machines of different computer architectures. This does create problems, however. First, programs compiled under one architecture will not run on a machine with a different architecture. Second, the user's setup files, such as .profile, may contain options or set paths that work on one machine but not on others.