ฉันจะแชร์ออปติคัลไดรฟ์ในลักษณะที่ทำให้ลูกค้าคิดว่าเป็นไดรฟ์ในเครื่องได้อย่างไร


10

ฉันอยู่ในสถานการณ์ที่น่าหัวเราะตรงไปตรงมาที่เดสก์ท็อปของฉันมีออปติคัลไดรฟ์สองตัวและ Media Center ของฉันไม่มีเลย (ไม่มีที่ว่างสำหรับหนึ่งอัน) ก่อนที่ฉันจะพิจารณาบางสิ่งที่สุดขีดเช่นเดียวกับการซื้อออปติคัลไดรฟ์ภายนอกฉันต้องการดูว่ามีวิธีการเชื่อมโยงอินเทอร์เน็ตของฉันกับเครือข่ายหรือไม่

เครื่องทั้งสองเป็น Ubuntu และพวกเขามีการแบ่งปัน NFS เพื่อเข้าถึงสื่อจากเดสก์ท็อป

เหตุผลที่ฉันถาม (ไม่ใช่แค่การส่งออก / สื่อ / cdrom) คือการแชร์ NFS ที่เมานต์ไม่ดูเหมือนอุปกรณ์สไตล์ CDROM ไปยังเครื่องระยะไกล นี่เป็นสิ่งสำคัญสำหรับฉันเพราะฉันต้องการ XBMC ในการจดจำไดรฟ์เช่นนั้นเพื่อให้สามารถจัดการกับดิสก์โดยอัตโนมัติและเหมาะสม

ตอนนี้ฉันไม่รู้ว่าอะไรที่ทำให้ออปติคัลไดรฟ์ดูเหมือนกับออปติคัลไดรฟ์กับ Ubuntu ถ้าฉันรู้ว่าฉันคงรู้ว่าฉันต้องทำอะไร ฉันเดาว่ามีบางอย่างที่น่าสนใจudevในจุดนั้น

มีวิธีการแบ่งปันอุปกรณ์ระดับบล็อก (เช่น/dev/sr0) เพื่อให้คอมพิวเตอร์ทั้งสองเครื่องติดตั้งแยกกันหรือไม่ ... ฉันรู้สึกเหมือนฉันล้มลงในโพรงกระต่ายและฉันสามารถเห็นโซลูชันที่มีการออกแบบทางวิศวกรรมอย่างหนาแน่นเช่น iSCSI และ pissthrough virtualisation ปรากฏขึ้นต่อหน้าฉัน ... แน่นอนว่ามีวิธีง่ายๆในการแบ่งปันโหมดไดรฟ์ระหว่างคอมพิวเตอร์ Ubuntu สองเครื่อง!


ฉันไม่ทราบว่านี่เพียงพอหรือไม่: thegeekstuff.com/2009/02/… --- ฉันไม่ทราบว่าจะส่งออกข้อมูลพิเศษที่ioctlจำเป็นสำหรับดีวีดีหรือไม่ ฉันใช้มันเมื่อหลายปีก่อนสำหรับแนวคิดที่ไม่ดีของการแลกเปลี่ยนเน็ตและลืมไปแล้วจนถึงตอนนี้ ... (ลิงค์ที่ดีกว่า: linux-mag.com/id/7118 )
Rmano

2 วิธีที่ฉันเคยประสบความสำเร็จในการทำสิ่งที่คล้ายกันคือใช้ NFS และ Samba แต่ให้ตัวแทนของคุณฉันสมมติว่าคุณรู้เกี่ยวกับ NFS แน่นอนและอาจทำสิ่งนี้ผ่าน Samba LMK หากคุณต้องการความช่วยเหลือเพิ่มเติม
slm

@slm ใช่มี NFS อยู่ระหว่างคอมพิวเตอร์สองเครื่องแล้ว ฉันเพิ่มซีดี/media/cdromลงใน nfs และติดตั้งที่ปลายอีกด้านหนึ่งเป็น/media/cdrom(และฉันสามารถดูไฟล์ได้) แต่ XBMC ไม่ตรวจจับการเปลี่ยนแปลงของสื่อ (มันไม่คิดว่า mountpoint เป็น DVD) ฉันกำลังทำอะไรโง่ ๆ
Oli

@Oli - ตกลงดู A และแจ้งให้เราทราบหากนั่นคือสิ่งที่คุณกำลังมองหา อีกวิธีหนึ่งที่ฉันเคยใช้คือทำให้ ISO ของดีวีดีใช้ร่วมกันผ่านทาง NFS และจากนั้นmount -o loopใช้คอมพิวเตอร์ของคุณบนคอมพิวเตอร์เครื่องอื่น
slm

คำตอบ:


9

ฉันคิดว่าคุณอาจจะสามารถบรรลุสิ่งที่คุณต้องการโดยใช้อุปกรณ์บล็อคเครือข่าย (NBD) มองไปที่หน้าวิกิพีเดียในเรื่องที่nbdมีการกล่าวถึงเครื่องมือที่เรียกว่า มันประกอบด้วยลูกค้าและส่วนประกอบเซิร์ฟเวอร์

ตัวอย่าง

ในสถานการณ์นี้ฉันกำลังตั้งค่า CDROM บนแล็ปท็อป Fedora 19 ของฉัน (เซิร์ฟเวอร์) และฉันกำลังแบ่งปันกับระบบ Ubuntu 12.10 (ลูกค้า)

การติดตั้ง
$ apt-cache search ^nbd-
nbd-client - Network Block Device protocol - client
nbd-server - Network Block Device protocol - server

$ sudo apt-get install nbd-server nbd-client
แบ่งปันซีดี

ตอนนี้กลับมาที่เซิร์ฟเวอร์ (Fedodra 19) ฉันทำสิ่งที่คล้ายกันโดยใช้ตัวจัดการแพคเกจของ YUM เมื่อเสร็จแล้วฉันก็เปิด CD และเรียกใช้คำสั่งนี้เพื่อแชร์เป็นอุปกรณ์บล็อก:

$ sudo nbd-server 2000 /dev/sr0

** (process:29516): WARNING **: Specifying an export on the command line is deprecated.

** (process:29516): WARNING **: Please use a configuration file instead.
$

ตรวจสอบอย่างรวดเร็วเพื่อดูว่ามันกำลังทำงานอยู่:

$ ps -eaf | grep nbd
root     29517     1  0 12:02 ?        00:00:00 nbd-server 2000 /dev/sr0
root     29519 29071  0 12:02 pts/6    00:00:00 grep --color=auto nbd
ติดตั้งซีดี

ตอนนี้กลับไปที่ไคลเอนต์ Ubuntu เราจำเป็นต้องเชื่อมต่อกับการnbd-serverใช้งานnbd-clientเช่น:

$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes

เราสามารถยืนยันได้ว่าขณะนี้มีอุปกรณ์บล็อกในระบบ Ubuntu โดยใช้lsblk:

$ sudo lsblk -l
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 465.8G  0 disk 
sda1                   8:1    0   243M  0 part /boot
sda2                   8:2    0     1K  0 part 
sda5                   8:5    0 465.5G  0 part 
ubuntu-root (dm-0)   252:0    0 461.7G  0 lvm  /
ubuntu-swap_1 (dm-1) 252:1    0   3.8G  0 lvm  [SWAP]
sr0                   11:0    1 654.8M  0 rom  
nbd0                  43:0    0   643M  1 disk 
nbd0p1                43:1    0   643M  1 part 

และตอนนี้เราติดมัน:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
มันทำงานหรือไม่

ความสงสัยกำลังฆ่าฉันและเราได้ยกตัว

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

มีเนื้อหาของ LiveCD ของ CentOS ที่ฉันติดตั้งในแล็ปท็อป Fedora 19 และสามารถติดตั้งเป็นอุปกรณ์บล็อกของเครือข่ายบน Ubuntu

การเล่นอัตโนมัติและการนับอัตโนมัติ?

ในการตั้งค่าข้างต้นฉันต้องติดตั้ง DVD ด้วยตนเอง

ในการตรวจสอบความน่าเชื่อถือของวิธีการนี้ว่าจะใช้งานได้กับการเล่นอัตโนมัติและการติดตั้งอัตโนมัติออกจากกล่องการเล่นอัตโนมัติของ Ubuntu ไม่ทำงาน แต่จะดีกว่าnbd-clientและnbd-serverค้างไว้เมื่อฉันกดดิสก์ เมื่อฉันนำดีวีดีกลับมาฉันสามารถเรียกใช้mountคำสั่งบน Ubuntu ซึ่งติดตั้งดีวีดีใหม่ได้ดี

ดังนั้นฉันคิดว่าคุณสามารถติดกฎ UDEV บน Ubuntu เพื่อตรวจจับการเปลี่ยนแปลงนี้และทำ automount / เล่นอัตโนมัติโดยอัตโนมัติ ฉันจะไม่ลอง แต่ไม่เห็นอะไรเลยที่จะทำให้ฉันคิดว่ามันจะไม่ทำงาน


1
คำแนะนำที่ยอดเยี่ยม! ไม่สมบูรณ์: ซอฟต์แวร์ของฉันยังสามารถบอกได้ว่าไม่ใช่ดิสก์ไดรฟ์จริง ฉันเดาioctlว่าไม่ได้ถูกจัดการอย่างสมบูรณ์แบบ แต่ฉันสามารถใช้งานกับเครื่อง archlinux สองเครื่องที่มีอาการสะอึกเป็นศูนย์ได้ ! (Archlinux ติดตั้งไคลเอนต์และเซิร์ฟเวอร์เข้าด้วยกันในรูปแบบ 'nbd')
การชดเชย จำกัด

3

วิธีนี้ยังใช้ NBD แต่ใช้การกำหนดค่ารูปแบบใหม่แทน ข้อดีเพียงอย่างเดียวคือคุณไม่ต้องเริ่มเซิร์ฟเวอร์ด้วยตนเองและคุณจะไม่ได้รับคำเตือนที่น่าเกลียด

หลังจากติดตั้งแพคเกจnbd-serverและnbd-clientดำเนินการแก้ไขไฟล์การกำหนดค่าบนเซิร์ฟเวอร์ ( /etc/nbd-server/config) และตรวจสอบให้แน่ใจว่ามันมีลักษณะดังนี้:

[generic]
# If you want to run everything as root rather than the nbd user, you
# may either say "root" in the two following lines, or remove them
# altogether. Do not remove the [generic] section, however.
    user = nbd
    group = cdrom
    includedir = /etc/nbd-server/conf.d
    allowlist = true

# What follows are export definitions. You may create as much of them as
# you want, but the section header has to be unique.

[dvd]
    exportname = /dev/sr0
    readonly = true

หมายเหตุ:[dvd]ฉลากข้างต้นเป็นส่วนหัวและมันสามารถเป็นคำที่คุณต้องการในวงเล็บเหลี่ยม มันใช้เพื่อระบุส่วนแบ่งนั้นโดยเฉพาะเพื่อให้แน่ใจว่าคุณใช้ชื่อที่ใช้งานง่ายและชัดเจน

หลังจากบันทึกการเปลี่ยนแปลงไปยังไฟล์คอนฟิกูเรชันให้สตาร์ทหรือรีสตาร์ท nbd-server (ตัวอย่างของการรีสตาร์ท):

sudo service nbd-server restart

จากนั้นกลับไปที่เครื่องไคลเอ็นต์เชื่อมต่อกับเซิร์ฟเวอร์โดยใช้คำสั่ง:

sudo nbd-client -N dvd hostname /dev/nbd0

หมายเหตุ:แทนที่dvdด้วยชื่อที่คุณใช้ในการกำหนดค่าเซิร์ฟเวอร์ด้านบนและhostnameด้วยชื่อโฮสต์ของเครื่องเซิร์ฟเวอร์

ในที่สุดมันก็เป็นเพียงเรื่องของการติดตั้งอุปกรณ์บล็อกที่ใช้ร่วมกันใหม่:

sudo mount /dev/nbd0 /mnt/

หากคุณให้ได้รับNegotiation: ..Error: Server closed connection Exiting.แล้วแสดงความคิดเห็นออกทั้งสองuserและเส้นในgroup /etc/nbd-server/configสิ่งนี้ทำให้การทำงานnbd-serverภายใต้รูทที่สามารถเข้าถึงคุณ/dev/sr0
Petr Újezdský
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.