Làm cách nào tôi có thể chia sẻ ổ đĩa quang theo cách đánh lừa khách hàng nghĩ rằng đó là ổ đĩa cục bộ?


10

Tôi đang ở trong tình huống ngớ ngẩn thẳng thắn khi máy tính để bàn của tôi có hai ổ đĩa quang và trung tâm truyền thông của tôi không có (cũng không có không gian cho một). Trước khi tôi xem xét một thứ gì đó cực kỳ giống như mua một ổ đĩa quang ngoài, tôi muốn xem liệu có cách nào để buộc các ổ đĩa của tôi qua mạng không.

Cả hai máy đều là Ubuntu và họ đã có sẵn chia sẻ NFS để truy cập phương tiện truyền thông từ máy tính để bàn.

Lý do tôi hỏi (thay vì chỉ xuất / media / cdrom) là vì một chia sẻ NFS được gắn kết không giống như một thiết bị kiểu CDROM cho máy từ xa. Điều này rất quan trọng đối với tôi vì tôi cần XBMC để nhận ra ổ đĩa như vậy để nó có thể xử lý các đĩa một cách tự động và phù hợp.

Bây giờ tôi không biết điều gì làm cho một ổ đĩa quang trông giống như một ổ đĩa quang cho Ubuntu. Nếu tôi biết điều đó, có lẽ tôi biết tôi cần phải làm gì. Tôi đoán có một số udevhành động nóng trong đó tại một số điểm.

Có cách nào để chia sẻ một thiết bị cấp khối (ví dụ /dev/sr0) để cho phép cả hai máy tính gắn kết riêng biệt không ... Tôi cảm thấy như mình đang chui xuống lỗ thỏ và tôi có thể thấy tất cả các giải pháp được thiết kế quá mức như iSCSI và ảo hóa thông qua xuất hiện trước mặt tôi ... Chắc chắn có một cách đơn giản để chia sẻ một vài chế độ ổ đĩa giữa hai máy tính Ubuntu!


Tôi không biết điều này có đủ không: thegeek ware.com/2009/02/ mài --- Tôi không biết liệu nó có xuất khẩu đặc biệt ioctlcần thiết cho DVD không. Tôi đã sử dụng nó từ nhiều năm trước cho một ý tưởng tồi là trao đổi qua mạng và sau đó quên mất cho đến bây giờ ... (liên kết tốt hơn: linux-mag.com/id/7118 )
Rmano

Hai phương pháp tôi đã sử dụng thành công để thực hiện những điều tương tự là sử dụng NFS và Samba, nhưng được cho đại diện của bạn, tôi cho rằng bạn biết về NFS chắc chắn, và có thể thực hiện điều này thông qua Samba. LMK nếu bạn cần thêm trợ giúp với nó.
slm

@slm Vâng, đã có NFS giữa hai máy tính. Tôi đã thêm CD /media/cdromvào nfs và gắn nó ở đầu kia dưới dạng /media/cdrom(và tôi có thể xem các tệp) nhưng XBMC không phát hiện ra sự thay đổi của phương tiện truyền thông (nó không nghĩ rằng mountpoint DVD). Tôi đang làm điều gì đó ngu ngốc?
Oli

@Oli - OK, xem A của tôi và cho tôi biết nếu đó là những gì bạn đang tìm kiếm. Ngẫu nhiên, phương pháp khác mà tôi đã sử dụng là tạo ISO của DVD, chia sẻ nó qua NFS và sau đó mount -o loopcục bộ trên các máy tính khác.
slm

Câu trả lời:


9

Tôi nghĩ rằng bạn có thể thực hiện những gì bạn muốn bằng cách sử dụng các thiết bị khối mạng (NBD). Nhìn vào trang wikipedia về chủ đề này có đề cập đến một công cụ được gọi là nbd. Nó bao gồm một thành phần máy khách và máy chủ.

Thí dụ

Trong trường hợp này, tôi đang thiết lập CDROM trên máy tính xách tay (máy chủ) Fedora 19 của mình và tôi đang chia sẻ nó với hệ thống (máy khách) Ubuntu 12.10.

cài đặt
$ 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
chia sẻ đĩa CD

Bây giờ trở lại trên máy chủ (Fedodra 19) Tôi làm một điều tương tự bằng cách sử dụng trình quản lý gói YUM của nó. Sau khi hoàn thành, tôi bật CD vào và chạy lệnh này để chia sẻ nó dưới dạng một thiết bị khối:

$ 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.
$

Kiểm tra nhanh để xem nó có chạy không:

$ 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
Gắn đĩa CD

Bây giờ trở lại máy khách Ubuntu, chúng tôi cần kết nối với việc nbd-serversử dụng nbd-clientnhư vậy:

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

Chúng tôi có thể xác nhận rằng giờ đây đã có một thiết bị chặn trên hệ thống Ubuntu bằng cách sử dụng 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 

Và bây giờ chúng tôi gắn kết nó:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
nó có hoạt động không

Sự hồi hộp đang giết chết tôi và chúng tôi đã bỏ đi:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Có nội dung của LiveCD của CentOS mà tôi đã gắn trong máy tính xách tay Fedora 19 và có thể gắn nó như một thiết bị khối của mạng trên Ubuntu.

Tự động quét & Tự động hóa?

Trong phần thiết lập ở trên, tôi phải tự gắn DVD.

Trong việc điều tra tính hợp lý về việc liệu phương pháp này sẽ làm việc với tự động phát và automounting, out of the box, autoplay của Ubuntu không làm việc nhưng nbd-clientnbd-serverở lại khi tôi đẩy ra đĩa. Khi tôi đặt DVD trở lại, tôi đã có thể chạy mountlệnh trên Ubuntu, điều này cho thấy DVD rất ổn.

Vì vậy, tôi cho rằng bạn có thể sử dụng quy tắc UDEV trên Ubuntu để phát hiện thay đổi này và tự động thực hiện tự động / tự động phát. Tôi sẽ không thử tất cả nhưng tôi không thấy bất cứ điều gì khiến tôi nghĩ rằng nó sẽ không hoạt động.


1
Hướng dẫn tuyệt vời! Nó không hoàn hảo: phần mềm của tôi vẫn có thể nói rằng đó không phải là ổ đĩa thực. Tôi đoán ioctllà không được xử lý hoàn hảo. Nhưng, tôi đã có thể thực hiện công việc này trên hai máy archlinux không có trục trặc! (Archlinux đã cài đặt máy khách và máy chủ với nhau dưới dạng 'nbd'.)
Sự giới hạn có giới hạn

3

Phương pháp này cũng sử dụng NBD nhưng sử dụng cấu hình kiểu mới thay thế. Ưu điểm duy nhất là bạn không phải khởi động máy chủ theo cách thủ công và bạn không nhận được cảnh báo phản đối xấu.

Sau khi cài đặt nbd-servernbd-clientcác gói tiến hành chỉnh sửa tệp cấu hình trên máy chủ ( /etc/nbd-server/config) và đảm bảo rằng nó trông giống như thế này:

[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

Lưu ý: Các [dvd]nhãn trên là một tiêu đề phần và nó có thể là bất kỳ từ nào bạn muốn đính kèm trong dấu ngoặc vuông. Nó được sử dụng để xác định chia sẻ cụ thể đó, vì vậy hãy đảm bảo bạn sử dụng một tên dễ sử dụng và rõ ràng.

Sau khi lưu các thay đổi vào tệp cấu hình, hãy khởi động hoặc khởi động lại máy chủ nbd (ví dụ về khởi động lại):

sudo service nbd-server restart

Sau đó, quay lại máy khách kết nối với máy chủ bằng lệnh:

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

Lưu ý: Thay thế dvdbằng tên bạn đã sử dụng trong cấu hình máy chủ ở trên và hostnamebằng tên máy chủ của máy chủ.

Cuối cùng, đó chỉ là vấn đề gắn thiết bị khối chia sẻ mới:

sudo mount /dev/nbd0 /mnt/

Nếu bạn tiếp tục nhận được Negotiation: ..Error: Server closed connection Exiting.thì bình luận cả hai usergroupdòng trong /etc/nbd-server/config. Điều này làm cho chạy nbd-serverdưới quyền root có quyền truy cập vào của bạn/dev/sr0
Petr Újezdský
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.