天天看點

Exynos4412 檔案系統制作(二)—— 檔案系統簡介

一、Linux磁盤分區和目錄

       Linux發行版本之間的差别很少,差别主要表現在系統管理的特色工具以及軟體包管理方式的不同。目錄結構基本上都是一樣的。 Windows的檔案結構是多個并列的樹狀結構,最頂部的是不同的磁盤(分區),如:C,D,E,F等。

       Linux的檔案結構是單個的樹狀結構。可以用tree進行展示。 在Ubuntu下安裝tree(sudo apt-get install tree),并可通過指令來檢視。

      每次安裝系統的時候我們都會進行分區,Linux下磁盤分區和目錄的關系如下:

–      任何一個分區都必須挂載到某個目錄上。

–      目錄是邏輯上的區分。分區是實體上的區分。

–      磁盤Linux分區都必須挂載到目錄樹中的某個具體的目錄上才能進行讀寫操作。

–      根目錄是所有Linux的檔案和目錄所在的地方,需要挂載上一個磁盤分區。

以下是我們可能存在的一種目錄和分區關系:

Exynos4412 檔案系統制作(二)—— 檔案系統簡介

Q:如何檢視分區和目錄及使用情況?

–      fdisk檢視硬碟分區表

–      df:檢視分區使用情況

–      du: 檢視檔案占用空間情況

Q: 為什麼要分區,如何分區?

–      可以把不同資料,分别放入不同分區中管理,降低風險。

–      大硬碟搜尋範圍大,效率低

–      磁盤配合隻能對分區做設定

–      /home /var /usr/local經常是單獨分區,因為經常會操作,容易産生碎片

二、Mount挂載和NFS簡介

      挂載的概念 :當要使用某個裝置時,例如要讀取硬碟中的一個格式化好的分區、CD光牒或軟體等裝置時,必須先把這些裝置對應到某個目錄上,而這個目錄就稱為“挂載點(mount point)”,這樣才可以讀取這些裝置,而這些對應的動作就是“挂載”。 将實體分區細節屏蔽掉。使用者隻有統一的邏輯概念。所有的東西都是檔案。Mount指令可以實作挂載:

mount [-fnrsvw] [-t vfstype] [-o options] device dir

Q:所有的磁盤分區都必須被挂載上才能使用,那麼我們機器上的硬碟分區是如何被挂載的?

A:這主要是它利用了/etc/fstab檔案。每次核心加載它知道從這裡開始mount檔案系統。每次系統啟動會根據該檔案定義自動挂載。若沒有被自動挂載,分區将不能使用。 

如下是我的/etc/fstab的定義,主要是根據裝機的分區來的:

Exynos4412 檔案系統制作(二)—— 檔案系統簡介

Q:移動硬碟如何挂載?如何挂載一個新的分區?

       移動硬碟有驅動子產品會自動挂載,如果有個新硬碟,要先進行分區,并通過mount指令挂載到某個檔案夾。如果要自動挂載則可以修改/etc/fstab檔案.

NFS簡介:NFS相信在很多地方都有廣泛使用,是一個非常好的檔案共享方式。使用NFS用戶端可以透明的地通路伺服器端的檔案。NFS也是通過mount來實作,底層是通過NFS通信協定實作。基本原理:

Exynos4412 檔案系統制作(二)—— 檔案系統簡介

三、檔案類型

        Linux下面的檔案類型主要有:

a -- 普通檔案:C語言元代碼、SHELL腳本、二進制的可執行檔案等。分為純文字和二進制。

b -- 目錄檔案:目錄,存儲檔案的唯一地方。

c -- 連結檔案:指向同一個檔案或目錄的的檔案。

d -- 特殊檔案:與系統外設相關的,通常在/dev下面。分為塊裝置和字元裝置。

可以通過ls –l, file, stat幾個指令來檢視檔案的類型等相關資訊。

四、檔案存儲結構

       Linux正統的檔案系統(如ext2、ext3)一個檔案由目錄項、inode 和 資料塊組成。

目錄項:包括檔案名和inode節點号。

Inode:又稱檔案索引節點,是檔案基本資訊的存放地和資料塊指針存放地。

資料塊:檔案的具體内容存放地。

      Linux正統的檔案系統(如ext2、3等)将硬碟分區時會劃分出目錄塊、inode Table區塊和data block資料區域。一個檔案由一個目錄項、inode和資料區域塊組成。Inode包含檔案的屬性(如讀寫屬性、owner等,以及指向資料塊的指針),資料區域塊則是檔案内容。當檢視某個檔案時,會先從inode table中查出檔案屬性及資料存放點,再從資料塊中讀取資料。

站在2w英尺視圖,檔案存儲結構大概如下:

Exynos4412 檔案系統制作(二)—— 檔案系統簡介

其中目錄項的結構如下(每個檔案的目錄項存儲在改檔案所屬目錄的檔案内容裡):

Exynos4412 檔案系統制作(二)—— 檔案系統簡介

其中檔案的inode結構如下(inode裡所包含的檔案資訊可以通過stat filename檢視得到):

Exynos4412 檔案系統制作(二)—— 檔案系統簡介

以上隻反映大體的結構,linux檔案系統本身在不斷發展。但是以上概念基本是不變的。且如ext2、ext3、ext4檔案系統也存在很大差别,如果要了解可以檢視專門的檔案系統介紹。

五、軟連接配接、硬連結

       軟連結和硬連結是我們常見的兩種概念:

硬連接配接:是給檔案一個副本,同時建立兩者之間的連接配接關系。修改其中一個,與其連接配接的檔案同時被修改。如果删除其中任意一個,其餘的檔案将不受影響。

軟連接配接:也叫符号連接配接,他隻是對源檔案在新的位置建立一個“快捷(借用一下wondows常用詞)”,是以,當源檔案删除時,符号連接配接的檔案将成為無源之水->僅僅剩下個檔案名了,當然删除這個連接配接,也不會影響到源檔案,但對連接配接檔案的使用、引用都是直接調用源檔案的。

具體關系可以看下圖:

Exynos4412 檔案系統制作(二)—— 檔案系統簡介

從圖上可以看出硬連結和軟連結的差別:

1:硬連結原檔案和新檔案的inode編号一緻。而軟連結不一樣。

2:對原檔案删除,會導緻軟連結不可用,而硬連結不受影響。

3:對原檔案的修改,軟、硬連結檔案内容也一樣的修改,因為都是指向同一個檔案内容的。

六、檔案目錄管理指令

a -- 磁盤和檔案空間

       fdisk df du

b -- 檔案目錄與管理

      cd pwd mkdir rmdir ls cp rm mv

c -- 檢視檔案内容

cat:

cat [file]

檢視檔案的内容。全程式concatenate的意思,将檔案内容連續輸出到螢幕上。第一行到最後一行顯示。

tac:

tac [file]

和cat剛好相反 是從最後一行到第一行的方式檢視。

cat有個比較不好的地方時當檔案比較大時候沒辦法看清楚,這個時候可以用more或者Less指令。

more:

more [file]

如果使用grep或者find等指令時,可以配合使用more一頁一頁的檢視。如果看到一半想退出,則敲入’q’即可退出。

less:

less [file]

less比more更有彈性,可以上下翻頁。

如果隻想讀取檔案的頭幾行或者檔案的末尾幾行,可以用head或tail.

head –n [file]:讀取檔案的前n行。

tail –n [file]:讀取檔案末尾n行。

以上指令都是用于檢視字元檔案,二進制檔案出來的都是亂碼,要看二進制檔案的内容,可以用od指令,如檢視一個MP3檔案裡面的内容:

od shijiemori.mp3

d -- 檔案目錄與權限

    chmod chown chgrp umask

e-- 檔案查找

which:

which [filename]

該指令用于查詢通過PATH路徑到該路徑内查找可執行檔案。

如:Which passwd:查找可執行檔案passwd

whereis

whereis [-bmsu] [keyword]

該指令用于把相關字的檔案和目錄都列出來。(Linux 會将檔案都記錄在一個檔案資料庫裡面,該指令式從資料庫去查詢,是以速度比較快,Linux每天會更新該資料庫)

locate:

locate [filename]

該指令用于把相關字的檔案和目錄都列出來。查找資料特别快,也是通過資料庫方式來查詢。但是資料庫一周更新一次,是以可能有些存在資料查不到。可以去修改配置檔案。

find:

find [path] [參數] [keyword]

該指令用于在指定路徑下查找檔案。不是通過資料來查詢,是以速度會比較慢。

七、常見目錄解釋

Linux各種發行版的目錄結構基本一緻,各個目錄簡單介紹如下:

目錄 描述
/        根目錄
/bin 做為基礎系統所需要的最基礎的指令就是放在這裡。比如 ls、cp、mkdir等指令;功能和/usr/bin類似,這個目錄中的檔案都是可執行的,普通使用者都可以使用的指令。
/boot Linux的核心及引導系統程式所需要的檔案,比如 vmlinuz initrd.img 檔案都位于這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位于這個目錄;啟動裝載檔案存放位置,如kernels,initrd,grub。一般是一個獨立的分區。
/dev 一些必要的裝置,聲霸卡、磁盤等。還有如 /dev/null. /dev/console /dev/zero /dev/full 等。
/etc

系統的配置檔案存放地. 一些伺服器的配置檔案也在這裡;比如使用者帳号及密碼配置檔案;

/etc/opt:/opt對應的配置檔案

/etc/X11:Xwindows系統配置檔案

/etc/xml:XML配置檔案

……

/home 使用者工作目錄,和個人配置檔案,如個人環境變量等,所有的賬号配置設定一個工作目錄。一般是一個獨立的分區。
/lib 庫檔案存放地。bin和sbin需要的庫檔案。類似windows的DLL。
/media 可拆卸的媒介挂載點,如CD-ROMs、移動硬碟、U盤,系統預設會挂載到這裡來。
/mnt 臨時挂載檔案系統。這個目錄一般是用于存放挂載儲存裝置的挂載目錄的,比如有cdrom 等目錄。可以參看/etc/fstab的定義。
/opt 可選的應用程式包。
/proc 作業系統運作時,程序(正在運作中的程式)資訊及核心資訊(比如cpu、硬碟分區、記憶體資訊等)存放在這裡。/proc目錄僞裝的檔案系統proc的挂載目錄,proc并不是真正的檔案系統,它的定義可以參見 /etc/fstab 。
/root Root使用者的工作目錄
/sbin 和bin類似,是一些可執行檔案,不過不是所有使用者都需要的,一般是系統管理所需要使用得到的。
/tmp 系統的臨時檔案,一般系統重新開機不會被儲存。
/usr

包含了系統使用者工具和程式。

/usr/bin:非必須的普通使用者可執行指令

/usr/include:标準頭檔案

 /usr/lib:/usr/bin/ 和 /usr/sbin/的庫檔案

 /usr/sbin:非必須的可執行檔案

/usr/src:核心源碼

/usr/X11R6:X Window System, Version 11, Release 6.

/srv 該目錄存放一些服務啟動之後需要提取的資料

繼續閱讀