Difference between the file server and storage server?
The answer lies in how file systems are created. When you install any operating system, one of the operations is to create a file system from your SSD or Hard Drive. The drives present their storage to the operating system as addressable blocks. In order to utilize blocks, you must create a file system using these blocks. Examples would be NTFS, HFS+, ext4, Stornext, etc.
In large organizations, storage must be managed, allocated to various servers, increase or subtracted as conditions warrant. This can’t be done with local hard drives. Therefore large disk arrays are bought and maintained separately. They are connected to their respective servers via Fibre Channel or Ethernet (iSCSI). They are usually connected through switches, again either Fibre Channel or Ethernet. These are considered storage area networks (SANs). The disk arrays can be considered storage servers. They look to the servers as hard disks and they must have a file system in order to be used.
File servers manage the storage at the file level. In a Windows world, they would be considered network shares. The clients are not responsible for creating file system. Also File servers inherently can have multiple clients since the file server themselves manage writing to the storage maintaining coherency.
Why do both exist? For one thing , one cannot run an operating system purely from a file server. Also from an API standpoint you can write programs that require one or the other. This is especially true in Windows.
It is generally believed that File servers are best for sharing and SANs have best performance. However, there are high performance distributed file servers like Isilon that mitigate the bottleneck in using file servers. Conversely, block addressable storage can be used as a clustering file system like for high performance multiuser applications.