1. 程式人生 > >02_Linux檔案系統,我竟然看懂了,很好奇啊!

02_Linux檔案系統,我竟然看懂了,很好奇啊!

Linux檔案系統

首先來看一下linux系統的硬碟分割槽管理相關概念:

 

對於Linux的分割槽通常可以使用fdisk命令工具和parted工具

對於分割槽表通常有MBR分割槽表GPT分割槽表

對於磁碟大小小於2T的磁碟,我們可以使用fdisk和parted命令工具進行分割槽

 

對於MBR分割槽表的特點(通常使用fdisk命令進行分割槽)

所支援的最大磁碟大小:2T

最多支援4個主分割槽或者是3個主分割槽加上一個擴充套件分割槽

 

對於GPT分割槽表的特點(使用parted命令進行分割槽)

支援最大卷:18EB(1EB=1024TB)

最多支援128個主分割槽,所以對於GPT的分割槽表來說,基本就沒有什麼主分割槽和邏輯分割槽的區別了。

 

1、可以分為主分割槽擴充套件分割槽邏輯分割槽

2、硬碟採用hdX格式表示,X代表a.b.c.d

3、系統最多隻有4個IDE裝置,其中第一個IDE裝置名稱為hda,第4個為hdd

 

補充:

IDE:    一種較老的介面技術,價格低廉,相容性強,傳輸速度可達133MB/s

SCSI:    主要應用於中、高階伺服器中,支援熱拔插,價格較高,其中UltraSCSI可達320MB/S,UltraSCSI640可達640MB/S

SATA:  主要用於PC上,串列埠硬碟,可達6gbps

SAS:   是一種序列連結的SCSI介面技術,向下相容SATA,速度快

USB:  一種便攜的儲存裝置,USB3.0理論最大傳輸速度可達500MB/s,現在最新的USB3.1Gen 2最高可達10Gbps

 

並口:同一線纜可以接多塊裝置,IDE和SCSI為並口硬碟;

串列埠:同一線纜只可以接一個裝置,SATA、SAS和USB為串列埠,抗干擾能力強。

 

主分割槽:一個硬碟最多隻能有4個主分割槽,主分割槽採用hdXN的格式,hdX為硬碟,N是1-4的數字,分別表示4個主分割槽,第一個硬碟的第一個主分割槽,表示為hda1,以此類推

 

擴充套件分割槽:擴充套件分割槽作為特殊的主分割槽需要佔用硬碟分割槽表中4個分割槽記錄中的1個記錄

 

邏輯分割槽:邏輯分割槽只能建立在擴充套件分割槽中,可以建立檔案系統。邏輯分割槽同樣採用了hdXN 的格式,區別在於,邏輯分割槽的N是從5開始算的,第一個硬碟的第2個邏輯分割槽就為hda6

 

注意:IDE裝置: hda2, hdb3等等

      SCSI裝置/SATA裝置: sda2, sdb3等等

 

檔案系統:EXT2和EXT3都是Linux作業系統預設使用的檔案系統,EXT3屬於日誌檔案系統,比較出色。swap檔案系統在Linux系統的交換分割槽中使用,也是Linux系統預設支援的,一般設定為主機系統記憶體的2倍大小。其他的檔案系統包裹 xfs、jfs 等,這些大多使用與商業的UNIX系統。FAT檔案系統Linux可以讀寫,NTFS中能讀,不能寫

 

最經典的分配方案:

/boot:啟動分割槽

swap:交換分割槽

/ :根分割槽

 

Linux作業系統和windows作業系統使用的檔案系統是不一樣的。

CentOSEXT4格式     // 查詢方式:cat /etc/fstab

Windows一般是NTFS

 

Linux根據檔案形式主要將檔案分為目錄和普通檔案,如下圖:

Directory表示目錄

Ordinary File表示普通檔案

如果像上圖一樣把Linux的檔案系統看做是一棵樹,那麼:

  1. 所有的Ordinary File都是葉子節點
  2. 含有子節點的節點都一定是目錄,因為只有目錄下才有子目錄或者普通檔案,普通檔案下是沒有子級目錄的,還是很好理解吧

 

目錄或者檔案的名稱長度不超過255個字元,檔案或者目錄是由以下字元構成:

  1. Uppercase letters (A-Z)
  2. Lowercase letters (a-z)
  3. Numbers (0-9)
  4. Underscore (_)
  5. Period(.)
  6. Comma(,)

注意:檔案和目錄是區分大小寫的

 

副檔名

Linux對檔案的副檔名是沒有強制要求的,甚至可以說沒有副檔名之類的概念。但是通常我們建立檔案或者儲存檔案的時候都還是最好給弄一個副檔名,這樣非常有利於理解檔案的內容,方便管理

 

下面是CentOS的目錄結構

http://dl.iteye.com/upload/picture/pic/115222/e063287e-07a0-333e-b4f5-9e418ec52ce1.png

 

以下是對根目錄下每個目錄的簡單解釋:

/根目錄,一般根目錄下只存放目錄,不要存放檔案,/etc、/bin、/dev、/lib、/sbin應該和根目錄放置在一個分割槽中

/bin:/usr/bin: 可執行二進位制檔案的目錄,如常用的命令ls、tar、mv、cat等

/boot放置linux系統啟動時用到的一些檔案。/boot/vmlinuz為linux的核心檔案,以及/boot/gurb。建議單獨分割槽,分割槽大小100M即可

/dev存放linux系統下的裝置檔案,訪問該目錄下某個檔案,相當於訪問某個裝置,常用的是掛載光碟機mount /dev/cdrom /mnt

/etc系統配置檔案存放的目錄,不建議在此目錄下存放可執行檔案,重要的配置檔案有/etc/inittab、/etc/gateways、/etc/resolv.conf、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置檔案之前記得備份。注:/etc/X11存放與x windows有關的設定

/home系統預設的使用者家目錄,新增使用者賬號時,使用者的家目錄都存放在此目錄下,~表示當前使用者的家目錄,~test表示使用者test的家目錄。建議單獨分割槽,並設定較大的磁碟空間,方便使用者存放資料

/lib:/lib64:/usr/lib:/usr/local/lib系統使用的函式庫的目錄,程式在執行過程中,需要呼叫一些額外的引數時需要函式庫的協助,比較重要的目錄為/lib/modules

/lost+fount系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下,通常這個目錄會自動出現在裝置目錄下。如載入硬碟於/disk 中,此目錄下就會自動產生目錄/disk/lost+found

/mnt:/media光碟預設掛載點,通常光碟掛載於/mnt/cdrom下,也不一定,可以選擇任意位置進行掛載

/opt給主機額外安裝軟體所擺放的目錄。如:FC4使用的Fedora 社群開發軟體,如果想要自行安裝新的KDE桌面軟體,可以將該軟體安裝在該目錄下。以前的Linux系統中,習慣放置在 /usr/local目錄下option

/proc此目錄的資料都在記憶體中,如系統核心,外部裝置,網路狀態,由於資料都存放於記憶體中,所以不佔用磁碟空間,比較重要的目錄有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等process

/root系統管理員root的家目錄,系統第一個啟動的分割槽為/,所以最好將/root和/放置在一個分割槽下

/sbin:/usr/sbin:/usr/local/sbin放置系統管理員使用的可執行命令,如fdisk、shutdown、mount等。與/bin不同的是,這幾個目錄是給系統管理員root使用的命令,一般使用者只能"檢視"而不能設定和使用。

/selinuxselinux軟體目錄,用於保證系統安全

/srv服務啟動之後需要訪問的資料目錄,如www服務需要訪問的網頁資料存放在/srv/www內service

/sys類似於/proc的特殊檔案系統,存放核心資料資訊

/tmp一般使用者或正在執行的程式臨時存放檔案的目錄,任何人都可以訪問,重要資料不可放置在此目錄下

/usr應用程式存放目錄,

/usr/bin 存放應用程式

/usr/share 存放共享資料

/usr/lib 存放不能直接執行的,卻是許多程式執行所必需的一些函式庫檔案

/usr/local:存放軟體升級包

/usr/share/doc: 系統說明檔案存放目錄

/usr/share/man: 程式說明檔案存放目錄,使用man ls時會查詢/usr/share/man/man1/ls.1.gz的內容建議單獨分割槽,設定較大的磁碟空間

usruser share resources/unix share resouces

/var放置系統執行過程中經常變化的檔案,如:

/var/log:隨時更改的日誌檔案

/var/log/message:所有的登入檔案存放目錄

/var/spool/mail:郵件存放的目錄

/var/run:程式或服務啟動

使用建議:

  1. 使用者應該將檔案儲存在自己的主目錄及其子目錄下
  2. 系統絕大多數設定都在/etc目錄下
  3. 不要修改/或者/usr目錄下的任何內容,除非你真的清楚你在做什麼,也就是說/目錄最好和安裝好系統之初保持一致
  4. 大多數工具和應用軟體程式都安裝在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin

檔案或者目錄都有唯一的絕對路徑,