web-dev-qa-db-ja.com

64ビットLinuxのハードドライブの最大数は?

64ビットLinuxマシンに接続できるハードドライブの最大数はありますか?私の状況にはVMが関係しているため、実用性には関心がありません。

7
monksy

From このLinuxQuestionsの投稿

Linuxは、ハードディスクの数に恣意的な制限を設けていません。

また、 Debianメーリングリストのこの投稿

それは簡単です。/dev/sdzの後に/ dev/sdaaが続きます。そして、/ dev/sdzzが/ dev/sdaaaになった後、ラップトップで800のISCSIターゲットを作成してログインすることでテストしました。 :)

および このブログ投稿

最新のLinuxカーネルでのSATAおよびSCSIドライブの場合、名前を導出するコードがsdzzzを超えて(理論的には)sdの後に29 zが続くことを除いて、上記と同じことが適用されます。

したがって、理論的には限界がありますが、実際には到達できません。

9
Renan

実際、SATAおよびUSBドライブを含むLinuxの抽象SCSIサブシステムによって公開されるドライブの数には制限があります。これは、デバイスファイルがメジャー/マイナーデバイス番号のペアでマークされており、SCSIサブシステムに割り当てられたスキームにこの暗黙の制限があるためです。

https://www.kernel.org/doc/Documentation/devices.txt

次の主要なオペコードが割り当てられます:8、65から71、および128から135、合計16の割り当てられたブロックになります。マイナーオペコードは、256個の可能な値(範囲0..255)に制限されています。各ディスクは16個の連続したマイナーオペコードを取得します。最初のオペコードはディスク全体を表し、次の15個はパーティションを表します。

let major = number of major allocated opcodes = 16
let minor = number of minor opcodes per major opcode = 256
let parts = number of minor opcodes per disk = 16
major * (minor / parts) = 16 * (256 / 16) = 256 possible drives

私は以前、人々が制限として128を書くのを見ました。 Linuxは最近128..135だと思いますが、これは矛盾を説明するでしょう。

命名スキーム(/dev/sdbz7)は、Linuxカーネルではなく、ユーザーランドによって選択されます。ほとんどの場合、これらはudev、eudev、またはmdevによって管理されます(以前は手動で作成されていましたが)。私は彼らの命名規則を知りません。システム管理者はデバイスの名前付けポリシーを変更できるため、必ずしもすべてのLinuxベースのシステムの名前付けデバイスに同じ方法で依存する必要はありません。

1
persona15

RHELテクノロジーの機能と制限 ページは、最近の十分なカーネルで少なくとも10000を提案します(「デバイスパスの最大数(「sd」デバイス)」の行を参照)。この量は、@ luiji-maryoで言及されている量よりも多くなります。理由は次のとおりです。

  1. 許可するように構成されている場合、デバイスにメジャー/マイナー番号を動的に割り当てることができます(詳細については、 https://www.kernel.org/doc/Documentation/devices.txt を参照してください)。
  2. マイナーなLinuxデバイス番号は8ビット値よりはるかに大きくなる可能性があります

これを自分自身に示す1つの方法は、scsi_debugモジュールを使用することです。

modprobe scsi_debug max_luns=10 num_tgts=128

主流のLinuxディストリビューションで少し待つと、さらに1280個のSCSIディスクができあがります。使用できます

ls -l <pathtodisk>

メジャー/マイナー番号を確認します。

注意(1):仮想化ソフトウェアは通常、VMに接続できるコントローラーの最大数にはるかに低い(数百以下など)制限があります vSphere 6.0の制限 )これらのコントローラーに接続できるディスクの最大数。そのため、Linuxの制限にそのように達する可能性はほとんどありません。

注意(2): [〜#〜] bsg [〜#〜][〜#〜] sg [〜#〜] の両方(BSG_MAX_DEVSSG_MAX_DEVSを介して)それぞれ)最大32768デバイスまで。どういうわけかディスク自体に/ dev /エントリが必要なかったとしても、これらの追加デバイスがないと、より特殊なSCSIコマンドを送信するのが困難になります。

1
Anon