LinuxはHDDを何台まで管理できるのですか。

SCSIディスク・ドライバが管理できるのは,標準では1万8278台までです。しかし必要があれば,約100万台までは比較的簡単に対応台数を増やせます。

 従来Linuxでは,パラレルATA接続のHDDはhdaやhdbのようなデバイス名,SCSI接続とシリアルATA接続のHDDはsdaやsdbのようなデバイス名で管理していました。しかし2006年11月にリリースされたカーネル2.6.19から,パラレルATA接続のHDDも基本的にはすべてSCSIディスクとして取り扱うことになり*1,デバイス名もSCSIディスクと共通化されました。つまり,ほぼすべてのHDDをSCSIディスクとして取り扱うことになった*2わけです。こうなると気になるのが「一体何台までSCSIディスクを接続できるのか」ということです。

 これに対する答えははっきりしています。2004年4月にリリースされたカーネル2.6.5から,2008年12月にリリースされたカーネル2.6.28に至るまで「1万8278台」までのSCSIディスクを取り扱えます。この台数制限は,デバイス名の命名ルールとその制限に起因します。

 これらのカーネルでは,SCSIディスクの最初の26台はsda~sdzというデバイス名で管理します。そして27~702台めのディスクはsdaa~sdzzというデバイス名,そして703~1万8278台めのディスクはsdaaa~sdzzzというデバイス名で管理します。カーネル2.6.27までは図1の通り,sdzzzまでしかデバイス名を設定できないコードになっていたため,1万8278台が上限となります*3

図1●drivers/scsi/sd.cのデバイス名生成部分(カーネル2.6.27)

 カーネル2.6.28では図2の通りコードが改良されていて,sdaaaaなどのデバイス名を利用可能です。しかし標準ではdrivers/scsi/sd.hヘッダーで「SD_MAX_DISKS」という定数に1万8278が設定されていますから,上限値はこれまでと変わりません。

図2●drivers/scsi/sd.cのデバイス名生成部分(カーネル2.6.28)