Paralel Sanal Dosya Sistemi - Parallel Virtual File System
| Orijinal yazar (lar) | Clemson Üniversitesi , Argonne Ulusal Laboratuvarı , Ohio Süper Bilgisayar Merkezi |
|---|---|
| Geliştirici (ler) | Walt Ligon, Rob Ross, Phil Carns, Pete Wyckoff, Neil Miller, Rob Latham, Sam Lang, Brad Settlemyer |
| İlk sürüm | 2003 |
| Kararlı sürüm | 2.8.2 / 1 Ocak 2010
|
| Yazılmış | C |
| İşletim sistemi | Linux çekirdeği |
| Lisans | LGPL |
| İnternet sitesi | web |
Paralel Sanal Dosya Sistemi ( PVFS ) bir olan açık kaynak paralel dosya sistemi . Paralel dosya sistemi, dosya verilerini birden çok sunucuya dağıtan ve bir paralel uygulamanın birden çok görevi tarafından eşzamanlı erişim sağlayan bir tür dağıtılmış dosya sistemidir . PVFS, büyük ölçekli küme hesaplamasında kullanılmak üzere tasarlanmıştır . PVFS, büyük veri kümelerine yüksek performanslı erişime odaklanır. Her ikisi de tamamen kullanıcı düzeyinde kodla yazılmış bir sunucu işleminden ve bir istemci kitaplığından oluşur. Bir Linux çekirdek modülü ve pvfs-istemci işlemi, dosya sisteminin standart yardımcı programlarla bağlanmasına ve kullanılmasına izin verir. İstemci kitaplığı, mesaj geçirme arabirimi (MPI) aracılığıyla yüksek performanslı erişim sağlar . PVFS, Clemson Üniversitesi'ndeki Paralel Mimari Araştırma Laboratuvarı ile Argonne Ulusal Laboratuvarı'ndaki Matematik ve Bilgisayar Bilimleri Bölümü ve Ohio Süper Bilgisayar Merkezi arasında ortaklaşa geliştirilmektedir . PVFS gelişimi, NASA Goddard Uzay Uçuş Merkezi , DOE Office of Science Advanced Scientific Computing Research programı, NSF PACI ve HECURA programları ve diğer hükümet ve özel kurumlar tarafından finanse edilmektedir . PVFS artık en yeni geliştirme dalında OrangeFS olarak biliniyor .
Tarih
PVFS ilk olarak 1993 yılında Walt Ligon ve Eric Blumer tarafından paralel programların I / O modellerini incelemek için NASA hibesinin bir parçası olarak Paralel Sanal Makine (PVM) için paralel bir dosya sistemi olarak geliştirildi. PVFS sürüm 0, IBM TJ Watson Araştırma Merkezi'nde geliştirilen paralel bir dosya sistemi olan Vesta'ya dayanıyordu . 1994'ten başlayarak Rob Ross, PVFS'yi TCP / IP kullanmak için yeniden yazdı ve birçok orijinal Vesta tasarım noktasından ayrıldı. PVFS sürüm 1, anahtarlamalı FDDI kullanılarak ağa bağlanan bir DEC Alpha iş istasyonu kümesine hedeflendi . Vesta gibi, PVFS de verileri birden çok sunucuda şeritledi ve adım adım erişim modelini tanımlayan bir dosya görünümüne dayalı olarak I / O isteklerine izin verdi. Vesta'dan farklı olarak, şeritleme ve görünüm ortak bir kayıt boyutuna bağlı değildi. Ross'un araştırması, birden çok istemci aynı dosyaya erişirken disk G / Ç planlamasına odaklandı. Önceki sonuçlar, mümkün olan en iyi disk erişim modeline göre programlamanın tercih edilebilir olduğunu göstermişti. Ross, bunun ağın göreceli hızı ve dosya görünümünün ayrıntıları dahil olmak üzere bir dizi faktöre bağlı olduğunu gösterdi. Bazı durumlarda, ağ trafiğine dayalı bir planlama tercih edildi, bu nedenle dinamik olarak uyarlanabilir bir program en iyi genel performansı sağladı.
1994 yılının sonlarında Ligon, Goddard Uzay Uçuş Merkezi'nde ( GSFC) Thomas Sterling ve John Dorband ile bir araya geldi ve ilk Beowulf bilgisayarını inşa etme planlarını tartıştı . PVFS'nin Linux'a taşınması ve yeni makinede yer alması kararlaştırıldı. Sonraki birkaç yıl içinde Ligon ve Ross, aralarında Donald Becker, Dan Ridge ve Eric Hendricks bulunan GSFC grubuyla çalıştı. 1997'de Pasadena'daki bir küme toplantısında CA Sterling, PVFS'nin açık kaynaklı bir paket olarak piyasaya sürülmesini istedi.
PVFS2
1999'da Ligon, başlangıçta PVFS2000 ve daha sonra PVFS2 olarak adlandırılan yeni bir PVFS sürümünün geliştirilmesini önerdi. Tasarım başlangıçta Ligon, Ross ve Phil Carns tarafından geliştirildi. Ross doktorasını 2000 yılında tamamladı ve Argonne Ulusal Laboratuvarı'na taşındı ve tasarım ve uygulama Clemson Üniversitesi'nde Ligon, Carns, Dale Witchurch ve Harish Ramachandran , Argonne Ulusal Laboratuvarı'nda Ross, Neil Miller ve Rob Latham ve Pete tarafından gerçekleştirildi. Wyckoff, Ohio Süper Bilgisayar Merkezinde. Yeni dosya sistemi 2003 yılında piyasaya sürüldü. Yeni tasarımda nesne sunucuları, dağıtılmış meta veriler, MPI tabanlı görünümler, birden çok ağ türü desteği ve kolay deneme ve genişletilebilirlik için bir yazılım mimarisi bulunuyordu.
PVFS sürüm 1, 2005 yılında kullanımdan kaldırılmıştır. PVFS sürüm 2, halen Clemson ve Argonne tarafından desteklenmektedir. Carns, 2006 yılında doktorasını tamamladı ve veri madenciliği için PVFS'nin birkaç bin düğümde konuşlandırıldığı Axicom, Inc.'e katıldı. Carns 2008'de Argonne'a taşındı ve Ross, Latham ve Sam Lang ile birlikte PVFS üzerinde çalışmaya devam ediyor. Brad Settlemyer, Clemson'da bir yansıtma alt sistemi geliştirdi ve daha sonra yeni gelişmeleri araştırmak için kullanılan ayrıntılı bir PVFS simülasyonu. Settlemyer şu anda Oak Ridge Ulusal Laboratuvarı'nda . 2007'de Argonne, bir IBM Blue Gene / P'de kullanılmak üzere PVFS'yi taşımaya başladı . 2008'de Clemson, büyük küçük dosya dizinlerini, güvenlik geliştirmelerini ve yedeklilik yeteneklerini desteklemek için uzantılar geliştirmeye başladı. Bu hedeflerin çoğu Blue Gene'nin geliştirilmesiyle çeliştiğinden, CVS kaynak ağacının ikinci bir dalı oluşturuldu ve "Turuncu" olarak adlandırıldı ve orijinal dal "Mavi" olarak adlandırıldı. PVFS ve OrangeFS birbirlerini çok yakından izler, ancak iki farklı kullanıcı gereksinimi grubunu temsil eder. Çoğu yama ve yükseltme her iki dala da uygulanır. OrangeFS 2011 itibariyle ana geliştirme hattıdır.
Özellikleri
PVFS kullanan bir kümede, düğümler şunlardan biri veya daha fazlası olarak belirlenir: istemci, veri sunucusu, meta veri sunucusu. Veri sunucuları dosya verilerini tutar. Meta veri sunucuları, stat-info, öznitelikler ve veri dosyası tanıtıcılarının yanı sıra dizin girişlerini içeren meta verileri tutar. İstemciler, ağ üzerinden sunuculara istek göndererek dosya sistemini kullanan uygulamaları çalıştırır.
Nesne tabanlı tasarım
PVFS, nesne tabanlı bir tasarıma sahiptir, yani tüm PVFS sunucu talepleri, veri alanları adı verilen nesneleri içeren nesnelerdir. Bir veri alanı, dosya verilerini, dosya meta verilerini, dizin meta verilerini, dizin girdilerini veya sembolik bağlantıları tutmak için kullanılabilir. Bir dosya sistemindeki her veri alanının benzersiz bir tanıtıcısı vardır. Herhangi bir istemci veya sunucu, tutamaca bağlı olarak veri alanını hangi sunucunun tuttuğunu arayabilir. Bir veri alanının iki bileşeni vardır: bir yan test akışı ve bir dizi anahtar / değer çifti. Yan test akışı, tipik olarak dosya verilerini tutmak için kullanılan sıralı bir bayt dizisidir ve anahtar / değer çiftleri tipik olarak meta verileri tutmak için kullanılır. Nesne tabanlı tasarım, Luster , Panasas ve pNFS dahil olmak üzere birçok dağıtılmış dosya sisteminde tipik hale geldi .
Verilerin ve meta verilerin ayrılması
PVFS, bir istemcinin meta veriler için bir sunucuya bir kez erişebilmesi ve ardından meta veri sunucularıyla daha fazla etkileşime girmeden veri sunucularına erişebilmesi için tasarlanmıştır. Bu, sistemdeki kritik bir darboğazı ortadan kaldırır ve çok daha yüksek performansa izin verir.
MPI tabanlı istekler
Bir istemci programı PVFS'den veri talep ettiğinde, MPI_Datatypes'e dayanan verilerin bir açıklamasını sağlayabilir. Bu özellik, MPI dosya görünümlerinin doğrudan dosya sistemi tarafından uygulanmasına izin verir. MPI_Datatypes karmaşık, bitişik olmayan veri modellerini tanımlayabilir. PVFS sunucusu ve veri kodları, verileri birden çok sunucu ve istemci arasında verimli bir şekilde aktaran veri akışlarını uygular.
Çoklu ağ desteği
PVFS, özellikle dosya sistemleri için tasarlanmış, engellemeyen bir mesaj arabirimi sağlayan BMI adlı bir ağ katmanı kullanır. BMI, TCP / IP, Myrinet , Infiniband ve Portals dahil olmak üzere yüksek performanslı hesaplamada kullanılan bir dizi farklı ağ için birden fazla uygulama modülüne sahiptir .
Durum bilgisi olmayan (kilitsiz) sunucular
PVFS sunucuları, birbirleriyle veya istemcilerle herhangi bir durumu paylaşmayacak şekilde tasarlanmıştır. Bir sunucu çökerse, onun yerine başka biri kolaylıkla yeniden başlatılabilir. Güncellemeler kilit kullanılmadan yapılır.
Kullanıcı düzeyinde uygulama
PVFS istemcileri ve sunucuları kullanıcı düzeyinde çalışır. Çekirdek değişikliklerine gerek yoktur. Bir PVFS dosya sisteminin diğer herhangi bir dosya sistemi gibi monte edilmesine izin veren isteğe bağlı bir çekirdek modülü vardır veya programlar doğrudan MPI-IO veya Posix benzeri bir arayüz gibi bir kullanıcı arayüzüne bağlanabilir. Bu özellikler, PVFS'nin kurulumunu kolaylaştırır ve sistem çökmelerine neden olma eğilimini azaltır.
Sistem düzeyinde arayüz
PVFS arayüzü, sistem düzeyinde entegre olacak şekilde tasarlanmıştır. Linux VFS ile benzerlikleri vardır , bu da monte edilebilir bir dosya sistemi olarak uygulanmasını kolaylaştırır, ancak MPI-IO veya Posix benzeri arayüzler gibi kullanıcı seviyesindeki arayüzlere eşit derecede uyarlanabilir . Temel dosya sisteminin birçok özelliğini ortaya çıkarır, böylece arayüzler istenirse bunlardan yararlanabilir.
Mimari
PVFS, 4 ana bileşenden ve bir dizi yardımcı programdan oluşur. Bileşenler, PVFS2 sunucusu, pvfslib, PVFS istemci çekirdeği ve PVFS çekirdek modülüdür. Yardımcı programlar, tümü çekirdek modülünü kullanmadan (esas olarak bakım ve test için) doğrudan dosya sistemi üzerinde çalışan karma yönetim aracı, yardımcı programları (örn., Pvfs-ping, pvfs-ls, pvfs-cp, vb.) İçerir. Diğer bir anahtar tasarım noktası, istemci ve sunucu arasında aktarılan mesajları tanımlayan PVFS protokolüdür, ancak bu kesinlikle bir bileşen değildir.
PVFS2 sunucusu
PVFS sunucusu, G / Ç düğümü olarak belirlenmiş bir düğümde bir işlem olarak çalışır. G / Ç düğümleri genellikle özel düğümlerdir, ancak uygulama görevlerini de çalıştıran normal düğümler olabilir. PVFS sunucusu genellikle kök olarak çalışır, ancak tercih edilirse kullanıcı olarak da çalıştırılabilir. Her sunucu birden çok farklı dosya sistemini yönetebilir ve bir meta veri sunucusu, veri sunucusu veya her ikisi olarak çalışacak şekilde tasarlanmıştır. Tüm yapılandırma, komut satırında belirtilen bir yapılandırma dosyası tarafından kontrol edilir ve belirli bir dosya sistemini yöneten tüm sunucular aynı yapılandırma dosyasını kullanır. Sunucu, ağ üzerinden istekleri alır, disk G / Ç'yi içerebilecek isteği gerçekleştirir ve orijinal istek sahibine yanıt verir. İstekler normalde uygulama görevlerini çalıştıran istemci düğümlerinden gelir ancak diğer sunuculardan da gelebilir. Sunucu, istek işlemcisi, iş katmanı, Trove, BMI ve akış katmanlarından oluşur.
İşlemci iste
İstek işlemcisi, sunucu işleminin ana döngüsünden ve bir dizi durum makinesinden oluşur. Durum makineleri, sunucu ve istemci içindeki eşzamanlılığı yöneten PVFS için geliştirilmiş basit bir dile dayanmaktadır. Bir durum makinesi, her biri bir C durumu eylem işlevini çalıştıran veya bir iç içe (alt rutin) durum makinesini çağıran bir dizi durumdan oluşur. Her iki durumda da dönüş kodları bir sonraki duruma hangi duruma geçileceğini seçin. Durum eylem işlevleri, tipik olarak, Trove veya BMI aracılığıyla bir tür G / Ç gerçekleştiren iş katmanı aracılığıyla bir iş gönderir. İşler bloke edici değildir, böylece bir iş verildikten sonra durum makinesinin yürütmesi ertelenir, böylece başka bir durum makinesi başka bir isteğe hizmet sunabilir. İşler tamamlandığında, ana döngü ilişkili durum makinesini yeniden başlatır. İstek işlemcisi, PVFS istek protokolünde tanımlanan çeşitli istek türlerinin her biri için durum makinelerine ve ayrıca dahili olarak kullanılan bir dizi iç içe geçmiş durum makinesine sahiptir. Durum makinesi mimarisi, özellikler eklemek veya belirli durumlar için optimize etmek için sunucuya yeni istekler eklemeyi nispeten kolaylaştırır.
İş katmanı
İş katmanı, Trove, BMI ve akış işlerini göndermek ve bunların tamamlandığını bildirmek için ortak bir arayüz sağlar. Ayrıca, istek planlayıcısını, hangi nesneler üzerinde ne tür isteklerin devam ettiğini kaydeden ve aynı dosya verileri üzerinde eşzamanlı çalışmadan kaynaklanan tutarlılık hatalarını önleyen, engellemeyen bir iş olarak uygular.
Trove
Trove, yerel sunucuda depolanan nesnelere G / Ç'yi yönetir. Trove, veri alanları koleksiyonları üzerinde çalışır. Bir koleksiyonun kendi bağımsız tutamaç alanı vardır ve farklı PVFS dosya sistemlerini uygulamak için kullanılır. Bir veri alanı bir PVFS nesnesidir ve kendi benzersiz (koleksiyon içinde) tutamacına sahiptir ve tek bir sunucuda depolanır. Tanıtıcılar, yapılandırma dosyasındaki bir tablo aracılığıyla sunucularla eşleştirilir. Bir veri alanı iki bölümden oluşur: bir yan-akış ve bir dizi anahtar / değer çifti. Bir yan test akışı, belirsiz uzunluktaki bayt dizisidir ve genellikle yerel dosya sistemindeki bir dosyada dosya verilerini depolamak için kullanılır. Anahtar / değer çiftleri meta verileri, öznitelikleri ve dizin girdilerini depolamak için kullanılır. Trove, iyi tanımlanmış bir arayüze sahiptir ve çeşitli şekillerde uygulanabilir. Bugüne kadar tek uygulama, bytestreams'i bir Berkeley DB veritabanındaki dosyalarda ve anahtar / değer çiftlerinde depolayan Trove-dbfs uygulamasıydı . Trove işlemleri engellemez, API, çeşitli bileşenleri okumak veya yazmak için post fonksiyonları sağlar ve kontrol etmek veya tamamlanmasını beklemek için işlevler sağlar.
BMI
Akışlar
pvfslib
PVFS istemci çekirdeği
PVFS çekirdek modülü
Ayrıca bakınız
Referanslar
Dış bağlantılar
- Resmi internet sitesi
- Turuncu Dosya Sistemi - Paralel Sanal Dosya Sisteminin bir dalı
- Yeni Nesil Paralel Dosya Sisteminin Mimarisi
- Video arşivi