FreeBSD:刪除 devfs 中的符號連結
背景
我一直在改造一個小型的家用 NAS。這台伺服器代表了我第一次“真正”涉足伺服器管理領域,它已經教會了我很多東西。最初,這個東西是在一個拇指驅動器上使用 FreeNAS 設置的,該驅動器在 raidz1 中配置了 3 個磁碟。從那以後,我決定將整個系統遷移到 FreeBSD 9.0 (STABLE) 以更好地控制系統以及簡單地學習如何“自己動手”。一切進展順利,作業系統已成功安裝和更新(再次拇指驅動器,rw,訪問時間和其他一些東西被禁用以防止快閃記憶體濫用)。
現在我正在設置我的磁碟儲存,再次使用raidz1。為此,我已將所有要持久保存的文件複製到外部儲存中。在探索各種 zfs 命令時,我發現 FreeNAS 安裝中的原始 zpool 仍然可見。我使用導入和升級池
# zpool import ZFS1 tank //Import the original zpool 'ZFS1', renaming it 'tank' # zpool upgrade tank //FreeNAS uses an older ZFS version, FreeBDS is v28 # zfs mount tank
並且能夠再次查看我的文件。肉汁。閒逛了一下,我決定還是要把舊水池吹走,重新開始。我發出
# zfs umount tank # zpool destroy tank
完成沒有錯誤。現在我希望用這些磁碟重新創建一個“乾淨的”raidz1。
題
在創建新的 raidz1 之前,我在 中進行了一些探索,
/dev
只是想看看我能學到什麼。我想檢查陣列中使用的磁碟,但我得到的輸出對我來說似乎很奇怪。更糟糕的是,Google搜尋並不能真正解釋發生了什麼。磁碟列表如下:# ls -l ad* lrwxr-xr-x 1 root wheel 4 Aug 12 20:50 ad2 -> ada2 lrwxr-xr-x 1 root wheel 4 Aug 12 20:50 ad4 -> ada0 lrwxr-xr-x 1 root wheel 4 Aug 12 20:50 ad6 -> ada1 crw-r----- 1 root operator 0, 96 Aug 12 20:50 ada0 crw-r----- 1 root operator 0, 98 Aug 12 20:50 ada1 crw-r----- 1 root operator 0, 100 Aug 12 20:50 ada2
我知道我在設置 raid 時在 FreeNAS 中創建了三個虛擬磁碟,這是我懷疑連結的來源。我對此的問題如下:
- 通過搜尋符號連結的工作原理,我了解到符號連結只是將一個項目連結到另一個項目的文件。如果是這種情況,為什麼不使用“l”屬性列出 ada* 設備,而使用另一個屬性(可能是塊設備)列出實際硬體設備?
- 這些連結是我認為沒有必要的先前設置的產物。它們可以被刪除嗎?如果是這樣,如何(有點害怕隨意刪除東西;請參閱參考資料部分的最後一個連結)?刪除
ad*
條目是否會隱式刪除ada*
節點,因為它們現在引用不存在的連結?還是我有這個倒退?- 哪些是實際的硬體設備?正如我在上一個問題中提到的,我認為
ad*
節點將是字元設備或類似的東西,ada*
節點將是連結文件。- 最後,我知道根據設置和個人偏好肯定會有一些差異,但是將我的 SATA 設備配置為簡單的 raidz1 的“可接受”方式是什麼?對於一個簡單的家庭 NAS,所有這些符號連結業務似乎都是多餘的。
對於這篇長篇文章我深表歉意,但我已經嘗試了很長時間來理解這一點。提前感謝您的時間和幫助。
參考
ada
設備是連接到較新的 SATA 埠的驅動器。有些人錯過了備忘錄,因此修改了 DevFS 以提供這些設備名稱的符號連結作為傳統ad
設備。但是,系統可能已經有一些較舊的 SATA 埠或 IDE 埠,因此它們將佔用較低的ad
設備編號(ad0、ad1 等)。所以映射的ada
設備得到更高的數字。注意:如果您還沒有意識到,
/dev
是一種不同類型的文件系統 ( devfs )。雖然它顯示了像符號連結這樣的簡單結構,但它們並不是您所想的真正的符號連結。 2. 你的前提是錯誤的,見#1。 3. 那些沒有說它們是符號連結的(通過l
你提到的)是設備驅動程序。它們有多“真實”,因為軟體也可以提供設備。 4. 我認為“最好”的方法是使用 GPT 分區,給它們起合理的名稱,並將這些命名的分區包含為 raidz 的 vdev。像下面這樣的東西會做到這一點:
gpart create -s GPT ada0 gpart create -s GPT ada1 gpart create -s GPT ada2 gpart add -t freebsd-zfs -l tank-disk0 ada0 gpart add -t freebsd-zfs -l tank-disk1 ada1 gpart add -t freebsd-zfs -l tank-disk2 ada2 zpool create tank raidz /dev/gpt/tank-disk0 /dev/gpt/tank-disk1 /dev/gpt/tank-disk2
否則,最好將磁碟直接傳遞給 ZFS。兩種配置都有支持者。如果你走這條路,我強烈建議你也設置
smartd
監控磁碟執行狀況。還配置periodic
為清理 zpool、監控 SMART 並向您發送定期報告(每週或任何您喜歡的)。附帶說明一下,FreeNAS 和其他 FreeBSD 派生項目使使用 FreeBSD 比簡單地深入核心作業系統要容易得多。該手冊將指導您完成絕大多數您想要設置的內容,但隨著時間的推移,您也會遇到一些問題。如果您在 Google 上搜尋“手冊”,則 FreeBSD 手冊是第 2 個連結;這很重要/受歡迎/好。
關於參考的另一條註釋。第一個是一個糟糕的例子,因為你不應該對網卡進行符號連結,你應該重命名它們(雖然不是文件系統類型重命名)。DevFS 確實會響應連結和取消連結請求,主要是您所期望的。第二個和第三個參考文獻看起來不錯。請記住,連結類型比符號連結多。