Ketika saya menggunakan Ubuntu dan CentOS, saya melihat /dev/sda
dan /dev/vda
. Jadi saya tidak mengerti apa perbedaan antara dua di atas?
Ketika saya menggunakan Ubuntu dan CentOS, saya melihat /dev/sda
dan /dev/vda
. Jadi saya tidak mengerti apa perbedaan antara dua di atas?
Jawaban:
Mereka adalah perangkat yang berbeda.
/dev/sda
adalah disk pertama yang entah SCSI atau (lebih mungkin) menyediakan drive SCSI API ke pengguna tanah. Ini termasuk drive SATA dan drive IDE menggunakan libata. Ini juga bisa berupa IDE / SATA / SCSI / dll. drive ditiru oleh hypervisor.
/dev/vda
adalah disk pertama yang menggunakan driver disk virtualisasi-sadar. Kinerja harus jauh lebih baik, karena hypervisor tidak harus meniru beberapa antarmuka perangkat keras.
Jika disk telah terkena VM Anda di kedua antarmuka, Anda harus memilih /dev/vda
karena hampir pasti akan lebih cepat.
/dev/vda
. Selain itu ... tidak tahu mengapa Anda melakukannya. Jika Anda benar-benar melihatnya dilakukan di suatu tempat, mungkin itu layak untuk ditanyakan sendiri.
/dev/sdx
dan /dev/hdx
merupakan drive disk fisik (keras) atau drive disk fisik (keras) yang diemulasikan. Ketika kernel atau program I / O's untuk ini, ia melakukan segala macam hal seperti membawa disk ke tempat yang tepat dan melakukan segala macam "barang" spesifik fisik.
/dev/vdx
adalah untuk drive disk virtual (keras). Semua kernel tidak ketika itu I / O akan memberitahu perangkat lunak virtualisasi bahwa bit perlu dibaca / ditulis dan selesai. Secara umum, vdx
ini lebih cepat karena kernel tidak perlu memberitahu hard drive untuk melakukan sejumlah sampah acak yang benar-benar tidak diperlukan karena hanya perlu memberitahu hypervisor VM untuk melakukan hal-hal.
Saya minta maaf untuk kata "barang," saya tidak bisa memikirkan kata yang lebih baik: D
Dalam udev
aturan di /lib/udev/rules.d/*
didefinisikan jenis perangkat keras mana yang mendapatkan nama dari kernel.
Lihat aturan untuk /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}"
Begitu /dev/vda
juga yang pertama, hard drive virtual (tidak ada pengidentifikasi perangkat keras) dan id bus virtio
. Sepertinya tamu qemu / kvm.
Aturan udev untuk /dev/sd*
perangkat dapat berupa tipe perangkat keras yang lebih berbeda: scsi, ata, ieee1394, usb, ...
/dev/
adalah bagian dalam pohon direktori unix yang berisi semua file "perangkat" - unix secara tradisional memperlakukan hampir semua yang dapat Anda akses sebagai file untuk dibaca atau ditulis.
Jadi pada intinya, /dev/sda
semua file perangkat ditemukan di Harddrive Anda sedangkan /dev/vda
semua file perangkat ditemukan di ruang yang dialokasikan untuk mesin virtual Anda.
Satu cara yang cukup mendasar di mana /dev/.da
file - file perangkat ini berbeda yang belum disebutkan adalah bahwa mereka mewakili nomor-nomor utama kernel yang berbeda . Jika Anda mengikuti tautan itu, Anda akan mendarat di halaman dokumentasi sumber kernel yang berisi tabel sebagian besar semua nomor utama perangkat yang dialokasikan. File yang sama ini juga sangat mungkin ada di harddisk Anda di suatu tempat.
Inilah yang diajukan CTRL-F singkat untuk saya mengenai pertanyaan Anda:
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.
The 112
nomor yang tercantum di atas menunjukkan angka utama dialokasikan dan berbagai 0...8...200
nomor yang terdaftar sebelum setiap baris menunjukkan kemungkinan rentang jumlah kecil. Angka-angka ini, di antara banyak hal lain, digunakan oleh kernel linux untuk memasangkan modul driver dengan perangkat fisik - mereka mengidentifikasi tipe perangkat.
Daftar di atas menyumbang 3 dari 4 pertandingan yang ditemukan dengan CTRL-F - inilah yang keempat:
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.
Tampaknya ada kecenderungan di antara vda
jenis blok. Perhatikan bahwa ini mungkin tidak sepenuhnya terbaru dalam dokumentasi - bahkan sebagaimana ditautkan di kernel.org. Bagaimanapun, para devs hanyalah manusia. Tetapi sumber ketidaksesuaian lain yang mungkin adalah di mana pengelola distribusi Anda memilih untuk menemukan perangkat. Sejumlah besar jalur yang terdaftar jumlahnya tidak lebih dari saran - ada banyak cara untuk memindahkannya.
Dan inilah 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.
Seperti yang sudah dicatat - jalur ini sangat dapat dikonfigurasi - tetapi bilangan utama / minor sendiri berfungsi sebagai pengidentifikasi yang cukup eksplisit. Anda dapat memeriksanya dengan stat
panggilan ke file perangkat.
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: -
Itu milik saya /dev/sda
. Ada banyak informasi di sana, tetapi di sebelah kanan Anda dapat melihat bahwa Device Type
itu ditentukan sebagai nomor utama 8, nomor kecil 0. Anda dapat id hampir semua file perangkat dengan cara itu dengan membandingkan maj / min ke tabel yang ditautkan.