Journaling Block Device (Thiết bị ngăn chặn ghi nhật ký). JBD cung cấp phần đệm (pad) hỗn tạp để cung cấp nguyên tử trong vận hành. Do đó, một hệ
23
thống kiểm soát một thiết bị được ngăn chặn có thể tận dụng JBD trên cùng hoặc ngăn chặn một thiết bị khác để duy trì sự cố định. JBD thể hiện bộ API để sử dụng các ứng dụng như vậy.
Chi tiết về một vài các đối tượng mà JBD sử dụng. Một journal là một nhật ký mà quản lý sự cập nhật ngăn chặn bên trong của một thiết bị. Đầu tiên sự cập nhật được lưu trữ trong journal và sau đó nó được ánh xạ tới các vị trí thực của chúng trên đĩa. Vùng thuộc về journal được quản lý giống như danh sách liên kết vòng tròn. Nghĩa là, journal sẽ sử dụng lại vùng của nó khi journal đầy.
Một handle là sự thể hiện cập nhật một nguyên tử. Toàn bộ bộ thay đổi/ghi mà được thực hiện tự động sẽ được thực hiện bằng tham chiếu tới handle. Khó có một phương pháp hiệu quả nào thực hiện đầy đủ sự cập nhật nguyên tử tới journal, tuy nhiên. Để đạt được hiệu suất tốt hơn, JBD sẽ bó bộ các handle lại với nhau thành một giao dịch và thực hiện giao dịch này cho journal. JBD đảm bảo rằng giao dịch đó đúng là nguyên tử trong tự nhiên.
Tuy nhiên, các handles là một thành phần nhỏ của giao dịch cũng sẽ được đảm bảo trở thành nguyên tử.
Thuộc tính quan trọng nhất của giao dịch là trạng thái của nó. Khi một giao dịch được uỷ nhiệm, nó sẽ tuân theo vòng đời trạng thái sau.
- Hoạt động: giao dịch hiện tại đang làm việc và có thể chấp nhận các handles mới. Trong hệ thống chỉ có một giao dịch có trạng thái đang hoạt động. - Bị khoá: Giao dịch không chấp nhận bất kỳ một handles mới nào nhưng các
handles đang tồn tại sẽ không được thực hiện. Một khi tất cả các handles đang tồn tại được thực hiện, giao dịch sẽ chuyển sang trạng thái kế tiếp.
- Trung hoà: Tất cả các handles trong giao dịch được thực hiện. Giao dịch đang ghi lại chính nó vào journal.
- ủy nhiệm: Toàn bộ nhật ký giao dịch sẽ được ghi vào journal. Giao dịch đang ghi lại một sự ngăn chặn được ủy nhiệm sẽ chỉ ra rằng nhật ký phiên giao dịch trong journal là hoàn tất.
24
- Kết thúc: Giao dịch được ghi lại hoàn toàn cho journal. Nó phải duy trì cho tới khi các ngăn chặn được cập nhật vào vị trí thật trên đĩa.
Uỷ nhiệm giao dịch và kiểm tra điểm
Một phiên giao dịch đang hoạt động sẽ được ghi lại vào vùng journal sau một giai đoạn nào đó. Do đó, giao dịch hoặc có thể trong bộ nhớ đang họat động trên đĩa. Việc làm trung hoà một giao dịch cho journal và đánh dấu một giao dịch cụ thể khi chúng hoàn thành là một tiến trình được gọi là uỷ nhiệm giao dịch. Journal có một vùng được giới hạn dưới sự kiểm soát và nó cần sử dụng lại vùng này. Cũng như đối với một giao dịch được ủy nhiệm, sẽ có những ngăn chặn của nó được ghi lại trên đĩa, chúng sẽ không tiếp tục phải giữ trong journal. Sau đó, kiểm tra điểm (Checkpointing) là một tiến trình của sự trung hoà khi phiên giao dịch kết thúc và sẽ lấy lại khoảng trống tương ứng trong journal.
Triển khai
Lớp JBD thực hiện ghi nhật ký của dữ liệu meta, dữ liệu mà đơn giản chỉ được ghi vào đĩa mà không được ghi nhật ký. Nhưng điều này sẽ không làm dừng các ứng dụng khi ghi nhật ký dữ liệu, do đó, nó có thể được thể hiện trong JBD như là dữ liệu meta của chính nó.
25