Powered by Blogger.

Device Unique Identifiers (DUIDs) for Storage Devices

Các kỹ thuật để xác định các thiết bị lưu trữ trở nên không đầy đủ vì kiến trúc hệ thống tập tin trở nên phức tạp hơn, số lượng thành phần hệ điều hành nhân lên và initiators access storage targets thông qua các đường dẫn phần cứng và phần mềm ngày càng đa dạng.

Ví dụ, trình quản lý Cắm và Chạy (PnP) tạo một mã định danh (ID) cho mỗi thiết bị trong máy tính. Mỗi ID cá thể tương ứng với một nút thiết bị duy nhất trong cây thiết bị và nhận dạng duy nhất một thiết bị, nếu thiết bị vẫn ở cùng một vị trí. ID cá thể tồn tại khi máy tính được khởi động lại, nhưng chúng không giữ nguyên nếu bạn di chuyển thiết bị sang một bus khác hoặc một máy tính khác. Do đó, các ID cá thể không đủ cho các ứng dụng SAN và cho một số thành phần hệ thống mới hơn, chẳng hạn như Dịch vụ chẩn đoán Windows Vista, hoạt động trong môi trường có bộ nhớ phân tán. Khi một ổ đĩa cứng dự đoán một lỗi SMART, nó tạo ra một sự kiện cho dịch vụ chẩn đoán. Sự kiện này phải chứa một định danh nhận dạng duy nhất ổ cứng hỏng trên tất cả các máy tính mà đĩa có thể ở trong và trên tất cả các xe buýt mà nó có thể được gắn vào. ID thiết bị hoặc bất kỳ chuỗi nhận dạng thiết bị nào khác không đủ cho mục đích này.

Một số ứng dụng và dịch vụ hệ thống, chẳng hạn như MSCS và Trình quản lý phân vùng, sử dụng chữ ký bố cục thiết bị (STORAGE_DEVICE_LAYOUT_SIGNATURE) để nhận dạng duy nhất thiết bị lưu trữ trong một cụm. Nhưng chữ ký bố cục thiết bị không đủ cho mục đích này, trong một số trường hợp nhất định và bao gồm các hạn chế sau:
  • Chữ ký có thể thay đổi hoặc bị xóa.
  • Chữ ký có thể không khả dụng nếu thiết bị không quay hoặc gặp sự cố khi truy cập vào các sectors có chữ ký trên đó.
  • Chữ ký không có sẵn nếu đĩa được dành riêng bởi một nút cụm khác. MSCS có thể đọc bố cục ổ đĩa của chỉ các đĩa được liên kết với nút mà MSCS đang chạy. Phần mềm phải truy cập đĩa trong các nút cụm khác nhau phải sử dụng thay thế cho chữ ký bố cục đĩa.
  • Drive layout signatures không thể giúp phân biệt giữa số đơn vị logic (LUN) và ảnh chụp nhanh của nó. Vì LUN và snapshot của nó có nội dung giống nhau, drive layout signatures của chúng sẽ giống nhau.
Một số serial đôi khi là một kỹ thuật đáng tin cậy để xác định duy nhất một thiết bị lưu trữ không phụ thuộc vào vị trí của thiết bị. Số serial thường có sẵn như là một phần của dữ liệu truy vấn của thiết bị. Người khởi tạo có thể truy vấn dữ liệu yêu cầu bằng IOCTL_STORAGE_QUERY_PROPERTY yêu cầu và trình điều khiển cổng báo cáo kết quả của truy vấn trong STORAGE_DEVICE_DESCRIPTORstructure. Tuy nhiên, kỹ thuật này không giúp xác định các thiết bị, chẳng hạn như ổ đĩa băng, mà không có dữ liệu như yêu cầu.

Device Unique Identifiers (DUIDs)

Bởi vì các kỹ thuật cho các thiết bị nhận dạng duy nhất thường trở nên lỗi thời khi công nghệ phát triển, Microsoft đã phát triển định dạng ID thiết bị được gọi là ID duy nhất của thiết bị (DUID) có thể mở rộng và có thể kết hợp các kỹ thuật mới để nhận dạng thiết bị khi chúng khả dụng.

DUID được xác định bởi cấu trúc STORAGE_DEVICE_UNIQUE_IDENTIFIER và phiên bản đầu tiên của cấu trúc này (DUID_VERSION_1) bao gồm kết hợp các số nhận dạng sau:

Cấu trúc STORAGE_DEVICE_ID_DESCRIPTOR chứa các số nhận dạng được trích xuất từ page 0x83 của dữ liệu sản phẩm quan trọng của thiết bị (VPD). Thông thường, chỉ có các thiết bị SCSI và Fibre Channel hỗ trợ trang này. Thiết bị điện tử ổ đĩa tích hợp (IDE) và thiết bị Bus nối tiếp Universal (USB), ổ IEEE 1394 và bộ điều khiển RAID không cung cấp page 0x83.

Cấu trúc STORAGE_DEVICE_DESCRIPTOR chứa dữ liệu truy vấn khác, bao gồm offset  cho số serial của đơn vị trong thành viên SerialNumberOffset. Số serial được định dạng dưới dạng chuỗi có độ dài biến, NULL. Nếu thiết bị lưu trữ tương thích với SCSI, trình điều khiển cổng cố gắng trích xuất số sêri từ trang Số sê-ri đơn vị tùy chọn (trang 0x80) của VPD. Nếu thiết bị lưu trữ là một thiết bị IDE, trình điều khiển cổng sẽ tạo một số serial từ dữ liệu nhận dạng của thiết bị.

STORAGE_DEVICE_LAYOUT_SIGNATURE chứa device layout signature.

DUID không có kích thước cố định, vì vậy phần mềm sử dụng DUID (được gọi là người tiêu dùng DUID) phải có kích thước DUID từ thành viên Kích thước của cấu trúc STORAGE_DEVICE_UNIQUE_IDENTIFIER. Phiên bản DUID có sẵn trong thành viên Vers **** ion của cùng cấu trúc này.

Một số thiết bị không cung cấp đủ thông tin cho hệ thống để đảm bảo rằng DUID của thiết bị sẽ duy nhất cho tất cả các ứng dụng và tất cả người tiêu dùng DUID. Nếu hệ điều hành có thể lấy các ID duy nhất từ VPD của thiết bị, nó có thể tạo ra một DUID duy nhất cho tất cả người dùng DUID. Nhưng nếu hệ thống phải tạo ra một DUID từ device layout signature một mình, DUID sẽ là duy nhất cho một số người dùng DUID nhưng không phải cho người khác.
Hệ thống cố gắng tạo ra một DUID có các đặc điểm sau:
  • DUID vẫn giữ nguyên khi hệ điều hành khởi động lại.
  • DUID vẫn giữ nguyên, ngay cả khi thiết bị được chuyển từ máy tính này sang máy tính khác, một bộ chuyển đổi sang một máy tính khác hoặc một kênh khác.
  • DUID xác định thiết bị chứ không phải phương tiện. Sự khác biệt này rất quan trọng đối với các ổ đĩa có phương tiện lưu động.
  • Trên các hệ thống đa kênh, DUID giống nhau cho tất cả các đường dẫn I / O.
  • DUID có những hạn chế sau:
  • DUID thường chứa nội dung nhị phân không thể hiển thị.
  • DUID không phải lúc nào cũng bị hủy. Người dùng DUID phải kiểm tra thành viên Kích thước của cấu trúc STORAGE_DEVICE_LAYOUT_SIGNATURE để xác định độ dài của DUID.
  • Người dùng DUID phải sử dụng CompareStorageDuids để so sánh DUID thay vì so sánh chúng theo byte.
Các trình liệt kê phải không cố gắng sử dụng DUID để xác định các đối tượng thiết bị cho các mục đích Cắm và Chạy (PnP). Hệ thống đa kênh có thể có nhiều thiết bị chia sẻ cùng một DUID. Nhưng đối với PnP, ID thiết bị phải là duy nhất.

Cách so sánh DUID

Người dùng DUID phải sử dụng CompareStorageDuids, được định nghĩa trong Storduids.h, để so sánh hai DUID. CompareStorageDuids trả về giá trị DUID_MATCH_STATUS cho biết hai DUID khớp với nhau. Nếu hoạt động thành công, CompareStorageDuids trả về một trong các giá trị sau:
DuidExactMatch

Tất cả các trường trong hai DUID khớp chính xác.
DuidSubIdMatch

Một DUID được tạo thành từ một số ID phụ. Ít nhất một trong các ID phụ khớp với nhau và hai DUID có thể đại diện cho cùng một thiết bị. Khi phần mềm thiết bị được cập nhật, nó có thể có được mã định danh mới, điều này sẽ thay đổi thành phần DUID của thiết bị. Nếu người dùng DUID so sánh DUID cũ cho thiết bị với DUID mới, CompareStorageDuids có thể trả về DuidSubIdMatch thay vì DuidExactMatch. Đây là ví dụ về đối sánh hợp lệ dựa trên ID phụ. Một người dùng DUID phải chọn xem nó sẽ chấp nhận giá trị trả về DuidSubIdMatch dưới dạng khớp hoặc không khớp, tùy thuộc vào yêu cầu của người tiêu dùng DUID.
DuidNoMatch

Số sê-ri không khớp, và không có ID phụ duy nhất nào từ trang 83h của dữ liệu sản phẩm quan trọng (VPD) phù hợp.

Ngoài các giá trị trước đó, CompareStorageDuids có thể trả về các mã lỗi khác nhau. Thường trình CompareStorageDuids sử dụng thuật toán sau để so sánh hai DUID:

  1. Kiểm tra một kết hợp chính xác. Nếu tất cả dữ liệu trong DUID khớp nhau, DUID khớp chính xác và CompareStorageDuids trả về DuidExactMatch. Nếu không, hãy tiếp tục với lần kiểm tra tiếp theo.
  2. Kiểm tra số nhận dạng VPD. Nếu bất kỳ ID phụ duy nhất nào phù hợp, các DUID khớp và CompareStorageDuids trả về DuidSubIdMatch. Nếu không có ID phụ phù hợp hoặc thiết bị không cung cấp số nhận dạng VPD duy nhất, hãy tiếp tục với lần kiểm tra tiếp theo.
  3. Kiểm tra số sê-ri của thiết bị. Nếu ID nhà cung cấp, ID sản phẩm và số sê-ri giống nhau, kết quả DUID và CompareStorageDuids trả về DuidSubIdMatch. Nếu không có giá trị nào trong số các giá trị này khớp với hoặc thiết bị không cung cấp các giá trị này, hãy tiếp tục với lần kiểm tra tiếp theo.
  4. Kiểm tra chữ ký bố cục ổ đĩa. Nếu ký hiệu bố trí ổ đĩa của hai khớp DUID, kết quả DUID khớp vàCompareStorageDuids trả về DuidSubIdMatch. Nếu ký hiệu ổ đĩa không khớp hoặc hệ thống không thể đọc chữ ký bố trí ổ đĩa của thiết bị, DUID không khớp và CompareStorageDuids trả về DuidNoMatch.
    Blogger Comment
    Facebook Comment