sdX와 vdX의 차이점

sdX와 vdX의 차이점

Ubuntu와 CentOS를 사용하면 /dev/sda/dev/vda. 그럼 위의 두 가지의 차이점이 무엇인지 이해가 안 가시나요?

답변1

그것들은 다른 장치입니다.

/dev/sda첫 번째 SCSI 디스크이거나 사용자 공간에 SCSI 드라이버 API를 제공하는 디스크일 가능성이 높습니다. 여기에는 libata를 사용하는 SATA 드라이브 및 IDE 드라이브가 포함됩니다. IDE/SATA/SCSI 등일 수도 있습니다. 하이퍼바이저에 의해 에뮬레이트된 드라이브입니다.

/dev/vda가상화 인식 디스크 드라이버를 사용한 최초의 디스크입니다. 하이퍼바이저는 특정 하드웨어 인터페이스를 에뮬레이트할 필요가 없으므로 성능이 훨씬 향상됩니다.

디스크가 두 인터페이스 모두에서 VM에 이미 노출되어 있으면 /dev/vda더 빠르므로 선호해야 합니다.

답변2

/dev/sdx/dev/hdx물리적(하드) 디스크 드라이브 또는 시뮬레이션된 물리적(하드) 디스크 드라이브입니다 . 커널이나 일부 프로그램이 이에 대해 I/O를 수행할 때 디스크를 올바른 위치로 가져오고 다양한 물리 관련 "작업"을 수행하는 등 다양한 작업을 수행합니다.

/dev/vdx가상(하드) 디스크 드라이브와 함께 사용됩니다. 커널이 I/O를 수행할 때 수행하는 작업은 가상화 소프트웨어에 읽기/쓰기가 필요한 비트를 알려주는 것뿐입니다. 일반적으로 vdx커널은 VM 하이퍼바이저에게 무언가를 하라고 지시하기만 하면 되기 때문에 실제로는 필요하지 않은 임의의 쓰레기 작업을 하드 드라이브에 지시할 필요가 없기 때문에 더 빠릅니다.

"물건"이라는 단어에 대해 사과드립니다. 더 나은 단어가 생각나지 않았습니다. :D

답변3

커널에서 어떤 하드웨어가 어떤 이름을 얻는지는 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 게스트처럼 보입니다.

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

답변4

이러한 장치 파일에 대한 상당히 기본적인 /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 커널은 이 번호를 사용하여 드라이버 모듈을 물리적 장치와 쌍을 이루며 장치 유형을 식별합니다.

위 목록은 4경기 중 3경기를 차지합니다.CTRL-F- 네번째입니다.

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을 연결된 테이블과 비교하여 거의 모든 장치 파일을 식별할 수 있습니다.

관련 정보