使用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
- 使用 make:service 命令快速生成 Services
- 使用 Linux seq 命令生成數字序列Linux
- 在Vue專案中使用snapshot測試Vue
- PHP怎麼使用命令列生成檔案?PHP命令列
- snapshot原始碼原始碼
- Maven 快照(SNAPSHOT)Maven
- [Vue Unit tesitng] SnapshotVue
- 1.3.2.1.2.2 Snapshot Copy PDBs
- snapshot應用場景
- thinkphp6 使用自定義命令,生成資料庫檢視PHP資料庫
- golang常用庫:cli命令列/應用程式生成工具-cobra使用Golang命令列
- Mac使用tree命令生成檔案目錄結構,超簡單!Mac
- 命令列生成jar檔案命令列JAR
- Convert a Physical Standby Database into a Snapshot Standby DatabaseDatabase
- 【故障】workstation-001-snapshot失敗
- 命令列生成Dcat許可權列表命令列
- Laravel自定義Make命令生成Service類Laravel
- Symfony4 生成控制器命令
- java命令--jmap命令使用Java
- 著名的ORA-1555:snapshot too old
- zookeeper 清理snapshot及事務日誌
- Laravel 實現自定義生成檔案命令Laravel
- jspDemo-1.0-SNAPSHOT.war not found for the web module.JSWeb
- Oracle 11.2.0.4 physical dataguard和snapshot dataguard切換Oracle
- [20180423]表空間閃回與snapshot standby
- adb命令使用
- grub 命令使用
- Top 命令使用
- openssl命令使用
- cd命令使用
- crontab 命令使用
- Linux shell mktemp -d命令生成臨時檔案Linux
- 『動善時』JMeter基礎 — 56、JMeter使用命令列模式生成HTML測試報告JMeter命令列模式HTML測試報告
- 為SQL Server快照snapshot DB建立login訪問SQLServer
- 如何使用 IdGen 生成 UIDUI
- java使用poi生成excelJavaExcel
- 使用BERT生成句向量
- 使用Angular CLI生成路由Angular路由