#!/bin/sh msg () { tput setaf 1; echo "$*"; tput op; } msg ===== Write directly to hard-disk msg == 1. write block directly to hard-disk lvcreate -L 4G -n test1 vg_ucs # Logical volume "test1" created echo 1 >/proc/sys/vm/drop_caches time dd if=/dev/zero bs=1M count=4k conv=fsync oflag=direct of=/dev/vg_ucs/test1 # 4096+0 Datensätze ein # 4096+0 Datensätze aus # 4294967296 Bytes (4,3 GB) kopiert, 47,1095 s, 91,2 MB/s # # real 0m47.132s # user 0m0.004s # sys 0m4.428s msg ===== Write to CoW-end msg == 1. write block directly to hard-disk msg == 2. update CoW-table and write to disk lvcreate -s -L 4,1G -n test2 /dev/vg_ucs/test1 # Rounding up size to full physical extent 4,10 GB # Logical volume "test2" created echo 1 >/proc/sys/vm/drop_caches time dd if=/dev/zero bs=1M count=4k conv=fsync oflag=direct of=/dev/vg_ucs/test2 # 4096+0 Datensätze ein # 4096+0 Datensätze aus # 4294967296 Bytes (4,3 GB) kopiert, 153,322 s, 28,0 MB/s # # real 2m33.330s # user 0m0.096s # sys 0m13.125s msg ===== Write to CoW-end again msg == 1. write block directly to hard-disk echo 1 >/proc/sys/vm/drop_caches time dd if=/dev/zero bs=1M count=4k conv=fsync oflag=direct of=/dev/vg_ucs/test2 # 4096+0 Datensätze ein # 4096+0 Datensätze aus # 4294967296 Bytes (4,3 GB) kopiert, 48,3079 s, 88,9 MB/s # # real 0m48.495s # user 0m0.100s # sys 0m19.761s msg ===== Write to origin-end msg == 1. read original block from origin msg == 2. write original block to CoW device msg == 3. update CoW-table and write to disk msg == 4. write modified block to origin lvremove -f /dev/vg_ucs/test2 lvcreate -s -L 4,1G -n test3 /dev/vg_ucs/test1 # Rounding up size to full physical extent 4,10 GB # Logical volume "test3" created echo 1 >/proc/sys/vm/drop_caches time dd if=/dev/zero bs=1M count=4k conv=fsync oflag=direct of=/dev/vg_ucs/test1 # 4096+0 Datensätze ein # 4096+0 Datensätze aus # 4294967296 Bytes (4,3 GB) kopiert, 195,556 s, 22,0 MB/s # # real 3m15.760s # user 0m0.096s # sys 0m13.205s msg ===== Write to origin-end again msg == 1. write block directly to hard-disk echo 1 >/proc/sys/vm/drop_caches time dd if=/dev/zero bs=1M count=4k conv=fsync oflag=direct of=/dev/vg_ucs/test1 # 4096+0 Datensätze ein # 4096+0 Datensätze aus # 4294967296 Bytes (4,3 GB) kopiert, 59,0429 s, 72,7 MB/s # # real 0m59.273s # user 0m0.108s # sys 0m17.181s lvremove -f /dev/vg_ucs/test3 lvremove -f /dev/vg_ucs/test1