[問題] 檔案系統與mount觀念不懂

作者: scitamehtam (scitamehtam)   2021-12-27 08:58:34
小弟對硬體不是很熟

目前看書看到mount指令

mount是將檔案系統與目錄連結起來

但我很好奇的是

硬碟是否在開機之後就自動mount起來了呢?

會有此疑問主要是因為

目錄裡面本來就有 /dev了

然後書本每次講到掛載都類似用

/dev/sda 到一個自建目錄

例如 /data/xxx

/dev/* 本身不就是目錄一部分了嗎

幹嘛還要掛載到其他目錄呢?
作者: yaurtusn (擎天崗小牛)   2021-12-27 19:48:00
從最初的起點發想,操作員將硬碟給掛載到主機聯接器上.很早很早的時期的人工動作與沿用至今的擬人化電腦指令
作者: scitamehtam (scitamehtam)   2021-12-27 15:52:00
對啊,剛剛看了一下,除了 /dev/下的虛擬硬碟之外,還有一些像是cgroup, tmpfs, devpts...等等..
作者: bitlife (BIT一生)   2021-12-27 18:37:00
其實用個最簡單的講法,你把windows的掛載想成決定給哪個磁碟機編號(在D: ~ Z:中選一個),而linux沒有磁碟機編號這種東西,全部就是以/開始的單一顆樹,那麼相對於windows要選D:~Z:中的其中一個,在linux中你要決定某個目錄做為掛載上去的[位置]而那些/dev/xyz 就對應於windows你裝上硬碟或隨身碟後顯示的硬體裝置
作者: scitamehtam (scitamehtam)   2021-12-27 16:09:00
此目錄的資料在系統重啟後,會消失,且存取此目錄的速度較快有比較清楚了,感謝各位神人解釋
作者: yasamnoya (拎不拎不拎_吳拎)   2021-12-27 15:52:00
mount 實務上更大的意義是透過 high level 的 file system 去存取,否則直接從 /dev 底下只能讀到 raw data。你可以想想為什麼 image 明明就已經是檔案了卻還需要mount 過後才能用
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2021-12-27 15:41:00
然後關於這方面的話 其實打 mount 不加任何參數在清單裡其實可以看到還有很多目錄都是 mount 在不是硬碟的目錄上^^^^裝置才對 一個打錯
作者: scitamehtam (scitamehtam)   2021-12-27 15:40:00
感謝說明
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2021-12-27 15:35:00
是啊但是重點是說其實 mount 這個動作只是代表說
作者: scitamehtam (scitamehtam)   2021-12-27 15:35:00
只有這個目錄是這樣嗎? 其他系統中的目錄應該不是
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2021-12-27 15:34:00
然後他的驅動就是決定如何操作 kernel 裡面的狀態這樣
作者: cancelpc (阿吉)   2021-12-27 09:01:00
/dev/只是單純找到的硬體如硬碟並不是找到就可以用得切分割區等,格式化成可管理空間透過mount掛載,Windows 也是阿
作者: Bencrie   2021-12-27 09:26:00
/dev 裡面放一些 device nodes,雖然 rootfs 裡面會有東西。不過一般還是掛 devtmpfs 還有 devptsrootfs 是在 initramfs 期間掛起來,其他 fstab 內的由init 幫你掛載
作者: hizuki (ayaka)   2021-12-27 10:01:00
不可以這樣理解,device node不是mount上去的,/dev是可以被mount上去,或者靜態管理(Android)。/dev下理解為kernel和userspace配合表現設備狀況為佳
作者: scitamehtam (scitamehtam)   2021-12-27 15:34:00
但目錄與裝置不是要透過mount連結嗎? 還是說其實/dev/裡面已經被系統自動掛載到硬碟了呢
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2021-12-27 16:05:00
這個目錄的操作會由 tmpfs 這個驅動處理而這個驅動的操作是對記憶體操作 代表這邊的資料關機會消失
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2021-12-27 15:18:00
掛載相當於說把這個目錄底下的檔案系統操作交給對應的裝置而 /dev/ 底下的東西是對應到裝置 (eg. /dev/sda1)當你 /dev/sda1 掛到 /mnt/ 底下時是告訴系統說把這個目錄底下的讀寫交給 /dev/sda1然後像 ext4 檔案系統驅動就是決定說要怎麼在這裝置上讀寫/dev/ 其實也是目錄 只是他後面對應的是一個虛擬裝置更準確來說那個虛擬裝置其實是 kernel
作者: yasamnoya (拎不拎不拎_吳拎)   2021-12-27 15:53:00
以上說的是 mount 儲存設備的情況
作者: LinBuoRen (林博仁)   2021-12-27 14:04:00
掛載是檔案系統的概念,與硬體裝置的概念要區分開來在 Unix 檔案系統中大部分的東西都會用檔案來呈現更正:檔案系統 -> 作業系統
作者: roccqqck (ccqq)   2021-12-27 12:17:00
寫到/etc/fstab就會開機自動掛
作者: giraffe4527 (鹿)   2021-12-27 11:32:00
那可以cd進/dev下ls -al看,sda那些設備是block檔根本不是目錄你怎麼可能直接讀,dev底下的設備只能用parted dd fsck這類針對block的去寫
作者: tomsawyer (安安)   2021-12-28 16:12:00
windows實際上也是 \\.\physicaldrive\c\下去讀取吧沒記錯的話
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2021-12-28 22:34:00
是啊 只是他不會把這個路徑直接放在檔案系統裡
作者: Hurricaneger (褲襪脫落大尉)   2021-12-28 22:50:00
把/dev/sda想成A磁碟機,要把它拿來啟用就要去硬碟管理工具裡面看看它被讀到沒?有找到他的話就可以按右鍵新增磁碟區,選個代號A,再快速格式化,就等於在Windows mount好加掛開機可讀寫了。跟Linux上mount一個硬碟幾乎一模一樣,一開始記得這個就好,之後就跟捷徑一樣隨便mount一個舒服的資料夾就可以了。
作者: bitlife (BIT一生)   2021-12-29 05:43:00
windows那個是相容於c語言,瀏覽器的路徑表示法,雖然表示成單一樹根的型式,但根路徑變成\\,然後必須得有磁碟機編號A-Z(拿掉冒號),等於只是把原先分立的A:-Z:的樹強行變成子樹,實質上還是有A:-Z:的存在,而且A,B專門給軟碟,在較早版本中,C還只能是物理上第一個(開機)硬碟
作者: abcdefghi   2020-01-03 13:01:00
linux檔案有分成一般檔案和特殊檔案,特殊檔案有majornumber和minor number,透過這一組數字,可以讓程式和硬碟的驅動程式互動,所以sda,sdb或是其他在/dev下的檔案代表哪個裝置,可以看這一組數字,再來就是每一顆硬碟上的檔案系統都是樹狀的,所以你可以用mount的方式把一顆樹掛到原有的小樹上,慢慢成一顆大樹,也就是完整linux目錄結構
作者: sppmg (sppmg)   2020-01-05 08:55:00
雖然上面神人很多了,但我還是說一下。*nix 系統中將任何東西都視為檔案(近幾年有沒有改變我不確定),所以一開機就會辨認到硬碟(區塊裝置),並被給予 /dev 路徑。mount 就像是找人來做翻譯,讓使用者可以以另一種方式皆由掛載目錄來做操作。mount 不一定對真實硬碟,像是iso, 壓縮檔, 遠端儲存空間, 多層次疊加空間(unionfs, overlayfs) 都會用到。
作者: roccqqck (ccqq)   2020-01-10 13:15:00
一開始遇到lvm, pv vg lv才是真的搞超亂
作者: chang0206 (Eric Chang)   2020-01-12 14:01:00
推樓上 現在面對LVM也還是很容易就亂了
作者: yaurtusn (擎天崗小牛)   2020-02-13 11:54:00
敝某因時間有限 因清理掉一部PC主機 暫時沒空使用linux

Links booklink

Contact Us: admin [ a t ] ucptt.com