zfs 快速查詢

自建 samba + ZFS (snhpshot快照/任意還原點)檔案伺服器
5-3 認識 zfs格式化 指令
ZFS 建路陣列指令
ZFS 指令 啟用壓縮指令
(proxmox ve主機)
單一硬碟建立
ZFS檔案系統儲存池 zpool create -f -o ashift=12 zfs set compression=lz4 建立 Raid 0
最少1顆以上硬碟 zpool create -f -o ashift=12 …

資料會平均分配寫入各顆硬碟,若其中一顆硬碟毀損,全部的資料也將會一起毀損。
優點是寫入速度快 zfs set compression=lz4 建立 Raid 1
最少2顆以上硬碟 zpool create -f -o ashift=12 mirror

建立 Raid1(1+1=1) Mirror 格式,資料會同時寫入兩棵 HD。 (這是最佳建議方式,安全性也較高) zfs set compression=lz4 建立 Raid 10
最少4顆以上硬碟 zpool create -f -o ashift=12 mirror mirror zfs set compression=lz4 建立 Raid Z-1
最少3顆以上硬碟 zpool create -f -o ashift=12 raidz1
建立 Raid Z-2
最少4顆以上硬碟 zpool create -f -o ashift=12 raidz2

zfs 的即時壓縮功能(預設是關閉)
主機的 CPU Loading 若效能還有剩餘,可以啟用 zfs compression 功能,
但若效能剛好或不足,則建議使用較低的壓縮效率或關閉即時壓縮功能
debian 主機
compression YES YES on | off | lzjb | gzip | gzip-[1-9] | zle
查看 storage/compressed 檔案目錄屬性
zfs get all storage/compressed

常用指令
ZFS 的 zpool 指令
# 建立 Raid1(1+1=1) Mirror 格式,資料會同時寫入兩棵 HD。
# zpool create storagename mirror /dev/sdb /dev/sdc

# df -h # 查看 storage pool 是有已經建立
Filesystem Size Used Avail Capacity Mounted on
pool1 16G 112K 16G 1% /pool1

# zpool status
# 查看本機 ZFS 的狀態,這個系統中有一個 pool 名稱為 pool1 是由兩棵代號 sdb 及 sdc 的實體硬碟 mirror 而成
root@debian8:~# zpool status
pool: pool1
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
pool1 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0

errors: No known data errors

# zpool list
# 查看 pool 的空間使用狀態
root@debian8:~# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
pool1 7.94G 388K 7.94G 0% 1.00x ONLINE -

# zpool offline pool1 /dev/sdb
# 讓 storage 這個 pool 的 ad2 硬碟暫時離線
root@debian8:~# zpool offline pool1 /dev/sdb

# zpool status pool1
# 查看狀態會有 DEGRADED 警告
root@debian8:~# zpool status pool1
pool: pool1
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using ‘zpool online’ or replace the device with
‘zpool replace’.
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
pool1 DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
sdb OFFLINE 0 0 0
sdc ONLINE 0 0 0

errors: No known data errors

# zpool online pool1 /dev/sdb
# 讓 pool1 這個 pool 的 /dev/sdb 硬碟重新上線
root@debian8:~# zpool online pool1 /dev/sdb

# zpool status pool1
# 查看狀態 DEGRADED 警告已解除
root@debian8:~# zpool status pool1
pool: pool1
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Sat Jul 1 11:24:41 2017
config:

NAME STATE READ WRITE CKSUM
pool1 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 0 12K resilvered
sdc ONLINE 0 0 0

errors: No known data errors

# zpool export -f pool1
# 卸除(umount) pool1 這個 pool 參數 -f (Force) 為強制卸除
root@debian8:~# zpool export pool1 -f

# df -h
# 查看是否 umount,已無 pool1 這個 pool
root@debian8:~# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/sda1 1.9G 1004M 733M 58% /
udev 10M 0 10M 0% /dev
tmpfs 150M 4.6M 145M 4% /run
tmpfs 374M 0 374M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 374M 0 374M 0% /sys/fs/cgroup

# zpool import
# 列出目錄系統上存在但尚未掛載的 pool storage
root@debian8:~# zpool import
pool: pool1
id: 244594555867708236
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

pool1 ONLINE
mirror-0 ONLINE
disk/by-id/ata-VBOX_HARDDISK_VB5260512b-73cfc5a7 ONLINE
disk/by-id/ata-VBOX_HARDDISK_VBff905153-79c3b58a ONLIN

# zpool import -f
# 強制掛載目前系統上所有存在且未掛載(mount) 的 pool storage
# zpool import pool1 # 掛載(mount) storage 這個 pool
root@debian8:~# zpool import pool1

# df -h # 查看是否 mount,已重新掛載 storage pool
root@debian8:~# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/sda1 1.9G 1004M 733M 58% /
udev 10M 0 10M 0% /dev
tmpfs 150M 4.6M 145M 4% /run
tmpfs 374M 0 374M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 374M 0 374M 0% /sys/fs/cgroup
pool1 7.9G 112K 7.9G 1% /pool1

# zpool scrub storage
# 手動驗證 storage 這個 pool 中所有資料的完整性
# 部份版本的 zfs 不提供

# zpool replace pool1 /dev/sdd /dev/sde
# 在 storage pool1 中用新的 /dev/sdd /dev/sde 取代原本的 /dev/sdb /dev/sdc 兩棵 HD

ZFS 的 zfs 指令

# zfs create pool1/compressed
# 在 pool1 這個 pool 中建立一個檔案目錄叫 compressed
# zfs list # 查看 ZFS 檔案狀態
root@debian8:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
pool1 524K 7.81G 112K /pool1
pool1/compressed 112K 7.81G 112K /pool1/compressed

#以df -h 查看
root@debian8:~# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/sda1 1.9G 1004M 733M 58% /
udev 10M 0 10M 0% /dev
tmpfs 150M 4.6M 145M 4% /run
tmpfs 374M 0 374M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 374M 0 374M 0% /sys/fs/cgroup
pool1 7.9G 120K 7.9G 1% /pool1
pool1/compressed 7.9G 112K 7.9G 1% /pool1/compressed

# zfs set compression=gzip pool1/compressed # 將 compressed 目錄設定成 gzip 壓縮格式
# zfs set compression=off pool1/compressed # 解除 compressed 目錄設的壓縮格式

# zfs mount # 查看所有 ZFS 掛載的磁區
root@debian8:~# zfs mount
pool1 /pool1
pool1/compressed /pool1/compressed

# zfs get all pool1/compressed # 查看 pool1/compressed 檔案目錄屬性
root@debian8:~# zfs get all pool1/compressed
NAME PROPERTY VALUE SOURCE
pool1/compressed type filesystem -
pool1/compressed creation 六 7月 1 11:53 2017 -
pool1/compressed used 112K -
pool1/compressed available 7.81G -
pool1/compressed referenced 112K -
pool1/compressed compressratio 1.00x -
pool1/compressed mounted yes -
pool1/compressed quota none default
pool1/compressed reservation none default
pool1/compressed recordsize 128K default
pool1/compressed mountpoint /pool1/compressed default
pool1/compressed sharenfs off default
pool1/compressed checksum on default
pool1/compressed compression off default
pool1/compressed atime on default
pool1/compressed devices on default
pool1/compressed exec on default
pool1/compressed setuid on default
pool1/compressed readonly off default
pool1/compressed zoned off default
pool1/compressed snapdir hidden default
pool1/compressed aclmode groupmask default
pool1/compressed aclinherit restricted default
pool1/compressed canmount on default
pool1/compressed xattr on default
pool1/compressed copies 1 default
pool1/compressed version 4 -
pool1/compressed utf8only off -
pool1/compressed normalization none -
pool1/compressed casesensitivity sensitive -
pool1/compressed vscan off default
pool1/compressed nbmand off default
pool1/compressed sharesmb off default
pool1/compressed refquota none default
pool1/compressed refreservation none default
pool1/compressed primarycache all default
pool1/compressed secondarycache all default
pool1/compressed usedbysnapshots 0 -
pool1/compressed usedbydataset 112K -
pool1/compressed usedbychildren 0 -
pool1/compressed usedbyrefreservation 0 -
pool1/compressed logbias latency default
pool1/compressed dedup off default
pool1/compressed mlslabel off -

# 只查看 pool1/compressed 目錄中 compression 屬性
root@debian8:~# zfs get compression pool1/compressed
NAME PROPERTY VALUE SOURCE
pool1/compressed compression off default

# zfs set quota=3G pool1/compressed # 可設定檔案空間大小為 3G 但 storage 這個 pool 總大小為 7.9G 如果 3G 滿了而 7.9G 還未用完會 share 給 /pool1/compressed 繼續使用
# df -h # 查看 storage/compressed 的 Avail 變成 3G
檔案系統 容量 已用 可用 已用% 掛載點
pool1 7.9G 120K 7.9G 1% /pool1
pool1/compressed 3.0G 112K 3.0G 1% /pool1/compressed

# zfs set reservation=3g pool1/compressed
# 設定保留了 3G 給 /pool1/compressed
# df -h # 查看 pool1 的 Size 變成 4.9G,這是因為保留了 3G 給 /pool1/compressed,代表 /pool1/compressed 真正擁有 3G 別的 filesystem 是不能跟它 share 的
root@debian8:~# zfs set reservation=3G pool1/compressed
root@debian8:~# df -h
檔案系統 容量 已用 可用 已用% 掛載點
pool1 4.9G 120K 4.9G 1% /pool1
pool1/compressed 3.0G 112K 3.0G 1% /pool1/compressed

# zfs create pool1/data # 於 storage pool 中再建立一個 data 檔案目錄
# zfs set mountpoint=/data pool1/data # 設定真實掛載點原本 Mounted on 會由 /pool1/data 變成到 /data
# df
檔案系統 容量 已用 可用 已用% 掛載點
pool1/compressed 3.0G 112K 3.0G 1% /pool1/compressed
pool1/data 4.9G 112K 4.9G 1% /data

# zfs set sharenfs=rw pool1/data # 設定分享權限可讀及寫,通常用在 NFS 分享上root@debian8:~# zfs set sharenfs=rw pool1/data
cannot share ‘pool1/data’: exportfs failed
property may be set but unable to reshare filesystem
# zfs snapshot pool1/compressed@2017-07-05
# touch /pool1/compressed/1234 # 建一個檔案到 compressed 目錄下
# zfs snapshot pool1/compressed@2017-07-051
# zfs snapshot pool1/compressed@2017-07-052
# snapshot compressed 目錄,取個隨便名稱就用今天日期
zfs list -t snapshot
# 列出所有的snapshot(快照)
root@debian8:~# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
pool1/compressed@2017-07-05 0 – 112K -
pool1/compressed@2017-07-051 0 – 112K -
pool1/compressed@2017-07-052 0 – 112K -
zfs list -t all
# 列出所有的zfs檔案系統
root@debian8:~# zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
pool1 3.00G 4.81G 120K /pool1
pool1/compressed 112K 3.00G 112K /pool1/compressed
pool1/compressed@2017-07-05 0 – 112K -
pool1/compressed@2017-07-051 0 – 112K -
pool1/compressed@2017-07-052 0 – 112K -
pool1/data 112K 4.81G 112K /data

# pool1/compressed@2017-07-051
# 刪除 pool1/compressed@2017-07-051 這個 snapshot
root@debian8:~# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
pool1/compressed@2017-07-05 0 – 112K -
pool1/compressed@2017-07-052 0 – 112K -

# 回復到某一個快照點
# 先刪除剛剛產生的檔案
root@debian8:~# rm /pool1/compressed/1234
root@debian8:~# ll /pool1/compressed/
總計 17
drwxr-xr-x 2 root root 2 7月 1 12:24 ./
drwxr-xr-x 3 root root 3 7月 1 12:04 ../
再將zfs檔案系統還原到刪除前的snapshot
root@debian8:~# zfs rollback pool1/compressed@2017-07-052
root@debian8:~# ls -alF /pool1/compressed/
總計 18
drwxr-xr-x 2 root root 3 7月 1 12:23 ./
drwxr-xr-x 3 root root 3 7月 1 12:04 ../
-rw-r–r– 1 root root 0 7月 1 12:23 1234
# zfs destroy pool1/compressed # 可刪除 pool1/compressed 檔案目錄

root@debian8:~# zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
pool1 3.00G 4.81G 120K /pool1
pool1/compressed 280K 3.00G 112K /pool1/compressed
pool1/compressed@2017-07-05 88K – 112K -
pool1/compressed@2017-07-052 80K – 112K -
pool1/data 112K 4.81G 112K /data
# 在 pool1/compressed 檔案系統裡還有兩個快照存在
# 直接刪除檔案系統
root@debian8:~# zfs destroy pool1/compressed
cannot destroy ‘pool1/compressed’: filesystem has children
use ‘-r’ to destroy the following datasets:
pool1/compressed@2017-07-05
pool1/compressed@2017-07-052

發表於 未分類 | 已標籤 | 發表迴響

linux screen

ctrl +? #help
ctrl + a #切換 screen
Ctrl + a 後,再按下 d 鍵(detach),這時候整個 screen 跑去 背景繼續執行
screen -ls #查看 screen 視窗
screen -r 代號 #連接開啟 screen

Ctrl + a 後,再按下 c 鍵(create),這樣就會建立一個新的視窗
Ctrl + a 後,再按下 H 鍵(請注意這裡是大寫的 H,也就是要按著 Shift 鍵再按 h 鍵), 若要結束紀錄功能,只要再按一次 Ctrl + a 與 H 鍵即可。

screen -L #一開始就執行記錄功能
如果要把跳脫序列直接拿掉,可以使用這個 alias:
alias stresc=’sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"‘
stresc screenlog.0 > screenlog.0.txt

Ctrl + a 後,再按下 x 鍵,這樣螢幕就會被鎖住
Ctrl + a 與 k(kill),直接關閉整個 screen 工作環境。

screen 參數表
screen 參數 說明
-c file 使定使用的設定檔(預設為 $HOME/.screenrc)
-d [pid.tty.host] 強制將指定的 screen 工作環境卸離
-L 開啟自動紀錄功能
-ls 或 -list 列出目前所有執行中的 screen 工作環境
-r [pid.tty.host] 重新連接執行中的 screen 工作環境
-R 重新連接最近卸離的 screen 工作環境
-U 以 UTF-8 模式執行
-wipe [match] 將廢棄的 screen 工作環境清除

screen 操作指令表
screen 參數 說明
Ctrl + a 與 c 建立新 screen 視窗
Ctrl + a 與 Ctrl + a 切換至上一個 screen 視窗
Ctrl + a 與數字鍵 0 到 9 切換至指定編號的 screen 視窗
Ctrl + a 與 n 切換至下一個的 screen 視窗
Ctrl + a 與 p 切換至下一個的 screen 視窗
Ctrl + a 與 w 列出目前所有的 screen 視窗
Ctrl + a 與 " 列出目前所有的 screen 視窗,並可用上下鍵選擇要切換的設窗
Ctrl + a 與 k 關閉目前的 screen 視窗
Ctrl + a 與 d 卸離 screen 工作環境
Ctrl + a 與 Esc 鍵(或 Ctrl + a 與 [) 進入複製模式(copy mode),可用方向鍵操作捲軸,或用 / 與 ? 來搜尋,按下空白鍵開始選取要複製的內容,選取完成後再按下第二次空白鍵,即可複製,隨後使用 Ctrl + ] 可貼上複製的內容。
Ctrl + a 與 S 將畫面分割成上下兩個區域
Ctrl + a 與 Q 關閉分割畫面
Ctrl + a 與 Tab 鍵 切換分割畫面
Ctrl + a 與 t 顯示目前系統的時間與負載狀況
Ctrl + a 與 a 送出 Ctrl + a
Ctrl + a 與 ? 顯示說明
Ctrl + a 與 v 顯示版本資訊
Ctrl + a 與 x 鎖定 screen 螢幕
Ctrl + a 與 H 開啟或結束 screen 紀錄功能
Ctrl + a 與 C 清除 screen 視窗中的內容
Ctrl + a、D 與 D 強力卸離,卸離 screen 工作環境之後,直接登出
Ctrl + a 與 Ctrl + g 視覺化鈴聲(visual bell)切換
Ctrl + a 與 i 顯示目前 screen 視窗的資訊
Ctrl + a 與 l 重繪目前 screen 視窗的內容

發表於 未分類 | 發表迴響

ROS 多次登入失敗 封鎖

防FTP猜密码登录 脚本原理: 通过ROS响应FTP请求. 返回530登录错误.以下脚本为 在一分钟内允许10次登录失败,超过10次将阻止源IP访问三小时. 注意rule应用顺序及chain
/ip firewall filter
add chain=input protocol=tcp dst-port=21 src-address-list=ftp_blacklist action=drop comment="drop ftp brute forcers"
add chain=output action=accept protocol=tcp content="530 Login incorrect" dst-limit=1/1m,9,dst-address/1m
add chain=output action=add-dst-to-address-list protocol=tcp content="530 Login incorrect" address-list=ftp_blacklist address-list-timeout=3h

防SSH暴力猜解密码 脚本原理: 这是一套组合拳. 通过匹配ssh新连接.三次登录未成功,将阻止源地址访问ssh.
/ip firewall filter
add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment="drop ssh brute forcers" disabled=no
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=10d comment="" disabled=no
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m comment="" disabled=no
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m comment="" disabled=no
add chain=input protocol=tcp dst-port=22 connection-state=new action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m comment="" disabled=no

發表於 未分類 | 發表迴響

Drop Facebook_Yourtube_List

Youtube_list
172.217.24.14
172.217.27.142
172.217.160.78
172.217.160.110
216.58.200.46
216.58.200.238

Facebook_List
31.13.75.35
31.1377.17
31.13.87.1
31.13.87.5
31.13.87.36

發表於 未分類 | 發表迴響

AnyDesk_list

阻擋 port 80 443 6568
13.35.24.17
87.17.34.78
172.217.24.14
172.217.160.78
172.217.160.110
172.217.27.142
203.10.98.226
216.58.200.46

84.17.34.78
203.10.98.234
203.10.98.218
5.188.71.55
89.187.160.140

發表於 未分類 | 發表迴響

跨平台憑證 localhost 無法檢測

1.先進去 chrome://net-internals/#hsts
最後一行 打localhost 按DEL

2. 直接進去 http://localhost:61161/selfTest.htm 看有沒有成功

發表於 未分類 | 發表迴響

Win10 printer 無法新增

QA:新增過程最後一步驟出現 0x0000003eb
EX: 1: printer spool 服務停掉
2: 然后找到此目录:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3 下。删除打印机键值或者直接删除Version-3
注意:你要先确定自己系统是64位 还是 32位。我的是64位,所以我删除的是:Windows x64\Drivers\Version-3下的键值;

3.找到驱动目录 C:\Windows\System32\spool\drivers\x64\3下,文件全部删除 或 者直接删除名称为3的文件夹

注意:注意:你要先确定自己系统是64位 还是 32位。我的是64位,所以我删除的是:x64\3所有文件;

發表於 未分類 | 發表迴響

shell 批量 修改檔名

awk + xorg

➜ touch file{0..10}.txt
➜ ls
file0.txt file10.txt file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt file7.txt file8.txt file9.txt
➜ ls | awk ‘{print $NF}’ | xargs -I {} mv {} update_{}
➜ ls
update_file0.txt update_file1.txt update_file3.txt update_file5.txt update_file7.txt update_file9.txt
update_file10.txt update_file2.txt update_file4.txt update_file6.txt update_file8.txt

bash
➜ touch file{1..10}.txt
➜ ls
file10.txt file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt file7.txt file8.txt file9.txt
➜ num=0; for i in *; do mv "$i" "$(printf ‘%04d’ $num).${i#*.}"; ((num++)); done
➜ ls
0000.txt 0001.txt 0002.txt 0003.txt 0004.txt 0005.txt 0006.txt 0007.txt 0008.txt 0009.txt

發表於 未分類 | 已標籤 | 發表迴響

讓樹梅派while迴圈登入rdesktop

while true
do
RDP=$(ps aux|grep rdesktop |grep 254|awk -F" " ‘{print $11}’)
if [[ $RDP == "rdesktop" ]] ;then
echo "rdp up"
else
#echo "rdp down"
rdesktop "172.10.1.254:3389″
fi
sleep 10s
done

發表於 未分類 | 發表迴響

virtualbox install centos 8 error

yum install elfutils-libelf-devel
/sbin /rcvbodrv
/sbin/vboxconfig

發表於 未分類 | 已標籤 | 發表迴響