Powrót do strony głównej

Współdzielenie systemu plików przez kilka maszyn UML

Często się zdarza, że uruchamiamy kilka maszyn UML, które korzystają z takiego samego głównego systemu plików. Duża część danych jest w takiej sytuacji redundantna. Np. pliki konfiguracyjne, biblioteki itp. nie są zmieniane przy standardowym korzystaniu z UML, więc przetrzymywanie oddzielnej kopii tych plików dla każdej maszyny UML jest marnotrawstwem. Projektanci UML rozwiązali ten problem poprzez wprowadzenie mechanizmu Copy-On-Write (COW).

Mechanizm COW polega na leniwym kopiowaniu bloków dyskowych, które uległy zmianie. Gdy nadejdzie żądanie zapisanie pewnego bloku danych, który jest w pamięci na dysk system dopisuje ten blok do pliku COW. Gdy nadchodzi żądanie odczytania bloku danych z dysku mamy dwa możliwe przypadki: blok jest w pliku COW - czyli był modyfikowany - przesyłany jest wtedy do użytkownika. Drugi przypadek: bloku nie ma w pliku COW - należy pobrać go z głównego systemu plików.

Operacje zapisu i odczytu za pośrednictwem systemu COW najłatwiej zrozumieć patrząc na schemat:

 

Korzystanie z COW

Aby skorzystać z systemu COW należy przekazać odpowiednie parametry podczas uruchamiania UML. Komenda

ubd0=root_fs_cow,root_fs

powoduje utworzeni pliku COW o nazwie root_fs_cow. Plik ten gromadzi informacje o różnicach z głównym systemem plików umieszczonym w pliku root_fs.

Przy następnych uruchomieniach systemu UML nie musimy już podawać nazwy głównego systemu plików, gdyż jest ona umieszczona w pliku COW i system sam domyśli się, gdzie szukać głównego systemu plików.

Łączenie pliku COW z głównym systemem plików

Czasem zachodzi potrzeba naniesienia zmian z  pliku  COW na główny systemem plików. Służy do tego komenda:

uml_moo cow_file merged_file

W wyniku jej wykonania powstanie plik merged_file zawierający w sobie system plików, do którego odnosi się plik cow_file wraz z naniesionymi poprawkami. Należy zauważyć, że nie musimy podawać informacji na temat, którego systemu głównego plików tyczy się przekształcenie, gdyż jest to zawarte w nagłówku pliku cow_file.

Opisane wyżej wywołanie programu uml_moo nie jest destruktywne - nie niszczy oryginalnego głównego systemu plików - w związku z czym wymaga sporo przestrzeni dyskowej na zapisanie kopii złączonych plików. Istnieje możliwość naniesienia zmian z pliku COW "w miejscu". Służy do tego komenda:

uml_moo -d cow_file

 

Zalety wynikające ze stosowania COW

Korzystanie z COW pozwala zaoszczędzić znaczne ilość przestrzeni dyskowej. Widoczne to jest szczególnie w dużych systemach.

Oto przykład:

ls -ls cow.debian debian2.2
   880 -rw-r--r--    1 jdike    jdike    492504064 Aug  6 21:16 cow.debian
525832 -rwxrw-rw-    1 jdike    jdike    537919488 Aug  6 20:42 debian2.2

Łatwo można zaobserwować różnicę w zużytej przestrzeni dyskowej. Plik COW powstały w wyniku przykładowej pracy z UML zajmuje na dysku niecały 1MB, podczas gdy dane, które pokrywa to blisko 500MB.

 Kolejną zaletą COW jest zwiększenie wydajności systemu działającego pod kontrolą UML. Dzieje się tak gdyż dane współdzielone mogą być trzymane w pamięci głównej - gdyż zajmują nieporównywalnie mniej miejsca.

Następna zaletą jest bezpieczeństwo, gdyż w każdej chwili możemy przywrócić starą wersję plików systemowych (np. plików konfiguracyjnych, które nieopatrznie zmieniliśmy).

system plików w UML