Làm cách nào tôi có thể gắn thiết bị khối từ máy tính này sang máy tính khác qua mạng dưới dạng thiết bị khối?


40

Có thể xuất một thiết bị khối như DVD hoặc CDROM và làm cho nó sao cho có thể gắn trên máy tính khác dưới dạng thiết bị khối không?

LƯU Ý: Tôi không quan tâm đến việc này bằng NFS hoặc Samba, tôi thực sự muốn ổ đĩa quang hiển thị dưới dạng ổ đĩa quang trên máy tính từ xa.

Câu trả lời:


33

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 ta cần kết nối với việc nbd-serversử dụng nbd-clientnhư vậy. LƯU Ý: tên của máy chủ nbd là greenegss trong ví dụ này.

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

(Trên một số hệ thống - ví dụ: Fedora - modprobe nbdtrước tiên phải có .)

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ôi nhận được điều này: "CẢNH BÁO Chỉ định xuất trên dòng lệnh không được chấp nhận. Vui lòng sử dụng tệp cấu hình thay thế". Phiên bản: 3.3
guettli

@guettli - cảm ơn đã phản hồi. Những gì distro này là trên?
slm

@sim openSUSE 13.1
guettli

Lưu ý: greeneggslà tên máy chủ của máy chủ.
devius

1
Lưu ý rằng giao thức kiểu cũ (nghĩa là sử dụng một cổng cho mỗi thiết bị) đã được đánh dấu là không dùng cho một số phiên bản và đã bị hủy trong nbd 3.10 .
maxschlepzig

20

Một thay thế cho nbd(nếu bạn quan tâm) là sử dụng iSCSI. tgtdcó thể được cấu hình để có một /devthiết bị làm bộ lưu trữ dự phòng cho iSCSI IQN cụ thể.

Nếu bạn đang sử dụng hệ thống RHEL, do đó bạn chỉ cần cài đặt scsi-target-utilsvà sau đó định cấu hình / khởi động tgtdhệ thống nguồn. Cấu hình tgtdcó thể tham gia nhưng Red Hat cung cấp nhiều ví dụ khác nhau cho các tình huống khác nhau.

Ví dụ:

<target iqn.2008-09.com.example:server.target4>
    direct-store /dev/sdb      # Becomes LUN 1
    direct-store /dev/sdc      # Becomes LUN 2
    direct-store /dev/sdd      # Becomes LUN 3
    write-cache off
    vendor_id MyCompany Inc.
</target>

Để khởi động nó trên Fedora / RHEL:

# systemctl start tgtd.service
# firewall-cmd --add-service iscsi-target

Bạn sẽ cài đặt iscsi-initiator-utilstrên hệ thống máy khách và sử dụng iscsiadmđể gửi các mục tiêu sau đó để "đăng nhập" vào các mục tiêu được liệt kê. Ví dụ:

# iscsiadm -m discovery -t sendtargets -p <remoteHost>
# iscsiadm -m node -T <Complete Target IQN> -l -p <remoteHost>

Các iSCSI LUN sau đó sẽ trình bày cho hệ thống như các thiết bị khối thông thường. Trên RHEL, bạn có thể kiểm tra việc vận chuyển một thiết bị cụ thể đang đi qua, bạn chỉ cần thực hiện ls -l /dev/disk/by-path | grep iscsiđể xem dung lượng lưu trữ nào sẽ đến trên iSCSI. Đường dẫn cũng sẽ liệt kê IQN của mục tiêu bạn đã đăng nhập ở trên.

Khi không cần thiết bị iscsi nữa, người ta có thể xóa thiết bị qua:

# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>

2
Nếu bạn muốn, bạn có thể thêm một bạn này AU Q cũng vậy, đó là những gì thúc đẩy tôi viết cái này lên: askubuntu.com/questions/433231/...
SLM

Tôi sẽ, nhưng tôi thực sự không có một hệ thống Ubuntu tiện dụng để đảm bảo tên gói giống nhau hoặc nếu các ví dụ cấu hình mà tôi tham chiếu là ngược dòng hoặc chỉ là thứ Red Hat làm. Cấu hình chính nó phải giống nhau, mặc dù.
Bratchley

1
Joel bạn là người giỏi nhất ... không có hệ thống Ubuntu 8-)
slm

1
Thực sự dễ cài đặt hơn NBD. Vấn đề với NBD hiện tại là hầu hết các ví dụ / tài liệu bạn tìm thấy qua google đều sử dụng cấu hình kiểu cũ, trong đó các phiên bản hiện tại đã loại bỏ hỗ trợ cho nó. Ngoài ra, phiên bản <3.10 có thể có lỗi chỉ đọc .
maxschlepzig

9

Bạn rõ ràng thích giải pháp SAN. Bên cạnh iSCSI và NBD đã được đề cập, bạn cũng có cách tiếp cận AoE (ATA qua ethernet).

Điều này rất dễ thực hiện:

Về phía phục vụ bạn cần phải

modprobe aoe
vbladed 0 0 eth0 /dev/sdc

Về phía khách hàng

modprobe aoe
aoe-discover
aoe-stat
e0.0      1000.204GB       eth0 1024  up

Thiết bị của bạn đang ở trong

ls -l /dev/etherd/
c-w--w----  1 root disk 152, 3 Mar 12 22:47 discover
brw-rw----  1 root disk 152, 0 Mar 12 22:47 e0.0
brw-rw----  1 root disk 152, 1 Mar 12 22:47 e0.0p1
cr--r-----  1 root disk 152, 2 Mar 12 22:47 err
c-w--w----  1 root disk 152, 6 Mar 12 22:47 flush
c-w--w----  1 root disk 152, 4 Mar 12 22:47 interfaces
c-w--w----  1 root disk 152, 5 Mar 12 22:47 revalidate

Trong trường hợp e0.0là bạn /dev/sdce0.0.p1/dev/sdc1

dmesg trên máy chủ:

[221384.454447] aoe: AoE v85 initialised.

dmesg đầu ra trên máy khách:

[ 1923.225832] aoe: AoE v85 initialised.
[ 1923.226379] aoe: e0.0: setting 1024 byte data frames
[ 1923.226910] aoe: 38607725d8b1 e0.0 v4014 has 1953525168 sectors
[ 1923.653820]  etherd/e0.0: p1

Khá dễ dàng.

Ghi chú bổ sung

  • vbladedlà một phần của gói vbladetrên Fedora & Ubuntu, có thể giống như vậy trong các bản phát hành khác.
  • aoe-discover& aoe-statcũng là một phần của gói aoetoolstrên Fedora & Ubuntu.
  • Thiết bị hiển thị fdiskdưới dạng một thiết bị khối, ví dụ , /dev/etherd/e0.0.
  • Phiên bản vbladecó sẵn trong kho F19 và F20 khá cũ, đó là phiên bản 14. Trang dự án ATAoE có sẵn phiên bản 21. Có một RPM cập nhật có sẵn cho Fedora 19 x86_64 tại đây .

Đã thử làm điều này với Fedora và Ubuntu, nó không hoạt động.
slm

Tôi thường kiểm tra mọi thứ trước khi đăng. Q: aoe có được tải không? Bạn đã đưa ra lập luận đúng đắn? Trên người nhận: aoe đã tìm thấy đối thủ? Nói dmesg

Tôi biết bạn làm vậy, tôi đã không ngụ ý rằng nó chỉ sai khi có thể có thêm một số bước 8-)
slm

nhưng không có thêm bước nào, đây thực sự là một nhiệm vụ dễ dàng.

1
ROTFL, và bạn cũng đã đếm điện thoại thông minh?

1

Mặc dù giải pháp này hoạt động, nó chỉ được trình bày như một phương pháp để hiển thị TMWTDI đó.

Để thiết lập này, chúng ta cần một hệ thống lấy cảm hứng unix để lưu trữ thiết bị khối và một hệ thống có thiết bị chặn vòng lặp để hệ thống xem nó. Linux sẽ làm việc cho cả hai.

Tiếp theo chúng ta cần một hệ thống tệp mạng câm (nó không được tối ưu hóa việc lưu trữ dữ liệu), như samba hoặc webdav. Cụ thể là NFS và AFS sẽ không hoạt động.

Đặt thiết bị khối trong một thư mục được xuất. ( man mknodsẽ giúp.) vô hiệu hóa kiểm tra thiết bị khối nếu có. gắn hệ thống tệp đã xuất trên máy khách, tạo một thiết bị lặp bằng cách sử dụng tệp đã nhập làm kho lưu trữ và gắn kết như bình thường. ( losetuphoặc mount -o loop)

Làm thế nào và tại sao nó hoạt động và tại sao hiệu suất giảm: Một trong những ý tưởng cốt lõi đằng sau unix là mọi thứ đều là một tệp, vì vậy các thiết bị chỉ là các tệp chúng hơi đặc biệt (đó là lý do tại sao chúng được gọi là các tệp đặc biệt). Có một số loại tệp đặc biệt mà mknod có thể tạo ra, nhưng chúng ta sẽ chỉ xem xét các thiết bị khối. chặn các thiết bị tồn tại trong hệ thống tệp như bất kỳ tệp nào khác và giống như bất kỳ tệp nào khác mà chúng có chủ sở hữu, quyền, inodes và tên; nhưng chúng có hai điểm khác biệt: chúng không lưu trữ dữ liệu của chúng trong hệ thống tệp và chúng có các khả năng bổ sung để chúng có thể được gắn kết. Nếu máy chủ tệp đủ ngu ngốc để không chú ý đến những khác biệt này, bạn có thể bỏ qua chúng và xuất chúng dưới dạng tệp thông thường. Tiếp theo, thiết bị lặp sẽ lấy một tệp thông thường (cục bộ hoặc từ xa) và thêm các thuộc tính và khả năng đặc biệt để bạn có thể gắn các tệp thông thường như thể chúng là các thiết bị chặn. Hạn chế lớn là hiệu suất.

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.