sdX와 vdX의 차이점


33

Ubuntu와 CentOS를 사용하면 /dev/sda및이 표시 /dev/vda됩니다. 그래서 위의 두 가지 차이점이 무엇인지 이해할 수 없습니까?


VM에서이 중 하나입니까?
goldilocks

예. VM을 사용하고 있습니다. .. :)
Supun Rathnayake

답변:


29

그들은 다른 장치입니다.

/dev/sdaSCSI 또는 (아마도) 사용자 드라이브에 SCSI 드라이브 API를 제공하는 첫 번째 디스크입니다. 여기에는 libata를 사용하는 SATA 드라이브 및 IDE 드라이브가 포함됩니다. 이것은 IDE / SATA / SCSI / etc 일 수도 있습니다. 하이퍼 바이저에 의해 에뮬레이트 된 드라이브.

/dev/vda가상화 인식 디스크 드라이버를 사용하는 첫 번째 디스크입니다. 하이퍼 바이저가 일부 하드웨어 인터페이스를 에뮬레이션 할 필요가 없으므로 성능이 훨씬 좋아야합니다.

디스크가 두 인터페이스에서 모두 VM에 노출 된 경우 /dev/vda거의 확실히 더 빠를 것이므로 선호해야합니다 .


2
머신에 / dev / sdX 및 / dev / vdX 장치를 모두 갖는 목표는 무엇입니까?
chromechris

1
@ user42076 내가 생각할 수있는 것은 운영 체제가 더 빠르게 지원하지 않는 경우 VM에서 실행중인 OS가 두 가지 인터페이스를 모두 제공 할 수 있는지 정확히 모르는 호스팅 회사입니다 /dev/vda. 그 외에는 ... 왜 그런 짓을했는지 모르겠습니다. 실제로 어딘가에서 수행 된 것을보고 있다면 아마도 자체 질문의 가치가 있습니다.
derobert

@ user42076 예, 이것에 대해 물어볼 것입니다. . . . . lol
chromechris

15

/dev/sdx/dev/hdx물리적 (하드) 디스크 드라이브 또는 에뮬레이트 물리적 (하드) 디스크 드라이브입니다. 커널이나 일부 프로그램 I / O가 이것에 해당 될 때, 디스크를 올바른 위치로 가져오고 모든 종류의 물리적 인 "재료"를 수행하는 것과 같은 모든 종류의 작업을 수행합니다.

/dev/vdx가상 (하드) 디스크 드라이브 용입니다. I / O를 할 때 모든 커널은 비트를 읽고 쓸 필요가 있고 가상화가 완료되었음을 가상화 소프트웨어에 알려줍니다. 일반적으로 vdx커널은 하드 드라이브에 임의의 정크 정크를 모두 수행하도록 지시 할 필요가 없으므로 VM 하이퍼 바이저에 작업을 수행하기 만하면되기 때문에 실제로는 필요하지 않습니다.

나는 "물건"이라는 단어에 대해 사과한다. 나는 더 나은 단어를 생각할 수 없었다.


이 단어는 표현력이 풍부했습니다. 답변 해 주셔서 감사합니다.
mikeserv

1
물건? "무언가"또는 "요청 된 IO 작업"을 생각할 수 없었습니다. 사과는 용납되지 않습니다. ;)
Johan

4

에서 udev규칙은 /lib/udev/rules.d/*커널에서 어떤 이름을 가져옵니다 종류의 하드웨어의 어떤 정의된다.

에 대한 규칙을 참조하십시오 /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도 마찬가지 입니다 virtio. qemu / kvm 손님처럼 보입니다.

/dev/sd*장치에 대한 udev 규칙은 scsi, ata, ieee1394, usb 등 다른 하드웨어 유형일 수 있습니다.


2

/dev/ 유닉스 디렉토리 트리에서 모든 "장치"파일을 포함하는 부분입니다. 유닉스는 전통적으로 읽거나 쓸 파일로 액세스 할 수있는 모든 것을 처리합니다.

따라서 본질적으로 /dev/sda하드 드라이브에있는 /dev/vda모든 장치 파일 인 반면 가상 컴퓨터에 할당 된 공간에있는 모든 장치 파일입니다.


0

/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각 줄 앞에 나열된 숫자는 가능한 한 작은 수의 범위를 나타냅니다. 이 숫자는 무엇보다도 리눅스 커널에서 드라이버 모듈을 물리적 장치와 쌍을 이루기 위해 사용합니다.

위의 목록은 CTRL-F 에서 발견 된 4 개 중 3 개 일치를 나타 냅니다. 네 번째는 다음과 같습니다.

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으로 지정되어 있음을 알 수 있습니다. 메이저 / 분을 연결된 테이블과 비교하여 거의 모든 장치 파일을 식별 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.