作者scitamehtam (scitamehtam)
看板Linux
標題[問題] 檔案系統與mount觀念不懂
時間Mon Dec 27 08:58:34 2021
小弟對硬體不是很熟
目前看書看到mount指令
mount是將檔案系統與目錄連結起來
但我很好奇的是
硬碟是否在開機之後就自動mount起來了呢?
會有此疑問主要是因為
目錄裡面本來就有 /dev了
然後書本每次講到掛載都類似用
/dev/sda 到一個自建目錄
例如 /data/xxx
/dev/* 本身不就是目錄一部分了嗎
幹嘛還要掛載到其他目錄呢?
----
Sent from
BePTT on my iPhone 12
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.20.59 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1640566716.A.F5E.html
推 cancelpc: /dev/只是單純找到的硬體12/27 09:01
→ cancelpc: 如硬碟並不是找到就可以用12/27 09:01
→ cancelpc: 得切分割區等,格式化成可管理空間12/27 09:02
→ cancelpc: 透過mount掛載,Windows 也是阿12/27 09:03
推 Bencrie: /dev 裡面放一些 device nodes,雖然 rootfs 裡面會有12/27 09:26
→ Bencrie: 東西。不過一般還是掛 devtmpfs 還有 devpts12/27 09:27
推 Bencrie: rootfs 是在 initramfs 期間掛起來,其他 fstab 內的由12/27 09:31
→ Bencrie: init 幫你掛載12/27 09:32
我可以這樣理解嗎?
開機後,系統把我的硬碟先掛載到 /dev/sd*
若開機後我下指令
mount /dev/sda /mypath/data
意思是說
我將已經掛載於 /dev/sda的檔案系統或者硬體(硬碟)
重新掛載到自訂目錄 /mypath/data 嗎?
之後我要操作硬碟就直接操作
/mypath/data就好
※ 編輯: scitamehtam (101.12.20.59 臺灣), 12/27/2021 09:45:40
→ hizuki: 不可以這樣理解,device node不是mount上去的,/dev是可以12/27 10:01
→ hizuki: 被mount上去,或者靜態管理(Android)。/dev下理解為kernel12/27 10:02
→ hizuki: 和userspace配合表現設備狀況為佳12/27 10:03
→ giraffe4527: 那可以cd進/dev下ls -al看,sda那些設備是block檔12/27 11:32
→ giraffe4527: 根本不是目錄你怎麼可能直接讀,dev底下的設備只能12/27 11:32
→ giraffe4527: 用parted dd fsck這類針對block的去寫12/27 11:32
推 roccqqck: 寫到/etc/fstab就會開機自動掛12/27 12:17
→ LinBuoRen: 掛載是檔案系統的概念,與硬體裝置的概念要區分開來12/27 14:04
→ LinBuoRen: 在 Unix 檔案系統中大部分的東西都會用檔案來呈現12/27 14:05
→ LinBuoRen: 更正:檔案系統 -> 作業系統12/27 14:06
→ CP64: 掛載相當於說把這個目錄底下的檔案系統操作交給對應的裝置12/27 15:18
→ CP64: 而 /dev/ 底下的東西是對應到裝置 (eg. /dev/sda1)12/27 15:19
→ CP64: 當你 /dev/sda1 掛到 /mnt/ 底下時12/27 15:20
→ CP64: 是告訴系統說把這個目錄底下的讀寫交給 /dev/sda112/27 15:21
→ CP64: 然後像 ext4 檔案系統驅動就是決定說要怎麼在這裝置上讀寫12/27 15:21
綜合以上,我可以說
/dev/sda 等等其實不算是目錄
而是代表某個硬體儲存裝置
真正要能操作他們,需要透過 mount 指令
讓他對應到系統下面的一個目錄,如:~/
之類的嗎? 只有 /dev/* 這個例外,其他都算是目錄嗎
例如: /, /etc, /var...
※ 編輯: scitamehtam (101.12.48.201 臺灣), 12/27/2021 15:27:46
→ CP64: /dev/ 其實也是目錄 只是他後面對應的是一個虛擬裝置12/27 15:29
→ CP64: 更準確來說那個虛擬裝置其實是 kernel12/27 15:33
→ scitamehtam: 但目錄與裝置不是要透過mount連結嗎? 還是說其實12/27 15:34
→ scitamehtam: /dev/裡面已經被系統自動掛載到硬碟了呢12/27 15:34
→ CP64: 然後他的驅動就是決定如何操作 kernel 裡面的狀態這樣12/27 15:34
→ scitamehtam: 只有這個目錄是這樣嗎? 其他系統中的目錄應該不是12/27 15:35
→ CP64: 是啊但是重點是說其實 mount 這個動作只是代表說12/27 15:35
→ scitamehtam: ?12/27 15:35
→ CP64: 這個目錄下的操作會轉交到其他系統物件 並不一定是硬碟12/27 15:35
→ CP64: 像 /dev/ 在啟動時的確是被自動掛載上前述的虛擬裝置12/27 15:36
→ scitamehtam: 感謝說明12/27 15:40
→ CP64: 然後關於這方面的話 其實打 mount 不加任何參數12/27 15:41
→ CP64: 在清單裡其實可以看到還有很多目錄都是 mount 在不是硬碟的12/27 15:42
→ CP64: 目錄上12/27 15:42
→ CP64: ^^^^裝置才對 一個打錯12/27 15:44
推 yasamnoya: mount 實務上更大的意義是透過 high level 的 file sys12/27 15:52
→ yasamnoya: tem 去存取,否則直接從 /dev 底下只能讀到 raw data12/27 15:52
→ yasamnoya: 。你可以想想為什麼 image 明明就已經是檔案了卻還需要12/27 15:52
→ yasamnoya: mount 過後才能用12/27 15:52
→ scitamehtam: 對啊,剛剛看了一下,除了 /dev/下的虛擬硬碟之外12/27 15:52
→ scitamehtam: ,還有一些像是cgroup, tmpfs, devpts...等等..12/27 15:52
→ yasamnoya: 以上說的是 mount 儲存設備的情況12/27 15:53
剛剛查了一下 tmpfs 好像是,資料主要是短暫的
系統重起就會消失,類似ramdisk概念
又指令 mount
出現
tmpfs on /dev/shm/
表示此目錄的資料具有 tmpfs的特性意思嗎
※ 編輯: scitamehtam (101.12.48.201 臺灣), 12/27/2021 16:03:54
→ CP64: 這個目錄的操作會由 tmpfs 這個驅動處理 12/27 16:05
→ CP64: 而這個驅動的操作是對記憶體操作 代表這邊的資料關機會消失 12/27 16:06
→ scitamehtam: 此目錄的資料在系統重啟後,會消失,且存取此目錄 12/27 16:09
→ scitamehtam: 的速度較快 12/27 16:09
→ scitamehtam: 有比較清楚了,感謝各位神人解釋 12/27 16:09
→ bitlife: 其實用個最簡單的講法,你把windows的掛載想成決定給哪個 12/27 18:37
→ bitlife: 磁碟機編號(在D: ~ Z:中選一個),而linux沒有磁碟機編號這 12/27 18:37
→ bitlife: 種東西,全部就是以/開始的單一顆樹,那麼相對於windows要 12/27 18:38
→ bitlife: 選D:~Z:中的其中一個,在linux中你要決定某個目錄做為掛載 12/27 18:39
→ bitlife: 上去的[位置] 12/27 18:39
→ bitlife: 而那些/dev/xyz 就對應於windows你裝上硬碟或隨身碟後顯 12/27 18:39
→ bitlife: 示的硬體裝置 12/27 18:40
→ yaurtusn: 從最初的起點發想,操作員將硬碟給掛載到主機聯接器上. 12/27 19:48
→ yaurtusn: 很早很早的時期的人工動作與沿用至今的擬人化電腦指令 12/27 19:49
→ tomsawyer: windows實際上也是 \\.\physicaldrive\c\下去讀取吧 12/28 16:12
→ tomsawyer: 沒記錯的話 12/28 16:12
→ CP64: 是啊 只是他不會把這個路徑直接放在檔案系統裡 12/28 22:34
推 Hurricaneger: 把/dev/sda想成A磁碟機,要把它拿來啟用就要去硬碟 12/28 22:50
→ Hurricaneger: 管理工具裡面看看它被讀到沒?有找到他的話就可以 12/28 22:50
→ Hurricaneger: 按右鍵新增磁碟區,選個代號A,再快速格式化,就等 12/28 22:50
→ Hurricaneger: 於在Windows mount好加掛開機可讀寫了。 12/28 22:50
→ Hurricaneger: 跟Linux上mount一個硬碟幾乎一模一樣,一開始記得 12/28 22:52
→ Hurricaneger: 這個就好,之後就跟捷徑一樣隨便mount一個舒服的資 12/28 22:52
→ Hurricaneger: 料夾就可以了。 12/28 22:52
→ bitlife: windows那個是相容於c語言,瀏覽器的路徑表示法,雖然表示 12/29 05:43
→ bitlife: 成單一樹根的型式,但根路徑變成\\,然後必須得有磁碟機編 12/29 05:44
→ bitlife: 號A-Z(拿掉冒號),等於只是把原先分立的A:-Z:的樹強行變成 12/29 05:45
→ bitlife: 子樹,實質上還是有A:-Z:的存在,而且A,B專門給軟碟,在較早 12/29 05:46
→ bitlife: 版本中,C還只能是物理上第一個(開機)硬碟 12/29 05:47
推 abcdefghi: linux檔案有分成一般檔案和特殊檔案,特殊檔案有major 01/03 13:01
→ abcdefghi: number和minor number,透過這一組數字,可以讓程式和 01/03 13:02
→ abcdefghi: 硬碟的驅動程式互動,所以sda,sdb或是其他在/dev下的檔 01/03 13:05
→ abcdefghi: 案代表哪個裝置,可以看這一組數字,再來就是每一顆硬 01/03 13:06
→ abcdefghi: 碟上的檔案系統都是樹狀的,所以你可以用mount的方式把 01/03 13:07
→ abcdefghi: 一顆樹掛到原有的小樹上,慢慢成一顆大樹,也就是完整 01/03 13:09
→ abcdefghi: linux目錄結構 01/03 13:09
推 sppmg: 雖然上面神人很多了,但我還是說一下。*nix 系統中將任何東 01/05 08:55
→ sppmg: 西都視為檔案(近幾年有沒有改變我不確定),所以一開機就 01/05 08:55
→ sppmg: 會辨認到硬碟(區塊裝置),並被給予 /dev 路徑。mount 就 01/05 08:55
→ sppmg: 像是找人來做翻譯,讓使用者可以以另一種方式皆由掛載目錄 01/05 08:55
→ sppmg: 來做操作。mount 不一定對真實硬碟,像是iso, 壓縮檔, 遠端 01/05 08:55
→ sppmg: 儲存空間, 多層次疊加空間(unionfs, overlayfs) 都會用到。 01/05 08:55
推 roccqqck: 一開始遇到lvm, pv vg lv才是真的搞超亂 01/10 13:15
→ chang0206: 推樓上 現在面對LVM也還是很容易就亂了 01/12 14:01
→ yaurtusn: 敝某因時間有限 因清理掉一部PC主機 暫時沒空使用linux 02/13 11:54