Sự khác biệt giữa sdX và vdX


33

Khi tôi sử dụng Ubuntu và CentOS, tôi thấy /dev/sda/dev/vda. Vì vậy, tôi không thể hiểu sự khác biệt giữa hai bên trên là gì?


Là một trong những thứ này trong VM?
goldilocks

Vâng. Tôi đang sử dụng VM .. :)
Supun Rathnayake 18/07/14

Câu trả lời:


29

Chúng là những thiết bị khác nhau.

/dev/sdalà đĩa đầu tiên mà SCSI hoặc (nhiều khả năng) cung cấp API ổ đĩa SCSI cho vùng đất người dùng. Điều này bao gồm các ổ đĩa SATA và ổ đĩa IDE sử dụng libata. Đây cũng có thể là một IDE / SATA / SCSI / vv. ổ đĩa được mô phỏng bởi các trình ảo hóa.

/dev/vdalà đĩa đầu tiên sử dụng trình điều khiển đĩa nhận biết ảo hóa. Hiệu suất sẽ tốt hơn nhiều, vì trình ảo hóa không phải mô phỏng một số giao diện phần cứng.

Nếu đĩa đã được hiển thị với VM của bạn trong cả hai giao diện, bạn nên chọn /dev/vdavì nó gần như chắc chắn sẽ nhanh hơn.


2
Mục tiêu của việc có cả hai thiết bị / dev / sdX & / dev / vdX trong một máy là gì?
chromechris

1
@ user42076 Điều duy nhất tôi có thể nghĩ là một công ty lưu trữ không biết chính xác hệ điều hành nào bạn đang chạy trên máy ảo của mình có thể cung cấp cả hai giao diện, trong trường hợp HĐH của bạn không hỗ trợ nhanh hơn /dev/vda. Ngoài ra ... không biết tại sao bạn lại làm điều đó. Nếu bạn thực sự thấy nó được thực hiện ở đâu đó, có lẽ nó đáng để đặt câu hỏi.
derobert

@ user42076 Yea, tôi sẽ hỏi về điều này. . . . . lol
chromechris

15

/dev/sdx/dev/hdxlà ổ đĩa vật lý (cứng) hoặc ổ đĩa vật lý (cứng) mô phỏng. Khi kernel hoặc một số chương trình I / O của chúng, nó thực hiện tất cả mọi thứ như đưa đĩa đến đúng vị trí và thực hiện tất cả các loại "công cụ" vật lý cụ thể.

/dev/vdxdành cho ổ đĩa ảo (cứng). Tất cả các kernel làm khi tôi / O'd nói với phần mềm ảo hóa rằng các bit cần phải được đọc / ghi và nó đã được thực hiện. Nói chung, vdxnhanh hơn vì kernel không cần yêu cầu ổ cứng thực hiện một loạt các rác ngẫu nhiên thực sự không cần thiết bởi vì nó chỉ cần yêu cầu trình ảo hóa VM làm công cụ.

Tôi xin lỗi vì từ "thứ", tôi không thể nghĩ ra từ nào hay hơn: D


Từ này có nhiều ý nghĩa - cảm ơn câu trả lời của bạn.
mikeerv

1
Đồ đạc? Bạn không thể nghĩ về "một cái gì đó" hoặc "hoạt động IO được yêu cầu". Lời xin lỗi không được chấp nhận. ;)
Johan

4

Trong các udevquy tắc /lib/udev/rules.d/*được định nghĩa loại phần cứng nào nhận được tên từ kernel.

Xem các quy tắc cho /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}"

Vì vậy, /dev/vdalà người đầu tiên, ổ cứng ảo (không identificators phần cứng) và một id xe buýt virtio. Trông giống như một khách qemu / kvm.

Các quy tắc udev cho /dev/sd*các thiết bị có thể là các loại phần cứng khác nhau hơn: scsi, ata, ieee1394, usb, ...


2

/dev/ là một phần trong cây thư mục unix chứa tất cả các tệp "thiết bị" - unix thường xử lý mọi thứ bạn có thể truy cập dưới dạng tệp để đọc hoặc ghi vào.

Vì vậy, về bản chất, /dev/sdatất cả các tệp thiết bị được tìm thấy trong Ổ cứng của bạn trong khi đó /dev/vdalà tất cả các tệp thiết bị được tìm thấy trong không gian được phân bổ cho máy ảo của bạn.


0

Một cách khá cơ bản trong đó các /dev/.datệp thiết bị này khác nhau mà chưa được đề cập là chúng đại diện cho các số nhân chính khác nhau . Nếu bạn theo liên kết đó, bạn sẽ truy cập vào trang tài liệu nguồn hạt nhân chứa một bảng gồm hầu hết tất cả các số chính của thiết bị được phân bổ. Tập tin tương tự này cũng rất có khả năng trên đĩa cứng của bạn ở đâu đó.

Đây là những gì một CTRL-F nhanh chóng xuất hiện cho tôi về câu hỏi của bạn:

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.

Các 112số được liệt kê ở trên cho biết số lớn phân bổ và nhiều 0...8...200số được liệt kê trước mỗi dòng chỉ ra dãy số nhỏ càng tốt. Những con số này, trong số nhiều thứ khác, được nhân linux sử dụng để ghép các mô-đun trình điều khiển với các thiết bị vật lý - chúng xác định một loại thiết bị.

Danh sách trên chiếm 3 trong 4 trận đấu được tìm thấy với CTRL-F - đây là danh sách thứ tư:

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.

Dường như chắc chắn có một xu hướng giữa các vdaloại khối. Lưu ý rằng những điều này có thể không hoàn toàn cập nhật trong tài liệu - ngay cả khi được liên kết tại kernel.org. Rốt cuộc, các dev chỉ là con người. Nhưng một nguồn khác biệt có thể có khác là nơi các nhà bảo trì phân phối của bạn chọn định vị thiết bị. Một số lượng lớn các đường dẫn được liệt kê ít hơn nhiều so với các đề xuất - có nhiều cách để di chuyển chúng.

Và đây 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.

Như đã lưu ý - những đường dẫn này có thể được cấu hình rõ ràng - nhưng chính các số chính / phụ đóng vai trò là định danh khá rõ ràng. Bạn có thể kiểm tra những điều này bằng một statcuộc gọi đến một tập tin thiết bị.

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: -

Đó là của tôi /dev/sda. Có rất nhiều thông tin ở đó, nhưng ở bên phải bạn có thể thấy rằng nó Device Typeđược chỉ định là số chính 8, số phụ 0. Bạn có thể id khá nhiều bất kỳ tệp thiết bị nào bằng cách so sánh chính / phút của nó với bảng được liên kết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.