Khi tôi sử dụng Ubuntu và CentOS, tôi thấy /dev/sda
và /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ì?
Khi tôi sử dụng Ubuntu và CentOS, tôi thấy /dev/sda
và /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ì?
Câu trả lời:
Chúng là những thiết bị khác nhau.
/dev/sda
là đĩ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/vda
là đĩ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/vda
vì nó gần như chắc chắn sẽ 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.
/dev/sdx
và /dev/hdx
là ổ đĩ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/vdx
dà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, vdx
nhanh 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
Trong các udev
quy 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/vda
là 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, ...
/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/sda
tất cả các tệp thiết bị được tìm thấy trong Ổ cứng của bạn trong khi đó /dev/vda
là 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.
Một cách khá cơ bản trong đó các /dev/.da
tệ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 112
số được liệt kê ở trên cho biết số lớn phân bổ và nhiều 0...8...200
số đượ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 vda
loạ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 stat
cuộ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.