下記の1.~3.のデバイスの組合わせに対して、下記の1.~4.の方法で1TBのファイルのコピー(アーカイブ)所要時間を計測する。
【srcとdstデバイスの組合わせ】
1.リニアボリュームからリニアボリュームへのコピー(アーカイブ)
2.レガシースナップショットボリュームからリニアボリュームへのコピー(アーカイブ)
3.シンスナップショットボリュームからリニアボリュームへのコピー(アーカイブ)
【コピー(アーカイブ)方法】
1.cpコマンドでコピー
2.tarコマンドでアーカイブ
3.xfsdumpコマンドでイメージバックアップ
4.rsyncコマンドでコピー
【検証環境】
# free -h
total used free shared buff/cache available
Mem: 15G 201M 15G 8.9M 160M 14G
Swap: 7.8G 0B 7.8G
# cat /proc/cpuinfo|grep processor
processor : 0
processor : 1
processor : 2
processor : 3
# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)
# fdisk -l /dev/sdb
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes, 5860533168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
# fdisk -l /dev/sdc
Disk /dev/sdc: 3000.6 GB, 3000592982016 bytes, 5860533168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home cl -wi-ao---- 173.87g
root cl -wi-ao---- 50.00g
swap cl -wi-ao---- 7.81g
testlv_bk dst -wi-a----- 30.00g
test_thinpool src twi-aotz-- 30.00g 0.10 0.54
testlv src owi-aos--- 30.00g
testsnap src swi-a-s--- 30.12g testlv 0.00
testsnap2 src swi-a-s--- 30.12g testlv 0.00
testsnap3 src swi-a-s--- 25.00g testlv 0.00
thinlv_1 src Vwi-aotz-- 50.00g test_thinpool 0.06
thinlv_2 src Vwi-a-tz-- 50.00g test_thinpool 0.00
1.リニアボリュームからリニアボリューム
・2TBのリニアボリュームをsrcとdstデバイスに作る。
# lvcreate -L 2048G -n src_2TB_linerlv src
WARNING: Sum of all thin volume sizes (100.00 GiB) exceeds the size of thin pools (30.00 GiB)!
For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100.
Logical volume "src_2TB_linerlv" created.
# lvcreate -L 2048G -n dst_2TB_linerlv dst
Logical volume "dst_2TB_linerlv" created.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home cl -wi-ao---- 173.87g
root cl -wi-ao---- 50.00g
swap cl -wi-ao---- 7.81g
dst_2TB_linerlv dst -wi-a----- 2.00t
testlv_bk dst -wi-a----- 30.00g
src_2TB_linerlv src -wi-a----- 2.00t
test_thinpool src twi-aotz-- 30.00g 0.10 0.54
testlv src owi-aos--- 30.00g
testsnap src swi-a-s--- 30.12g testlv 0.00
testsnap2 src swi-a-s--- 30.12g testlv 0.00
testsnap3 src swi-a-s--- 25.00g testlv 0.00
thinlv_1 src Vwi-aotz-- 50.00g test_thinpool 0.06
thinlv_2 src Vwi-a-tz-- 50.00g test_thinpool 0.00
# time mkfs.xfs /dev/src/src_2TB_linerlv
meta-data=/dev/src/src_2TB_linerlv isize=512 agcount=4, agsize=134217728 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=536870912, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=262144, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
real 0m6.383s
user 0m0.003s
sys 0m0.215s
# mkdir /src_2TB_linerlv;mount /dev/src/src_2TB_linerlv /src_2TB_linerlv
# time mkfs.xfs /dev/dst/dst_2TB_linerlv
meta-data=/dev/dst/dst_2TB_linerlv isize=512 agcount=4, agsize=134217728 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=536870912, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=262144, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
real 0m6.142s
user 0m0.008s
sys 0m0.211s
# mkdir /dst_2TB_linerlv;mount /dev/dst/dst_2TB_linerlv /dst_2TB_linerlv
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/cl-root 50G 948M 50G 2% /
devtmpfs 7.7G 0 7.7G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 8.6M 7.7G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sda2 1014M 132M 883M 13% /boot
/dev/sda1 200M 9.5M 191M 5% /boot/efi
/dev/mapper/cl-home 174G 33M 174G 1% /home
/dev/mapper/src-thinlv_1 50G 38M 50G 1% /mnt
/dev/mapper/src-testlv 30G 43M 30G 1% /src
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/mapper/src-src_2TB_linerlv 2.0T 33M 2.0T 1% /src_2TB_linerlv
/dev/mapper/dst-dst_2TB_linerlv 2.0T 33M 2.0T 1% /dst_2TB_linerlv
# export SRC="/src_2TB_linerlv"
# export DST="/dst_2TB_linerlv"
# echo $SRC $DST
/src_2TB_linerlv /dst_2TB_linerlv
・1TBの試料データを下記のコマンドで作成
別のVMの中身をそっくりそのまま/src_2TB_linerlvディレクトリ配下にコピーする
※上記のホストどうしはそれぞれWifi接続(802.11n)なので50MB/sくらいしか出ないw
[root@centos7copy ~]# time rsync -auvh --exclude '/dev' --exclude '/sys' \
--exclude '/run' --exclude '/proc' / 192.168.101.1:/src_2TB_linerlv/
root@192.168.101.1's password:
sending incremental file list
----(略)----
sent 44.50G bytes received 3.53M bytes 3.60M bytes/sec
total size is 44.74G speedup is 1.01
real 206m0.503s
user 2m25.235s
sys 37m22.420s
→と思ったら平均3.6MB/sだったw 30Mbpsくらいだったとさw
・1TBをコピーする所要時間を測る前に、まずは上記の44GBをコピー(アーカイブ)する所要時間を計測してみる。
1-1.cpコマンドでコピー
# echo 3 > /proc/sys/vm/drop_caches
# free -h
total used free shared buff/cache available
Mem: 15G 216M 15G 8.9M 86M 14G
Swap: 7.8G 0B 7.8G
# time cp -r /src_2TB_linerlv/* /dst_2TB_linerlv/
real 5m58.433s
user 0m1.432s
sys 1m7.555s
→1TBだったら単純に23倍して137分強
1-2.tarコマンドでアーカイブ
# rm -rf /dst_2TB_linerlv/*
# echo 3 > /proc/sys/vm/drop_caches
# time tar cf /dst_2TB_linerlv/hoge.tar /src_2TB_linerlv/*
real 5m30.308s
user 0m3.656s
sys 1m9.549s
1-3.xfsdumpコマンドでイメージバックアップ(初回)
# rm -rf /dst_2TB_linerlv/*
# echo 3 > /proc/sys/vm/drop_caches
# time xfsdump -l 0 -f /dst_2TB_linerlv/hoge.dump /src_2TB_linerlv
----(略)----
real 4m46.904s
user 0m2.832s
sys 0m58.582s
1-4.rsyncコマンドでコピー
# rm -rf /dst_2TB_linerlv/*
# echo 3 > /proc/sys/vm/drop_caches
# time rsync -auvh /src_2TB_linerlv/ /dst_2TB_linerlv/
sending incremental file list
----(略)----
sent 44.76G bytes received 3.58M bytes 91.07M bytes/sec
total size is 44.74G speedup is 1.00
real 8m10.581s ←xfsdumpの方が速い
user 3m13.329s
sys 1m11.904s
1-1'.もう一回cpコマンドでコピー
# echo 3 > /proc/sys/vm/drop_caches
# time cp -r /src_2TB_linerlv/* /dst_2TB_linerlv/
real 5m57.268s
user 0m1.394s
sys 1m7.719s
・ためしに、一番速いxfsdumpで440GBバックアップの所要時間を測ってみる。
まず440GBのソースディレクトリを作成する。
# ls -1 $SRC | grep -v org | while read X;do mv ${SRC}/$X $SRC/org/;done
# echo 3 > /proc/sys/vm/drop_caches
# time for ((i=1;i<=10;i++));do mkdir ${SRC}/$i;cp -r ${SRC}/org/* ${SRC}/$i/;done
real 132m48.713s
user 0m15.753s
sys 12m30.723s
# ll /src_2TB_linerlv
合計 40
drwxr-xr-x. 25 root root 4096 9月 7 00:47 1
drwxr-xr-x. 18 root root 251 9月 7 02:39 10
drwxr-xr-x. 25 root root 4096 9月 7 01:00 2
drwxr-xr-x. 25 root root 4096 9月 7 01:13 3
drwxr-xr-x. 25 root root 4096 9月 7 01:26 4
drwxr-xr-x. 25 root root 4096 9月 7 01:40 5
drwxr-xr-x. 25 root root 4096 9月 7 01:53 6
drwxr-xr-x. 25 root root 4096 9月 7 02:07 7
drwxr-xr-x. 25 root root 4096 9月 7 02:20 8
drwxr-xr-x. 25 root root 4096 9月 7 02:33 9
drwxr-xr-x. 25 root root 4096 9月 7 00:31 org
→上記の「org」、「1」~「10」ディレクトリ内にそれぞれ合計43GB分のファイルやディレクトリが居る
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/cl-root 50G 1.8G 49G 4% /
devtmpfs 7.7G 0 7.7G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 8.6M 7.7G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sda2 1014M 132M 883M 13% /boot
/dev/sda1 200M 9.5M 191M 5% /boot/efi
/dev/mapper/cl-home 174G 33M 174G 1% /home
/dev/mapper/src-thinlv_1 50G 38M 50G 1% /mnt
/dev/mapper/src-testlv 30G 43M 30G 1% /src
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/mapper/src-src_2TB_linerlv 2.0T 465G 1.6T 23% /src_2TB_linerlv
/dev/mapper/dst-dst_2TB_linerlv 2.0T 85G 2.0T 5% /dst_2TB_linerlv
→約420GBを同一デバイス内にコピーするのに133分
src-src_2TB_linerlvのデータサイズを計算しやすい約500GBにするンゴ。
# pwd
/src_2TB_linerlv
# time cp -rp 10 11
real 13m20.022s ←別ディスクへのコピーの2倍強の時間がかかった
user 0m2.132s
sys 1m19.362s
# df -h /src_2TB_linerlv
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/src-src_2TB_linerlv 2.0T 507G 1.6T 25% /src_2TB_linerlv
→約470GBを同一デバイス内にコピーするのに約146分
・44GBのディレクトリを2つ並列でコピー
# time { cp -r $SRC/1 $DST/1 & cp -r $SRC/2 $DST/2; }
[1] 9487
real 13m48.177s
user 0m1.454s
sys 1m11.744s
# du -h --max-depth=0 $DST/1
43G /dst_2TB_linerlv/1
# du -h --max-depth=0 $DST/2
43G /dst_2TB_linerlv/2
→コピーを並列実行してもコピー元とコピー先の両方のディスクで帯域を取り合ってしまうのでコピー所要時間は改善されない。
・44GBのディレクトリを2つ逐次でコピー
その前に先ほどコピーしたディレクトリいったん消す。(削除時間が余計に乗ってしまうので)
# rm -rf $DST/{1,2}
# echo 3 > /proc/sys/vm/drop_caches
# time { cp -r $SRC/1 $DST/1;cp -r $SRC/2 $DST/2; }
real 11m59.152s
user 0m2.581s
sys 2m13.642s
# du -h --max-depth=0 $DST/1
43G /dst_2TB_linerlv/1
# du -h --max-depth=0 $DST/2
43G /dst_2TB_linerlv/2
→1つのコピー元ディスクから別の1つのコピー先ディスクにディレクトリをコピーする場合、並列でコピープロセスを同時実行するより、コピープロセスを1つずつ逐次実行したほうがオーバーヘッドが少なくなるようだ。
※また、当然だが、コピー元のサイズとコピー所要時間はほぼ正比例している。
★なので、時間短縮のためこれ以後は、1TBのコピー所要時間は43GBのファイルシステムのコピー所要時間を計測してこれを単純に23倍して見積もることにするぷに。
★500GBのxfsdumpは中止。上記の傾向がわかったから。xfsdumpのほうがcpより2割くらい速いってことで換算すればよさそう
2.レガシースナップショットボリュームからリニアボリューム
・コピー元ディスク上に作成済みの/dev/src/testlvリニア論理ボリュームを30GBから200GBに拡張してコピー元ファイルシステムにする。
# umount /dev/src/testlv
# lvchange -an src/testsnap
Change of snapshot src/testsnap will also change its origin src/testlv and 2 other snapshot(s). Proceed? [y/n]: y
# lvchange -an src/testsnap2
Change of snapshot src/testsnap2 will also change its origin src/testlv and 2 other snapshot(s). Proceed? [y/n]: y
# lvchange -an src/testsnap3
Change of snapshot src/testsnap3 will also change its origin src/testlv and 2 other snapshot(s). Proceed? [y/n]: y
# lvextend -L+170G /dev/src/testlv
WARNING: Sum of all thin volume sizes (100.00 GiB) exceeds the size of thin pools (30.00 GiB)!
For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100.
Size of logical volume src/testlv changed from 30.00 GiB (7680 extents) to 200.00 GiB (51200 extents).
Logical volume src/testlv successfully resized.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home cl -wi-ao---- 173.87g
root cl -wi-ao---- 50.00g
swap cl -wi-ao---- 7.81g
dst_2TB_linerlv dst -wi-ao---- 2.00t
testlv_bk dst -wi-a----- 30.00g
src_2TB_linerlv src -wi-ao---- 2.00t
test_thinpool src twi-aotz-- 30.00g 0.10 0.54
testlv src owi---s--- 200.00g
testsnap src swi---s--- 30.12g testlv
testsnap2 src swi---s--- 30.12g testlv
testsnap3 src swi---s--- 25.00g testlv
thinlv_1 src Vwi-aotz-- 50.00g test_thinpool 0.06
thinlv_2 src Vwi-a-tz-- 50.00g test_thinpool 0.00
# lvchange -ay /dev/src/testlv
# mount /dev/src/testlv /src
# xfs_growfs /dev/src/testlv
meta-data=/dev/mapper/src-testlv isize=512 agcount=4, agsize=1966080 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=7864320, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3840, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7864320 to 52428800
# df -h /src
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/src-testlv 200G 44M 200G 1% /src
・ついでに下記の3つのレガシースナップショットボリュームを削除しちゃおう
# lvremove src/testsnap
Logical volume "testsnap" successfully removed
# lvremove src/testsnap2
Logical volume "testsnap2" successfully removed
# lvremove src/testsnap3
Logical volume "testsnap3" successfully removed
# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 3 0 wz--n- 231.69g 4.00m
dst 1 2 0 wz--n- 2.73t 716.52g
src 1 5 0 wz--n- 2.73t 516.45g
・/dst_2TB_linerlv/1ディレクトリ(43GB)を/src/にコピーする。
# time cp -r /dst_2TB_linerlv/1 /src/
real 7m37.192s
user 0m1.415s
sys 1m8.653s
んっ?リニアボリュームサイズが2TBのときより時間がかかった!? まあいっか。
・testlv論理ボリューム内のファイルに下記のようなささいな変更を加える
# cd /src/1/usr/local/src
# ll
合計 3624068
-rw-r--r--. 1 root root 123711003 9月 7 04:57 go1.14.4.linux-amd64.tar.gz
-rw-r--r--. 1 root root 3586257564 9月 7 04:58 oracle-database-ee-18c-1.0-1.x86_64.rpm
drwxr-xr-x. 3 root root 25 9月 7 04:57 rsync
-rw-r--r--. 1 root root 1069784 9月 7 04:58 rsync-3.2.3.tar.gz
# time md5sum oracle-database-ee-18c-1.0-1.x86_64.rpm
2ef79c73660191b1b6d68a5380892b60 oracle-database-ee-18c-1.0-1.x86_64.rpm
real 0m6.830s
user 0m6.486s
sys 0m0.344s
# echo -n "a" | dd of=oracle-database-ee-18c-1.0-1.x86_64.rpm bs=1 seek=1 conv=notrunc
1+0 レコード入力
1+0 レコード出力
1 バイト (1 B) コピーされました、 0.000107406 秒、 9.3 kB/秒
# md5sum oracle-database-ee-18c-1.0-1.x86_64.rpm
3f5d8575bce713114ea6f9e07ccc5e83 oracle-database-ee-18c-1.0-1.x86_64.rpm
# echo unko > ./unko.txt
# ll
合計 3624072
-rw-r--r--. 1 root root 123711003 9月 7 04:57 go1.14.4.linux-amd64.tar.gz
-rw-r--r--. 1 root root 3586257564 9月 7 05:25 oracle-database-ee-18c-1.0-1.x86_64.rpm
drwxr-xr-x. 3 root root 25 9月 7 04:57 rsync
-rw-r--r--. 1 root root 1069784 9月 7 04:58 rsync-3.2.3.tar.gz
-rw-r--r--. 1 root root 5 9月 7 05:28 unko.txt
・拡張したsrc/testlv論理ボリュームに対する10GBのレガシースナップショットを作成する
# lvcreate --size 10G -s -n legacy_snap /dev/src/testlv
Using default stripesize 64.00 KiB.
WARNING: Sum of all thin volume sizes (100.00 GiB) exceeds the size of thin pools (30.00 GiB)!
For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100.
Logical volume "legacy_snap" created.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home cl -wi-ao---- 173.87g
root cl -wi-ao---- 50.00g
swap cl -wi-ao---- 7.81g
dst_2TB_linerlv dst -wi-ao---- 2.00t
testlv_bk dst -wi-a----- 30.00g
legacy_snap src swi-a-s--- 10.00g testlv 0.00
src_2TB_linerlv src -wi-ao---- 2.00t
test_thinpool src twi-aotz-- 30.00g 0.10 0.54
testlv src owi-aos--- 200.00g
thinlv_1 src Vwi-aotz-- 50.00g test_thinpool 0.06
thinlv_2 src Vwi-a-tz-- 50.00g test_thinpool 0.00
・レガシースナップショットをマウントする。
# mkdir /legacy
# mount -o nouuid /dev/src/legacy_snap /legacy_snap/ ←「nouuid」オプションが無いとマウントできない。
# ll /legasy_snap/
合計 4
drwxr-xr-x. 25 root root 4096 9月 7 04:59 1
2-1.cpコマンドでコピー
# time cp -r /legacy_snap/1 /dst_2TB_linerlv/12
real 7m38.081s
user 0m1.555s
sys 1m31.803s
2-2.tarコマンドでアーカイブ
# time tar cf /dst_2TB_linerlv/legacy_snap.tar /legacy_snap/1
----(略)----
real 7m14.378s
user 0m3.596s
sys 1m34.667s
2-3.xfsdumpコマンドでイメージバックアップ(初回)
# time xfsdump -l 0 -f /dst_2TB_linerlv/legacy_snap.dump /legacy_snap
----(略)----
real 5m43.216s
user 0m3.237s
sys 1m20.813s
※xfsdumpで増分バックアップ
レガシースナップショットに直接変更を書き込む
# echo piyo > /legacy_snap/1/usr/local/src/chinko.txt
# echo -n "b" | dd of=/legacy_snap/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm bs=1 seek=1 conv=notrunc
1+0 レコード入力
1+0 レコード出力
1 バイト (1 B) コピーされました、 0.00010475 秒、 9.5 kB/秒
# time xfsdump -l 1 -f /dst_2TB_linerlv/legacy_snap_1.dump /legacy_snap
----(略)----
xfsdump: media file size 3587263888 bytes
xfsdump: dump size (non-dir files) : 3587077368 bytes
xfsdump: dump complete: 11 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /dst_2TB_linerlv/legacy_snap_1.dump OK (success)
xfsdump: Dump Status: SUCCESS
real 0m10.922s
user 0m0.046s
sys 0m2.374s
スナップショットを一旦削除して、ソースに差分を書き込み翌日分のスナップショットを作成してバックアップを取得する。
# umount /legacy_snap/
# lvremove /dev/src/legacy_snap
Do you really want to remove active logical volume src/legacy_snap? [y/n]: y
Logical volume "legacy_snap" successfully removed
# echo piyopiyo > /src/1/usr/local/src/chinko.txt
# ll /src/1/usr/local/src/
合計 3624076
-rw-r--r--. 1 root root 9 9月 7 10:33 chinko.txt
-rw-r--r--. 1 root root 123711003 9月 7 04:57 go1.14.4.linux-amd64.tar.gz
-rw-r--r--. 1 root root 3586257564 9月 7 05:25 oracle-database-ee-18c-1.0-1.x86_64.rpm
drwxr-xr-x. 3 root root 25 9月 7 04:57 rsync
-rw-r--r--. 1 root root 1069784 9月 7 04:58 rsync-3.2.3.tar.gz
-rw-r--r--. 1 root root 5 9月 7 05:28 unko.txt
# cat /src/1/usr/local/src/chinko.txt
piyopiyo
# md5sum /src/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
3f5d8575bce713114ea6f9e07ccc5e83 /src/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
# echo -n "c" | dd of=/src/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm bs=1 seek=1 conv=notrunc
1+0 レコード入力
1+0 レコード出力
1 バイト (1 B) コピーされました、 0.000112155 秒、 8.9 kB/秒
# md5sum /src/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
01795d1e5b4f2c9d22b289d1a1ce9b77 /src/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
# lvcreate --size 10G -s -n legacy_snap /dev/src/testlv
Using default stripesize 64.00 KiB.
WARNING: Sum of all thin volume sizes (100.00 GiB) exceeds the size of thin pools (30.00 GiB)!
For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100.
Logical volume "legacy_snap" created.
# mount -o nouuid /dev/src/legacy_snap /legacy_snap/
# cat /legacy_snap/1/usr/local/src/chinko.txt
piyopiyo
# time xfsdump -l 1 -f /dst_2TB_linerlv/legacy_snap_1_.dump /legacy_snap
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
============================= dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)
-> hoge
session label entered: "hoge"
--------------------------------- end dialog ---------------------------------
xfsdump: level 1 incremental dump of localhost.localdomain:/legacy_snap based on level 0 dump begun Mon Sep 7 07:51:28 2020
xfsdump: dump date: Mon Sep 7 10:42:11 2020
xfsdump: session id: cd80525a-510f-4a15-a723-75eefbc27636
xfsdump: session label: "hoge"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: pruning unneeded subtrees
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 3586386112 bytes
============================= media label dialog =============================
please enter label for media in drive 0 (timeout in 300 sec)
-> hoge
media label entered: "hoge"
--------------------------------- end dialog ---------------------------------
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 3587262720 bytes
xfsdump: dump size (non-dir files) : 3587076824 bytes
xfsdump: dump complete: 50 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /dst_2TB_linerlv/legacy_snap_1_.dump OK (success)
xfsdump: Dump Status: SUCCESS
real 0m50.609s
user 0m0.119s
sys 0m8.574s
# ls -lh /dst_2TB_linerlv/legacy_snap_1_.dump
-rw-r--r--. 1 root root 3.4G 9月 7 10:43 /dst_2TB_linerlv/legacy_snap_1_.dump
→前日のスナップショットをxfsdumpでバックアップした後、スナップショットを削除して、当日作成したスナップショットをxfsdumpで差分バックアップした場合、差分(ファイル)のみがコピーされた
※ただしxfsdumpの場合、増分バックアップを続けて行った場合、レベル0のフルバックアップから最大レベル9までの増分バックアップまでしか取得できず、多くとも10日おきにフルバックアップが必要になる。rsyncの方が一回の差分バックアップ所要時間が長くても、rsyncは永久に差分バックアップだけしてればよい。
2-4.rsyncコマンドでコピー(差分コピー)
※/dst_2TB_linerlv/1/は以前cpコマンドでコピー済み。
# time rsync -auvh /legacy_snap/1/ /dst_2TB_linerlv/1/
----(略)----
sent 44.76G bytes received 3.58M bytes 64.08M bytes/sec
total size is 44.74G speedup is 1.00
real 11m37.361s
user 3m21.442s
sys 1m41.029s
# ll /dst_2TB_linerlv/1/usr/local/src
合計 3624072
-rw-r--r--. 1 root root 123711003 9月 7 04:57 go1.14.4.linux-amd64.tar.gz
-rw-r--r--. 1 root root 3586257564 9月 7 05:25 oracle-database-ee-18c-1.0-1.x86_64.rpm
drwxr-xr-x. 3 root root 25 9月 7 04:57 rsync
-rw-r--r--. 1 root root 1069784 9月 7 04:58 rsync-3.2.3.tar.gz
-rw-r--r--. 1 root root 5 9月 7 05:28 unko.txt
※chinko.txtは削除してる。
すかさずもう一回
# time rsync -auvh /legacy_snap/1/ /dst_2TB_linerlv/1/
sending incremental file list
sent 5.21M bytes received 24.11K bytes 299.27K bytes/sec
total size is 44.74G speedup is 8,541.76
real 0m16.707s
user 0m1.026s
sys 0m2.901s
レガシースナップショットに直接変更を書き込んでもう一回
# echo fuga >> /legacy_snap/1/usr/local/src/unko.txt
# cat /legacy_snap/1/usr/local/src/unko.txt
unko
fuga
# time rsync -auvh /legacy_snap/1/ /dst_2TB_linerlv/1/
sending incremental file list
usr/local/src/unko.txt
sent 5.21M bytes received 24.14K bytes 3.49M bytes/sec
total size is 44.74G speedup is 8,541.63
real 0m1.073s
user 0m0.548s
sys 0m0.634s
# cat /dst_2TB_linerlv/1/usr/local/src/unko.txt
unko
fuga
# echo -n "b" | dd of=/legacy_snap/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm bs=1 seek=1 conv=notrunc
1+0 レコード入力
1+0 レコード出力
1 バイト (1 B) コピーされました、 0.000116084 秒、 8.6 kB/秒
# time rsync -auvh /legacy_snap/1/ /dst_2TB_linerlv/1/
sending incremental file list
usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
sent 3.59G bytes received 24.13K bytes 266.10M bytes/sec
total size is 44.74G speedup is 12.45
real 0m12.689s
user 0m14.608s
sys 0m4.127s
# md5sum /legacy_snap/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
49bf69a88ffb783aedc4b9af4af9b885 /legacy_snap/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
# md5sum /dst_2TB_linerlv/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
49bf69a88ffb783aedc4b9af4af9b885 /dst_2TB_linerlv/1/usr/local/src/oracle-database-ee-18c-1.0-1.x86_64.rpm
一回スナップショットを削除して、もう一回作り直して差分コピーしてみる。
# umount /legacy_snap/
# lvremove /dev/src/legacy_snap
Do you really want to remove active logical volume src/legacy_snap? [y/n]: y
Logical volume "legacy_snap" successfully removed
# lvcreate --size 10G -s -n legacy_snap2 /dev/src/testlv
Using default stripesize 64.00 KiB.
WARNING: Sum of all thin volume sizes (100.00 GiB) exceeds the size of thin pools (30.00 GiB)!
For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100.
Logical volume "legacy_snap2" created.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home cl -wi-ao---- 173.87g
root cl -wi-ao---- 50.00g
swap cl -wi-ao---- 7.81g
dst_2TB_linerlv dst -wi-ao---- 2.00t
testlv_bk dst -wi-a----- 30.00g
legacy_snap2 src swi-a-s--- 10.00g testlv 0.00
src_2TB_linerlv src -wi-ao---- 2.00t
test_thinpool src twi-aotz-- 30.00g 0.10 0.54
testlv src owi-aos--- 200.00g
thinlv_1 src Vwi-aotz-- 50.00g test_thinpool 0.06
thinlv_2 src Vwi-a-tz-- 50.00g test_thinpool 0.00
# mount -o nouuid /dev/src/legacy_snap2 /legacy_snap
# ll /legacy_snap/
合計 4
drwxr-xr-x. 25 root root 4096 9月 7 04:59 1
# time rsync -auh /legacy_snap/1/ /dst_2TB_linerlv/1/
real 0m19.603s
user 0m1.208s
sys 0m3.051s
# echo puni >> /legacy_snap/1/usr/local/src/unko.txt
# time rsync -auh /legacy_snap/1/ /dst_2TB_linerlv/1/
real 0m1.087s
user 0m0.581s
sys 0m0.614s
# cat /dst_2TB_linerlv/1/usr/local/src/unko.txt
unko
puni
→前日のスナップショットをrsyncでバックアップした後、スナップショットを削除して、当日作成したスナップショットをrsyncでバックアップした場合、差分(ファイル)のみがコピーされた