Yanıtlar:
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.
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-server
kullanarak nbd-client
bö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.
greeneggs
Sunucunun ana bilgisayar adıdır.
Buna bir alternatif nbd
(eğer ilgileniyorsanız) iSCSI kullanıyor. tgtd
Bir /dev
cihazı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-utils
ve yapılandırmanız / başlatmanız yeterlidir tgtd
. Konfigürasyon tgtd
katı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-utils
istemci sisteminde ve kullanımı iscsiadm
sayı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 iscsi
hangi 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>
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.0
senin olduğunu /dev/sdc
ve e0.0.p1
is/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.
vbladed
vblade
Fedora ve Ubuntu paketinin bir parçası , muhtemelen diğer dağıtımlarda da aynı.aoe-discover
Ayrıca Fedora ve Ubuntu'daki aoe-stat
paketin bir parçasıdır aoetools
.fdisk
örneğin bir blok cihaz olarak görünür /dev/etherd/e0.0
.vblade
o '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 .dmesg
?
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 mknod
yardı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. ( losetup
veya 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.