COW(copy on write 写前重定向)
COW主要针对块设备(存储LUN 磁盘 U盘)
华为FC和Vmware的快照技术都是采用ROW
注:修改和新增都是写操作
首先需要了解数据存放在存储里的状态:
所以元数据很小,因为存放的是真实数据的索引index。
因此拍快照很快就是因为拍的不是底层数据块,而是元数据信息,占用磁盘很小。
COW实验
①添加磁盘,分区,创建逻辑卷/dev/vgo/data,格式化逻辑卷,挂载(挂载点/data)。
②往挂载文件夹里写入数据/data
③拍摄COW快照
lvcreate -L 64M -s -n snap01 /dev/vg0/data 快照名字snap01,大小64M
查看:lvdisplay
④针对/data进行操作
dd if=/dev/zero of=/data/memeda bs=1M count=5
观察cow:lvdisplay /dev/vg0/snap01
实时监控:watch -n 1 lvdisplay /dev/vg0/snap01
⑤挂载快照,查看快照
mkdir /snap01
mount /dev/vg0/snap01 /snap01
ls /snap01
⑥还原快照
ls /data
ls /snap01
dump -o -f /tmp/memeda.dump /snap01 导出快照里的内容
mkdir /abc
cd /abc
restore -rf /tmp/memeda.dump 还原快照内容
ls /abc
ROW(redirect on write写时重定向)
ROW快照会形成一个快照链。
ROW快照删除
删除快照涉及快照合并(索引合并到前一个快照)。
FC内存快照:拍摄快照时,内存数据是怎样,还原快照时就是怎样。(还原会重构内存数据)
FC一致性快照:内存数据和磁盘数据保持一致,只拍摄磁盘数据。
问题:为什么只拷贝64M,差分卷却增加到100多M?
取决于文件系统最小分配单元 Block,假如一个Block 8k,若文件大小不足8k,也会占用8k磁盘空间。所以一个文件至少占用一个Block。