看板 Linux 關於我們 聯絡資訊
小弟對硬體不是很熟 目前看書看到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