Câu trả lời:
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ủ.
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-server
sử dụng nbd-client
như 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 nbd
trướ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.
greeneggs
là tên máy chủ của máy chủ.
Một thay thế cho nbd
(nếu bạn quan tâm) là sử dụng iSCSI. tgtd
có thể được cấu hình để có một /dev
thiế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-utils
và sau đó định cấu hình / khởi động tgtd
hệ thống nguồn. Cấu hình tgtd
có 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-utils
trê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>
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.0
là bạn /dev/sdc
và e0.0.p1
là/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.
vbladed
là một phần của gói vblade
trên Fedora & Ubuntu, có thể giống như vậy trong các bản phát hành khác.aoe-discover
& aoe-stat
cũng là một phần của gói aoetools
trên Fedora & Ubuntu.fdisk
dưới dạng một thiết bị khối, ví dụ , /dev/etherd/e0.0
.vblade
có 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 .dmesg
gì
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 mknod
sẽ 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. ( losetup
hoặ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.