What is the difference between SAN, NAS and DAS?
What is the difference between SAN, NAS and DAS?
First it is best to define the difference between a block device and filesystem. This is easier grasped if you are familiar with UNIX because it makes an objective distinction between the two things. Still the same applies to Windows.
- A block device is a handle to the raw disk.
- Such as
/dev/sda
for a disk or/dev/sda1
for a partition on that disk.
- Such as
- A filesystem is layered on top of the block device in order to store data. You can then mount this.
- Such as
mount /dev/sda1 /mnt/somepath
.
- Such as
With those terms in mind it's then easier to see the distinction between the following.
-
DAS is a block device from a disk which is physically [directly] attached to the host machine.
- You must place a filesystem upon it before it can be used.
- Technologies to do this include IDE, SCSI, SATA, etc.
-
SAN is a block device which is delivered over the network.
- Like DAS you must still place a filesystem upon it before it can used.
- Technologies to do this include FibreChannel, iSCSI, FoE, etc.
-
NAS is a filesystem delivered over the network.
- It is ready to mount and use.
- Technologies to do this include NFS, CIFS, AFS, etc.
I would like to improve the answer of this question as it has been asked of me many times.
If you are asking the differences between DAS, NAS and SAN you are in the data storage context. In this area many technologies exist which share primary goals: the persistence and availability of your data.
Block devices and filesystems
Most storage devices share the same physical and logical structure, in order to be able to locate the data you want, you need a way to identify where your data resides, so this is the reason of why Hard Disk drives have sectors (or simply "blocks"). In many cases this reflects the layout of the data written into the physical medium. Accessing your data by addressing the sector number, while not very complex, is error-prone, and you have to keep track yourself of the data you write and the sectors you have written to. This is where a filesystem comes to the rescue, a simple filesystem will help you by addressing the blocks used and providing you a common interface to retrieve your data, the most common paradigm used is the folder/file structure (this is why is it called a filesystem).
So essentially a filesystem simplifies the interface with your data, and takes care of the housekeeping and remembering in which blocks/sectors it puts your stuff. Normally in a file system you will not refer to block numbers to get your data, but to filenames. This explains the difference between a block device and a filesystem, a filesystem must reside on a block device.
DAS
The simplest storage is a Hard Disk connected to your computer/server. Hard disk drives need to communicate somehow, and they need to use a well defined physical interface and protocol in order for your computer to understand them, the most common interface and protocol employed today for PC is the SATA or Serial ATA (Serial Advanced Technology Attachment). So a hard disk which is physically connected through the same interface to your PC is identified as Direct Attached Storage or DAS for short. To make it clear, ANY
block device which is directly connected to your system makes a DAS, even a USB stick (obviously the physical interface is USB). And unless you access your disk by block numbers, you need a file system on top of it in order to put it to good use.
NAS
But what if you want to provide access to your filesystem to other computers (for sharing or transferring files)? Many protocols have been created over the years to accomplish file sharing on a Network with other computers. I will only name the main ones, per Operating System: UNIX and similar - NFS; DOS/Windows - CIFS (a.k.a. SMB); Apple - AFP. What they do is share files over a network. Of course "file" implies an underlying filesystem structure and filesystem implies block device, but because it's done over a network it's called NAS - Network Attached Storage. All of these interfaces explicitly prohibit remote lookups of block addresses (for security reasons first) and normally such lookups are not even implemented. Network file systems can be considered safe enough to be used in a concurrent way (YMMV), the Protocol implementation will take care of problems due to concurrent access to the same resource (file), normally by locking the file to a single user/requester. While any computer can share files over a network and be called NAS, solely by the power of marketing, NAS has come to mean devices whose main purpose is to share files over the network. So, if you build your own server whose only purpose is to serve files over a network, is it a NAS? Of course it is. Typically (but not exclusively) a NAS device operates on TCP/IP networks and most can easily provide access to your data over the Internet.
SAN
Let's say that I like to read my data by block numbers, because I've written my own software but I'm in need of many disk drives, more than a single computer can host. The solution would be to share the disks of other computers, but as said before my NAS doesn't provide a way to look up block numbers remotely. So I will need to use another protocol to share my disk drives, one that doesn't need a file system to operate. The following interfaces/protocols/networks exists today to share disks over a network:
- SCSI - Small Computer System Interface. SCSI is a venerable low level protocol regularly used/encapsulated into secondary or transport protocols to send commands between controllers and disks. It is the under-pinning of many currently used protocols.
- SAS - Serial Attached SCSI. This allows creation of entire SANs, as SAS supports routing and addressing.
- FC - Fiber Channel
- iSCSI - Internet Small Computer System Interface. Usually uses Ethernet connectors and cables as its physical transport, but can run over any physical transport capable of transporting IP.
- ATAoE and similar - ATA over Ethernet
Virtually any low level protocol can be encapsulated into network packets and sent remotely to allow to access the hard disk as it was connected locally. Then you can read your data by block numbers or simply create a filesystem on the new block device.
Notice! I have intentionally left many subjects out from this answer (or severely simplified them), and I am sure I have misspelled words and wrongly wrote sentences. You are welcome to edit it and make it better!
References for further reading:
DAS on wikipedia
SAN on wikipedia
NAS on wikipedia
SCSI on wikipedia
While the descriptions from itmanagement.com are ok, I think they could be a little more specific.
With NAS, you're usually referring to something where you mount a shared storage space over a network using protocols like CIFS or NFS. The system on which these are mounted does not see them as local storage, it sees them as network storage. This is important because many programs will not allow the use of network storage for various things.
With SAN, the storage space is mounted via iSCSI or Fiber Channel. You're still using a network to mount the space, but the protocols allow the system doing the mounting to see the space as local storage, thus allowing more programs to use it properly.
DAS is simply storage directly attached (ie, not via a network) to a system. Internal harddrives, USB drives, etc.