Select Page

實戰教學:實現Ubuntu環境中高效的硬碟共享

在Ubuntu中要分享硬碟給另一台電腦,通常有兩種方法:使用網絡文件系統(NFS)與 Linux 或使用 Samba 與 Windows 共享。

以下是這兩種方法的步驟:

方法1:使用NFS(適合Linux系統)

安裝NFS服務器:

在提供共享的電腦上,打開終端並輸入以下命令安裝NFS服務器:

sudo apt update
sudo apt install nfs-kernel-server

配置共享目錄:

編輯/etc/exports文件來添加你想要共享的目錄。例如,如果你想共享/srv/nfs目錄,可以添加如下行:

sudo nano /etc/exports
/srv/nfs    *(rw,sync,no_subtree_check)

其中*表示所有人都可以訪問,rw表示讀寫權限,sync表示同步寫入硬碟,no_subtree_check是速度比較快的選項。

重啟NFS服務:

sudo systemctl restart nfs-kernel-server

在客戶端電腦上安裝NFS客戶端

sudo apt install nfs-common

掛載共享目錄:

sudo mount server_ip:/srv/nfs /mnt

記得把 server_ip 換成你分享主機的 IP

方法2:使用Samba(適用於Windows和Linux系統)

安裝Samba:

在提供共享的電腦上,安裝Samba:

sudo apt install samba

配置Samba共享:

輯Samba配置文件/etc/samba/smb.conf,在文件末尾添加如下配置:

sudo nano /etc/samba/smb.conf
[ShareName]
path = /srv/samba
read only = no
browsable = yes

請記得替換 ShareName 為你的共享名,/srv/samba 為你想共享的目錄。

重啟Samba服務:

sudo systemctl restart smbd

在另一台Ubuntu上訪問Samba共享:

可以在文件管理器的地址欄輸入 smb://server_ip/ShareName 來訪問共享,其中 server_ip 是Samba服務器的IP地址,ShareName是你設置的共享名。

Windows 上則是用檔案總管,並且在文字框內輸入 \\server_ip\ShareName

no_subtree_check 參數說明

no_subtree_check 是 NFS(網絡檔案系統)配置中的一個參數,用於改善NFS服務的性能。這個參數的作用與含義如下:

  1. 子樹檢查(Subtree Checking): 在NFS中,子樹檢查是一個安全特性,用來確保客戶端訪問的檔案仍然是它最初打開時的那個檔案。這是通過檢查檔案所在的目錄結構來實現的。如果檔案在檔案系統中被移動或重命名,NFS會通過子樹檢查來識別這些改變。
  2. no_subtree_check 的作用: 啟用 no_subtree_check 參數會禁用這種子樹檢查。這意味著NFS服務器不會檢查檔案是否被移動或重命名。這樣做可以提高性能,因為減少了服務器的檢查負擔。在大多數情況下,這是安全的,特別是在檔案不太可能在訪問期間被移動或重命名的環境中。
  3. 應用場景: 在許多常規的NFS使用情況下,子樹檢查是不必要的,因為檔案的移動並不頻繁。在這些情況下,禁用子樹檢查可以提供更佳的性能表現,尤其是在處理大量的檔案請求時。

分享文件的安全性設定

要限制特定IP地址的主機才能连接NFS共享,您需要在NFS的配置文件 /etc/exports 中明确指定允许的IP地址。以下是具体步骤:

編輯/etc/exports檔案:

sudo nano /etc/exports

指定允許的IP地址:

/etc/exports檔案中,您可以為每個共享目錄指定允許訪問的IP地址,我們要做的事情是把前面的*號替換成主機的IP。例如,如果您想只允許IP地址為192.168.1.100的主機訪問名為/srv/nfs的共享目錄,您可以這樣寫

/srv/nfs 192.168.1.100(rw,sync,no_subtree_check)

這行配置表示僅有IP地址為192.168.1.100的主機可以讀寫(rw)訪問/srv/nfs目錄。

您可以精確控制哪些IP地址的主機被允許訪問NFS共享。如果需要允許多個特定的IP地址,只需在/etc/exports檔案中的相應行裡添加這些IP地址,每個地址用空格分開。例如:

/srv/nfs 192.168.1.100(rw,sync,no_subtree_check) 192.168.1.101(rw,sync,no_subtree_check)

重啟NFS服務:

sudo systemctl restart nfs-kernel-server

開機時自動建立 NFS 連接

可以將 NFS 掛載點添加到客戶端主機的 /etc/fstab 文件中。/etc/fstab 文件用於在系統啟動時自動掛載文件系統。以下是一般步驟:

編輯 /etc/fstab 文件:

sudo nano /etc/fstab

添加 NFS 掛載條目:

[NFS 伺服器 IP]:/[遠端共享目錄] [本地掛載點] nfs defaults 0 0

如果 NFS 伺服器的 IP 是 192.168.1.100,遠端共享目錄是 /exported/folder,本地掛載點是 /mnt/nfs,則添加:

192.168.1.100:/exported/folder /mnt/nfs nfs defaults 0 0

測試掛載: 為了檢查是否有語法錯誤,您可以手動掛載所有未掛載的 fstab 條目

sudo mount -a

其中在 /etc/fstab 文件中,每個掛載點的條目都包含一系列的字段,其中 defaults 0 0 是其中的兩個字段,意思如下

  1. defaults 這是掛載選項字段。defaults 代表一組預設的掛載選項。對於大多數文件系統,這包括了 rw(可讀寫)、suid(允許執行 suid 程序)、dev(解析字符和塊特殊裝置)、exec(允許執行二進制文件)、auto(允許自動掛載)、nouser(阻止普通用戶掛載文件系統)、和 async(進行異步 I/O)等選項。如果需要特定的選項,可以用逗號分隔,直接在這個位置列出。
  2. 第一個 0 這是 dump 字段。dump 是一個備份實用程序,用來決定文件系統是否需要被備份。如果這個值設置為 0,則 dump 將忽略這個文件系統。如果設置為 1 或更高的數字,它表示文件系統的備份頻率。
  3. 第二個 0 這是 fsck(文件系統檢查)的順序字段。這個數字決定了在啟動時檢查文件系統的順序。如果設為 0,系統啟動時將不會對這個文件系統進行 fsck 檢查。如果是根文件系統,這個值通常設為 1;其他文件系統則設為 2 或更高,或者保留為 0

總的來說,defaults 0 0 是一個常見的配置,

要將掛載好的硬碟卸載的話

要卸載已經掛載的硬碟,您可以使用 umount 命令

確定掛載點:

df -h

卸載硬碟:

例如,如果硬碟掛載在 /mnt/mydisk,則命令為:

sudo umount /mnt/mydisk

檢查卸載狀態:

可以再次使用 df -hmount 命令來確認硬碟已經被卸載。

解決權限無法讀寫的問題

兩台主機間有不同的帳號,A主機帳號usera,B主機帳號userb,要再b主機修改a主機的資源的話,你會遇到無法執行的問題

可以選擇兩種策略

1.使用群組權限

如果 userauserb 的 UID/GID 不同,您可以通過將它們都加入到同一個群組,並對該群組授予適當的權限來解決問題。

在 A 和 B 主機上創建相同的群組

sudo groupadd sharedgroup

userauserb 添加到該群組:

在 A 和 B 主機上分別執行:

sudo usermod -a -G sharedgroup usera
sudo usermod -a -G sharedgroup userb

更改共享目錄的群組權限:

在 A 主機上設置共享目錄的群組為 sharedgroup,並確保群組具有讀寫權限:

sudo chown usera:sharedgroup /path/to/shared/directory
sudo chmod 2770 /path/to/shared/directory

2. 使用 NFS 伺服器選項映射 UID/GID

可以在 NFS 伺服器的 /etc/exports 文件中使用 all_squash, anonuid, 和 anongid 選項來映射所有客戶端用戶到特定的 UID 和 GID。

編輯 /etc/exports 文件

在 A 主機(NFS 伺服器)上編輯此文件,為共享目錄添加以下選項:

/path/to/shared/directory B主機的IP(rw,sync,no_subtree_check,all_squash,anonuid=UID,anongid=GID)

其中,將 UIDGID 替換為在 A 主機上 usera 的 UID 和 GID。

UID 和GID的查詢方法如下

id usera

就會取得像是 uid=0(root) gid=0(root) groups=0(root)

重啟 NFS 服務:

sudo systemctl restart nfs-server

這樣配置後,所有從 B 主機存取 A 主機共享目錄的操作都將以指定的 UID 和 GID 來執行,從而繞過 UID/GID 不匹配的問題。


GCP 連接外部硬碟

先看配置 df -h ,在用 lsblk 找出要配置的硬碟,通常在 GCP 中新掛的第一顆硬碟代號會是 sdb

df -h
lsblk

如果是全新的硬碟要先格式化他

sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,discard /dev/sdb

格式化後,可以開始準備掛載目錄,以及提升權限和下指令掛載

sudo mkdir -p /mnt/data
sudo chmod a+w /mnt/data
sudo mount -o discard,defaults /dev/sdb /mnt/data

最後記得要設定每次開機自動掛載,先用 blkid 找出硬碟的 UUID ,記錄下來後再把他填到 /etc/fstab 中

sudo blkid /dev/sdb
sudo nano /etc/fstab

將設定檔寫入 fstab

UUID=1535732s45-a52a-4e22-a258-7bsedgaw3e41 /mnt/data ext4 discard,defaults 0 2

存檔完畢後,測試一下是否有成功

sudo mount -a

延伸閱讀

Contact Form 7 – WP PLUGINS – 紀錄登入者資訊

Contact Form 7 – WP PLUGINS – 紀錄登入者資訊

有需要想要在 WordPress 中紀錄聯絡表單是那一個登入者所寫的,這時候我採用的解決方案是,Contact Form 7 ,在裡面多加兩個欄位,並且用隱藏欄位來做記錄,其中隱藏欄位寫法可以看 https://contactform7.com/hidden-field/ ,可以帶入的參數,則是可以在 https://contactform7.com/setting-default-values-to-the-logged-in-user/ 這邊找的到

最後的完成品如下

[hidden login-name default:user_login]
[hidden user-email default:user_email]
Stable Diffusion 核心套件更新整理

Stable Diffusion 核心套件更新整理

Stable Diffusion 最近太火紅,是好處也是壞處,好處是更新的速度超快,也代表進步的超快,壞處是每次更新,都需要工程師介入居多,複雜的設定,難懂的語言(只有工程師能懂),都阻礙著更新的進步,這邊用白話文分享如何更新關鍵資源

torch 1.13.1 -> torch 2.0.0

當你跑 run.bat 的時候會出現以下訊息,告訴你應該要申請 torch 了,升級的方法是在執行 webui.bat 的時候,加入 –reinstall-torch,觸發程式去更新 torch

也可以在 lauch.py 中修改 COMMANDLINE_ARGS 加入 –reinstall-torch

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--reinstall-torch

call webui.bat

重新執行 run.bat 後就會看到開始更新了

更新 xformers

更新 xformers 與更新 torch 類似

我們一樣修改 COMMANDLINE_ARGS 加入 –reinstall-xformers ,然後重新執行 run.bat ,就會啟動更新程序

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--reinstall-xformers

call webui.bat

更新後的錯誤處理方法

若是更新後啟動失敗,通常是沒 Torch 無法使用 GPU ,那就要加入指令 COMMANDLINE_ARGS=–skip-torch-cuda-test

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--skip-torch-cuda-test

call webui.bat

AI-繪圖總整理-StableDiffusion – 雨 (rain.tips)

自製金佶清潔液

自製金佶清潔液

隨著春天的到來,家裡面的金佶果實累累,長的速度遠遠大於我們消耗的速度,連送人都來不及,所以說,有需要的人請洽談,為了有效利用金佶的價值,今天商量了言言來幫忙做金佶清潔液,製作清潔液的方法很多,也可以說萃取的方法很多,今天說的是比較麻煩但比較快速的「水煮」法。

1.取得金佶皮

將新鮮且洗過的金佶的肉、汁、皮分離

壓榨金佶汁

分離出來的金佶皮放到鍋子內

整鍋金佶皮

金佶籽蒐集起來,晚點拿去種在土裡

取出金佶籽

2.取得、調配精油

將水蓋過金佶的高度,並且開大火煮5分鐘,然後關成小火煮15分鐘,之後過濾去除渣渣,然後決定要清潔劑的用途,如果是要用在茶垢、咖啡垢、尿漬等地處理,請加醋(1:100),若是要用在洗碗、去油的話請加小蘇打粉(1:200),加強版就加入起泡劑,也不用去特別買,可以加家裡面原本就有的洗潔精。

  • 茶垢、咖啡垢、尿漬:醋 (˙1:100)
  • 洗碗、去油l:小蘇打粉(1:200)
  • 加強去油去污能力,加入起泡劑一大匙
小蘇打粉(1:200),1000cc水比50cc的小蘇打粉
水淹過佶子皮一些

3.保存清潔液

利用篩子以及漏斗,把煮好的汁水與皮分離出來,並存製玻璃容器中

玻璃容器存放金佶精油

要保存久一點,就放入酒精

後話

金佶籽我們就拿去泡水、之後種在土裡,皮就拿去推肥處理掉

參考資料

台灣之星-電話指定轉接功能設定 – 雨 (rain.tips)

WordPress 隱藏 Admin Menu, Top Bar, Plugins

WordPress 隱藏 Admin Menu, Top Bar, Plugins

如果你是需要提供一個完整 WordPress 後台給客戶的案子,非常建議用 Amin Tools 以及 Menu Editor 來製作客製化的 WordPress 後台,來避免客戶的誤觸以及無意義的問題,並且經過你的系統化整合,可以讓客戶部會迷失在 WordPress 後台的大海之中,會呈現專業且客製的感覺。

Admin Tools

Admin Tools 一共有五大功能

分別是通用、選單、外掛、最上層的選單、進階選項

Admin Tools – 通用

可以把最高權限的使用者隱藏,也可以隱藏這一個外掛

Admin Tools – Menu

用來隱藏後台選單使用

Admin Tools – 外掛

用來隱藏不需要的外掛

Admin Tools – Top Bar

Admin Tools – Advanced

用來隱藏更新以及各式通知

延伸閱讀