Siêu dữ liệu là gì và nó hỗ trợ như thế nào trong quá trình fsck của YouTube?


8

Nếu tôi hiểu chính xác, "fsck" được sử dụng trong các hệ thống UNIX để kiểm tra tính nhất quán bên trong các đĩa sau khi xảy ra sự cố. Sau đó, tôi đã tự hỏi làm thế nào nó sử dụng "siêu dữ liệu" để đảm bảo rằng mọi thứ trong hệ thống tập tin đều nhất quán, ví dụ như các bước mà quy trình fsck cần phải thực hiện để khôi phục và sửa chữa?

-> chỉnh sửa: cũng sẽ hữu ích nếu ai đó có thể làm rõ những gì "ghi đồng bộ" đề cập đến trong hình ảnh này.


Điều này có vẻ như sẽ có nhiều chủ đề hơn trên U & L, có thể.

Câu trả lời:


13

Siêu dữ liệu là thông tin về dữ liệu. Nếu bạn nghĩ về một tệp văn bản, chuỗi các chữ cái của tệp văn bản đó là dữ liệu thực tế mà tệp chứa. Tuy nhiên, tệp có tên, chủ sở hữu, ngày tạo, vị trí trên phương tiện lưu trữ, v.v ... Tất cả thông tin này là siêu dữ liệu. Lưu ý rằng siêu dữ liệu có thể được xử lý giống như dữ liệu đó. Chẳng hạn, Unix lưu trữ siêu dữ liệu tệp trong các tệp dữ liệu được gọi là thư mục (hoặc thư mục trong thời đại điện toán mới này :-)

Hệ thống tệp Unix sử dụng một đơn vị lưu trữ cơ bản được gọi là inodes . Một inode riêng lẻ có thể chứa dữ liệu tệp thực tế, thông tin thư mục (siêu dữ liệu) hoặc không được sử dụng (miễn phí). Lưu ý rằng hành động tạo tệp mới liên quan đến việc thay đổi trạng thái của một nút từ tự do sang cấp phát, ghi dữ liệu vào tệp mới và ghi siêu dữ liệu vào tệp thư mục. Có thể máy tính gặp sự cố ở giữa loại hoạt động này, trong trường hợp đó hệ thống tệp có thể bị hỏng .

Kiểm tra hệ thống tệp bao gồm đọc tất cả các nút và cố gắng giải quyết càng nhiều vấn đề tham nhũng càng tốt. Ví dụ, giả sử một nút không nằm trong danh sách các nút miễn phí, nhưng không có mục nhập thư mục nào nói rằng nút này là một phần của tệp trong bất kỳ thư mục nào mà hệ thống tệp biết. Inode này có thể được đặt trở lại trong danh sách các nút miễn phí.

Ghi đồng bộ là cách thực hiện ghi vào đĩa theo cách đảm bảo rằng nếu xảy ra sự cố, hệ thống tệp có thể được phục hồi. Chẳng hạn, khi bạn đang tạo một tệp mới, bạn cần phân bổ một nút, tạo nút in với bộ siêu dữ liệu của nó, sau đó cập nhật tệp chứa thông tin thư mục. Với tính năng ghi đồng bộ , chúng được thực hiện dưới dạng các hành động riêng biệt, từng hành động theo thứ tự đó. Nếu sự cố xảy ra trước khi thư mục được ghi, thì inode có thể được đặt lại vào danh sách miễn phí và việc tạo tệp không xảy ra.

Các loại kiểm tra hệ thống tập tin là có thể là tốt.


6

Trong ngữ cảnh của các hệ thống tệp Unix hoặc Linux, "siêu dữ liệu" là thông tin về một tệp: ID người dùng của người sở hữu nó, quyền, loại tệp (đặc biệt, thông thường, tên ống, v.v.) và khối nào sử dụng tệp. Đó là tất cả thường được giữ trong một cấu trúc trên đĩa được gọi là "inode". Một trong những thông tin trong một nút là có bao nhiêu "liên kết" đến tệp tồn tại. Một tệp thông thường thường có 1, nhưng một thư mục (phần lớn là một tệp có dấu loại tệp "Tôi là thư mục" đặc biệt) có ít nhất 2 liên kết. Mọi thứ hiển thị trong một hệ thống tệp đều có một liên kết từ thư mục mà nó xuất hiện, nhưng vì mọi thư mục đều có "." Tên cũng như tên thông thường của nó, họ có 2 liên kết.

fsckcó thể quét các "khối inode" của hệ thống tệp (các khối đĩa chứa cấu trúc dữ liệu inode) để tìm các nút có số lượng liên kết lớn hơn 0. Một tệp được biểu thị bằng một nút có số liên kết lớn hơn 0 sẽ xuất hiện trong một thư mục ở đâu đó. Nếu inode đó không xuất hiện trong một thư mục, hãy fsckđặt tệp vào thư mục nổi tiếng, thường là "mất + tìm thấy" ở đầu hệ thống tệp. Lưu ý rằng các hệ thống tệp Unix / Linux thường không có bất kỳ siêu dữ liệu nào trong một nút về việc thư mục đó thuộc về thư mục nào, chỉ có thông tin trong tệp thư mục về tệp mà thư mục chứa.

fsckcó thể sử dụng siêu dữ liệu khác như khối đĩa nào chứa dữ liệu của tệp. fsckcó thể kiểm tra xem các khối đĩa mà một nút inode có thuộc về một tệp xuất hiện trong "danh sách chưa phân bổ" của các khối đĩa hay không. Có khả năng fsckcó thể kiểm tra xem hai hoặc nhiều nút có chứa cùng một khối đĩa hay không, điều này cho thấy một số loại tham nhũng đa cấp.

Việc phân bổ các khối đĩa cho các tệp xuất hiện trong các nút trên đĩa. Cấu trúc cây thành viên thư mục của một hệ thống tệp xuất hiện trong các thư mục. Các nút không xuất hiện và không được phân bổ cho các thư mục. fscklợi dụng sự tách biệt này để sửa chữa. Điều này khá khác biệt so với các hệ thống như MS-DOS hoặc Windows đời đầu, trong đó "bảng phân bổ tệp" chứa cả cấu trúc cây (thành viên thư mục) và phân bổ khối đĩa. Bị hỏng "FAT" và bạn phải quét các khối đĩa để xem chúng chứa gì và chúng có thể khớp với nhau như thế nào.


5

Siêu dữ liệu là "Dữ liệu về dữ liệu".

Trong trường hợp hệ thống tệp * nix, siêu dữ liệu được sử dụng fscktừ một tiêu đề trên mỗi khối dữ liệu sẽ quay lại mục nhập thư mục hoặc khối dữ liệu tiếp theo và các mục tương ứng trong thư mục. fsckquét các khối và kiểm tra xem các mục nhập thư mục khớp với nhau và các con trỏ chuyển tiếp đến khối tiếp theo là chính xác.

Điều này thay đổi rất lớn giữa các hệ thống tập tin. Trong thực tế, siêu dữ liệu nào được lưu trữ và nơi nó được lưu trữ là những gì khác biệt nhất giữa các hệ thống tệp * nix khác nhau. Những cái hiện đại hơn cũng giữ một tệp nhật ký thay đổi cấu trúc thư mục.


Chỉ tò mò, nhưng bạn có biết làm thế nào hoặc nơi các triển khai hiện đại lưu trữ siêu dữ liệu trên đĩa không?
Kaitlyn Mcmordie

1
@KaitlynMcmordie, phụ thuộc vào fs. Đối với ext [234], hầu hết siêu dữ liệu được lưu trữ trong inode của tệp. Tên được / được lưu trữ trong các thư mục, nghĩa là phần dữ liệu của các tệp có cờ thư mục và định dạng cụ thể cho dữ liệu chính của chúng. Dữ liệu tệp được lưu trữ trong các khối dữ liệu và các nút được lưu trữ trong các bảng inode, được phân bổ khi fs được định dạng. Các dữ liệu khác trong inode bao gồm chủ sở hữu, quyền, dấu thời gian truy cập và con trỏ tới các khối dữ liệu.
psusi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.