LVM Snapshot
LVM Snapshot là bản sao tại một thời điểm (point-in-time) của các volume trong LVM, được thiết kế để tiết kiệm dung lượng. Tính năng này chỉ hoạt động với LVM và chỉ tiêu tốn dung lượng khi có thay đổi được thực hiện trên volume gốc (source volume) so với snapshot. Nếu volume gốc có thay đổi lớn với tổng dung lượng 1GB, thì cùng một lượng dữ liệu 1GB đó sẽ được ghi vào snapshot.
Tuy nhiên, snapshot không thể được xem như một giải pháp sao lưu. Sao lưu (backup) là bản sao chính (primary copy) của dữ liệu, trong khi snapshot chỉ là ảnh chụp tạm thời của dữ liệu tại một thời điểm nhất định. Do đó, chúng ta không thể sử dụng snapshot thay thế cho backup.
Tạo Snapshot
Ta cần đảm bảo LV được dùng để tạo snapshot vẫn còn dung lượng trống để tạo và phải thuộc về một VG
Ta tạo snapshot bằng lệnh sau:
lvcreate -L <dung lượng> -s -n <tên-snapshot> <volume cần tạo snapshot>
Khi này liệt kê LV bằng lệnh lvs, ta sẽ thấy snapshot hiển thị như một LV và có thêm cột data%
Giờ mỗi khi ta thay đổi giữ liệu trên LV gốc, dữ liệu gốc sẽ được lưu trữ trên snapshot trước khi thay đổi có hiệu lực, data% khi đó tăng dần
Nếu để data% chạm 100%, snapshot này sẽ bị corrupt và bị loại bỏ bởi LVM, khi đó sẽ không thể khôi phục snapshot này
Xóa Snapshot
Ta dùng lệnh lvremove để xóa Snapshot
lvremove <tên-snapshot>
Mở rộng snapshot
Ta mở rộng snapshot bằng lệnh sau:
lvextend -L <dung lượng> <tên-snapshot>
Ta có thể thực hiện việc mở rộng snapshot tự động bằng cách chỉnh sửa cấu hình LVM
vim /etc/lvm/lvm.conf
Sau đó thay đổi các dòng sau:
snapshot_autoextend_threshold = 80
snapshot_autoextend_percent = 20
Khi này nếu dung lượng đạt 80%, kích thước sẽ tăng thêm 20%
Restore snapshot
Để restore snapshot, trước tiên ta cần unmount filesystem của LV gốc của snapshot
umount <LV-mount-path>
Tiếp theo ta restore snapshot như sau:
lvconvert --merge <tên-snapshot>
Sau khi quá trình kết thúc thì Snapshot Volume sẽ được xóa.