客戶端工具集
~~~
mfsgetgoal #設定副本數
mfssetgoal #獲取副本數
mfscopygoal #
mfsgetsclass
mfssetsclass
mfscopysclass
mfsxchgsclass
mfslistsclass
mfsgettrashtime #設定回收站時間
mfssettrashtime #設定回收站時間
mfscopytrashtime
mfsgeteattr #設置權限
mfsseteattr #獲取權限
mfsdeleattr
mfscopyeattr
mfsgetquota
mfssetquota
mfsdelquota
mfscopyquota
mfscheckfile #檢查文件
mfsfileinfo #文件信息
mfsappendchunks
mfsdirinfo #目錄信息
mfsfilerepair #文件修復
mfsmakesnapshot #快照
mfsfilepaths
mfschkarchive
mfssetarchive
mfsclrarchive
mfsscadmin
deprecated tools: // 遞歸設置
mfsrgetgoal = mfsgetgoal -r
mfsrsetgoal = mfssetgoal -r
mfsrgettrashtime = mfsgettreshtime -r
mfsrsettrashtime = mfssettreshtime -r
~~~
mfsmaster運行目錄下的文件介紹
~~~
metadata.mfs.back #MFS元數據信息,延遲將內存數據寫入文件,默認頻率1h,默認1d同步一次此文件到metalogger server
changelog.*.mfs #文件操作日志記錄,實時記錄、同步到metalogger server
sessions.mfs #客戶操作狀態記錄
stats.mfs #?
~~~
mfsmaster的權限管理(類似于nfs的exports文件)
~~~
vi /etc/mfs/mfsexports.cfg
#客戶端IP 允許掛載的目錄 客戶端擁有的權限
192.168.1.5 / rw,alldirs,maproot=0 # /標識MFS的根(讀寫的方式共享,允許掛載任何指定的子目錄)
192.168.0.0/24 . rw # .標識MFSMETA 文件系統
#客戶端 #目錄部分需要注意兩點 #權限部分
#* 所有客戶機 / 標識MooseFS 根 ro 只讀模式共享
#f.f.f.f 單個主機 . 表示MFSMETA 文件系統 rw 讀寫的方式共享
#f.f.f.f/p 某個子網段 alldirs 允許掛載任何指定的子目錄
#f.f.f.f-d.d.d.d 某兩個ip段區間 maproot 映射為root,還是指定的用戶
password 指定客戶端密碼
~~~
客戶端掛載文件系統(使用命令:mfsmount)
~~~
mfsmount可用參數
-H #接管理服務器IP
-P #接管理服務器端口
-S #指出被掛接mfs 目錄的子目錄,默認是/目錄,就是掛載整個mfs 目錄
-m #這樣可以掛載一個輔助的文件系統mfsmeta,輔助文件系統可以在如下兩個方面恢復丟失的數據
~~~
設定數據副本數量
~~~
#設定數據副本數量
#在客戶掛載好的目錄下創建,兩個用于測試的目錄
mkdir /data/test{1,2}
#設置存放文件的份數
mfssetgoal 1 /data/test1 #注意:對于已經存在的文件不會改變其副本數,只對后續新寫入的文件副本數生效
mfssetgoal -r 2 /data/test2 #此時所有已存在的文件及子目錄副本數為2,并且新寫入的文件和子目錄的副本數也為2
#注意若是空文件,那么在后端chunk上是不會創建文件的,只會出現在元數據中
#注意:文件及目錄所保留的真實副本數是依據數據存儲服務器的數量,如果數據存儲服服務器只有兩臺,但卻為文件及目錄設定了3個副本的話,最后的真實副本數為2
#復制文件到對應的目錄
cp /etc/hosts /data/test1
cp /etc/hosts /data/test2
#驗證1
[root@client68 ~]# mfsfileinfo /data/test1/hosts
/data/test1/hosts:
chunk 0: 0000000000000029_00000001 / (id:41 ver:1)
copy 1: 192.168.1.65:9422 (status:VALID)
[root@client68 ~]# mfsfileinfo /data/test2/hosts
/data/test2/hosts:
chunk 0: 000000000000002A_00000001 / (id:42 ver:1)
copy 1: 192.168.1.66:9422 (status:VALID)
copy 2: 192.168.1.67:9422 (status:VALID)
#驗證2
[root@client68 ~]# mfsgetgoal /data/
/data/: 2
[root@client68 ~]# mfsgetgoal /data/test1
/data/test1: 1
[root@client68 ~]# mfsgetgoal /data/test2
/data/test2: 2
~~~
設定垃圾回收站,回收時間(使用命令:mfssettrashtime ,可以使用-r 參數遞歸)
~~~
#一個被刪除文件能夠存放在一個“ 垃圾箱”的時間就是一個隔離時間, 這個時間可以用 mfsgettrashtime 命令來驗證,也可以使用`mfssettrashtime 命令來設置
#設置刪除文件最長保留時間,單位為秒(0:表示立即徹底刪除,1小時:3600;1天:86400;一周:604800;1月:2592000)
mfssettrashtime 64800 /data/test1
mfsgettrashtime /data/test1 #獲取刪除文件最長保留時間(驗證)
~~~
快照snapshot(使用命令:mfsmakesnapshot)
~~~
快照snapshot(使用命令:mfsmakesnapshot)
#可以給任何一個文件或目錄樹做快照,前提是必須是在mfs體系里的
#語法:mfsmakesnapshot src dst
mfsmakesnapshot /data/test2/hosts /data/
#是在一次執行中整合了一個或是一組文件的拷貝,而且任何修改這些文件的源文件都不會影響到源文件的快照, 就是說任何對源文件的操作,例如寫入源文件,將不會修改副本
a:對一個文件做snapshot后,查看兩個文件的塊,是同一個塊。把原文件刪除,原文件刪除后(回收站中最初可以看到,但一段時間后,回收站中就徹底刪除了),snapshot文件仍然存在,并且可以訪問。使用mfsfileinfo查看,發現仍然是原來的塊。
b:對一個文件做snapshot后,查看兩個文件的塊,是同一個塊。把原文件修改后,發現原文件使用的塊名變了,即使用的是一個新塊。而snapshot文件仍然使用原來的塊。
~~~
如何在回收站(trash)中將刪除的數據恢復
~~~
如何在回收站(trash)中將刪除的數據恢復
#思路:在垃圾箱有效時限內,掛載mfsmeta文件系統,定位到被刪除的文件,將其移動到所在目錄下的 undel 目錄即可
1:確保垃圾箱的回收時間稍大一點,方便做實驗
[root@client68 undel]# mfsgettrashtime /data/test1/
/data/test1/: 86400
2:創建文件,輸入內容,然后保存,并刪除
touch /data/test1/hello
echo "我們是共產主義接班人" >> /data/test1/hello
rm /data/test1/hello
3:先掛載mfsmeta文件系統
mount -m -H 192.168.1.61 /tmp/ceshi
4:定位文件(根據文件名)
[root@client68 ~]# find /tmp/ceshi/trash/ -name "*hello*"
/tmp/ceshi/trash/00F/0000000F|test1|hello
5:查看定位到文件內容(注意:一定要用單引號)
[root@client68 ~]# cat '/tmp/ceshi/trash/00F/0000000F|test1|hello'
test1/hello
6:恢復文件成功(移動這個文件到文件所在目錄下的undel下面,將會使原始的文件恢復到正確的MFS文件系統原來的路徑下)
[root@client68 ~]# cd /tmp/ceshi/trash/00F
[root@client68 00F]# ls
0000000F|test1|hello undel
[root@client68 00F]# pwd
/tmp/ceshi/trash/00F
[root@client68 00F]# mv 0000000F\|test1\|hello ./undel/
[root@client68 00F]# ls /data/test1/
hello
[root@client68 00F]# cat /data/test1/hello
我們是共產主義接班人
#注意:在恢復文件的時候,原來被刪文件下面的目錄下,不能有同名文件,不然恢復不成功
~~~
MFS元數據備份
~~~
通常元數據有兩部分的數據:
#主要元數據文件metadata.mfs,當mfsmaster 運行的時候會被命名為metadata.mfs.back
元數據改變日志changelog.*.mfs,存儲了過去的N 小時的文件改變(N 的數值是由BACK_LOGS參數設置的,參數的設置在mfschunkserver.cfg 配置文件中)。
#主要的元數據文件需要定期備份,備份的頻率取決于取決于多少小時changelogs 儲存。元數據changelogs 實時的自動復制。1.6版本中這個工作都由metalogger完成。
~~~
MFSMaster的恢復
~~~
#需要最后一個元數據日志changelog 并入主要的metadata 中。這個操作時通過 mfsmetarestore 工具做的
#先修復(幾次測試發現:如果mfsmetarestore -a無法修復,則使用metalogger也無法修復)
mfsmetarestore -a
#如果master 數據被存儲在MooseFS 編譯指定地點外的路徑,則要利用-d 參數指定使用,如:
mfsmetarestore -a -d /opt/mfsmaster
#再啟動(才能成功)
#強制使用metadata.mfs.back創建metadata.mfs,可以啟動master,但應該會丟失1小時的數據。
#明確表示會丟失故障點到上一個整點之間的數據。和之前我猜測的一致。因為對mfs的操作日志都記錄到changelog.0.mfs里面。changelog.0.mfs每小時合并一次到metadata.mfs中,如果突然斷電,則changelog.0.mfs里面的信息就沒有合并到metadata中,強制使用metadata.mfs.back創建metadata.mfs,就會導致丟失changelog.0.mfs里的數據。
~~~
從MetaLogger中恢復Master
~~~
#在MetaLogger上,使用mfsmetarestore -a 命令,合并changelogs,然后將其角色提升為mfsmaster.
#強制使用metadata.mfs.back創建metadata.mfs,可以啟動master,但丟失的數據暫無法確定
~~~
- 一、日常運維腳本
- 1.1 批量創建用戶并賦予sudo權限
- 1.2 批量主機建立互信
- 1.3create_images.sh
- 1.4monitor.sh
- 1.5ftp腳本
- 1.6格式化分區
- 1.7簡單的遠程執行腳本
- 二、常用服務使用
- 1 ceph (分布式文件系統)
- 1.1 ceph 簡介
- 1.2 準備環境
- 1.3 開始部署
- 1.4 cephfs掛載
- 1.5 RBD塊存儲
- 1.6 object 對象存儲
- 1.7 集群擴展
- 1.7.1 增加刪除MON
- 1.7.2 增加刪除OSD
- 1.7.3 刪除MDS
- 注意事項
- 遇到的問題
- 1.8ceph查找數據文件
- 1.9卸載并清理環境
- 2、mysql (數據庫)
- 2.1 搭建
- 2.2 使用教程
- 2.2.1 mysql基礎配置
- 2.2.1.1 用戶權限管理
- 2.2.1.2用戶資源限制
- 2.2.1.3 密碼管理
- 2.2.1.4用戶lock
- 2.2.2mysql語法詳解
- 2.2.1建庫、表語句
- 2.2.2.2 插入 insert
- 2.2.2.3更新 update
- 2.2.2.4刪除 delete
- 2.2.2.5查詢 select
- 2.2.6視圖 索引 view index
- 2.2.7 修改 alert
- 2.2.2.8清理 truncate drop
- 2.2.9重命名 rename
- 示例語句
- 2.2.3mysql常用函數
- 2.3.1 對比操作符統概
- 2.3.2對比操作符詳解
- 2.3.3邏輯操作符
- 2.2.4分配操作符
- 2.2.5流程控制函數
- 2.2.6字符串函數
- 2.2.7字符串對比函數
- 2.2.8數字函數
- 2.2.9日期和時間函數
- 2.2.10聚合/格式轉換函數
- 2.2.11 子查詢
- 示例語句
- 2.2.4 mysql 高級應用
- 2.2.4.1 存儲過程 函數
- 2.2.4.2流程控制
- 2.2.4.3游標
- 2.2.4.4觸發器
- 課堂練習
- 2.2.2.5 數據庫設計
- 2.2.5.1 數據類型
- 2.2.5.2存儲引擎
- 2.2.6Innodb內核
- 1、innodb事務和多版本控制
- 2、體系結構
- 3、InnoDB配置
- 4、buffer pool設置
- 5、其他配置
- innodb限制
- 2.7 字符集
- 2.8鎖機制和事務
- 2.8.1鎖機制
- 2.8.2事務
- 2.9分區
- 2.9.1 自動分區
- 2.10復制
- 2.11mysql搬移數據目錄
- 2.12組復制 GR
- 簡介
- 搭建
- 2.3日常運維
- 2.3.1定時任務
- 2.4mycat
- 2.4.1 報錯分析
- 2.4.2 修改字符集
- 2.11 mycat使用
- 2.5遇到問題
- 2.5.1 表名庫名忽略大小寫
- 3、PAAS平臺搭建
- 問題匯總
- 1、docker
- 2、日常運維
- 3.1 Kubernetes
- 3.1 kubernetes 高版本搭建
- 4、GlusterFS搭建
- 5、MooseFS搭建
- 5.1搭建
- 5.2運維
- 5.2.1 mfs日志解析
- 5.2.2清理mfs的垃圾數據
- 5.2.3元數據故障恢復
- 5.2.4 MFS優化
- 5.2.5 配置機架感知
- 5.2.6 客戶端工具集
- 6、集群切換命令
- 7、ntp服務
- 8、monggoDB
- 8.1搭建單機
- 2、搭建集群及分片
- 9、MariaDB Galera Cluster
- 9.1源碼安裝MariaDB
- 9.2galera cluster 優劣
- 9.3 rpm安裝mariadb
- 10 HAproxy1.7搭建
- 11、sysbench 搭建使用
- 0.5版本
- 12 percona-xtradb-cluster
- 13http服務相關
- 13.1 http狀態碼解析
- 14 zookeeper
- 14.1 zookeeper日志查看
- 14.2 配置解析
- 14.3 優化
- 15搭建私有pip源
- 16/var/log的日志文件解釋
- 15 ansible的搭建及使用
- 15.1 搭建
- 15.2 使用說明
- 16. 搭建本地yum源
- zookeeper
- 優化
- 四、開發語言
- 1、GO語言
- 1.1go簡介
- 1.1.1hello_world初識GO
- 1.1.2并發介紹
- 1.1.3 chan介紹
- 1.1.4多返回值
- 1.2go基礎
- 1.2.1數據類型
- 1.2.2 go基礎結構
- 1.2.3 const及變量介紹
- 1.2.3os和time介紹
- 1.2.4 字符串
- 1.2.5條件判斷
- 1.2.6 homework
- go--help
- 1.3 go基礎2
- 1.3.1 數組 array
- 1.3.2切片 slice
- 1.3.3 時間和日期
- 1.3.4指針類型
- 1.3.5函數
- 1.3.6可變參數
- 1.3.7 defer
- 1.3.8遞歸
- 1.9閉包
- 1.10 map
- 1.11 sort
- 1.12 struct 結構體
- 2.perl語言
- 2.1 安裝lib包
- 3 python
- 1.語言基礎
- 2、編程教學
- 2.1變量和序列
- 2.2 條件語句