EExcel 丞燕快速查詢2

EExcel 丞燕快速查詢2
EExcel 丞燕快速查詢2 https://sandk.ffbizs.com/
顯示具有 ZFS 標籤的文章。 顯示所有文章
顯示具有 ZFS 標籤的文章。 顯示所有文章

[轉]FreeBSD ZFS vs. Linux EXT4/Btrfs RAID With Twenty SSDs

https://www.phoronix.com/scan.php?page=article&item=freebsd-12-zfs&num=1&fbclid=IwAR2utCninwUWUjjt_5IUu-1-rfm3vcCc1SiOvuZrYf4Bu0sW0HVsh9-lvQA

Ray Tracy ZFS

Ray Tracy 一個工具或技術, 能否達到你的期望用途, 關鍵在於:

使用者是否充分了解他, 並且能夠熟練的駕馭他.

世上沒有絕對好用的工具, 也沒有絕對該用甚麼的場景:

我曾經深度挖掘 zfs 的各種參數, 試圖調到最好, 經過半年之後卻發現, 當我的 Workload 特性有細微改變的時候, zfs 會放大這些改變, 導致整個運作偏離我預想的方向....(其實就是參數過度優化: Over-optimized, 但我發現 zfs 的參數很容易讓你走上這條路)

這問題, 導致我必須經常監督 zfs 的表現, 並記錄我的 workload 每一個時間軸的變化趨勢, 好讓我在下周或下個月, 遇到新的問題時, 知道該朝甚麼方向改變甚麼參數, zfs 才能獲得最佳結果.

這對 Hacker 或 Geek 來說, 是件無比美好的事情, 因為他們每周都可以看到新的變化, 接受新的挑戰, 然後從當中挖掘出更多 zfs 新的參數組合與用途, 再來發表給大家聞香敬拜....

但對機房的 SRE 來說, 這件事情根本就是噩夢, 因為原本可以安穩睡一個星期的覺, 現在變成每天半夜都睡不著, 你不知道他是否會在半夜 3 點突然惡化, 導致線上有 50 萬個會員在交易的電商網站, 反應變慢, 破圖, 甚至無法交易, 最後被客戶從睡夢中挖起來解決問題.....

我也跟您一樣, 試圖解決 Storage 同步的問題, 而引進 Gluster 技術. 剛開始看似一切正常, 資料都正常複寫, 直到有一天, 某一台 node 意外故障而重開, 觸發 Gluster 開始做 healing 的時候, 我才發現:

- 他的 healing 比我預期的時間更長上數十倍
- 他在 healing 期間會造成 VM 寫入資料異常
- 他在 node 發生 flip-flap 的時候, 會選出錯誤的 node

這些問題難道都沒測試過嗎? 有啊, 但是我測試的時候, 並沒有出現這些現象, 國外人家測試的時候, 也沒有特別警告這些現象; 初期也都沒問題, 是跑了幾個月之後, 才開始劣化....

所以, 我從每天調校 zfs, 轉成每天要調校 Gluster, 參數又多如牛毛, 排列組合起來有上百種變化, 然後又是生產環境, 我不能隨便停下來測試, 每一次調整都得確保線上系統不會掛掉, 也不能隨便重開機...

如果當初我知道會有這麼多問題, 我絕對不會這麼快就讓他上生產環境, 至少要測到我有信心為止. 但是, 最初的測試都顯示: 他們似乎是個很好的選擇, 直到我上了生產環境之後數個月, 才開始出問題....

最後我回到傳統硬體 RAID +NFS, 當然這樣的效能無法滿足原先用 zfs 的期待, 不過我又自行加上 bcache 技術設法加速, 只是我選擇比較保守的參數, 以資料安全性為優先, 不追求最高效能; 初步看起來, 這樣大概可以滿足我現行的狀況還剩一點點餘裕, 至少, 他不會造成我整個 I/O 被 block 住, 連 CPU 都被吃死死不能動的狀況 (此問題我在 zfs 和 gluster 都遇到)

但是這個組合, 沒辦法解決跨 Storage replication 的問題, 也就是沒有 HA; 所以, 我勢必要跳離這個方案, 目前下一個候選者是 Ceph, 但過去幾年來, Ceph 有名的除了很容易做到大容量 Scale-out 和 Replication 之外, 還有一個眾人皆知的缺陷是: 效能低落, 所以, 我該如何解決效能低落問題, 同時享受他帶來的 Scale-out 好處? 並且, 在我的環境內可以正常工作?

我的經驗, 並不代表別人也是同樣的狀況, 你可以找到許多把 zfs 和 gluster 用得很愉快的用戶, 但是他們的 workload 和環境也跟我大不相同....

這些 Storage 的課題, 都需要在實際環境中實做過才會知道...














向聖夫 這種 fine tuning 必須從 application 層級開始 跑很多 micro service 才有可能針對每一個 micro service 去優化
.
但是如果你把所有的 workload 放在一個 vm 裡面, 你會發現 你的 write 變快了 但是犧牲了你的 read.... 這個時候怎麼優化都會出問題

你有 sequential write 其實需要的是 spinning disk 才快

你有 random write 小 io 這個是要 nvme ssd 才快 Ray Tracy 說的 bcache 很讚 但是它還是有誤判的情況 以及每一顆 nvme ssd 的 controller 能夠同時處理的 thread 跟 command 都不一樣 所以你優化 A 牌的參數換到 B 牌上去時 是完全沒路用

如果你仔細觀察 nvme ssd 下的 controller busy time 你就會發現 當ssd command 塞爆的時候 你會發現它比 hdd 還慘 ( 不是 ssd 上的 ram buffer 用光了喲)




pve PostgreSQL ZFS

Ray Tracy 在Proxmox VE社群中

.永遠開compression
.不要用dedup
.留意scrub結果
.多利用zil
.關掉atime
.調整recordsize
.保持ARCi,只使用25%的Total RAM
.必要時選擇primarycache=metadata,
.checksum error 是硬碟故障的前兆,必須加以監視
.1個db instatnce 獨佔一個zfs dataset
.不要開啟pSQL的checksum和compression(讓zfs做就好
.要經常移除舊的snapshot


use zfs directly to send snapshots

https://forum.proxmox.com/threads/pve-zsync-vs-others-like-znapsend-or-sanoid.27663/#post-139274

zfs command 指令


1、查硬碟  (硬碟排線寫上編號 -- 疑問~可能要看bios吧)

lsblk
fdisk -l   //usb hdd  linux指令,freebsd沒有
ls -l /dev/disk/by-id/   //linux指令,freebsd沒有
df -k

format
devfsadm
iostat -En


2、建zpool

a. zpool create zpool名稱 磁碟

EX:zpool create storage01 /dev/sda1 /dev/sda2


b. zpool create zpool名稱 mirror/raidz 磁碟 磁碟   //建立 (mirror為一般raid 1,raidz其他raid格式)

EX:zpool create storage02 mirror /dev/sda1 /dev/sda2


c.指定掛載點?? (不指定,會在根目錄自建掛載目錄)



3、增加(新增)zpool容量

a. zpool add zpool名稱 磁碟      //增加(新增)容量(mirror)

EX:zpool add storage01 /dev/sda1


b. zpool add zpool名稱 mirror 磁碟 磁碟      //增加(新增)容量(mirror)

EX:zpool add storage01 mirror /dev/sda1 /dev/sda2


c. zpool add zpool名稱 spare 磁碟     //增加 後備(spare)hdd

EX:zpool add storage01 spare /dev/sda1



4、更換zpool設備 ??

a.zpool replace zpool 磁碟 [磁碟]



5、檢查zpool (完畢後看結果 zpool status -v zpool名稱)

a. zpool scrub zpool名稱

EX:zpool scrub storage01



6、刪除zpool

a. zpool destroy zpool名稱

EX:zpool destroy storage01



7、檢查zpool

a. zpool list    //zpool 快速使用情況

EX:zpool list


b. zpool status  [-x]

EX:zpool status [-x]


c. zpool status zpool名稱

EX:zpool status storage01


d.zpool status -v zpool名稱  (同c)

EX:zpool status -v storage01


e. zpool get all    //列出所有資訊

EX:zpool get all


zpool history -l //最出歷史記錄
zpool history -i //最出歷史記錄


=====zpool import/export //系統移機使用=====
過程中請用zfs list配合檢查

a. zpool export zpool名稱   //移除zpool

EX:zpool export storage01


b. zpool import //列出可以import zpool

c. zpool import
   -d 目錄
   -o 掛載


   -R  zpool名稱  //用root import

EX:zpool import -R /vm_win stroage01/vm_win


   -D  被刪zpool名稱 新還原後zpool名稱 //被刪掉(destory)

EX:zpool import -D    //列出被刪的zpool
EX:zpool import -D 被刪zpool名稱 新還原後zpool名稱  //指定新pool名稱


. zpool offline zpool名稱 磁碟   //暫某顆hdd暫時離線
. zpool online zpool名稱 磁碟    //暫某顆hdd暫時上線



=====zfs 指令操作 (zfs檔案系統操作和一般linux裡面的要分開)=====

zfs list     //zfs 列出所有檔案情況
zfs list -r  //zfs 列出所有檔案情況
zfs mount    //zfs 掛載磁區


1、zfs 建目錄

a. zfs create zpool名稱/目錄名稱   // 建目錄

EX:zpool create storage01/vm_win


b. zfs create -o reserv=配額(容量大小) zpool名稱/目錄名稱  //預留空間

EX:zfs create -o reserv=1G storage01/vm_win


c. zfs create -v(-V) 配額(容量大小) zpool名稱/目錄名稱   //建立volume (iscsi)

EX:zfs create -v(-V) 1G storage01/vm_win


d. zfs create -p  子目錄也順便建立


e. zfs 分享檔案系統建議屬性,在建立檔案系統時就一起設定,建立之後就無法修改

每個參數前面都須要加上-o

casesensitivity=mixed 混合式大小寫,配合windows的習慣
nbmand=on 配合檔案系統同時作NFS和CIFS分享,使用的interlock模式
utf8only=on 檔案名稱只接受utf8的unicode編碼,不使用ansi編碼。

EX:zfs -o casesensitivity=mixed -o nbmand=on -o utf8only=on storage01/vm_win



2、zfs 刪目錄

a. zfs destory zpool名稱/目錄名稱  //刪目錄

EX:zpool destory storage01/vm_win


b. zfs destory zpool名稱/目錄名稱  //刪除volume (iscsi)

EX:zfs destory storage01/vm_win



3、zfs 修改目錄名稱

a. zfs rename zpool名稱/舊目錄名稱 zpool名稱/新目錄名稱

EX:zfs rename storage01/vm_win storage01/vm_windows



=====zfs屬性=====

1、zfs 取得屬性(properties)

a. zfs get all zpool名稱

EX:zfs get all storage01
EX:zfs get all vm_win



2、zfs 變更掛載點 (mount 想成檔案目錄操作)

a. zfs set mountpoint=/目錄 zpool名稱/目錄名稱  //變更掛載點

EX:zfs set mountpoint=/images/vm/100 storage01/vm_win  //將/images/vm/100 掛上vm_win
EX:zfs set mountpoint=/storage02/vm_win_new storage01/vm_win  //vm_win_new 取代 vm_win



3、zfs 目錄壓縮

a. zfs set compression=on zpool名稱/目錄名稱

EX:zfs set compression=on storage01/vm_win

b. zfs set compression=lz4 ??


4、zfs 目錄取消壓縮

a. zfs inherit compression zpool名稱/目錄名稱

EX:zfs inherit compression storage01/vm_win



5、zfs 目錄設定配額(容量大小)

a. zfs set quota=配額(容量大小) zpool名稱/目錄名稱

EX:zfs set quota=1G storage01/vm_win



6、zfs 給NFS使用

a. zfs set sharenfs=on zpool名稱/目錄名稱

EX:zfs set sharenfs=on storage01/vm_win



7、zfs 給CIFS使用

a. zfs set sharesmb=name=CIFS分享名稱 zpool名稱/目錄名稱

EX:zfs set sharesmb=name=vm_win storage01/vm_win


b. zfs get sharesmb zpool名稱/目錄名稱

EX:zfs get sharesmb storage01/vm_win



8、ACL繼承設定 (aclinherit改成passthrough)  ??

a. zfs set aclinherit=passthrough zpool名稱

EX:zfs set aclinherit=passthrough storage01



=====zfs快照=====

1、zfs 建立快照

a. zfs snapshot zpool名稱/目錄名稱@snapshot名稱

EX:zfs snapshot storage01/vm_win/win10@20160828_win10


b. zfs snapshot -r zpool名稱@snapshot名稱   //zpool名稱底下所有的檔案系統都用相同的snapshot名稱

EX:zfs snapshot -r storage01


2、zfs 還原快照

a. zfs rollback -r zpool名稱/目錄名稱@snapshot名稱

EX:zfs rollback -r storage01/vm_win/win10@20160828_win10



3、zfs 複製快照

a. zfs clone 來源zpool名稱/目錄名稱@snapshot名稱 目地zpool名稱/目錄名稱

EX:zfs clone storage01/vm_win/win10@20160828_win10 storage02/vm_win/win10_test



4、zfs 移除快照

a. zfs destory 來源zpool名稱/目錄名稱@snapshot名稱

EX:zfs destory storage01/vm_win/win10@20160828_win10



5、zfs 列出快照

a. zfs list -t snapshot  //列出所有快照



6、zfs 快照避免被修改

a. zfs hold keep 來源zpool名稱/目錄名稱@snapshot名稱  //keep避免被修改

EX:zfs hold keep storage01/vm_win@20160828_win10



b. zfs holds 來源zpool名稱/目錄名稱@snapshot名稱   //holds檢查

EX:zfs holds storage01/vm_win@20160828_win10



======參考======
http://blog.virtual-on.org/2011/06/zfs-nas-nexentacore1.html
http://gallery.tses.tc.edu.tw/nuke/sections.php?op=viewarticle&artid=600
http://mail.ycsh.tp.edu.tw/~tory/ezblog/index.php?entry=entry100521-020651
http://blog.virtual-on.org/2011/06/zfs-nas-nexentacore1.html
https://blogs.oracle.com/forrest/entry/zfs%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F_4_zpool_inport_export
http://leoprosoho.pixnet.net/blog/post/32323214-zfs%E5%9F%BA%E7%A4%8E%E7%AE%A1%E7%90%86