Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klient wspólnego systemu plików dziennika dołącza rekordy dziennika do obszaru gromadzenia w pamięci ulotnej, a system plików CLFS okresowo zapisuje te rekordy w pamięci trwałej. Obszar buforowania jest zbiorem buforów we/wy logu, z których każdy może pomieścić kilka rekordów logu. Bufory we/wy dziennika przechowują rekordy ostatnio zapisywane w strumieniu (ale prawdopodobnie nie zostały zapisane do stabilnej pamięci) oraz rekordy ostatnio odczytywane ze strumienia.
Obszar marshallingu można utworzyć, wywołując funkcję ClfsCreateMarshallingArea. W tym momencie należy określić rozmiar buforów we/wy dziennika używanych przez ten obszar oraz zdecydować, czy te bufory znajdują się w puli stronicowanej, czy niestronicowanej. Wszystkie bufory I/O w obszarze marshallowym mają ten sam rozmiar, a CLFS zapewnia, że rozmiar jest wielokrotnością rozmiaru sektora na bazowym stabilnym nośniku pamięci masowej. Oznacza to, że CLFS pobiera żądany rozmiar i zaokrągla go w miarę potrzeb, aby bufory wejścia/wyjścia były zgodne ze stabilnym medium przechowywania.
CLFS przydziela i zwalnia bufory we/wy dziennika zgodnie z potrzebami, ale istnieje możliwość ustawienia maksymalnej liczby buforów we/wy, które można przydzielić w danym momencie. Masz także możliwość udostępniania swoich własnych funkcji alokacji i dealokacji buforu.
Aby określić maksymalną liczbę buforów we/wy dziennika, które można przydzielić jednocześnie do zapisywania rekordów dziennika, ustaw parametr cMaxWriteBuffers w funkcji ClfsCreateMarshallingArea. Ograniczenie liczby buforów wpływa na częstotliwość zrzutów danych do stabilnej pamięci; przy mniejszej liczbie buforów, logi muszą być zapisywane w stabilnej pamięci częściej. Jeśli nie musisz kontrolować częstotliwości opróżniania, ustaw wartość cMaxWriteBuffers na WARTOŚĆ INFINITE (zdefiniowaną w pliku Winbase.h).
Aby określić maksymalną liczbę buforów we/wy dziennika, które można przydzielić jednocześnie do odczytywania rekordów dziennika, ustaw parametr cMaxReadBuffers funkcji ClfsCreateMarshallingArea. Jeśli nie musisz kontrolować liczby przydzielonych buforów odczytu, ustaw cMaxReadBuffers na INFINITE.
Jeśli chcesz wykonać własną alokację pamięci dla buforów we/wy dziennika, ustaw parametry pfnAllocBuffer i pfnFreeBuffer funkcji ClfsCreateMarshallingArea, aby wskazywały na własne funkcje alokacji i dealokacji. Następnie CLFS wywołuje twoje funkcje w celu wykonania rzeczywistej alokacji i dealokacji pamięci za każdym razem, gdy musi utworzyć lub zwolnić bufory wejścia/wyjścia dziennika.
W niektórych przypadkach możesz zarezerwować przestrzeń w obszarze marshallingowym z wyprzedzeniem. Na przykład możesz wiedzieć, że zamierzasz napisać zestaw 10 rekordów dziennika i chcesz mieć pewność, że w obszarze buforowania jest wystarczająca ilość miejsca na cały zestaw. Aby zarezerwować miejsce dla 10 rekordów, utwórz tablicę 10 elementów zawierającą rozmiary rekordów, a następnie przekaż tablicę do funkcji ClfsReserveAndAppendLog w parametrze rgcbReservation . ClfsReserveAndAppendLog to funkcja wielofunkcyjna, która rezerwuje miejsce w obszarze marshallingu, dołącza rekordy dziennika do strumienia, lub wykonuje obydwie te czynności jednocześnie. Odpowiednio ustawiając parametry, można wywołać clfsReserveAndAppendLog , aby zarezerwować miejsce do użycia w przyszłości bez faktycznego dołączania żadnych rekordów do strumienia.