What is the maximum size of single (i)SCSI LUN from perspective of SCSI protocol, what is the limit?


The answer would appear to be heavily dependent on the generation of the SCSI protocol, as it has gone through a handful of revisions through its days of glory.

First, 512 bytes = 2^9 bytes.

The earliest SCSI protocols used 21-bit LBA. Using 512-byte blocks, this gives 2^21 * 2^9 bytes or 1 GiB addressable space. (2^21 * 2^9 = 2^30.) (source)

Newer SCSI variants allow for 32-bit LBA addresses, which gives you 2^41 bytes (2 TiB) addressable. (source) But also see below.

Current in ATA is LBA48, or 48-bit LBA, although I cannot find any definitive statement on whether any current variant of SCSI uses 48-bit LBA. (It makes sense, though, and some Googling provides some fairly strong indications that such is the case. If anyone has a definitive source either way, please comment.) This gives you 2^57 bytes (128 PiB) addressable over the protocol itself, assuming 512 byte blocks. If we are allowed to raise this to 4096 (2^12) byte blocks, that becomes 2^60 bytes = 1 EiB.

According to a comment left by JdeBP, in SCSI, 64-bit LBA support has been mandatory since the turn of the century. With 512 byte sectors and 64-bit addresses, that gives us 2^73 bytes addressable, or 8 ZiB. A ZiB is 1024^3 TiB.

So the realistic answer with current generation hardware is probably either 8 ZiB or 128 PiB maximum LUN size addressable over (i)SCSI, with the former being more likely.

While a total storage capacity of 128 PiB is possible to approach in really large setups, 8 ZiB seems to me to be well out of pretty much anyone's reach for now. Using these newfangled 8 TB drives, that would require approximately 1000^3 = 10^9 drives, for a power requirement for just keeping them spinning of approaching 10 MW.

  • 48 bits are for toys. ☺ SCSI's 16-byte CDBs use 64-bit logical block addresses. This has been the case since the 1990s, and implementing the read(16) and write(16) commands has been mandatory for DASD targets since the turn of the century. As I wrote a decade ago this puts the maximum size supported by the SCSI protocol in the ZiBs. – JdeBP Apr 15 '15 at 16:11
  • @JdeBP I updated the answer. Does it feel less like talking about toys, now? (Note that this is Super User, not Server Fault...) – a CVn Apr 15 '15 at 19:36
  • Thanks for answer. @JdeBP I've placed this question here, cause no meaningful I got off the google (at least not in 1st result page) and even not here. – nudzo Apr 16 '15 at 6:51
  • It's a lot easier to find if one knows the answer ahead of time, and searches for "8.0ZiB". ☺ "8ZB" gets one Microsoft on the subject. The proper way to approach this, though, is not random phrase match by Google Web. I learned it by buying books on SCSI — several in fact (I read both Schmidt and Sawert on the subject, for starters.) — then reading the actual SCSI standards documents (including the SBC documents) which laid out the newer CDB fomats and command sets that postdated the books, and then writing a SCSI DASD class device driver. – JdeBP Apr 16 '15 at 8:25

This is depended on vendor, EMC2 has a limit of 1.999TB in their VNXe3300. It will be a mixture of vendor presenting the LUN, the application layer using the LUN and any OS layer mounting the LUN.

  • OP specifically asked about the SCSI protocol itself. – a CVn Apr 15 '15 at 10:59
  • Yes, so there is no limit. You can use any size LUN that the device can present. There is no limit on the protocol at all. The only limiting factor is the vendor. – 0x0000001E Apr 15 '15 at 11:03
  • "No limit at all" is misleading, even if the limit is very large. There is always a limit somewhere. It might be so large that it does not matter in practice but that doesn't mean there is no limit, it only means that the limit does not matter in practice. – a CVn Apr 16 '15 at 8:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.