ploop 與 loop 功能上差不多是一樣, 只不過 ploop 效能更優勝
對比 loop 而言, 它有一個 translation table, 因此可以 dynamically grow/shrink vps 的 image 檔
舊 layout 的限制:
- 所有 VPS 用同樣的 file system 特性 (block size, mount options)
- inodes 總數難以控制
- live / offline migration 時沒有保留 inode 的一致
- 某一 VPS 有機會 fill up in-memory journal
好處:
- 它同樣支持 online / offline resize
- snapshot 會較快, 因為沒有大量小檔案
對上: kernel modular and layered design
對下: ext4, NFS
ploop 支援 QCOW2 格式
VPS 使用 ploop
全域:
所有新建的 vps 都用 ploop layout
修改 /etc/vz/vz.conf, 加入
VE_LAYOUT=ploop
個別:
建立單一 vps 用 layout
vzctl create CTID [--layout ploop] [--diskspace nnnG]
initial size
Image 的操作
ploop 在有兩種格式
- ploop1
- raw
Initialize image file
ploop init -s 1g -f ploop1 /ploop.image
ploop init -s 1g -f raw /ploop.image
Bind ploop to image file
ploop mount -f ploop1 -d /dev/ploop0 /ploop.image
Snapshot
ploop mount -f ploop1 -d /dev/ploop0 /ploop.image
ploop snapshot -d /dev/ploop0 /ploop-delta.image
ploop snapshot -d /dev/ploop0 /ploop-delta1.image
base_delta: /ploop.image <-- /dev/ploop0
delta:
top_delta: /ploop-delta.image <-- i/o targeted
Online merge
Offline merge
ploop merge /ploop-d2.image /ploop-d1.image /ploop-d.image /ploop.image
ploop merge -f raw /ploop-d1.image /ploop.image
獲得一個合併了的 ploop.image
Offline grow
ploop grow -s 32g /ploop.image
ploop grow -s 32g -f raw /ploop.image
Load modules
- modprobe ploop
- modprobe pfmt_ploop1
- modprobe pfmt_raw
- modprobe pio_direct
Create device file
mknod /dev/ploop0 b 182 0
16 的倍數, 其他數字(1..15)是留比 partitions 用
# /dev/ploop0p1 will have minor equal to 1