在Linux中普通檔案和目錄檔案儲存在稱為塊實體裝置的磁盤或者錄音帶上。一套Linux系統支援若幹實體盤,每個實體盤可定義一個或者多個檔案系統。每個檔案系統由邏輯塊的序列組成,一個邏輯盤空間一般劃分為幾個用途各不相同的部分,即引導塊、超級塊、inode區以及資料區等。
一、分區類型
主分區:總共最多隻能分四個
擴充分區:隻能有一個,也算主分區的一種,也就是說主分區加擴充分區最多有四個,但是擴充分區不能存儲資料和格式化,必須再分層邏輯分區才能使用。
邏輯分區:邏輯分區是在擴充分區中劃分的,如果是IDE硬碟,linux最多支援59個邏輯分區,如果是SCSI硬碟linux最多支援11個邏輯分區
<a href="http://s2.51cto.com/wyfs02/M01/87/2D/wKioL1fWuIKBcrkOAACLPp5CpJE398.png" target="_blank"></a>
分區分完了進行格式化,格式化的作用是寫入檔案系統
二、檔案系統
ext2:是ext檔案系統的更新版,RedHat Linux 7.2版本以前的系統預設都是ext2檔案系統,1993年釋出,最大支援18TB的分區和最大2TB的檔案
ext3:ext3檔案系統是ext2檔案系統的更新版本,最大的差別就是帶日志功能,已在系統突然停止時提高檔案系統的可靠性。支援最大16TB的分區和最大2TB的檔案。
ext4:是ext3檔案系統的更新版,ext4在性能、伸縮性和可靠性方面進行了大量改進,wxt4的變化可以說是翻天覆地的,比如向下相容ext3最大1EB檔案系統和16TB檔案、無線數量子目錄、Extents連續資料塊概念、多塊配置設定、延遲配置設定、持久預配置設定、快速FSCK、日志校驗、無日志模式、線上碎片整理、inode增強、預設啟用barrier等。
檔案系統常用指令
df 統計檔案系統的占用情況
df【選項】【挂載點】
-a 顯示所有的檔案系統資訊,包括特殊檔案系統,如/proc、/sysfs
-h 使用習慣機關顯示容量,如KB,MB或GB等
-T 顯示檔案系統類型
-m 以MB為機關顯示容量
-k 已KB為機關顯示容量,預設使用就是已KB為機關
du 統計目錄或檔案大小
du【選項】【目錄或檔案名】
-a 顯示每個子檔案的磁盤占有量,預設隻統計子目錄的磁盤占有量
-s 統計總占有量,而不列出子目錄和子檔案的占有量
<a href="http://s3.51cto.com/wyfs02/M01/87/30/wKiom1fWuK_zM_LFAABpms25qnM434.png" target="_blank"></a>
du指令和df指令的的差别
df指令是從檔案系統考慮的,不光要考慮檔案占有的空間,還要統計被指令或程式占有的空間(最常見的就是檔案已經删除,但是程式并沒有釋放空間)
du指令是面向檔案的,隻會計算檔案或目錄占用的空間
fsck 檔案系統修複
fsck 【選項】分區裝置檔案名
-a 不用顯示使用者提示,自動修複檔案系統
-y 自動修複。和-a的作用一緻,不過有些檔案系統隻支援-y
dumpe2fs 顯示磁盤狀态
dumpe2fs 分區裝置檔案名
三、挂載
挂載:将一個裝置(通常是儲存設備)挂接到一個已存在的目錄上。 我們要通路儲存設備中的檔案,必須将檔案所在的分區挂載到一個已存在的目錄上, 然後通過通路這個目錄來通路儲存設備。
挂載的真正意義:把裝置檔案名和挂載點連起來
mount【選項】
-l 查詢系統中已經挂載的裝置,-l會顯示卷标名稱
-a 依據配置檔案/etc/fstab的内容,自動挂載
挂載指令格式
mount【-t 檔案系統】【-L 卷标名】【-o 特殊選項】 裝置檔案名 挂載點
-t檔案系統 加入檔案系統類型來指定挂載的類型,可以ext3、ext4、iso9600等檔案系統,(通常不必指定。mount 會自動選擇正确的類型)
-L卷标名 挂載指定卷标的分區,而不是安裝裝置檔案名挂載(相當于起個别名)
-o特殊選項 可以指定挂載的額外選項
常見的見表格,沒有特殊情況,就不用修改了
loop
用來把一個檔案當成硬碟分區挂接上系統
rw/ro
讀寫/隻讀,檔案系統挂載時,是否具有讀寫權限,預設是rw
async/sync
同步/異步,預設為異步
remount
重新挂載已經挂載的檔案系統,一般用于指定修改特殊權限
exec/noexec
執行/不執行,設定是否允許在檔案系統共中執行可執行檔案,預設是exec允許
挂載CD光牒
mkdir /mnt/cdrom/ 建立挂載點 (隻要是空目錄都可以作為挂載點)
mount -t iso9660 /dev/cdrom /mnt/cdrom 挂載CD光牒 (cdrom實際上是sr0的軟連結,CD光牒的檔案系統預設的就是iso9660,是以也可以省略mount /dev/cdrom/mnt/cdrom
)
解除安裝指令
umount 裝置檔案名或挂載點
umount /mnt/cdrom
挂載U盤
對linux系統而言,USB接口的移動硬碟是當作SCSI裝置對待的。插入移動硬碟之前,應先用fdisk –l 或 more /proc/partitions檢視系統的硬碟和硬碟分區情況。
fdisk -l 檢視U盤裝置檔案名
<a href="http://s1.51cto.com/wyfs02/M02/87/30/wKiom1fWuNCi1aXiAADwkxLB944914.png" target="_blank"></a>
mount /mnt/usb 建立挂載點
mount /dev/sdb1 /mnt/usb (本應使用-t vfat選項,但linux會自動識别,可省略,但linux預設是不支援NTFS檔案系統的)
如何讓linux支援NTFS檔案系統?
在linux核心中,已經把常見的硬體驅動包含在核心中,在我們安裝的時候,系統會自動的為我們的硬體選擇驅動,這一點linux把windows友善,windows必須手動安裝驅動,但核心中沒有的驅動,就需手動安裝驅動加載進來
1.重新編譯核心,把NTFS加載進來
2.利用第三方的軟體,下載下傳NTFS-3G插件
下載下傳NTFS-3G,解壓
進入解壓目錄
./configure 編輯器準備,沒有指定安裝目錄,安裝到預設位置中
make編譯
make install 編譯安裝
3.使用
mount -t ntfs-3g 分區裝置檔案名 挂載點
umount 挂載點 解除安裝
四、fdisk分區
1.在練習中,可以使用虛拟機添加新硬碟
<a href="http://s5.51cto.com/wyfs02/M00/87/30/wKiom1fWuO2jyDniAAAcd0_-fJs224.png" target="_blank"></a>
2.fdisk -l 檢視新硬碟
<a href="http://s2.51cto.com/wyfs02/M02/87/2D/wKioL1fWuQez3-86AADBf41JUhQ142.png" target="_blank"></a>
3.使用fdisk指令分區
fdisk /dev/sdb
<a href="http://s5.51cto.com/wyfs02/M00/87/30/wKiom1fWuSuS1XwYAABoOZaKOXc229.png" target="_blank"></a>
确認之後,m可以檢視幫助
fdisk互動指令說明
指令
說明
a
設定可引導标記
b
編輯bsd磁盤标簽
c
設定DOS作業系統相容标記
d
删除一個分區
l
顯示一個檔案系統。82為linux swap分區,83為linux分區
m
顯示幫助菜單
n
新加分區
o
建立空白DOS分區表
p
顯示分區清單
q
不儲存退出
s
建立空白SUN磁盤标簽
t
改變一個分區的系統ID
u
改變顯示記錄機關
v
驗證分區表
w
儲存退出
x
附加功能(僅專家)
分一個主分區
<a href="http://s3.51cto.com/wyfs02/M00/87/D7/wKiom1fijADBUQXaAAAuW-jMfuc639.png" target="_blank"></a>
分一個擴充分區
<a href="http://s5.51cto.com/wyfs02/M00/87/2D/wKioL1fWuUex9LC4AABAnS53e6Y225.png" target="_blank"></a>
分完擴充分區,就有分邏輯分區的選項,直接從5開始
<a href="http://s1.51cto.com/wyfs02/M01/87/30/wKiom1fWuWOyczp0AAA-RhrAVCw134.png" target="_blank"></a>
然後可以用p檢視下,無誤w儲存
<a href="http://s1.51cto.com/wyfs02/M01/87/2D/wKioL1fWuX3ATwSnAABqCJRRa-Q400.png" target="_blank"></a>
如果磁盤被占用,需重新啟動才可分區,也可使用partprobe指令重新讀取分區表資訊,避免了重新開機
4.分區完成後,進行格式化
mkfs -t ext4 /dev/sdb1 ,但需注意的是,邏輯分區是無法格式化的。
<a href="http://s1.51cto.com/wyfs02/M02/87/30/wKiom1fWuZfBofP1AACjopZ0-vk148.png" target="_blank"></a>
5.建立挂載點并挂載
mkdir /disk1
mount /dev/sdb1 /disk1/
<a href="http://s1.51cto.com/wyfs02/M02/87/2D/wKioL1fWubnQ61LgAABChXdDr-0564.png" target="_blank"></a>
對于每次都要使用的挂載,可以寫入/etc/fstab檔案自動挂載(寫錯的話有可能造成系統崩潰)
<a href="http://s3.51cto.com/wyfs02/M02/87/2D/wKioL1fWudWTlhaYAABTwshHPPU401.png" target="_blank"></a>
/etc/fstab檔案
第一字段:分區裝置檔案名或UUID(硬體通用唯一辨別碼)
第二字段:挂載點
第三字段:檔案系統名稱
第四字段:挂載參數
第五字段:指定分區是否被dump備份,0代表不備份,1代表每天備份,2代表不定期備份
第六字段:指定分區是否被fsck檢測,0代表不檢測,其他數字代表檢測的優先級,數字越小優先級越高
6.添加自動挂載
<a href="http://s4.51cto.com/wyfs02/M00/87/30/wKiom1fWue6Ad3KaAADZivx2I9M130.png" target="_blank"></a>
然後使用mount -a指令将自動挂載點再挂載一遍,看是否有報錯,避免開機系統崩潰
<a href="http://s3.51cto.com/wyfs02/M00/87/2D/wKioL1fWuhGQPK-hAAAH_yXCWKw686.png" target="_blank"></a>
故意将/etc/fstab中寫入錯誤,重新開機看到報錯,ctrl加d重新開機或者輸入root密碼,
<a href="http://s1.51cto.com/wyfs02/M00/87/2D/wKioL1fWuimBS9gaAAEi0aluDPw324.png" target="_blank"></a>
進入/etc/fstab發現是個隻讀檔案,是因為報錯之後它将挂載為讀權限,沒有挂載讀寫權限,隻要重新挂載為讀寫權限即可
<a href="http://s3.51cto.com/wyfs02/M02/87/30/wKiom1fWukGDOK0MAADJdy3JrK8014.png" target="_blank"></a>
然後就可以修改/etc/fstab檔案了,将它修改為正确的格式,并重新開機,就設定成了自動挂載了
<a href="http://s5.51cto.com/wyfs02/M01/87/2D/wKioL1fWulewc4ScAAAbw-OXjF0260.png" target="_blank"></a>
但是這個修複值用在/etc/fstab錯誤的情況下,根分區錯誤情況下,剛剛那個提示輸入密碼都不會出現。是以修改這個配置檔案的時候一定要注意。
五、配置設定swap交換分區
在linux中,swap分區必須存在,在使用交換分區的時候,發現不夠大,如何加入空間?先檢視下有多少的交換空間
1.free 檢視記憶體與swap分區使用狀況
-m 用兆的機關顯示
<a href="http://s1.51cto.com/wyfs02/M00/87/30/wKiom1fWunGhBpUKAAAcwihX9iM416.png" target="_blank"></a>
cached(緩存):是指把讀取出來的資料儲存在記憶體當中,當再次讀取時,不用讀取硬碟而直接從記憶體當中讀取,加速了資料的讀取過程。
buffer(緩沖):是指在寫入資料時,先把分散的寫入操作儲存到記憶體當中,當達到一定程度再集中寫入硬碟,減少了磁盤碎片和硬碟的反複尋道,加速了資料的寫入過程。
2.建立分區并加id該為82
<a href="http://s4.51cto.com/wyfs02/M02/87/2D/wKioL1fWuonyPFoSAAIMU6bUAcs879.png" target="_blank"></a>
3.格式化
mkswap /dev/sdb6
<a href="http://s5.51cto.com/wyfs02/M01/87/2D/wKioL1fWuwTSHJIeAAAe6qzHQdg869.png" target="_blank"></a>
之前是1999M,現在是3027M
<a href="http://s1.51cto.com/wyfs02/M00/87/2D/wKioL1fWuxywBNFuAAAeXZNjH1c215.png" target="_blank"></a>
4.自動挂載
每次開機都需手動加入swap分區才可以,當然也可以使用/etc/fstab自動挂載
<a href="http://s1.51cto.com/wyfs02/M02/87/30/wKiom1fWuzTgq80kAABNBInRuWQ918.png" target="_blank"></a>
本文轉自 wt7315 51CTO部落格,原文連結:http://blog.51cto.com/wt7315/1852141