使用dmsetup命令生成snapshot ( by quqi99 )
使用dmsetup命令生成snapshot
轉載自, http://blog.sina.com.cn/s/blog_4d3833cf0100n68c.html
可以使用如下方法建立snapshottarget的邏輯裝置:
1. 分割槽並通知系統確認
o #fdisk /dev/sda
o 分別建立/dev/sda7、/dev/sda8、/dev/sda9
分割槽均為1G空間
o #partprobe
o 其中/dev/sda7和/dev/sda8用來製作映象目標linear target邏輯裝置,/dev/sda9用來作為COW裝置。
2. 編寫建立/dev/mapper/kevin_linear_dev ,/dev/mapper/kevin_snapshot_base_dev和/dev/mapper/kevin_snapshot_dev三個裝置的指令碼
o /dev/mapper/kevin_linear_dev
是原始目標裝置
o /dev/mapper/kevin_snapshot_base_dev是snapshot所需要的中間基礎裝置,後面會說到它與/dev/mapper/kevin_linear_dev的區別
o /dev/mapper/kevin_snapshot_dev是建立出的快照裝置
o 將如下程式碼寫入並執行
o #vi kevin_linear_dev.sh
#!/bin/bash
size1=$(blockdev --getsize $1)
size2=$(blockdev --getsize $2 )
echo -e "0 $size1 linear $1 0\n$size1 $size2linear $2 0" | dmsetup create $3
o #vikevin_snapshot_base_dev.sh
#!/bin/bash
dmsetup table $1 | dmsetup create $2
o #vikevin_snapshot_dev.sh
size=$(blockdev --getsize $1)
CHUCK_SIZE=$3
dd if=/dev/zero of=$2 bs=512count=$CHUCK_SIZE
echo 0 $size snapshot $1 $2 p $3 | dmsetup create$4
3. 建立/dev/mapper/kevin_linear_dev裝置併為其建立檔案系統放入檔案
o #./kevin_linear_dev.sh /dev/sda7 /dev/sda8kevin_linear_dev
o #mkfs.ext3/dev/mapper/kevin_linear_dev
o #mkdir /mnt/kevin_linear_dev
o #mount /dev/mapper/kevin_linear_dev/mnt/kevin_linear_dev
o #cp /var/log/message/mnt/kevin_linear_dev/
4. 建立/dev/mapper/kevin_snapshot_base_dev裝置,並檢測。
o #./kevin_snapshot_base_dev.sh kevin_linear_devkevin_snapshot_base_dev
o #mkdir /mnt/kevin_snapshot_base_dev
o #mount /dev/mapper/kevin_snapshot_base_dev/mnt/kevin_snapshot_base_dev
o #diff -qur /mnt/kevin_snapshot_base_dev/mnt/kevin_linear_dev
o 你會發現/mnt/kevin_snapshot_base_dev目錄中的檔案和/mnt/kevin_linear_dev目錄中的檔案一致
o #cp /etc/resolv.conf/mnt/kevin_linear_dev
o #diff -qur /mnt/kevin_snapshot_base_dev/mnt/kevin_linear_dev
o 即時修改後/mnt/kevin_snapshot_base_dev目錄中的檔案和 /mnt/kevin_linear_dev
目錄中的檔案就不同步了!
5. 同步/dev/mapper/kevin_linear_dev和/dev/mapper/kevin_snapshot_base_dev裝置
o # umount /mnt/kevin_linear_dev
o # umount /mnt/kevin_snapshot_base_dev
o 解除安裝裝置的掛接目錄
o # dmsetup table kevin_linear_dev | dmsetup reloadkevin_snapshot_base_dev
o # dmsetup resumekevin_snapshot_base_dev
o #mount /dev/mapper/kevin_linear_dev/mnt/kevin_linear_dev
o #mount /dev/mapper/kevin_snapshot_base_dev/mnt/kevin_snapshot_base_dev
o #diff -qur /mnt/kevin_snapshot_base_dev/mnt/kevin_linear_dev
o 經過reload和rusume後再次掛接裝置就保持了同步
6. 建立/dev/mapper/kevin_snapshot_dev裝置並掛接
o #umount /mnt/kevin_snapshot_base_dev
o #umount /mnt/kevin_linear_dev
o #dmsetup suspend kevin_linear_dev
o 為了保證資料完整性保證目標裝置沒有I/O操作,需要先將目標裝置掛起
o #./kevin_snapshot_dev.sh/dev/mapper/kevin_snapshot_base_dev /dev/sda9 8 \kevin_snapshot_dev
o #dmsetup resume kevin_linear_dev
o 恢復kevin_linear-dev裝置後裝置就可以正常運了
o #mkdir /mnt/kevin_snapshot_dev
o #mount /dev/mapper/kevin_snapshot_dev/mnt/kevin_snapshot_dev
7. 測試和同步快照
o #mount /mnt/mapper/kevin_linear_dev/mnt/kevin_linear_dev
o #diff -qur /mnt/kevin_linear_dev/mnt/kevin_snapshot_dev
o 在沒有更改任何檔案的情況下快照和資料來源是一致的
o #cp /etc/rc.local/mnt/kevin_snapshot_dev
o #diff -qur /mnt/kevin_linear_dev/mnt/kevin_snapshot_dev
o 當快照被修改後,寫入或修改的資料將存入COW裝置,而資料來源保持不變
o #mount /dev/mapper/kevin_snapshot_base-dev/mnt/kevin_snapshot-dev
o 這裡會報錯,因為/dev/mapper/kevin_snapshot_base_dev已經被加入 /dev/mapper/kevin_snapshot_dev,不可以直接使用了。如果想檢視和匯出資料來源,就需要用到下一節的snapshot-origin裝置
o snapshot的好處是快速建立備份和資料修改分支,同時如果資料來源是直讀裝置(例如CD/DVD),我們需要暫時修改其少量資料時snapshot也非常有效。
8. 當我們不在需要使用以上三個裝置後,我們需要解除安裝和刪除這個裝置
o # dmsetup remove kevin_snapshot_dev
o # dmsetup remore kevin_linear_dev
o # dmsetup remorekevin_snapshot_base_dev
相關文章
- linux 命令 -- dmsetupLinux
- Snapshot--使用Snapshot來還原資料庫資料庫
- 使用 make:service 命令快速生成 Services
- AWR 及STATSPACK的snapshot不能自動生成排查
- Screen/Tmux/Byobu分屏工具的使用 ( by quqi99 )UX
- 使用 Linux seq 命令生成數字序列Linux
- MPLS學習( by quqi99 )
- PHP怎麼使用命令列生成檔案?PHP命令列
- 使用命令列生成高強度密碼命令列密碼
- different testing types ( by quqi99 )
- 使用一條命令生成 Model/Controller/MigrationController
- windows下使用makecert命令生成自簽名證書Windows
- 在Vue專案中使用snapshot測試Vue
- OpenDaylight學習 ( by quqi99 )
- OpenStack Neutron FWaaS 學習( by quqi99 )
- 批量生成註釋命令
- SQL Server SnapshotSQLServer
- Mac使用tree命令生成檔案目錄結構,超簡單!Mac
- golang常用庫:cli命令列/應用程式生成工具-cobra使用Golang命令列
- MAC OSX 下 使用openssl 命令 生成RSA公鑰和私鑰Mac
- 命令列生成jar檔案命令列JAR
- Quagga 路由軟體學習(by quqi99)路由
- Vmware中的虛擬網路 ( by quqi99 )
- Laravel 的命令版 Siri — 互動式生成命令Laravel
- 【DG】之 Snapshot standby模式模式
- 使用Gradle釋出SNAPSHOT版本到JCenter(oss.jfrog.org)Gradle
- Symfony4 生成控制器命令
- Laravel自定義Make命令生成Service類Laravel
- 命令列生成Dcat許可權列表命令列
- 用DOS命令生成光碟檔案列表
- 編譯linux kernel及製作initrd ( by quqi99 )編譯Linux
- snapshot standby快照備庫角色
- Data Guard - Snapshot Standby Database配置Database
- Oracle物化檢視及SnapshotOracle
- LVM快照Snapshot備份LVM
- java命令--jmap命令使用Java
- Laravel 實現自定義生成檔案命令Laravel
- 給Linux虛機擴充硬碟空間 ( by quqi99 )Linux硬碟