1. 程式人生 > >LINUX 檔案系統根目錄 掛載點間的區別與聯絡

LINUX 檔案系統根目錄 掛載點間的區別與聯絡

一 、Linux檔案結構
  檔案結構是檔案存放在磁碟等存貯裝置上的組織方法。主要體現在對檔案和目錄的組織上。
  目錄提供了管理檔案的一個方便而有效的途徑。
  Linux使用標準的目錄結構,在安裝的時候,安裝程式就已經為使用者建立了檔案系統和完整而固定的目錄組成形式,並指定了每個目錄的作用和其中的檔案型別。
                      /根目錄
                              ┃
┏━━┳━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━┓
┃   ┃      ┃     ┃     ┃     ┃      ┃     ┃     ┃
bin  home    dev     etc     lib     sbin    tmp      usr    var
                      ┃                               ┃
                  ┏━┻━┓     ┏━━┳━━┳━━┳━┻━┳━━┓
                  ┃      ┃    ┃   ┃    ┃    ┃     ┃    ┃
                 rc.d   cron.d X11R6  src   lib   local    man  bin
                  ┃                             
┏━━━┳━━┳━┻━┳━━━┓       
┃      ┃    ┃      ┃      ┃
init.d rc0.d  rc1.d  rc2.d …… linux bin lib src
  Linux採用的是樹型結構。最上層是根目錄,其他的所有目錄都是從根目錄出發而生成的。微軟的DOS和windows也是採用樹型結構,但是在DOS和 windows中這樣的樹型結構的根是磁碟分割槽的碟符,有幾個分割槽就有幾個樹型結構,他們之間的關係是並列的。但是在linux中,無論作業系統管理幾個磁碟分割槽,這樣的目錄樹只有一個。從結構上講,各個磁碟分割槽上的樹型目錄不一定是並列的。


  如果這樣講不好理解的話,我來舉個例子:
有一塊硬碟,分成了4個分割槽,分別是/;/boot;/usr和windows下的fat
  對於/和/boot或者/和/usr,它們是從屬關係;對於/boot和/usr,它們是並列關係。

  如果我把windows下的fat分割槽掛載到/mnt/winc下,(掛載??哦,別急,呵呵,一會就講,一會就講。)那麼對於/mnt/winc和/usr或/mnt/winc和/boot來說,它們是從屬於目錄樹上沒有任何關係的兩個分支。
  因為linux是一個多使用者系統,制定一個固定的目錄規劃有助於對系統檔案和不同的使用者檔案進行統一管理。但就是這一點讓很多從windows轉到linux的初學者感到頭疼。下面列出了linux下一些主要目錄的功用。
  /bin 二進位制可執行命令
  /dev 裝置特殊檔案
  /etc 系統管理和配置檔案
  /etc/rc.d 啟動的配置檔案和指令碼
  /home 使用者主目錄的基點,比如使用者user的主目錄就是/home/user,可以用~user表示
  /lib 標準程式設計庫,又叫動態連結共享庫,作用類似windows裡的.dll檔案
  /sbin 系統管理命令,這裡存放的是系統管理員使用的管理程式
  /tmp 公用的臨時檔案儲存點
  /root 系統管理員的主目錄(呵呵,特權階級)
  /mnt 系統提供這個目錄是讓使用者臨時掛載其他的檔案系統。
  /lost+found 這個目錄平時是空的,系統非正常關機而留下“無家可歸”的檔案(windows下叫什麼.chk)就在這裡
  /proc 虛擬的目錄,是系統記憶體的對映。可直接訪問這個目錄來獲取系統信  息。
  /var 某些大檔案的溢位區,比方說各種服務的日誌檔案
  /usr 最龐大的目錄,要用到的應用程式和檔案幾乎都在這個目錄。其中包  含:
  /usr/X11R6 存放X window的目錄
  /usr/bin 眾多的應用程式
  /usr/sbin 超級使用者的一些管理程式
  /usr/doc linux文件
  /usr/include linux下開發和編譯應用程式所需要的標頭檔案
  /usr/lib 常用的動態連結庫和軟體包的配置檔案
  /usr/man 幫助文件
  /usr/src 原始碼,linux核心的原始碼就放在/usr/src/linux裡
  /usr/local/bin 本地增加的命令
  /usr/local/lib 本地增加的庫
  二 、linux檔案系統

檔案系統指檔案存在的物理空間,linux系統中每個分割槽都是一個檔案系統,都有自己的目錄層次結構。linux會將這些分屬不同分割槽的、單獨的檔案系統按一定的方式形成一個系統的總的目錄層次結構。一個作業系統的執行離不開對檔案的操作,因此必然要擁有並維護自己的檔案系統。
  Llinux檔案系統使用索引節點來記錄檔案資訊,作用像windows的檔案分配表。
  索引節點是一個結構,它包含了一個檔案的長度、建立及修改時間、許可權、所屬關係、磁碟中的位置等資訊。一個檔案系統維護了一個索引節點的陣列,每個檔案或目錄都與索引節點陣列中的唯一一個元素對應。系統給每個索引節點分配了一個號碼,也就是該節點在陣列中的索引號,稱為索引節點號。
linux檔案系統將檔案索引節點號和檔名同時儲存在目錄中。所以,目錄只是將檔案的名稱和它的索引節點號結合在一起的一張表,目錄中每一對檔名稱和索引節點號稱為一個連線。

  對於一個檔案來說有唯一的索引節點號與之對應,對於一個索引節點號,卻可以有多個檔名與之對應。因此,在磁碟上的同一個檔案可以通過不同的路徑去訪問它。
  可以用ln命令對一個已經存在的檔案再建立一個新的連線,而不復制檔案的內容。連線有軟連線和硬連線之分,軟連線又叫符號連線。它們各自的特點是:
  硬連線:原檔名和連線檔名都指向相同的實體地址。
目錄不能有硬連線;硬連線不能跨越檔案系統(不能跨越不同的分割槽)
檔案在磁碟中只有一個拷貝,節省硬碟空間;

  由於刪除檔案要在同一個索引節點屬於唯一的連線時才能成功,因此可以防止不必要的誤刪除。
  符號連線:用ln -s命令建立檔案的符號連線符號連線是linux特殊檔案的一種,作為一個檔案,它的資料是它所連線的檔案的路徑名。類似windows下的快捷方式。

  可以刪除原有的檔案而儲存連線檔案,沒有防止誤刪除功能。
  這一段的的內容過於抽象,又是節點又是陣列的,我已經儘量通俗再通俗了,又不好加例子作演示。大家如果還是雲裡霧裡的話,我也沒有什麼辦法了,只有先記住,日後在實際應用中慢慢體會、理解了。這也是我學習的一個方法吧。
三 、掛載檔案系統
由上一節知道,linux系統中每個分割槽都是一個檔案系統,都有自己的目錄層次結構。linux會將這些分屬不同分割槽的、單獨的檔案系統按一定的方式形成一個系統的總的目錄層次結構。這裡所說的“按一定方式”就是指的掛載。
將一個檔案系統的頂層目錄掛到另一個檔案系統的子目錄上,使它們成為一個整體,稱為掛載。把該子目錄稱為掛載點。
舉個例子吧:
  根分割槽:
  /根目錄

┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
bin home dev etc lib sbin tmp usr var

┏━┻━┓
┃ ┃
rc.d cron.d

┏━━━┳━━━┳━┻━┳━━━━┓
┃ ┃ ┃ ┃ ┃
init.d rc0.d rc1.d rc2.d ……
  /usr分割槽 :
  usr

┏━━━━┳━━━╋━━━┳━━━┳━━━┓
┃ ┃ ┃ ┃ ┃ ┃
X11R6 src lib local man bin
┃ ┃
┃ ┏━━━╋━━━┓
┃ ┃ ┃ ┃
linux bin lib src
  掛載之後就形成了文章開始時的那個圖。像不像掛上去的?
  注意:1、掛載點必須是一個目錄。
  2、一個分割槽掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載後這個目錄下以前的內容將不可用。
對於其他作業系統建立的檔案系統的掛載也是這樣。但是需要理解的是:光碟、軟盤、其他作業系統使用的檔案系統的格式與linux使用的檔案系統格式是不一樣的。光碟是ISO9660;軟盤是fat16或ext2;windows NT是fat16、NTFS;windows98是fat16、fat32;windows2000和windowsXP是fat16、fat32、 NTFS。掛載前要了解linux是否支援所要掛載的檔案系統格式。
  掛載時使用mount命令:
格式:mount [-引數] [裝置名稱] [掛載點]
  其中常用的引數有

  -t 指定裝置的檔案系統型別,常見的有:
  minix linux最早使用的檔案系統
  ext2 linux目前常用的檔案系統
  msdos MS-DOS的fat,就是fat16
  vfat windows98常用的fat32
  nfs 網路檔案系統
  iso9660 CD-ROM光碟標準檔案系統
  ntfs windows NT 2000的檔案系統
  hpfs OS/2檔案系統
  auto 自動檢測檔案系統
  -o 指定掛載檔案系統時的選項。有些也可用在/etc/fstab中。常用的  有
  codepage=XXX 內碼表
  iocharset=XXX 字符集
  ro 以只讀方式掛載
  rw 以讀寫方式掛載
  nouser 使一般使用者無法掛載
  user 可以讓一般使用者掛載裝置
  提醒一下,mount命令沒有建立掛載點的功能,因此你應該確保執行mount命令時,掛載點已經存在。(不懂?說白了點就是你要把檔案系統掛載到哪,首先要先建上個目錄。這樣OK?)
  例子:windows98裝在hda1分割槽,同時計算機上還有軟盤和光碟需要掛載。
  # mk /mnt/winc
  # mk /mnt/floppy
  # mk /mnt/cdrom
  # mount -t vfat /dev/hda1 /mnt/winc
  # mount -t msdos /dev/fd0 /mnt/floppy
  # mount -t iso9660 /dev/cdrom /mnt/cdrom
  現在就可以進入/mnt/winc等目錄讀寫這些檔案系統了。
  要保證最後兩行的命令不出錯,要確保軟碟機和光碟機裡有盤。(要是硬碟的磁碟片也可以經常隨時更換的話,我想就不會犯這樣的錯誤了 :-> )
如果你的windows98目錄裡有中文檔名,使用上面的命令掛載後,顯示的是一堆亂碼。這就要用到 -o 引數裡的codepage iocharset選項。codepage指定檔案系統的內碼表,簡體中文中文程式碼是936;iocharset指定字符集,簡體中文一般用cp936或 gb2312。
  當掛載的檔案系統linux不支援時,mount一定報錯,如windows2000的ntfs檔案系統。可以重新編譯linux核心以獲得對該檔案系統的支援。關於重新編譯linux核心,就不在這裡說了。
  四 、自動掛載

每次開機訪問windows分割槽都要執行mount命令顯然太煩瑣,為什麼訪問其他的linux分割槽不用使用mount命令呢?
  其實,每次開機時,linux自動將需要掛載的linux分割槽掛載上了。那麼我們是不是可以設定讓linux在啟動的時候也掛載我們希望掛載的分割槽,如windows分割槽,以實現檔案系統的自動掛載呢?
  這是完全可以的。在/etc目錄下有個fstab檔案,它裡面列出了linux開機時自動掛載的檔案系統的列表。我的/etc/fstab檔案如下:
  /dev/hda2 / ext3 defaults 1 1
  /dev/hda1 /boot ext3 defaults 1 2
  none /dev/pts devpts gid=5,mode=620 0 0
  none /proc proc defaults 0 0
  none /dev/shm tmpfs defaults 0 0
  /dev/hda3 swap swap defaults 0 0
  /dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0
  /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
  /dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0
  /dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0
  在/etc/fstab檔案裡,第一列是掛載的檔案系統的裝置名,第二列是掛載點,第三列是掛載的檔案系統型別,第四列是掛載的選項,選項間用逗號分隔。第五六列不知道是什麼意思,還望高手指點。
  在最後兩行是我手工新增的windows下的C;D盤,加了codepage=936和iocharset=cp936引數以支援中文檔名。引數defaults實際上包含了一組預設引數:
  rw 以可讀寫模式掛載
  suid 開啟使用者ID和群組ID設定位
  dev 可解讀檔案系統上的字元或區塊裝置
  exec 可執行二進位制檔案
  auto 自動掛載
  nouser 使一般使用者無法掛載
  async 以非同步方式執行檔案系統的輸入輸出操作

因為空間被日誌檔案佔用磁碟使用100%導致MQ執行異常無法正常工作停不掉起不來,需要刪除日誌,騰出空間。

該資料夾的完整路徑 :du --max-depth 1 -lh 

例,查詢/var資料夾的大小: du --max-depth 1 -lh  /var

刪除日誌檔案,今天一看,公司的linux 伺服器沒放什麼東西,但是已經使用了50%了,一檢視原來是日誌檔案太大了,於是就手動刪除了,這個比較快
sudo /dev/null > /var/log/**.log
下面這個可以推薦使用  sudo find /var/log/ -type f -mtime +30 -exec rm -f {} \;
刪除30天之前的舊檔案


裝置是裝置,分割槽是分割槽,掛載點是掛載點,他們之間是有聯絡的,但絕不是必須一一對應的關係。

相關推薦

LINUX 檔案系統根目錄 掛載區別聯絡

一 、Linux檔案結構   檔案結構是檔案存放在磁碟等存貯裝置上的組織方法。主要體現在對檔案和目錄的組織上。  目錄提供了管理檔案的一個方便而有效的途徑。  Linux使用標準的目錄結構,在安裝的時候,安裝程式就已經為使用者建立了檔案系統和完整而固定的目錄組成形式,並指定

Linux檔案系統被佔用,磁碟使用量實際不一致

客戶某應用系統反饋出現一個奇怪的現象,df -h 查詢的容量已經要到警戒值,但實際該目錄使用只有15%左右,具體見下圖:OS版本為RHEL4.5資源佔用率也很正常      執行命令lsof -n | grep deleted印出所有針對已刪除檔案的讀寫操作,這類操作是

linux檔案系統的運作以及掛載的意義

linux檔案系統的運作 我們知道了目錄樹與檔案系統的關係了,但是我們也知道,所有的資料要載入到記憶體後CPU才能夠對資料進行處理。想一想,如果你常常編輯一個很大的檔案,在編輯的過程中又頻繁的要系統寫入磁碟當中,由於磁碟要寫入的速度比記憶體慢很多,因此你常常耗

Linux 檔案系統的建立掛載方法

轉自:https://blog.csdn.net/gz153016/article/details/51655994 Linux的  檔案系統的建立與掛載方法 1 Linux 檔案系統的建立 Linux的  作業系統在安裝伺服器時,安裝程式已經建立了自己的檔案系統,但是在使

linux檔案系統管理---分割槽掛載

轉:HTTP://www.cnblogs.com/alantu2018/p/8461680.html 一,系統在初始化時如何識別硬碟  1,系統初始時根據MBR的資訊來識別硬碟,其中包括了一些執行檔案就來載入系統,這些執行檔案就是MBR裡前面446bytes裡的啟動載入器程式,而後面

Linux檔案系統管理 開機自動掛載及fstab檔案修復

概述 開機自動掛載及fstab檔案修復 開機自動掛載 實現開機後自動掛載,就需要修改系統的自動掛載檔案 /etc/fstab。因為系統就是依賴這個檔案決定啟動時載入的檔案系統的。通過vi 開啟/etc/fstab檔案 [[email protected] ~]# vi /etc/fst

Linux系統掛載的理解

掛載點: Linux是樹型目錄結構,與windows的C,D,E盤完全不同,Linux只有一個根目錄'/',其餘各個目錄都是基於這個根目錄發散,就是樹形結構。 因此Linux分割槽跟Windows的C,D,E盤分割槽完全不同,而是將某個分割槽掛到一個對應的目錄上,例如/home對應一塊分

LINUX 新增的磁碟不建立分割槽,直接建立檔案系統掛載怎麼辦?

LINUX下新增的磁碟不建立分割槽,直接建立檔案系統並掛載: 不是都要先使用FDISK進行分割槽的麼?怎麼直接跳過了這步,直接建立檔案系統,並掛載了呢? 解決方法: 假設新硬碟是 /dev/sdcfdisk操作的是/dev/sdc ,分割槽後才會有/dev/sdc1 /

深度解析Linux檔案系統掛載過程

在前面的文章中介紹《Linux作業系統啟動過程》,而Linux系統的根檔案系統(root file system)的掛載過程則是其中一個重要環節,下面這部分內容來自於網路,經整理分享如下,希望能給這部份知識點比較迷茫的朋友一點幫助。 一、rootfs的種類 總的來說,rootfs分為兩種:虛擬roo

Linux檔案系統簡介和軟連結和硬連結的區別

Linux有著極其豐富的檔案系統,大體可分為如下幾類: 網路檔案系統:如nfs、cifs等; 磁碟檔案系統:如ext3、ext4等; 特殊檔案系統:如prco、sysfs、ramfs、tmpfs等; 一、Linux系統中一切皆檔案(除程序以外) Linux系統的頂層目錄結構如下 1 /

linux下使用sshfs掛載遠端linux檔案系統或目錄

文章來源 寫這篇文章的主要目的就是提供一步一步的指導,關於如何使用 SSHFS 通過 SSH 掛載遠端的 Linux 檔案系統或目錄。 這篇文章對於那些無論出於什麼目的,希望在他們本地的系統中掛載遠端的檔案系統的使用者或者系統管理員有幫助。我們通過 Linu

Linux--根檔案系統掛載過程分析

【轉自 http://blog.csdn.net/guopeixin/article/details/5962482】 前言: 本篇文章以S3C6410公版的Linux BSP和U-Boot來進行分析,文中所有提及的名詞和資料都是以該環境為例,所有的程式碼流程

如何看linux檔案系統型別及掛載硬碟命令

[[email protected] bin]$ sudo parted  [sudo] password for zxc:  GNU Parted 2.1 Using /dev/sda Welcome to GNU Parted! Type 'help' to

使用 SSHFS 掛載遠端的 Linux 檔案系統及目錄

導讀 當我們需要在本地機器上和遠端的目錄和檔案進行互動時,總是會考慮到安全之類的問題,那麼SSHFS將會是一個不錯的選擇。 這篇文章對於那些無論出於什麼目的,希望在他們本地的系統中掛載遠端的檔案系統的使用者或者系統管理員有幫助。我們通過 Linux 系統中的一個安裝了 S

Linux檔案系統掛載過程分析

前言: 本篇文章以S3C6410公版的Linux BSP和U-Boot來進行分析,文中所有提及的名詞和資料都是以該環境為例,所有的程式碼流程也是以該環境為例來進行分析。哈哈。如果有不正確或者不完善的地方,歡迎前來拍磚留言或者發郵件到[email protect

linux磁碟分割槽,建立檔案系統掛載,解除安裝,自動掛載

1 EMMC磁碟分割槽 fdisk -l /dev/mmcblk0, 命令p檢視分割槽情況,n配置分割槽大小,w儲存配置,d刪除分割槽,p退出不儲存配置 2 瀏覽檔案系統情況dumpe2fs /dev/mmcblk0p1檢視是否有檔案系統 3 建立檔案

Linux檔案系統掛載管理

mount多個引數用逗號隔開: 例子mount掛載和查詢已經掛載的分割槽: 例子帶引數的命令: 預設的是讀寫的,可以建立檔案: 改成RO後: 加入sync引數,不使用快取,缺點是讀寫速度慢,優點是安全性高。 加入async引數,使用快取,缺

linux檔案系統掛載,及各種型別的實現試驗

掛載介紹: 系統的中的檔案系統需要掛載才可進行讀取訪問。掛載就是將檔案系統與當前系統根下的某一個目錄產生對映關係,訪問該目錄時實際訪問的是掛載在該目錄上的檔案系統。 注意:在目錄下有檔案時,將檔案系統掛載在該目錄上時,將無法訪問該原本該目錄下的檔案,只能顯示

ubuntu(linux)檔案系統分割槽調整(可以解決根目錄空間不足,而/home空間比較大的情況)

1. 安裝 tuxboot (ubuntu下燒寫工具)   sudo apt-add-repository ppa:thomas.tsai/ubuntu-tuxboot   sudo apt-get update   sudo apt-get install tuxboot

Windows和Linux檔案系統區別

    Windows,分盤,每個驅動器有自己的根目錄,形成的是多個樹並列的結構。    Linux,只有一個根目錄 / ,所有東西都是從這開始         /boot:放置linux啟動時用到的一些檔案,如核心檔案等         /bin,/user/bin:一般放