Bir engelleme aygıtını ağ üzerinden engelleme aygıtı olarak bir bilgisayardan diğerine nasıl bağlarım?


40

DVD veya CDROM gibi bir blok aygıtının dışa aktarılması ve başka bir bilgisayara blok aygıtı olarak takılabilmesi için mümkün mü?

NOT: Bunu NFS veya Samba kullanarak yapmak istemiyorum, aslında optik sürücünün uzak bir bilgisayarda optik sürücü olarak görünmesini istiyorum.

Yanıtlar:


33

Ağ blok cihazlarını (NBD) kullanarak istediğinizi başarabileceğinizi düşünüyorum. Konuyla ilgili wikipedia sayfasına bakıldığında denilen bir araçtan bahsedilir nbd. Bir istemci ve sunucu bileşeninden oluşur.

Örnek

Bu senaryoda, Fedora 19 dizüstü bilgisayarımda (sunucuda) bir CDROM kuruyorum ve bir Ubuntu 12.10 sistemine (istemci) paylaşıyorum.

yükleme
$ 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
CD paylaşımı

Şimdi sunucuya geri döndüm (Fedodra 19) Paket yöneticisini YUM kullanarak benzer bir şey yapıyorum. Tamamlandığında bir CD'yi açtım ve bir blok aygıtı olarak paylaşmak için bu komutu çalıştırın:

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

Çalışıp çalışmadığını görmek için hızlı bir kontrol:

$ 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
CD’yi takma

Şimdi tekrar Ubuntu istemcisine nbd-serverkullanarak nbd-clientböyle bağlanmaya ihtiyacımız var . Not: nbd sunucusunun adı bu örnekte greeneggs 'dir.

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

(Bazı sistemlerde - örneğin, Fedora - modprobe nbdönce bir tane gerekir.)

Artık Ubuntu sisteminde aşağıdakileri kullanarak bir engelleme aygıtı olduğunu doğrulayabiliriz 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 

Ve şimdi onu monte ediyoruz:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
işe yaradı mı?

Şüphe beni öldürüyor ve kalktıklarımız:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Fedora 19 dizüstü bilgisayarına taktığım ve onu Ubuntu'daki ağın blok aygıtı olarak bağlayabilen bir LiveCD of CentOS içeriği var.


Bunu alıyorum: "UYARI Komut satırında dışa aktarma belirtilmesi uygun değil. Lütfen onun yerine bir yapılandırma dosyası kullanın". Versiyon: 3.3
guettli

@guettli - Geri bildiriminiz için teşekkür ederiz. Bu ne durumdaydı?
slm

@sim openSUSE 13.1
guettli

Not: greeneggsSunucunun ana bilgisayar adıdır.
Devius

1
Eski stil protokolünün (yani her cihaz için bir bağlantı noktası kullanılması), çeşitli sürümler için kullanımdan kaldırılmış olarak işaretlenmiş olduğunu ve 3.10'da bırakıldığını unutmayın .
Maxschlepzig

20

Buna bir alternatif nbd(eğer ilgileniyorsanız) iSCSI kullanıyor. tgtdBir /devcihazın belirli bir iSCSI IQN'si için yedek depolama alanı olması için yapılandırılabilir .

Eğer bir RHEL sistemindeyseniz , kaynak sistemi kurmanız scsi-target-utilsve yapılandırmanız / başlatmanız yeterlidir tgtd. Konfigürasyon tgtdkatılabilir ancak Red Hat, çeşitli senaryolar için birçok farklı örnek sunar.

Örneğin:

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

Fedora / RHEL’de başlatmak için:

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

Sen yükleyecek iscsi-initiator-utilsistemci sisteminde ve kullanımı iscsiadmsayılan hedeflere "giriş" sonra hedefleri göndermek. Örneğin:

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

İSCSI LUN'ları daha sonra sisteme normal blok cihazlar olarak gösterecektir. RHEL'de, belirli bir cihazın geldiği nakliyeyi kontrol edebilirsiniz, sadece ls -l /dev/disk/by-path | grep iscsihangi depolama alanının iSCSI'ye geldiğini görmek için yapabilirsiniz . Yol ayrıca yukarıda giriş yapmış olduğunuz hedefin IQN'sini de listeler.

İscsi cihazına artık ihtiyaç duyulmadığında, biri aşağıdakiler yoluyla kaldırabilir:

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

2
: Eğer siz de bu AU Q cihazınıza A ekleyebilir isterseniz, o kadar bu bir yazmak beni istenir ne askubuntu.com/questions/433231/...
slm

İsterdim, ama paket adlarının aynı olmasını sağlamak için kullanışlı bir Ubuntu sistemim yok ya da başvuruda bulunduğum yapılandırma örnekleri yukarıdaysa ya da Red Hat'in yaptığı bir şeyse. Yine de konfigürasyon aynı olmalı.
Bratchley

1
Joel sen en iyisin ... hayır Ubuntu sistemi 8-)
slm

1
Kurulumu NBD'den daha kolaydı. Mevcut NBD ile ilgili sorun, google üzerinden bulduğunuz örneklerin / belgelerin çoğunun, eski sürümlerin desteği kaldırdığı eski stil yapılandırmasını kullanmasıdır. Ayrıca, <3.10 sürümünde salt okunur bir hata olabilir .
Maxschlepzig

9

Belli ki SAN çözümünü tercih ediyorsun. Yukarıda belirtilen iSCSI ve NBD'nin yanında, AoE (ethernet üzerinden ATA) yaklaşımınız da var.

Bunu yapmak çok kolay:

Servis tarafında yapmanız gerekenler

modprobe aoe
vbladed 0 0 eth0 /dev/sdc

Müşteri tarafında

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

Cihazlarınız

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

Nerede e0.0senin olduğunu /dev/sdcve e0.0.p1is/dev/sdc1

dmesg sunucuda:

[221384.454447] aoe: AoE v85 initialised.

dmesg istemcide çıktı:

[ 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

Çok kolay.

ek Notlar

  • vbladedvbladeFedora ve Ubuntu paketinin bir parçası , muhtemelen diğer dağıtımlarda da aynı.
  • aoe-discoverAyrıca Fedora ve Ubuntu'daki aoe-statpaketin bir parçasıdır aoetools.
  • Cihaz, fdiskörneğin bir blok cihaz olarak görünür /dev/etherd/e0.0.
  • Sürümü vbladeo 's versiyonu 14. ATAoE proje sayfası mevcut versiyon 21 sahiptir, oldukça tarihli F19 ve F20 depolarda kullanılabilir. Burada Fedora 19 x86_64 için güncellenmiş bir RPM var .

Bu b / w Fedora ve Ubuntu ile yapmaya çalıştım, işe yaramadı.
slm

Genellikle göndermeden önce her şeyi kontrol ederim. S: aoe yüklü mü? Uygun argümanları verdin mi? Alıcıda: aoe rakibi buldu mu? Ne diyor dmesg?

Yaptığını biliyorum, yalnızca bazı ilave adımlar atılabileceğinin yanlış olduğunu ima etmiyordum. 8-)
slm

ama fazladan adım yok, bu gerçekten kolay bir iş.

1
ROTFL, sen de akıllı telefonu saydın mı?

1

Bu çözüm işe yaramasına rağmen, yalnızca bu TMWTDI'yı gösterme yöntemi olarak sunulur.

Bu kurulum için, blok cihazını barındırmak için bir unix esinli sisteme ve sistemin görüntüleyebilmesi için loop back blok cihazına sahip bir sisteme ihtiyacımız var. Linux her ikisi için de çalışacaktır.

Daha sonra samba veya webdav gibi aptal bir ağ dosya sistemine ihtiyacımız var (veri depolama alanında optimizasyon yapmamalı). Özellikle NFS ve AFS çalışmayacak.

Blok cihazını dışa aktarılan bir klasöre yerleştirin. ( man mknodyardımcı olacaktır.) mümkünse blok cihaz kontrolünü devre dışı bırakın. Dışa aktarılan dosya sistemini istemci bilgisayara monte edin, içe aktarılan dosyayı, yedekleme deposu olarak kullanarak bir döngü aygıtı oluşturun ve normal şekilde bağlayın. ( losetupveya mount -o loop)

Nasıl ve neden işe yaradığı ve neden performansın berbat olduğu: Unix'in arkasındaki ana fikirlerden biri, her şeyin bir dosya olduğu, bu yüzden aygıtların sadece özel dosyalar olduğu ve bu nedenle de özel dosya olarak adlandırılan dosyalar olduğu. Mknod'un üretebileceği birkaç özel dosya tipi var, ancak sadece blok cihazlarına bakacağız. diğer sistemlerde olduğu gibi dosya sisteminde var olan blok aygıtları; sahipleri, izinleri, inode'ları ve isimleri olan diğer tüm dosyaları gibi; ancak iki farklılıkları vardır: verilerini dosya sisteminde saklamazlar ve eklenebilmeleri için ekstra yetenekleri vardır. Dosya sunucusu bu farklılıklara dikkat etmeyecek kadar salaksa, onları yok sayabilir ve bunları normal dosyalar olarak dışa aktarabilirsiniz. Daha sonra döngü cihazı sıradan bir dosya alır (yerel veya uzak) ve normal özellikleri blok aygıtlar gibi takabilmeniz için özel özellikler ve yetenekler ekler. En büyük dezavantajı performans.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.