ความแตกต่างระหว่าง sdX และ vdX


33

เมื่อฉันใช้ Ubuntu และ CentOS ผมเห็นและ/dev/sda /dev/vdaดังนั้นฉันไม่สามารถเข้าใจความแตกต่างระหว่างสองข้างต้นคืออะไร


เป็นหนึ่งใน VM หรือไม่
goldilocks

ใช่. ฉันกำลังใช้ VM .. :)
Supun Rathnayake

คำตอบ:


29

พวกมันต่างกันอุปกรณ์

/dev/sdaเป็นดิสก์แผ่นแรกที่มีทั้ง SCSI หรือ (มีแนวโน้มมากกว่า) ที่จะให้ API ไดรฟ์ SCSI แก่ผู้ใช้ ซึ่งรวมถึงไดรฟ์ SATA และไดรฟ์ IDE ที่ใช้ libata นี่อาจเป็น IDE / SATA / SCSI / ฯลฯ ไดรฟ์จำลองโดย hypervisor

/dev/vdaเป็นดิสก์แผ่นแรกที่ใช้ไดรเวอร์ดิสก์ที่รับรู้ถึงการจำลองเสมือน ประสิทธิภาพควรดีขึ้นมากเนื่องจากไฮเปอร์ไวเซอร์ไม่จำเป็นต้องจำลองฮาร์ดแวร์อินเตอร์เฟส

หากดิสก์ถูกเปิดเผยต่อ VM ของคุณภายใต้อินเทอร์เฟซทั้งสองคุณควรเลือก/dev/vdaให้เร็วขึ้นกว่าเดิม


2
อะไรคือเป้าหมายของการมีทั้งอุปกรณ์ / dev / sdX & / dev / vdX ในเครื่อง?
chromechris

1
@ user42076 สิ่งเดียวที่ฉันจะคิดว่าเป็น บริษัท โฮสติ้งที่ไม่ได้รู้ว่าสิ่งที่ OS ที่คุณกำลังทำงานอยู่บน VM ของ บริษัท /dev/vdaอาจมีการเชื่อมต่อทั้งในกรณีที่ระบบปฏิบัติการของคุณไม่สนับสนุนได้เร็วขึ้น นอกเหนือจากนั้น ... ไม่รู้เลยว่าทำไมคุณถึงทำ หากคุณเห็นมันทำที่ไหนสักแห่งจริง ๆ แล้วก็น่าจะเป็นคำถามของตัวเอง
derobert

@ user42076 ใช่ฉันจะถามเกี่ยวกับเรื่องนี้ . . . . lol
chromechris

15

/dev/sdxและ/dev/hdxเป็นดิสก์ไดรฟ์แบบฟิสิคัล (ฮาร์ดดิสก์) หรือดิสก์ไดร์ฟแบบฟิสิคัล (ฮาร์ด) แบบจำลอง เมื่อเคอร์เนลหรือโปรแกรม I / O บางตัวทำสิ่งต่าง ๆ เช่นนำดิสก์ไปยังตำแหน่งที่ถูกต้องและทำทุกสิ่งที่มีลักษณะเฉพาะทางกายภาพ

/dev/vdxใช้สำหรับดิสก์ไดร์ฟเสมือน (ฮาร์ด) เคอร์เนลทั้งหมดทำเมื่อเป็น I / O'd ที่จะบอกซอฟต์แวร์เวอร์ชวลไลเซชั่นที่บิตต้องอ่าน / เขียนและเสร็จสิ้น โดยทั่วไปแล้วvdxจะเร็วกว่าเพราะเคอร์เนลไม่จำเป็นต้องบอกให้ฮาร์ดไดรฟ์ทำการสุ่มขยะทั้งหมดที่ไม่ควรทำเพราะมันต้องการบอก VM hypervisor ให้ทำสิ่งต่างๆ

ฉันขอโทษสำหรับคำว่า "สิ่ง" ฉันไม่สามารถคิดถึงคำที่ดีกว่า: D


คำนี้แสดงออกได้มากมาย - ขอบคุณสำหรับคำตอบของคุณ
mikeserv

1
สิ่งที่? คุณไม่สามารถนึกถึง "บางสิ่ง" หรือ "การดำเนินการ IO ที่ร้องขอ" ไม่ยอมรับคำขอโทษ ;)
Johan

4

ใน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เป็นครั้งแรก harddrive เสมือน (ไม่มี identificators ฮาร์ดแวร์) virtioและรหัสรถบัส ดูเหมือนว่าแขก qemu / kvm

กฎของ udev สำหรับ/dev/sd*อุปกรณ์สามารถเป็นประเภทฮาร์ดแวร์ที่แตกต่างกัน: scsi, ata, ieee1394, usb, ...


2

/dev/ เป็นส่วนหนึ่งในทรีไดเรกทอรี unix ที่มีไฟล์ "อุปกรณ์" ทั้งหมด - โดยปกติยูนิกซ์จะปฏิบัติต่อทุกสิ่งที่คุณสามารถเข้าถึงได้ในฐานะไฟล์ที่จะอ่านหรือเขียน

ดังนั้นในสาระสำคัญ/dev/sdaคือไฟล์อุปกรณ์ทั้งหมดที่พบในฮาร์ดไดรฟ์ของคุณในขณะที่/dev/vdaไฟล์อุปกรณ์ทั้งหมดที่พบในพื้นที่ที่จัดสรรสำหรับเครื่องเสมือนของคุณ


0

วิธีการหนึ่งที่พื้นฐานอย่างเป็นธรรมในการที่เหล่านี้/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 เพื่อจับคู่โมดูลไดรเวอร์กับอุปกรณ์ทางกายภาพ - พวกเขาระบุประเภทอุปกรณ์

รายการด้านบนบัญชีสำหรับ 3 จาก 4 รายการที่พบด้วย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 devs นั้นเป็นมนุษย์เพียงคนเดียว แต่แหล่งที่มาของความคลาดเคลื่อนที่เป็นไปได้อีกประการหนึ่งคือที่ซึ่งผู้ดูแลการแจกจ่ายของคุณเลือกที่จะค้นหาอุปกรณ์ เส้นทางจำนวนมากที่ปรากฏในรายการมีจำนวนมากกว่าคำแนะนำเล็กน้อยมีหลายวิธีในการย้ายตำแหน่ง

และนี่คือ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 คุณสามารถ id ไฟล์อุปกรณ์ใด ๆ ได้ค่อนข้างมากด้วยการเปรียบเทียบ maj / min กับตารางที่ลิงก์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.