UbuntuとCentOSを使用すると、/dev/sda
および/dev/vda
。では、上記の2つの違いは理解できませんか?
それらは異なるデバイスです。
/dev/sda
は、SCSIまたは(可能性が高い)SCSIドライブAPIをユーザーの土地に提供する最初のディスクです。これには、SATAドライブおよびIDE libataを使用するドライブが含まれます。これは、ハイパーバイザーによってエミュレートされるIDE/SATA/SCSI/etc。ドライブでもかまいません。
/dev/vda
は、仮想化対応ディスクドライバーを使用する最初のディスクです。ハイパーバイザーは一部のハードウェアインターフェイスをエミュレートする必要がないため、パフォーマンスは大幅に向上するはずです。
ディスクが両方のインターフェイスでVM=に公開されている場合は、/dev/vda
ほぼ確実に高速になるため。
/dev/sdx
および/dev/hdx
は、物理(ハード)ディスクドライブまたはエミュレートされた物理(ハード)ディスクドライブです。カーネルまたはいくつかのプログラムI/Oがこれらに対して行われると、ディスクを適切な場所に移動し、あらゆる種類の物理固有の「こと」を行うなど、あらゆる種類のことを行います。
/dev/vdx
は仮想(ハード)ディスクドライブ用です。 I/Oが行われるときにカーネルが行うことはすべて、ビットを読み書きする必要があることを仮想化ソフトウェアに伝え、それが完了したことです。一般にvdx
の方が高速です。これは、カーネルがハードドライブに、VMハイパーバイザーで何かをします。
「もの」という言葉をお詫び申し上げます。これ以上の言葉は考えられませんでした:D
/lib/udev/rules.d/*
のudev
ルールでは、カーネルからどの種類のハードウェアがどの名前を取得するかが定義されています。
/dev/vd*
のルールをご覧ください:
# partitions do not have hardware identifiers
ENV{DEVTYPE}!="disk", GOTO="persistent_storage_not_a_disk"
# nor do paravirtualized hard disks
KERNEL=="vd*", GOTO="persistent_storage_not_a_disk"
...
KERNEL=="vd*", ATTRS{serial}=="?*", \
ENV{ID_BUS}="virtio", ENV{ID_SERIAL}="$attr{serial}"
したがって、/dev/vda
は最初の仮想ハードドライブ(ハードウェアIDなし)であり、バスID virtio
です。 qemu/kvmゲストのように見えます。
/dev/sd*
デバイスのudevルールは、より異なるハードウェアタイプにすることができます:scsi、ata、ieee1394、usb、...
/dev/
は、すべての「デバイス」ファイルを含むunixディレクトリツリーの一部です。unixは、従来、読み取りまたは書き込み用のファイルとしてアクセスできるほぼすべてのものを扱います。
つまり、基本的に、/dev/sda
はハードドライブにあるすべてのデバイスファイルであり、/dev/vda
は仮想マシンに割り当てられたスペースにあるすべてのデバイスファイルです。
これらの/dev/.da
デバイスファイルが異なるのは、まだ言及されていないことです カーネルメジャー番号 を表すということです。そのリンクをたどると、割り当てられたデバイスのメジャー番号すべてのほとんどの表を含むカーネルソースのドキュメントページが表示されます。この同じファイルは、ハードディスクのどこかにある可能性が非常に高いです。
これはあなたの質問に関して私に素早くCTRL-Fが浮上したものです:
112 block IBM iSeries virtual disk
0 = /dev/iseries/vda First virtual disk, whole disk
8 = /dev/iseries/vdb Second virtual disk, whole disk
...
200 = /dev/iseries/vdz 26th virtual disk, whole disk
208 = /dev/iseries/vdaa 27th virtual disk, whole disk
...
248 = /dev/iseries/vdaf 32nd virtual disk, whole disk
Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 7.
112
上部にリストされている番号は、割り当てられたメジャー番号とさまざまな0...8...200
各行の前にリストされている番号は、可能なマイナー番号の範囲を示しています。これらの番号は、とりわけ、Linuxカーネルがドライバモジュールを物理デバイスとペアにするために使用します。これらはデバイスタイプを識別します。
上記のリストは、CTRL-Fで見つかった4つのマッチのうち3つを占めています-4番目は次のとおりです。
202 block Xen Virtual Block Device
0 = /dev/xvda First Xen VBD whole disk
16 = /dev/xvdb Second Xen VBD whole disk
32 = /dev/xvdc Third Xen VBD whole disk
...
240 = /dev/xvdp Sixteenth Xen VBD whole disk
Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 15.
確かにvda
ブロックタイプには傾向があるようです。これらは、kernel.orgでリンクされている場合でも、ドキュメントでは完全に最新ではない場合があることに注意してください。開発者は結局のところ、人間だけです。しかし、別の考えられる相違の原因は、ディストリビューションのメンテナーがデバイスを見つけることを選択した場所です。リストされているパスの多くは、提案にすぎません。それらを再配置する方法はたくさんあります。
そして、これがsda
です。
8 block SCSI disk devices (0-15)
0 = /dev/sda First SCSI disk whole disk
16 = /dev/sdb Second SCSI disk whole disk
32 = /dev/sdc Third SCSI disk whole disk
...
240 = /dev/sdp Sixteenth SCSI disk whole disk
Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 15.
すでに述べたように、これらのパスは非常に構成可能ですが、メジャー/マイナー番号自体はかなり明示的な識別子として機能します。これらは、デバイスファイルへのstat
呼び出しで確認できます。
stat /dev/sda
File: ‘/dev/sda’
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 5h/5d Inode: 7598 Links: 1 Device type: 8,0
Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk)
Access: 2014-07-18 11:10:13.112495427 -0700
Modify: 2014-07-16 18:59:41.313323401 -0700
Change: 2014-07-16 18:59:41.313323401 -0700
Birth: -
それは私の /dev/sda
。そこには多くの情報がありますが、右側にDevice Type
はメジャー番号8、マイナー番号0として指定されます。maj/ minをリンクされたテーブルと比較することにより、ほぼすべてのデバイスファイルをIDできます。