Cam kết hoặc hoàn nguyên ảnh chụp nhanh LVM của Linux?


15

Tôi sắp thực hiện nâng cấp thử nghiệm trên máy chủ CentOS 5 của mình. Nếu nâng cấp thất bại, tôi muốn có thể sao lưu các thay đổi đối với hệ thống tập tin. Kịch bản này có vẻ giống với ví dụ trong Phần 3.8 của ảnh chụp nhanh đọc-ghi LVM HOWTO cho LVM2 - nhưng ví dụ này khá thiếu trong cách thực hiện.

  1. Làm thế nào tôi có thể cam kết các thay đổi, hợp nhất chúng trở lại phân vùng ban đầu?

  2. Làm thế nào tôi có thể hoàn nguyên các thay đổi, khôi phục hệ thống tập tin trở lại trạng thái ban đầu? Tôi có nên cho rằng tôi cần phải khởi động lại một số dịch vụ, nếu không hoàn toàn khởi động lại?

  3. Có thể chỉ chụp nhanh một số thư mục nhất định trên một phân vùng, hay nó là một hoạt động trên toàn phân vùng?

Câu trả lời:


10

Chức năng hợp nhất ảnh chụp nhanh ánh xạ LVM2 / thiết bị khả dụng nếu bạn đang chạy Linux 2.6.33+ và sử dụng LVM 2.0.58+:

lvconvert --merge

Xem bài đăng này: http://www.jonnor.com/2010/02/lvm-snapshot-merging-avaliable/

Nó tham khảo http://kernelnewbies.org/Linux_2_6_33 (xem phần 5, MD / DM) và thay đổi LVM tại 2.0.58: ftp://source.redhat.com/pub/lvm2/WHATS_NEW

Nhưng tôi không thể nói cho bạn biết làm thế nào để sử dụng nó đúng cách ;-)


dmsetup targetssẽ hiển thị snapshot-merge nếu đó là trường hợp lệnh merge, được áp dụng cho snapshot-lv sẽ trở lại trạng thái nơi chụp ảnh nhanh.
Nils

OP dường như bối rối về việc cam kết thay đổi thông qua một số bước hợp nhất. Những thay đổi đang được cam kết khi ảnh chụp tăng kích thước. Ảnh chụp nhanh (của các thay đổi) là thông tin cần thiết để sao lưu chúng thông qua lvconvert --merge. Nếu OP hài lòng với những thay đổi của anh ấy, anh ấy có thể xóa ảnh chụp nhanh qua lvremove.
Vince

20

Tôi vừa thử một bản nâng cấp dựa trên ảnh chụp nhanh với Ubuntu. Và vâng, tôi cần phải khởi động lại nhiều lần. Đầu tiên đổi tên gốc-lv gốc thành một tên khác, vì vậy bạn có thể đặt tên chụp nhanh là tên gốc (vì việc nâng cấp tạo ra nhiều thay đổi và thay đổi nhanh hơn trên ảnh chụp nhanh so với ban đầu):

 # lvrename lvm root root-old
 # lvcreate -n root -s lvm/root-old -L 10G

Kích thước nên được lựa chọn phù hợp. Sau đó khởi động lại, do đó, lvm / ub Ubuntu 'mới' được gắn kết dưới dạng root và bạn có thể thực hiện nâng cấp. Bây giờ bạn có thể kiểm tra phiên bản mới và thậm chí thay đổi hệ thống cũ bằng cách

 # lvrename lvm root root-new
 # lvrename lvm root-old root
 # reboot

Nếu bạn muốn bỏ nâng cấp, chỉ cần chạy (từ hệ thống cũ)

# lvremove lvm/root-new

Nếu bạn muốn thực hiện các thay đổi, chỉ cần chạy (từ hệ thống cũ)

# lvconvert --merge lvm/root-new

hoặc, từ hệ thống mới

# lvrename lvm root root-new
# lvconvert --merge lvm/root-new
# lvrename lvm root-old root

tiếp theo là khởi động lại. Hệ thống sẽ từ chối thực hiện hợp nhất ngay lập tức, vì các khối lượng được mở. Vì vậy, việc hợp nhất sẽ được bắt đầu trong quá trình khởi động và tiếp tục trong khi bạn đã có thể làm việc với hệ thống.

Ồ, và nhân tiện: Khi thay đổi giữa các hệ thống, hãy nhớ sử dụng kernel phù hợp. Vì / boot không phải là một phần của lvm, nên các hạt nhân cũ và mới sẽ được đặt cạnh nhau.


Cảm ơn câu trả lời của bạn. Tôi vừa mới phát lại quy trình của bạn trong máy ảo CentOS 7 và nó hoạt động như một cơ duyên. Sau khi đặt lại máy ảo của tôi ở giữa quá trình hợp nhất, hệ thống con LVM đã tiếp tục lại nó trong khi hệ thống vẫn đang truy cập các tệp được nâng cấp.
Anderson Medeiros Gomes

Một phần của câu trả lời này dường như đề nghị cam kết thay đổi thông qua lvconvert --merge. Khi ảnh chụp tăng kích thước, các thay đổi cũng được thực hiện. Một lvconvert --merge hoàn nguyên (sao lưu) các thay đổi bằng cách sử dụng thông tin ảnh chụp nhanh.
Vince

10

Ok, tôi nghĩ rằng tôi đã tìm ra nó từ khi đọc lại HOWTO 3.8.

  • Ảnh chụp nhanh chỉ đọc (như LVM1) chứa sự khác biệt ở cấp độ khối sau khi tạo ảnh chụp nhanh - bản gốc vẫn được thay đổi, nhưng ảnh chụp nhanh vẫn giữ nguyên bản đại diện của bản gốc. Đọc từ các ảnh chụp quà dữ liệu khi nó xuất hiện vào thời điểm đó.
  • Ảnh chụp nhanh đọc-ghi (mặc định trong LVM2) có thể được ghi vào: chúng là một nhánh của phân vùng ban đầu. Viết cho các ảnh chụp không thay đổi bản gốc.

Cách một ảnh chụp nhanh hoạt động là một tập hợp các thay đổi ở cấp độ khối so với ban đầu. Vì vậy, khi bản gốc được viết, những điều sau đây xảy ra:

  1. Một cái gì đó cố gắng để viết vào bản gốc.
  2. Bản gốc được đọc và các khối từ bản gốc được sao chép vào ảnh chụp nhanh.
  3. Bản gốc được thay đổi.
  4. Ảnh chụp nhanh chứa "sự khác biệt ngược" - những thay đổi làm cho giao diện ban đầu giống như khi ảnh chụp nhanh được tạo.

Vì vậy, việc vứt bỏ ảnh chụp nhanh sẽ không ảnh hưởng đến bản gốc - bởi vì bản gốc đã được thay đổi và ảnh chụp nhanh chỉ chứa một danh sách những thay đổi đó.

Trả lời câu hỏi của riêng tôi:

Tạo ảnh chụp nhanh mới với LVM. Nếu bản cập nhật có thể được cấu hình để ghi vào điểm gắn ảnh chụp nhanh, hãy sử dụng ảnh chụp nhanh R / W. Nếu không, RO hoặc R / W sẽ làm.

Sau đó:

  • Nếu ghi vào điểm gắn ảnh chụp nhanh R / W , hãy cam kết bằng cách viết ảnh chụp nhanh vào bản gốc và hoàn nguyên bằng cách vứt bỏ ảnh chụp nhanh.
  • Nếu ghi vào điểm gắn kết ban đầu , hãy cam kết bằng cách vứt bỏ ảnh chụp nhanh và hoàn nguyên bằng cách viết từ ảnh chụp nhanh sang ảnh gốc.

Tôi vẫn chưa tìm thấy một công cụ cụ thể để thực hiện việc hợp nhất này - và, do kịch bản của tôi không chính xác là mục đích sử dụng của ảnh chụp nhanh, có thể không có. Nghe có vẻ như một công việc cho ndiff.


Không có công cụ hợp nhất LVM nào có sẵn. Nó đã được thực hiện, nhưng tôi không tin rằng nó đã hoàn thành.
Ignacio Vazquez-Abrams

công cụ hợp nhất tồn tại ngay bây giờ (ít nhất là trên Ubuntu Trusty) - lvconvert --merge <snapshot-name>sẽ "khôi phục" đĩa gốc của bạn vào ảnh chụp nhanh đó và xóa ảnh chụp nhanh đó. Tất nhiên bạn có thể khôi phục nó một cách nhanh chóng ngay lập tức.
dpb

3

LVM hoạt động ở cấp độ khối. Nó thậm chí 'không biết' hệ thống tập tin là gì. Vì vậy, bạn không thể chụp nhanh chỉ một số thư mục nhất định, trừ khi một hệ thống tệp từ một khối LVM khác được gắn ở đó.

Khi bạn tạo ảnh chụp nhanh LVM, bạn thực sự yêu cầu 'sao chép trên ghi' của một tập. Bất kỳ khối nào sẽ được thay đổi trên âm lượng chụp nhanh sẽ được lưu trữ không thay đổi trong snaphot trước. Vì vậy, để 'cam kết thay đổi', bạn không phải làm gì cả. Chỉ cần loại bỏ khối lượng ảnh chụp.

Tôi hoàn toàn không biết cách nào được đề xuất để 'hoàn nguyên các thay đổi', vì tôi chưa bao giờ sử dụng LVM trong kịch bản như vậy, nhưng tôi đoán nó được mô tả tốt trong tài liệu LVM ở đâu đó. Dù đó là gì, có lẽ bạn sẽ cần phải khởi động lại bất cứ thứ gì đã thay đổi, khởi động lại có thể là một ý tưởng tốt.


2
  1. Không có lý do để hợp nhất một số. Chỉ cần xóa ảnh chụp nhanh, nguồn LV vẫn thay đổi
  2. Hợp nhất cần thiết để hoàn nguyên các thay đổi lvconvert --merge <snapshot name>
  3. LVM hoạt động với các thiết bị khối. Mọi thay đổi liên quan đến FS phải được thực hiện bởi các tiện ích đặc biệt (xfs_growfs, e2fsck, ...) theo loại FS

Ảnh chụp nhanh 'đóng băng' trạng thái LV gốc. Xóa ảnh chụp có nghĩa là quên trạng thái đó. Hợp nhất ảnh chụp nhanh có nghĩa là trở về trạng thái đó

Nhưng bên trong LVM, nó lưu dữ liệu viết lại trong ảnh chụp nhanh: hãy chắc chắn rằng kích thước ảnh chụp nhanh đáp ứng số lượng thay đổi dự kiến ​​trên LV và ảnh chụp nhanh


Trên thực tế, ảnh chụp nhanh không đóng băng bất cứ điều gì. Nó ghi lại các thay đổi ở một nơi bổ sung để chúng có thể được hoàn nguyên sau nếu muốn.
Vince

0

Các tài liệu là khó hiểu. Dường như với tôi rằng lvcreate --merge có nghĩa là hoàn nguyên tất cả các thay đổi và lvremove có nghĩa là cam kết các thay đổi. Sự khác biệt là trong cách bạn sử dụng nó.

Trong hầu hết các trường hợp, bạn chỉ sử dụng ảnh chụp nhanh làm điểm chỉ đọc được đóng băng trong bản sao thời gian của âm lượng trực tiếp và âm lượng trực tiếp tiếp tục thay đổi. Trong trường hợp này, nếu bạn hợp nhất, một cách hợp lý, điều đó có nghĩa là bạn sẽ ghi đè lên âm lượng trực tiếp bằng bản sao bị đóng băng, hay nói cách khác, hợp nhất có nghĩa là thay đổi rollback và xóa nghĩa là thay đổi cam kết.

Nếu bạn ghi vào ảnh chụp nhanh (một tùy chọn mới với LVM2), đây không phải là hành vi mặc định và có thể yêu cầu thay đổi cấu hình ở nơi khác để làm cho các ứng dụng ghi vào ảnh chụp nhanh thay vì âm lượng ban đầu, thì điều ngược lại sẽ là đúng.

Hãy cẩn thận khi xử lý ảnh chụp nhanh, vì một số người sẽ cho rằng bạn muốn sử dụng chúng theo một cách và sẽ cung cấp cho bạn các hướng dẫn có thể phá hủy hệ thống của bạn nếu bạn hoạt động theo giả định ngược lại!


Bạn viết vào ảnh chụp đơn giản bằng cách gắn ảnh chụp nhanh; những gì được gắn kết có liên quan đến mặc định LVM - nó không quan tâm nhiều đến chính xác những gì bạn làm với từng khối hợp lý, cho dù đó là ảnh chụp nhanh hay không, nó chỉ theo dõi xem nó có mở hay không.
Josip Rodin
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.