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

看板Linux作者 (scitamehtam)時間3年前 (2021/12/27 08:58), 3年前編輯推噓6(6068)
留言74則, 13人參與, 3年前最新討論串1/1
小弟對硬體不是很熟 目前看書看到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

12/27 09:01, 3年前 , 1F
/dev/只是單純找到的硬體
12/27 09:01, 1F

12/27 09:01, 3年前 , 2F
如硬碟並不是找到就可以用
12/27 09:01, 2F

12/27 09:02, 3年前 , 3F
得切分割區等,格式化成可管理空間
12/27 09:02, 3F

12/27 09:03, 3年前 , 4F
透過mount掛載,Windows 也是阿
12/27 09:03, 4F

12/27 09:26, 3年前 , 5F
/dev 裡面放一些 device nodes,雖然 rootfs 裡面會有
12/27 09:26, 5F

12/27 09:27, 3年前 , 6F
東西。不過一般還是掛 devtmpfs 還有 devpts
12/27 09:27, 6F

12/27 09:31, 3年前 , 7F
rootfs 是在 initramfs 期間掛起來,其他 fstab 內的由
12/27 09:31, 7F

12/27 09:32, 3年前 , 8F
init 幫你掛載
12/27 09:32, 8F
我可以這樣理解嗎? 開機後,系統把我的硬碟先掛載到 /dev/sd* 若開機後我下指令 mount /dev/sda /mypath/data 意思是說 我將已經掛載於 /dev/sda的檔案系統或者硬體(硬碟) 重新掛載到自訂目錄 /mypath/data 嗎? 之後我要操作硬碟就直接操作 /mypath/data就好 ※ 編輯: scitamehtam (101.12.20.59 臺灣), 12/27/2021 09:45:40

12/27 10:01, 3年前 , 9F
不可以這樣理解,device node不是mount上去的,/dev是可以
12/27 10:01, 9F

12/27 10:02, 3年前 , 10F
被mount上去,或者靜態管理(Android)。/dev下理解為kernel
12/27 10:02, 10F

12/27 10:03, 3年前 , 11F
和userspace配合表現設備狀況為佳
12/27 10:03, 11F

12/27 11:32, 3年前 , 12F
那可以cd進/dev下ls -al看,sda那些設備是block檔
12/27 11:32, 12F

12/27 11:32, 3年前 , 13F
根本不是目錄你怎麼可能直接讀,dev底下的設備只能
12/27 11:32, 13F

12/27 11:32, 3年前 , 14F
用parted dd fsck這類針對block的去寫
12/27 11:32, 14F

12/27 12:17, 3年前 , 15F
寫到/etc/fstab就會開機自動掛
12/27 12:17, 15F

12/27 14:04, 3年前 , 16F
掛載是檔案系統的概念,與硬體裝置的概念要區分開來
12/27 14:04, 16F

12/27 14:05, 3年前 , 17F
在 Unix 檔案系統中大部分的東西都會用檔案來呈現
12/27 14:05, 17F

12/27 14:06, 3年前 , 18F
更正:檔案系統 -> 作業系統
12/27 14:06, 18F

12/27 15:18, 3年前 , 19F
掛載相當於說把這個目錄底下的檔案系統操作交給對應的裝置
12/27 15:18, 19F

12/27 15:19, 3年前 , 20F
而 /dev/ 底下的東西是對應到裝置 (eg. /dev/sda1)
12/27 15:19, 20F

12/27 15:20, 3年前 , 21F
當你 /dev/sda1 掛到 /mnt/ 底下時
12/27 15:20, 21F

12/27 15:21, 3年前 , 22F
是告訴系統說把這個目錄底下的讀寫交給 /dev/sda1
12/27 15:21, 22F

12/27 15:21, 3年前 , 23F
然後像 ext4 檔案系統驅動就是決定說要怎麼在這裝置上讀寫
12/27 15:21, 23F
綜合以上,我可以說 /dev/sda 等等其實不算是目錄 而是代表某個硬體儲存裝置 真正要能操作他們,需要透過 mount 指令 讓他對應到系統下面的一個目錄,如:~/ 之類的嗎? 只有 /dev/* 這個例外,其他都算是目錄嗎 例如: /, /etc, /var... ※ 編輯: scitamehtam (101.12.48.201 臺灣), 12/27/2021 15:27:46

12/27 15:29, 3年前 , 24F
/dev/ 其實也是目錄 只是他後面對應的是一個虛擬裝置
12/27 15:29, 24F

12/27 15:33, 3年前 , 25F
更準確來說那個虛擬裝置其實是 kernel
12/27 15:33, 25F

12/27 15:34, 3年前 , 26F
但目錄與裝置不是要透過mount連結嗎? 還是說其實
12/27 15:34, 26F

12/27 15:34, 3年前 , 27F
/dev/裡面已經被系統自動掛載到硬碟了呢
12/27 15:34, 27F

12/27 15:34, 3年前 , 28F
然後他的驅動就是決定如何操作 kernel 裡面的狀態這樣
12/27 15:34, 28F

12/27 15:35, 3年前 , 29F
只有這個目錄是這樣嗎? 其他系統中的目錄應該不是
12/27 15:35, 29F

12/27 15:35, 3年前 , 30F
是啊但是重點是說其實 mount 這個動作只是代表說
12/27 15:35, 30F

12/27 15:35, 3年前 , 31F
12/27 15:35, 31F

12/27 15:35, 3年前 , 32F
這個目錄下的操作會轉交到其他系統物件 並不一定是硬碟
12/27 15:35, 32F

12/27 15:36, 3年前 , 33F
像 /dev/ 在啟動時的確是被自動掛載上前述的虛擬裝置
12/27 15:36, 33F

12/27 15:40, 3年前 , 34F
感謝說明
12/27 15:40, 34F

12/27 15:41, 3年前 , 35F
然後關於這方面的話 其實打 mount 不加任何參數
12/27 15:41, 35F

12/27 15:42, 3年前 , 36F
在清單裡其實可以看到還有很多目錄都是 mount 在不是硬碟的
12/27 15:42, 36F

12/27 15:42, 3年前 , 37F
目錄上
12/27 15:42, 37F

12/27 15:44, 3年前 , 38F
^^^^裝置才對 一個打錯
12/27 15:44, 38F

12/27 15:52, 3年前 , 39F
mount 實務上更大的意義是透過 high level 的 file sys
12/27 15:52, 39F

12/27 15:52, 3年前 , 40F
tem 去存取,否則直接從 /dev 底下只能讀到 raw data
12/27 15:52, 40F

12/27 15:52, 3年前 , 41F
。你可以想想為什麼 image 明明就已經是檔案了卻還需要
12/27 15:52, 41F

12/27 15:52, 3年前 , 42F
mount 過後才能用
12/27 15:52, 42F

12/27 15:52, 3年前 , 43F
對啊,剛剛看了一下,除了 /dev/下的虛擬硬碟之外
12/27 15:52, 43F

12/27 15:52, 3年前 , 44F
,還有一些像是cgroup, tmpfs, devpts...等等..
12/27 15:52, 44F

12/27 15:53, 3年前 , 45F
以上說的是 mount 儲存設備的情況
12/27 15:53, 45F
剛剛查了一下 tmpfs 好像是,資料主要是短暫的 系統重起就會消失,類似ramdisk概念 又指令 mount 出現 tmpfs on /dev/shm/ 表示此目錄的資料具有 tmpfs的特性意思嗎 ※ 編輯: scitamehtam (101.12.48.201 臺灣), 12/27/2021 16:03:54

12/27 16:05, 3年前 , 46F
這個目錄的操作會由 tmpfs 這個驅動處理
12/27 16:05, 46F

12/27 16:06, 3年前 , 47F
而這個驅動的操作是對記憶體操作 代表這邊的資料關機會消失
12/27 16:06, 47F

12/27 16:09, 3年前 , 48F
此目錄的資料在系統重啟後,會消失,且存取此目錄
12/27 16:09, 48F

12/27 16:09, 3年前 , 49F
的速度較快
12/27 16:09, 49F

12/27 16:09, 3年前 , 50F
有比較清楚了,感謝各位神人解釋
12/27 16:09, 50F

12/27 18:37, 3年前 , 51F
其實用個最簡單的講法,你把windows的掛載想成決定給哪個
12/27 18:37, 51F

12/27 18:37, 3年前 , 52F
磁碟機編號(在D: ~ Z:中選一個),而linux沒有磁碟機編號這
12/27 18:37, 52F

12/27 18:38, 3年前 , 53F
種東西,全部就是以/開始的單一顆樹,那麼相對於windows要
12/27 18:38, 53F

12/27 18:39, 3年前 , 54F
選D:~Z:中的其中一個,在linux中你要決定某個目錄做為掛載
12/27 18:39, 54F

12/27 18:39, 3年前 , 55F
上去的[位置]
12/27 18:39, 55F

12/27 18:39, 3年前 , 56F
而那些/dev/xyz 就對應於windows你裝上硬碟或隨身碟後顯
12/27 18:39, 56F

12/27 18:40, 3年前 , 57F
示的硬體裝置
12/27 18:40, 57F

12/27 19:48, 3年前 , 58F
從最初的起點發想,操作員將硬碟給掛載到主機聯接器上.
12/27 19:48, 58F

12/27 19:49, 3年前 , 59F
很早很早的時期的人工動作與沿用至今的擬人化電腦指令
12/27 19:49, 59F

12/28 16:12, 3年前 , 60F
windows實際上也是 \\.\physicaldrive\c\下去讀取吧
12/28 16:12, 60F

12/28 16:12, 3年前 , 61F
沒記錯的話
12/28 16:12, 61F

12/28 22:34, 3年前 , 62F
是啊 只是他不會把這個路徑直接放在檔案系統裡
12/28 22:34, 62F

12/28 22:50, 3年前 , 63F
把/dev/sda想成A磁碟機,要把它拿來啟用就要去硬碟
12/28 22:50, 63F

12/28 22:50, 3年前 , 64F
管理工具裡面看看它被讀到沒?有找到他的話就可以
12/28 22:50, 64F

12/28 22:50, 3年前 , 65F
按右鍵新增磁碟區,選個代號A,再快速格式化,就等
12/28 22:50, 65F

12/28 22:50, 3年前 , 66F
於在Windows mount好加掛開機可讀寫了。
12/28 22:50, 66F

12/28 22:52, 3年前 , 67F
跟Linux上mount一個硬碟幾乎一模一樣,一開始記得
12/28 22:52, 67F

12/28 22:52, 3年前 , 68F
這個就好,之後就跟捷徑一樣隨便mount一個舒服的資
12/28 22:52, 68F

12/28 22:52, 3年前 , 69F
料夾就可以了。
12/28 22:52, 69F

12/29 05:43, 3年前 , 70F
windows那個是相容於c語言,瀏覽器的路徑表示法,雖然表示
12/29 05:43, 70F

12/29 05:44, 3年前 , 71F
成單一樹根的型式,但根路徑變成\\,然後必須得有磁碟機編
12/29 05:44, 71F

12/29 05:45, 3年前 , 72F
號A-Z(拿掉冒號),等於只是把原先分立的A:-Z:的樹強行變成
12/29 05:45, 72F

12/29 05:46, 3年前 , 73F
子樹,實質上還是有A:-Z:的存在,而且A,B專門給軟碟,在較早
12/29 05:46, 73F

12/29 05:47, 3年前 , 74F
版本中,C還只能是物理上第一個(開機)硬碟
12/29 05:47, 74F
文章代碼(AID): #1XoG-yzU (Linux)
文章代碼(AID): #1XoG-yzU (Linux)