web-dev-qa-db-ja.com

sdXとvdXの違い

UbuntuとCentOSを使用すると、/dev/sdaおよび/dev/vda。では、上記の2つの違いは理解できませんか?

33

それらは異なるデバイスです。

/dev/sdaは、SCSIまたは(可能性が高い)SCSIドライブAPIをユーザーの土地に提供する最初のディスクです。これには、SATAドライブおよびIDE libataを使用するドライブが含まれます。これは、ハイパーバイザーによってエミュレートされるIDE/SATA/SCSI/etc。ドライブでもかまいません。

/dev/vdaは、仮想化対応ディスクドライバーを使用する最初のディスクです。ハイパーバイザーは一部のハードウェアインターフェイスをエミュレートする必要がないため、パフォーマンスは大幅に向上するはずです。

ディスクが両方のインターフェイスでVM=に公開されている場合は、/dev/vdaほぼ確実に高速になるため。

29
derobert

/dev/sdxおよび/dev/hdxは、物理(ハード)ディスクドライブまたはエミュレートされた物理(ハード)ディスクドライブです。カーネルまたはいくつかのプログラムI/Oがこれらに対して行われると、ディスクを適切な場所に移動し、あらゆる種類の物理固有の「こと」を行うなど、あらゆる種類のことを行います。

/dev/vdxは仮想(ハード)ディスクドライブ用です。 I/Oが行われるときにカーネルが行うことはすべて、ビットを読み書きする必要があることを仮想化ソフトウェアに伝え、それが完了したことです。一般にvdxの方が高速です。これは、カーネルがハードドライブに、VMハイパーバイザーで何かをします。

「もの」という言葉をお詫び申し上げます。これ以上の言葉は考えられませんでした:D

15
Zeb McCorkle

/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、...

4
chaos

/dev/は、すべての「デバイス」ファイルを含むunixディレクトリツリーの一部です。unixは、従来、読み取りまたは書き込み用のファイルとしてアクセスできるほぼすべてのものを扱います。

つまり、基本的に、/dev/sdaはハードドライブにあるすべてのデバイスファイルであり、/dev/vdaは仮想マシンに割り当てられたスペースにあるすべてのデバイスファイルです。

2
ryekayo

これらの/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できます。

0
mikeserv