[Linux] Logical Volume Snapshoot on Ubuntu server

1. Khái niệm
a. Khái niệm về volume
- Physical Volume: Là một cách gọi khác của partition trong kỹ thuật LVM, nó là những thành phần cơ bản được sử dụng bởi LVM. Một Physical Volume không thể mở rộng ra ngoài phạm vi một ổ đĩa.
- Logical Volume group: Nhiều Physical Volume trên những ổ đĩa khác nhau được kết hợp lại thành một Logical Volume Group, với LVM Logical Volume Group được xem như một ổ đĩa ảo.
- Logical Volumes: Logical Volume Group được chia nhỏ thành nhiều Logical Volume, mỗi Logical Volume có ý nghĩa tương tự như partition. Nó được dùng cho các mount point và được format với những định dạng khác nhau như ext2, ext3, ext4...
Nói một cách nôm na, LVM thực hiện nhóm các ổ vật lý (physical volume) lại thành nhóm volume (logical volume group) từ đó chia ra các logical volume để tiện quản lý.

Chúng ta có thể hình dung rõ hơn các khái niệm trên trong hình vẽ dưới đây:

 b. Logical volume snapshot
Logical Volume snapshot là phương pháp tạo ra các ảnh lưu lại trạng thái của bấy kỳ logical volume nào trên server tại thời điểm tiến hành snapshot, nó có thể được ví như việc tạo các symbolic link, nghĩa là chúng ta không sao nguyên dữ liệu của volume đó mà chỉ tạo ra các tham chiếu đến nó, logical volume lưu trữ dữ liệu với cấu trúc bao gồm: metadata pointers và data block.
2. Tạo và định dạng volume
Bài viết được thực hiện khi chúng ta thêm một ổ cứng mới hoàn toàn vào server.
B1. Cài đặt lvm2
sudo apt-get install lvm2
B2. Tạo một partition
- Kiểm tra ổ cứng mới thêm vào
sudo fdisk -l
Sau khi đã xác định ổ cứng mới được thêm vào (giả sử /dev/sdb)
- Tạo primary partition:
sudo fdisk /dev/sdb
Chọn các tùy chọn sau:
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
- Kiểm tra
sudo fdisk -l /dev/sdb
Device Boot      Start   End          Blocks    Id  System
/dev/sdb1        2048    10485759     5241856   8e  Linux LVM

B3. Tạo Physical Volumes
sudo pvcreate /dev/sdb1
B4. Tạo Volume Group
Câu lệnh sau thực hiện tạo 1 volume group với tên là volume_group:
sudo vgcreate volume_group /dev/sdb1
B5. Tạo Logical Volumes
Câu lệnh sau thực hiện tạo 1 logical volume với tên là volume1 trong volume group có tên là volume_group với dung lượng là 500MB
sudo lvcreate -L 500 -n volume1 volume_group
B6. Định dạng ext4 cho volume1
sudo mkfs.ext4 /dev/volume_group/volume1
B7. Mount volume1 và tạo dữ liệu mẫu
mkdir -p /data/volume1
mount /dev/volume_group/volume1 /data/volume1
cp -r /sbin/ /data/volume1
B8. Tự động mount khi khởi động
Kiểm tra:
df -h
Thêm vào file /etc/fstab, đây là bước quan trọng và yêu cầu phải thực hiện chính xác:
/dev/mapper/volume_group-volume1    /data    ext4    defaults    0    2
3. Snapshot cho volume
B1. Tạo snapshot
sudo lvcreate -s -L 50M -n volume1_snapshot /dev/volume_group/volume1
Kiểm tra xem snapshot đã tạo thành công hay chưa:
sudo lvs
Chúng ta đã tiến hành tạo snapshot cho volume1 tại thời điểm copy folder sbin vào volume, tiến hành xóa hết dữ liệu tại /data/volume để tiến hành revert lại.
B2. Revert Logical Volume Snapshot
lvconvert --merge /dev/volume_group/volume1_snapshot
umount /data/volume1
lvchange -a n /dev/volume_group/volume1
lvchange -a y /dev/volume_group/volume1
mount /dev/volume_group/volume1 /data/volume1
B3. Kiểm tra sau khi đã revert lại
ls -l /data/volume1

Tham khảo: http://how-to.linuxcareer.com/create-and-restore-manual-logical-volume-snapshots