Trình quản lý khối hợp lý (Linux) – Wikipedia

Trong Linux, Trình quản lý khối hợp lý ( LVM ) là mục tiêu ánh xạ thiết bị cung cấp quản lý âm lượng hợp lý cho nhân Linux. Hầu hết các bản phân phối Linux hiện đại đều nhận biết LVM đến mức có thể có các hệ thống tệp gốc của chúng trên một khối lượng logic. [3][4][5]

Heinz Mauelshagen đã viết mã LVM ban đầu vào năm 1998, lấy hướng dẫn thiết kế chính của nó từ trình quản lý âm lượng của HP-UX . [1]

Sử dụng phổ biến [ chỉnh sửa ]

LVM được sử dụng cho các mục đích sau:

  • Tạo các khối logic đơn của nhiều ổ đĩa vật lý hoặc toàn bộ đĩa cứng (hơi giống với RAID 0, nhưng tương tự như JBOD), cho phép thay đổi kích thước ổ đĩa động.
  • Quản lý các trang trại đĩa cứng lớn bằng cách cho phép thêm đĩa và thêm được thay thế mà không có thời gian chết hoặc gián đoạn dịch vụ, kết hợp với trao đổi nóng cần thiết.
  • Thực hiện sao lưu nhất quán bằng cách chụp nhanh các khối hợp lý.
  • Mã hóa nhiều phân vùng vật lý bằng một mật khẩu.

LVM có thể được coi là một lớp phần mềm mỏng trên đầu đĩa cứng và phân vùng, tạo ra một sự trừu tượng của tính liên tục và dễ sử dụng để quản lý việc thay thế ổ đĩa cứng, phân vùng lại và sao lưu.

Các tính năng [ chỉnh sửa ]

Các yếu tố khác nhau của LVM

Chức năng cơ bản [ chỉnh sửa ]

  • được thay đổi kích thước trực tuyến bằng cách hấp thụ các khối vật lý mới (PV) hoặc loại bỏ các khối hiện có.
  • Khối lượng logic (LV) có thể được thay đổi kích thước trực tuyến bằng cách ghép các khoảng mở rộng lên chúng hoặc cắt ngắn các khoảng cách từ chúng.
  • LV có thể được di chuyển giữa các PV. 19659007] Tạo các ảnh chụp nhanh chỉ đọc các khối hợp lý (LVM1) hoặc các ảnh chụp nhanh đọc-ghi (LVM2).
  • Các VG có thể được tách hoặc hợp nhất tại chỗ miễn là không có LV nào tách rời. Điều này có thể hữu ích khi di chuyển toàn bộ LV sang hoặc từ bộ nhớ ngoại tuyến.
  • Các đối tượng LVM có thể được gắn thẻ để thuận tiện quản trị. [6]
  • VG và LV có thể được kích hoạt khi các thiết bị bên dưới trở thành có sẵn thông qua việc sử dụng lvmetad daemon. [7]

Chức năng nâng cao [ chỉnh sửa ]

  • Có thể tạo khối lượng lai bằng cách sử dụng mục tiêu dm-cache, cho phép một hoặc nhiều thiết bị lưu trữ nhanh hơn, chẳng hạn như SSD dựa trên flash, để hoạt động như một bộ đệm cho một hoặc nhiều ổ đĩa cứng chậm hơn. [8]
  • LV được cung cấp mỏng có thể được phân bổ từ một nhóm. [9]
  • Trên các phiên bản mới hơn của trình ánh xạ thiết bị, LVM được tích hợp với phần còn lại của trình ánh xạ thiết bị đủ để bỏ qua các đường dẫn riêng lẻ trở lại một thiết bị dm-multath nếu thiết bị / đa đường dẫn = 1 được đặt trong lvm.conf . Điều này ngăn LVM kích hoạt âm lượng trên một đường dẫn riêng lẻ thay vì thiết bị đa đường. [10]

RAID [ chỉnh sửa ]

  • LV có thể được tạo để bao gồm chức năng RAID, bao gồm cả RAID 1, 5 và 6. [11]
  • Toàn bộ LV hoặc các bộ phận của chúng có thể bị sọc trên nhiều PV, tương tự như RAID 0.
  • Thiết bị phụ trợ RAID 1 (PV) có thể được định cấu hình là "ghi- chủ yếu là ", dẫn đến việc đọc được tránh các thiết bị như vậy trừ khi cần thiết. [12]
  • Tốc độ phục hồi có thể được giới hạn bằng cách sử dụng lvchange --stonmaxrecoveryrate lvchange để duy trì hiệu suất I / O chấp nhận được trong khi xây dựng lại LV có chức năng RAID.

Tính sẵn sàng cao [ chỉnh sửa ]

LVM cũng hoạt động trong cụm lưu trữ chia sẻ trong đĩa nào chứa PV được chia sẻ giữa nhiều máy chủ, nhưng có thể yêu cầu bổ sung daemon để trung gian truy cập siêu dữ liệu thông qua một hình thức khóa.

CLVM
Trình quản lý khóa phân tán được sử dụng để môi giới truy cập siêu dữ liệu LVM đồng thời. Bất cứ khi nào một nút cụm cần sửa đổi siêu dữ liệu LVM, nó phải bảo đảm sự cho phép từ địa phương clvmd liên lạc thường xuyên với các daemon clvmd trong cụm và có thể truyền đạt mong muốn có được một khóa trên một tập hợp các đối tượng cụ thể.
HA-LVM
Nhận thức cụm được để lại cho ứng dụng cung cấp chức năng sẵn sàng cao. Về phần LVM, HA-LVM có thể sử dụng CLVM làm cơ chế khóa hoặc có thể tiếp tục sử dụng khóa tệp mặc định và giảm "va chạm" bằng cách hạn chế quyền truy cập chỉ những đối tượng LVM có thẻ phù hợp. Vì giải pháp đơn giản này tránh sự tranh chấp hơn là giảm thiểu nó, không cho phép truy cập đồng thời. Do đó, HA-LVM chỉ được coi là hữu ích trong các cấu hình thụ động chủ động.
lvmlockd
Kể từ năm 2017 một thành phần LVM ổn định được thiết kế để thay thế clvmd của các đối tượng LVM trong suốt với phần còn lại của LVM, mà không cần dựa vào trình quản lý khóa phân tán. [13] Nó đã thấy sự phát triển lớn trong năm 2016. [14]

Các cơ chế được mô tả ở trên chỉ giải quyết các vấn đề với quyền truy cập của LVM vào bộ lưu trữ. Hệ thống tệp được chọn nằm trên các LV như vậy phải tự hỗ trợ phân cụm (chẳng hạn như GFS2 hoặc VxFS) hoặc nó chỉ phải được gắn bởi một nút cụm bất kỳ lúc nào (chẳng hạn như trong cấu hình thụ động chủ động).

Chính sách phân bổ nhóm khối [ chỉnh sửa ]

Các LVM VG phải chứa chính sách phân bổ mặc định cho các khối mới được tạo từ nó. Điều này sau đó có thể được thay đổi cho mỗi LV bằng cách sử dụng lệnh lvconvert -A hoặc trên chính VG thông qua vgchange --alloc . Để giảm thiểu phân mảnh, LVM sẽ thử chính sách nghiêm ngặt nhất (tiếp giáp) trước và sau đó tiến tới chính sách tự do nhất được xác định cho đối tượng LVM cho đến khi phân bổ cuối cùng thành công.

Trong cấu hình RAID, gần như tất cả các chính sách được áp dụng cho từng chân một cách riêng biệt. Ví dụ: ngay cả khi LV có chính sách bám việc mở rộng hệ thống tệp sẽ không dẫn đến LVM sử dụng PV nếu được một trong hai chân khác sử dụng trong thiết lập RAID. Các LV có chức năng RAID sẽ đặt mỗi chân lên các PV khác nhau, làm cho các PV khác không có sẵn cho bất kỳ chân nào khác. Nếu đây là tùy chọn duy nhất khả dụng, việc mở rộng LV sẽ thất bại. Theo nghĩa này, logic đằng sau bám sẽ chỉ áp dụng để mở rộng từng chân riêng lẻ của mảng.

Chính sách phân bổ có sẵn là:

  • Tiếp giáp – buộc tất cả các LE trong một LV nhất định phải liền kề và ra lệnh. Điều này giúp loại bỏ sự phân mảnh nhưng làm giảm nghiêm trọng khả năng mở rộng LV.
  • Cling – buộc các LE mới chỉ được phân bổ cho các PV đã được LV sử dụng. Điều này có thể giúp giảm thiểu sự phân mảnh cũng như giảm mức độ tổn thương của các LV cụ thể khi thiết bị bị hỏng, bằng cách giảm khả năng các LV khác cũng có phạm vi trên PV đó.
  • Bình thường – ngụ ý lựa chọn gần như bừa bãi PE, nhưng nó sẽ cố gắng giữ cho các chân song song (chẳng hạn như các thiết lập RAID) không chia sẻ thiết bị vật lý.
  • Bất cứ nơi nào – không áp dụng bất kỳ hạn chế nào. Rủi ro cao trong thiết lập RAID vì nó bỏ qua các yêu cầu cách ly, bao gồm hầu hết các lợi ích của RAID. Đối với khối lượng tuyến tính, nó có thể dẫn đến sự phân mảnh tăng lên.

Thực hiện [ chỉnh sửa ]

Ví dụ cơ bản về đầu LVM

Hoạt động bên trong của phiên bản 1 của LVM. Trong sơ đồ này, PE là viết tắt của Mức độ vật lý.

Thông thường, megabyte đầu tiên của mỗi khối vật lý chứa cấu trúc được mã hóa chủ yếu ASCII được gọi là "tiêu đề LVM" hoặc "đầu LVM". Ban đầu, đầu LVM thường được viết bằng megabyte đầu tiên và cuối cùng của mỗi PV để dự phòng (trong trường hợp lỗi phần cứng một phần); tuy nhiên, điều này sau đó đã được thay đổi thành chỉ megabyte đầu tiên. Mỗi tiêu đề của PV là một bản sao hoàn chỉnh của toàn bộ bố cục của nhóm âm lượng, bao gồm UUID của tất cả các PV khác và LV, và bản đồ phân bổ PE cho LE. Điều này giúp đơn giản hóa việc phục hồi dữ liệu nếu một PV bị mất.

Trong sê-ri 2.6 của Hạt nhân Linux, LVM được triển khai theo phương thức của trình ánh xạ thiết bị, một sơ đồ cấp khối đơn giản để tạo các thiết bị khối ảo và ánh xạ nội dung của chúng lên các thiết bị khối khác. Điều này giảm thiểu số lượng mã hạt nhân tương đối khó gỡ lỗi cần thiết để thực hiện LVM. Nó cũng cho phép các dịch vụ chuyển hướng I / O của nó được chia sẻ với các trình quản lý khối lượng khác (như EVMS). Bất kỳ mã cụ thể LVM nào cũng được đưa vào các công cụ không gian người dùng của nó, chúng chỉ thao tác các ánh xạ này và tái cấu trúc trạng thái của chúng từ siêu dữ liệu trên đĩa theo mỗi lần gọi.

Để đưa một nhóm âm lượng trực tuyến, công cụ "vgchange":

  1. Tìm kiếm PV trong tất cả các thiết bị khối có sẵn.
  2. Phân tích tiêu đề siêu dữ liệu trong mỗi PV được tìm thấy.
  3. Tính toán bố cục của tất cả các nhóm âm lượng có thể nhìn thấy.
  4. Vòng lặp trên mỗi khối âm lượng trong nhóm âm lượng được đưa lên mạng và:
    1. Kiểm tra xem âm lượng logic được đưa trực tuyến có hiển thị tất cả các PV của nó hay không.
    2. Tạo ánh xạ thiết bị mới, trống rỗng.
    3. Ánh xạ nó (với mục tiêu "tuyến tính") vào các vùng dữ liệu của PV khối lượng logic thuộc về.

Để di chuyển một khối logic trực tuyến giữa các PV trên cùng một Nhóm âm lượng, hãy sử dụng công cụ "pvmove":

  1. Tạo một ánh xạ thiết bị mới, trống cho điểm đến.
  2. Áp dụng mục tiêu "nhân bản" cho bản đồ đích và bản đồ đích. Hạt nhân sẽ khởi động máy nhân bản ở chế độ "xuống cấp" và bắt đầu sao chép dữ liệu từ bản gốc đến đích để đồng bộ hóa.
  3. Thay thế ánh xạ gốc bằng đích khi nhân bản đồng bộ hóa, sau đó phá hủy bản gốc. [19659074] Các hoạt động của trình ánh xạ thiết bị này diễn ra một cách trong suốt, mà không có ứng dụng hoặc hệ thống tệp nào biết rằng bộ lưu trữ bên dưới của chúng đang di chuyển.

    Caveats [ chỉnh sửa ]

    • Cho đến khi Linux kernel 2.6.31, [15] không được hỗ trợ ghi rào cản (hỗ trợ đầy đủ trong 2.6.33). Điều này có nghĩa là sự bảo đảm chống tham nhũng hệ thống tập tin được cung cấp bởi các hệ thống tệp được ghi nhật ký như ext3 và XFS đã bị từ chối trong một số trường hợp. [16]
    • Kể từ năm 2015 không tồn tại chương trình chống phân mảnh trực tuyến hoặc ngoại tuyến LVM. Điều này phần nào được giảm nhẹ bởi sự phân mảnh chỉ xảy ra nếu một khối lượng được mở rộng và bằng cách áp dụng các chính sách phân bổ đã đề cập ở trên. Tuy nhiên, sự phân mảnh vẫn xảy ra và nếu nó bị giảm, các mức độ không liền kề phải được xác định và sắp xếp lại theo cách thủ công bằng cách sử dụng lệnh pvmove . [17]
    • Trên hầu hết LVM thiết lập, chỉ có một bản sao của đầu LVM được lưu vào mỗi PV, điều này có thể làm cho âm lượng dễ bị ảnh hưởng bởi các thành phần đĩa bị lỗi. Hành vi này có thể được ghi đè bằng cách sử dụng vgconvert --pvmetadatacopies . Nếu LVM không thể đọc một tiêu đề thích hợp bằng cách sử dụng bản sao đầu tiên, nó sẽ kiểm tra phần cuối của âm lượng cho một tiêu đề sao lưu. Hầu hết các bản phân phối Linux giữ một bản sao lưu đang chạy trong / etc / lvm / backup cho phép viết lại thủ công một đầu LVM bị hỏng bằng cách sử dụng lệnh vgcfgrestore . chỉnh sửa ]

      Tài liệu tham khảo [ chỉnh sửa ]

      Đọc thêm [ chỉnh sửa ]