ploop

 

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 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