Ubuntu와 CentOS를 사용하면 /dev/sda
및이 표시 /dev/vda
됩니다. 그래서 위의 두 가지 차이점이 무엇인지 이해할 수 없습니까?
Ubuntu와 CentOS를 사용하면 /dev/sda
및이 표시 /dev/vda
됩니다. 그래서 위의 두 가지 차이점이 무엇인지 이해할 수 없습니까?
답변:
그들은 다른 장치입니다.
/dev/sda
SCSI 또는 (아마도) 사용자 드라이브에 SCSI 드라이브 API를 제공하는 첫 번째 디스크입니다. 여기에는 libata를 사용하는 SATA 드라이브 및 IDE 드라이브가 포함됩니다. 이것은 IDE / SATA / SCSI / etc 일 수도 있습니다. 하이퍼 바이저에 의해 에뮬레이트 된 드라이브.
/dev/vda
가상화 인식 디스크 드라이버를 사용하는 첫 번째 디스크입니다. 하이퍼 바이저가 일부 하드웨어 인터페이스를 에뮬레이션 할 필요가 없으므로 성능이 훨씬 좋아야합니다.
디스크가 두 인터페이스에서 모두 VM에 노출 된 경우 /dev/vda
거의 확실히 더 빠를 것이므로 선호해야합니다 .
/dev/vda
. 그 외에는 ... 왜 그런 짓을했는지 모르겠습니다. 실제로 어딘가에서 수행 된 것을보고 있다면 아마도 자체 질문의 가치가 있습니다.
/dev/sdx
및 /dev/hdx
물리적 (하드) 디스크 드라이브 또는 에뮬레이트 물리적 (하드) 디스크 드라이브입니다. 커널이나 일부 프로그램 I / O가 이것에 해당 될 때, 디스크를 올바른 위치로 가져오고 모든 종류의 물리적 인 "재료"를 수행하는 것과 같은 모든 종류의 작업을 수행합니다.
/dev/vdx
가상 (하드) 디스크 드라이브 용입니다. I / O를 할 때 모든 커널은 비트를 읽고 쓸 필요가 있고 가상화가 완료되었음을 가상화 소프트웨어에 알려줍니다. 일반적으로 vdx
커널은 하드 드라이브에 임의의 정크 정크를 모두 수행하도록 지시 할 필요가 없으므로 VM 하이퍼 바이저에 작업을 수행하기 만하면되기 때문에 실제로는 필요하지 않습니다.
나는 "물건"이라는 단어에 대해 사과한다. 나는 더 나은 단어를 생각할 수 없었다.
에서 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 등 다른 하드웨어 유형일 수 있습니다.
/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으로 지정되어 있음을 알 수 있습니다. 메이저 / 분을 연결된 테이블과 비교하여 거의 모든 장치 파일을 식별 할 수 있습니다.