﻿ Depolama Teknolojileri | Bölüm 6 | SCSI ve iSCSI arabirimi |
by Önder Nuray	on 13/09/2015
Eski teknolojilere ait bilgiler günümüzde hala önemli. Yeni gelişmeler olmasına rağmen altında yatan konsept genelde hala aynı oluyor. Bu bölümde sizlere SCSI (Small Computer System Interface) arabirimi hakkında bilgi vereceğim.
SCSI günümüzde önemli bir yere sahip. Ortaya çıktığında ilk olarak paralel SCSI gibi örnekleri mevcuttu. SCSI sabit diskler için bağlantı arabirimi ve teknolojisi olmasına rağmen tape drives, scanner, printer yada CD/DVD sürücüleri gibi ekipmanları bağlamak içinde kullanılırdı. Örneğin; resimdeki bir scanner cihazını PC’ye bağlamak için kullanılan bir paralel SCSI bağlantı kablosudur. Kabloların pin sayısı duruma göre 50, 68 yada 80 pin olabilir.
SCSI arabirimi standart olarak 1986 yılında kabul edildi. Günümüze kadar özellikle modern depolama teknolojilerinde önemini korumaktadır. Daha önceki bölümümüzde PATA yada SATA arabirimlerini anlatırken olduğu gibi, SCSI arabirimi de sadece bir dizi fiziksel kablo standardından oluşmamaktadır. Bununla beraber ayrıca farklı komut setleri ve protokoller ortaya çıkmıştır.
İlk SCSI teknolojisi half-duplex bir iletişim sağlamaktaydı. Verinin iki yöne doğru gidip gelmesi mümkündü ama aynı zamanda sadece bir yöne gidebilirdi. 8-16 arası cihaz bağlantısı ve 1,5-25 metre arasında bir kablo mesafesi mümkündü.
SCSI arabiriminde yenilikler ortaya çıktıkça bu gelişmeler ile beraber SCSI-1, SCSI-2, SCSI-3 sonra Ultra3 SCSI gibi terimler karşımıza çıktı. SCSI-1 teknolojisinde 8 cihaz bağlantısı yapılabilirken ve 5 MB/sn. hız elde edebilirken bu durumlu zamanla hızla ilerlemeye başladı.
SCSI teknolojisini önemli kılan bir diğer unsur ise yaşanılan geliştirmeler ile beraber SCSI protokolünün farklı fiziksel altyapılar ile kullanılmasına imkan sağlandı. Daha sonra konuşacağımız ve detaylı bir şekilde bilgi vereceğim Serial Attached SCSI (SAS) ve Fible Channel arabirimler gibi SCSI teknolojisi ile beraber kullanılmaya başlandı. Özellikle SCSI-3 mimarında SCSI komutlarının bu arabirimler üzerinde taşınabilmesine imkan sağlandı.
Ilk SCSI-1 arabirimi 1986 yılında ortaya çıktı. 8-bit bus veriyolu ve 5MB/sn. hız oranı sunmaktaydı. 1994 yılında SCSI-2 ile beraber öncelikle çeşitli uyumsuzluk problemleri giderilmiş oldu. SCSI cihazlarının birbiri ile uyumlu bir şekilde çalışması için üreticiler tarafından uyulması gereken bazı gereksinimler mevcuttu. Bu yüzden CCS (Common Command Set) denilen bir komut seti ortaya çıktı. Ayrıca SCSI-1 standardı için geriye doğru uyumluluk desteği sunuldu.
Daha sonra SCSI-3 ortaya çıktı. Aslında SCSI-2 standart olarak kabul edildiği 1994 yıllarda bu teknoloji de geliştirilmeye başlandı. Bizlere gelişmiş bir hata kontrolü (error checking) sistemi sunmakla beraber karşımıza günümüzde popülerlik kazanmış olan iSCSI (Internet Small Computer System Interface) denilen yeni bir protokol sunuldu. Bu teknoloji ile beraber SCSI komutlarının mevcut TCP/IP yada fiber network altyapımız üzerinden taşınabilmesinin önü açıldı. Böylece veri iletişimi için ayrı bir fiziksel altyapı kurmamıza gerek kalmadı.
SCSI-3 çok katmanlı bir mimariden oluşmaktadır. “OSI Network Layer” modelinden bildiğiniz üzere en en altta fiziksel katman mevcuttur. Bu katmanda örneğin Fibre Channel altyapımız diyelim. Transport katmanında FCP (Fibre Channel Protocol) komut seti olsun. SCSI-3 ve iSCSI ile beraber SCSI komutları FCP komut setinin içine paketlenip taşınabilir olduğundan mevcut altyapımızda SCSI teknolojisini böylece kullanabilir olduk.
OSI Modeli hakkında daha fazla bilgi için -> https://tr.wikipedia.org/wiki/OSI_modeli
SCSI’nin çalışma mantığı Client-Server tipi ilişki modeline dayanmaktadır. Initiator (Başlatıcı) – Target (Hedef) tipi ilişkide diyebiliriz. Örneğin siz iletişimi başlatacak olan Initiator’sunuz. Bu PC’niz, serverınız vs. olabilir. Mevcut bir Host Bus Adapter (HBA) kartı ile beraber ağınız üzerinde bir veri depolama birimine (target) erişebilirsiniz.
Host Bus Adapter (HBA) (Veri yolu bağdaştırıcısı): Host cihazımızı (Server gibi) mevcut bir veri depolama ekipmanına bağlamak için kullandığımız ekipmandır. Fiber ve iSCSI türü olarak günümüzde çeşitli seçenekleri mevcuttur.
SCSI iletişiminde cihazlar arasında veri iletişiminde komutlar CDB denen bir paketin içinde gitmektedir. CDB bir byte boyutunda bir “operation code” oluşur. Bunu daha sonra “command-specific parameters” ve “control areas” kodu izler. Boyutu 6, 10, 12, 16 byte olabilir ama yeni SCSI teknolojileri ile beraber bu bilgi çeşitli boyutlarda gönderilebilmektedir. Operation code bir CDB’nin boyutu ve hangi komutları içerdiği hakkında bilgi verir.
Bu komutlara örnek ne olabilir? Okuma komutu, yazma, LUN birimlerini raporlama, LUN birimlerini listeleme, vs. format komutu, belirli bir LUN birimini formatlama. SCSI komut setleri kapsamlı ve güçlü komut setleridir. Çoğu (okuma-yazma gibi) genellikle kullanılmaktadır.
Ayrıca cihazınıza verilen bir SCSI-ID bilgisi bu bilgiyle paylaşılmaktadır. 0-7 yarası yada güncel SCSI teknolojilerini kullandığımızda 0-15 arasında bağlantı imkanımız olabilmektedir. Sahip olduğunuz port türüne göre bu veri iletişimi sırasında target yada initiator olabilirsiniz. Yada her ikisi birden olabilirsiniz.
Yada çoklu portu olan bir target (hedef) olabilirsiniz. SCSI ID bu konuda bize yardım eder ve cihazlarımızı ayırt etmemizi sağlar ama bu karmaşıklıkta daha iyi bir adresleme sisteminin olması gerekir. Zamanla “CTD Addressing” denilen bir UNIX adresleme sistemi kullanılmaya başlandı. İsimlendirme türü olarak “cn/tn/dn” kalıbı kullanılır. Initiator ID, Target ID, Logical Unit Number (LUN) ID.
Logical Unit Number (LUN): belirli bir fiziksel storage yapının sanal olarak temsil edilmesidir. Bu diskin tümü olabilir, belirli bir grup diskin tümü olabilir (RAID gibi) yada bir diskin belirli bir partition olabilir. LUN depolama altyapınızdan fiziksel olarak bağımsız çalışır. Birden fazla sunucu yada client bu disk alanına aynı anda erişebilir. Diski kendi sistemlerinin bir parçası gibi görürler aslında böyle değildir. LUN alanında normal bir network altyapısı üzerinden erişilemez. iSCSI yada Fiber Channel teknolojisi kullanılması gerekmektedir. Bu diske erişimde kullanılan LUN Mapping işlemi işletim sistemleri tarafından yapılır. UNIX işletim sistemlerinin bunu yapmak için bir yolu, Windows işletim sistemlerinin başka bir yolu mevcuttur.
SATA cihazlarda olan Native Command Queue (NCQ) teknolojisinden bahsetmiştim. SCSI arabiriminde ise bunun bir benzeri olan TCQ (Tagged Command Queuing) teknolojisi mevcuttur. Böylece 216 komut aynı zamanda diliminde diske gönderilebilir. Ayrıca komutlar arasında bazılarına öncelik (priority) verilebilir. Diskin durumuna ve okuma-yazma kafasının bulunduğu pozisyona göre komutlar en baştan en sona doğru giderek verimli bir şekilde yazılır. Disk kafası da daha az hareketle daha çok komut işlemiş olur.