一、Linux磁盤分區和目錄
Linux發行版本之間的差别很少,差别主要表現在系統管理的特色工具以及軟體包管理方式的不同。目錄結構基本上都是一樣的。 Windows的檔案結構是多個并列的樹狀結構,最頂部的是不同的磁盤(分區),如:C,D,E,F等。
Linux的檔案結構是單個的樹狀結構。可以用tree進行展示。 在Ubuntu下安裝tree(sudo apt-get install tree),并可通過指令來檢視。
每次安裝系統的時候我們都會進行分區,Linux下磁盤分區和目錄的關系如下:
– 任何一個分區都必須挂載到某個目錄上。
– 目錄是邏輯上的區分。分區是實體上的區分。
– 磁盤Linux分區都必須挂載到目錄樹中的某個具體的目錄上才能進行讀寫操作。
– 根目錄是所有Linux的檔案和目錄所在的地方,需要挂載上一個磁盤分區。
以下是我們可能存在的一種目錄和分區關系:
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的定義,主要是根據裝機的分區來的:
Q:移動硬碟如何挂載?如何挂載一個新的分區?
移動硬碟有驅動子產品會自動挂載,如果有個新硬碟,要先進行分區,并通過mount指令挂載到某個檔案夾。如果要自動挂載則可以修改/etc/fstab檔案.
NFS簡介:NFS相信在很多地方都有廣泛使用,是一個非常好的檔案共享方式。使用NFS用戶端可以透明的地通路伺服器端的檔案。NFS也是通過mount來實作,底層是通過NFS通信協定實作。基本原理:
三、檔案類型
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英尺視圖,檔案存儲結構大概如下:
其中目錄項的結構如下(每個檔案的目錄項存儲在改檔案所屬目錄的檔案内容裡):
其中檔案的inode結構如下(inode裡所包含的檔案資訊可以通過stat filename檢視得到):
以上隻反映大體的結構,linux檔案系統本身在不斷發展。但是以上概念基本是不變的。且如ext2、ext3、ext4檔案系統也存在很大差别,如果要了解可以檢視專門的檔案系統介紹。
五、軟連接配接、硬連結
軟連結和硬連結是我們常見的兩種概念:
硬連接配接:是給檔案一個副本,同時建立兩者之間的連接配接關系。修改其中一個,與其連接配接的檔案同時被修改。如果删除其中任意一個,其餘的檔案将不受影響。
軟連接配接:也叫符号連接配接,他隻是對源檔案在新的位置建立一個“快捷(借用一下wondows常用詞)”,是以,當源檔案删除時,符号連接配接的檔案将成為無源之水->僅僅剩下個檔案名了,當然删除這個連接配接,也不會影響到源檔案,但對連接配接檔案的使用、引用都是直接調用源檔案的。
具體關系可以看下圖:
從圖上可以看出硬連結和軟連結的差別:
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 | 該目錄存放一些服務啟動之後需要提取的資料 |