前面系列文章講解了VI編輯器、經常使用命令、防火牆及網絡服務管理,本篇將講解磁盤管理相關知識。node
本文將會介紹大量的Linux命令,其中有一部分在「linux入門系列5--新手必會的linux命令」一文中已經介紹,遺忘了或沒學習過的請自行查看。linux
磁盤管理主要涉及磁盤擴容以及磁盤配額管理,當服務器磁盤空間達到必定程度(我的認爲通常使用量佔到總容量的70-80%)就須要考慮新加磁盤實現擴容,通常操做步驟爲分區、格式化、掛載、驗證及使用。而磁盤配額主要是針對用戶設置其最大的磁盤空間使用量,防止當個用戶佔用磁盤過多的狀況。下面將在虛擬機中模擬磁盤的這些管理操做,生產環境中操做命令和方式都是同樣的。vim
在演示具體操做以前先了解一下相關的理論知識。windows
Linux系統中一切都是文件,既然是文件那就涉及文件的存儲以及文件的定位查找。centos
在windows系統中,咱們存儲文件通常是將磁盤劃分爲幾個不一樣的盤符(好比C、D、E、F等等),而後將資料存儲在不一樣的盤符下。查找的時候也是根據對應的盤符找到相應的存儲文件夾,進而找到對應的文件。服務器
可是在Linux下,狀況有些不同,一切文件都是從根目錄開始的,並不像windows同樣存在盤符的說法,而且Linux下的目錄名稱是嚴格區分大小寫的。網絡
文件在Linux中存儲是有必定規律的,它是按照文件系統層次化標準(FHS)採用樹形結構來存放文件,而且定義了常見的目錄的用途(也就是規定了什麼文件夾放什麼文件)。具體的樹形目錄結構與FHS規定的目錄用途參見系列第二篇文章「linux入門系列2--GUI基本操做及目錄結構」的Centos目錄結構部分,在此再也不贅述。架構
> 注意:FHS只是一個約定的標準並無強制要求某一類文件必定要放在指定的文件夾下,所以在接手一臺新服務器時須要注意,有的人可能並沒按這個標準來放置文件,須要靈活對待。固然強烈建議按FHS要求來對文件進行管理。app
文件是經過路徑來定位,分爲絕對路徑和相對路徑。async
絕對路徑是指從根目錄開始到文件或目錄,而相對路徑則是相對於當前路徑。
示例中假設當前路徑爲:/root/test/test1
[root@heimatengyun test1]# pwd /root/test/test1 [root@heimatengyun test1]# ls hello test [root@heimatengyun test1]# cat hello hello [root@heimatengyun test1]# cat /root/test/test1/hello hello [root@heimatengyun test1]#
在/root/test/test1目錄下有一個hello文件,其中「cat hello」命令是相對於當前路徑下的hello文件,而 「cat /root/test/test1/hello 」則是給出了完整的絕對路徑。經過相對路徑和絕對路徑均可以訪問到具體的文件。
相信你們必定熟悉windows下的快捷方式,尤爲是軟件的快捷方式。好比第一篇文章「linux入門系列1--環境準備及linux安裝」講解安裝虛擬機VMware時,相應的文件安裝在指定的盤符下,同時會在桌面和菜單中建立快捷方式,這樣每次啓動虛擬機只須要點擊桌面快捷方式便可,而無需每次找到對應的盤符,而後在進入目錄點擊相應的運行文件。
快捷方式的好處顯而易見,一樣Linux系統中也存在快捷方式,只是Linux中的快捷方式和Windows中的快捷方式有些區別。
Windows中額快捷方式是指向原始文件的一個鏈接文件,原文件一旦刪除或移動位置就會致使快捷方式的鏈接失效。可是在Linux中連接卻分爲兩種:軟連接和硬連接。
也稱爲符號鏈接(symbolic link),僅僅包含所連接文件的路徑名,能夠鏈接目錄文件,也能夠跨越文件系統進行連接。與Windows中的快捷方式相似,刪除原始文件後,連接文件將失效。
硬連接與原始文件是同一個文件,只是名字不一樣而已,每添加一個硬連接,該文件的inode鏈接數就會加1,而且只有當該文件的鏈接數爲0時纔算完全刪除文件。簡單說就是硬連接實際是指向原文件的指針,即使刪除原始文件,依然能夠經過硬連接文件來訪問。不能跨分區對目錄文件進行連接。
建立連接採用ln命令,語法格式爲:ln [選項] 目標文件 連接名稱
常見參數以下表,更多參數及用法請使用「man ln」命令查看。
參數 | 做用 |
---|---|
-s | symbolic,建立符號鏈接,若是不帶此參數默認建立硬連接 |
-f | force,強制建立文件或目錄的連接 |
-i | 覆蓋前先詢問 |
案例:
(1)建立軟連接並刪除原文件,驗證可否查看連接文件
[root@heimatengyun test]# mkdir testln [root@heimatengyun test]# cd testln/ [root@heimatengyun testln]# echo "symbolic link">slink [root@heimatengyun testln]# ln -s slink slink.ln [root@heimatengyun testln]# cat slink symbolic link [root@heimatengyun testln]# cat slink.ln symbolic link [root@heimatengyun testln]# ll total 4 -rw-r--r--. 1 root root 14 Dec 26 23:23 slink lrwxrwxrwx. 1 root root 5 Dec 26 23:24 slink.ln -> slink [root@heimatengyun testln]# rm -f slink [root@heimatengyun testln]# cat slink.ln cat: slink.ln: No such file or directory [root@heimatengyun testln]# ls slink.ln [root@heimatengyun testln]# rm slink.ln rm: remove symbolic link ‘slink.ln’? y [root@heimatengyun testln]# ls [root@heimatengyun testln]#
先建立testln文件夾,並切換到該文件夾下建立slink原始文件,而後建立slink文件的軟連接slink.ln。查看文件發現引用量爲1,而且連接文件會有箭頭標識。此時刪除原始文件slink,而後連接文件slink.lnye 也不能訪問。雖然文件不能訪問可是文件還存在,能夠手動刪除它。
(2)建立硬連接並刪除原文件,驗證可否查看連接文件
[root@heimatengyun testln]# ls [root@heimatengyun testln]# echo "hard link">hlink [root@heimatengyun testln]# ln hlink hlink.ln [root@heimatengyun testln]# cat hlink hard link [root@heimatengyun testln]# cat hlink.ln hard link [root@heimatengyun testln]# ll total 8 -rw-r--r--. 2 root root 10 Dec 26 23:30 hlink -rw-r--r--. 2 root root 10 Dec 26 23:30 hlink.ln [root@heimatengyun testln]# rm -f hlink [root@heimatengyun testln]# cat hlink.ln hard link [root@heimatengyun testln]# ll total 4 -rw-r--r--. 1 root root 10 Dec 26 23:30 hlink.ln
先建立hlink原始文件,而後hlink文件的硬連接hlin.ln文件,查看文件引用量顯示爲2,而且不會像軟鏈接同樣有箭頭標識。刪除原文件,連接文件依然能正常訪問,再次查看文件的應用量已經變爲1。
硬件設備在Linux中是以文件形式進行定義和管理,而文件須要命名規範,udev設備管理器在/dev/目錄下爲全部的設備定義了內核設備的名稱,它是當前Linux默認的設備管理工具,以守護進程的形式運行,經過偵聽內核發出來的uevent 來管理/dev目錄下的設備文件。經過命名規範目的是讓用戶經過設備文件的名字便可猜出設備大體的屬性以及分區信息等。
Linux系統中常見的硬件設備文件名稱以下:
硬件設備 | 文件名稱 |
---|---|
IDE設備 | /dev/hd[a-d] |
SCSI/SATA/U 盤 | /dev/sd[a-p] |
軟驅 | /dev/fd[0-1] |
打印機 | /dev/lp[0-15] |
光驅 | /dev/cdrom |
鼠標 | /dev/mouse |
磁帶機 | /dev/st0 或/dev/ht0 |
經常使用的也就SCSI/SATA硬盤或光驅,當進行磁盤擴容等空間管理時會用到磁盤設備,當安裝光盤鏡像時會用到光驅設備。
硬盤設備通常以「/dev/sd」開頭,而一臺主機上能夠有多塊硬盤,所以系統採用 a~p 來表明 16 塊不一樣的硬盤,默認從a開始分配。分區編號也有必定規則:主分區或擴展分區的編號從 1- 4 ,而邏輯分區從5開始編號。
假設一個設備文件名爲:/dev/sda5,咱們詳細分析下該設備文件名包含哪些信息?
/dev/目錄中保存的應當是硬件設備文件;sd 表示是存儲設備;a 表示 系統中同類接口中第一個被識別到的設備;5 表示這個設備是一個邏輯分區。一句話描述:這是系統中第一塊被識別到的硬件設備中分區編號爲5的邏輯分區的設備文件。
再來看一下另一個例子,查看本機掛載的磁盤設備
[root@heimatengyun ~]# df -h Filesystem Size Used Avail Use% Mounted on ...省略部份內容 /dev/sda1 497M 119M 379M 24% /boot
/dev/sda1表示這是系統中第一塊被識別到的硬件設備中分區編號爲1的主分區的設備文件。
文件系統的做用是合理規劃硬盤,用戶在硬件存儲設備中執行的文件創建、寫入、讀取、修改、轉存與控制等操做都是依 靠文件系統來完成的。
Linux系統支持數十種的文件系統,常見的有如下幾種:
文件系統 | 描述 |
---|---|
Ext3 | 是一款日誌文件系統,可以在系統異常宕機時避免文件系統資料丟失,並能 自動修復數據的不一致與錯誤。缺點是當硬盤容量很大時,修復時間長 |
Ext4 | 改進版的Ext3,是RHEL6默認的文件管理系統,存儲容量達到1EB,讀寫效率比Ext3極大的提升 |
XFS | 是一種高性能的日誌文件系統,是RHEL7默認的文件管理系統,優勢是意外宕機後恢復很是快,而且支持最大存儲容量爲18EB |
拿到一塊新的硬盤存儲設備後,須要先分區,而後再格 式化文件系統,最後才能掛載並正常使用。硬盤的分區操做取決於需求和硬盤大小,也能夠選擇不進行分區,可是必須對硬盤進行格式化處理。
剛說到Linux系統支持數十種文件系統,其實每種文件系統底層操做確定有不少區別,可是爲了讓用戶在讀取和寫入文件是不用關心底層的硬盤結構,Linux內核中的軟件層爲用戶程序提供 了一個VFS接口(Virtual File System),這個接口封裝了底層文件系統的特性和細節,這樣用戶實際上在操做文件時就是統一對這個VFS進行操做,從而沒必要關心每種文件系統的不一樣。
VFS架構示意圖以下:
相信你們都在windows上使用過移動硬盤或U盤,即插即用,無須其餘操做很是方便。但實際上windows實際上是悄悄幫咱們作了不少事情,才使得咱們能訪問新插入的設備。在Linux系統中當咱們拿到一塊全新的硬盤後,咱們須要先分區、格式化、而後纔是掛載使用。
此處提到的掛載其實就是當須要使用硬盤設備或分區中的數據時,先將其與一個已存在的目錄文件進行關聯的過程。掛載和取消掛載主要用到兩個命令:mount、umount。下面分別進行介紹。
語法:
mount [參數] 文件系統 掛載目錄
參數:
參數 | 做用 |
---|---|
-a | 掛載全部在/etc/fstab 中定義的文件系統 |
-t | 指定文件系統的類型 |
其中-a參數,它會在執行後自動檢查 /etc/fstab 文件中有無疏漏被掛載的設備文件,若是有,則進行自動掛載操做。而-t參數相對於較新的Linux系統來講無須指定,系統會自動進行判斷。
案例:
(1)把設備/dev/sdb2掛載到/test目錄
在 mount 命令中填寫設備與掛載目錄參數便可,系統會自動去判斷要掛載文件的類型。
[root@heimatengyun ~]# mount /dev/sdb2 /backup
> 說明:此處只是爲了說明mount命令的用法,實際上此時並無加入sdb第二塊硬件設備,所以若是馬上執行此命令可能不會成功。下一節「添加硬盤」實戰將完整演示如何將一塊新的磁盤設備掛載到系統中。
執行上邊mount命令後設備便可掛載成功,可是這是臨時的,當系統重啓後掛載就會失效,須要每次開機都手動掛載一下,這比較麻煩。咱們能夠經過將掛載信息按指定格式寫入/etc/fstab文件,這樣硬件設備就會在每次開機後自動進行關聯。
下面咱們研究下該fstab文件的內容和格式:
[root@heimatengyun ~]# cat /etc/fstab ...省略註釋部分 /dev/mapper/centos-root / xfs defaults 1 1 UUID=bfd83b27-ed2b-4770-8d17-9e5412f2be27 /boot xfs defaults 1 2 /dev/mapper/centos-swap swap swap defaults 0 0
能夠看到,其格式固定爲: 「設備文件 掛載目錄 格式類型 權限選項 是否備份 是否自檢」
各個自動含義以下表:
字段 | 含義 |
---|---|
設備文件 | 一 般 爲 設 備 的 路 徑 + 設 備 名 稱 , 也 可 以 寫 惟 一 識 別 碼 ( UUID , Universally Unique Identifier) |
掛載目錄 | 指定要掛載到的目錄,需在掛載前建立好 |
格式類型 | 指定文件系統的格式,好比 Ext三、Ext四、XFS、SWAP、iso9660(此爲光盤設備)等 |
權限選項 | 若設置爲 defaults,則默認權限爲:rw, suid, dev, exec, auto, nouser, async |
是否備份 | 若爲 1 則開機後使用 dump 進行磁盤備份,爲 0 則不備份 |
是否自檢 | 若爲 1 則開機後自動進行磁盤自檢,爲 0 則不自檢 |
學習fstab文件格式後,咱們即可以將上邊經過命令掛載的/dev/sdb2設備信息寫入fstab文件,使其永久生效。
假設文件系統類型爲ext4,保持默認全選無須開機自檢,則在fstab文件添加以下一行便可。
/dev/sdb2 /test ext4 defaults 0 0
umount 命令用於撤銷已經掛載的設備文件。掛載文件系統的目的是爲了使用硬件資源,而卸載文件系統就意味再也不使用硬件的設備資源。掛載操做就是把硬件設備與目錄進行關聯的動做,所以卸載操做只須要說明想要 取消關聯的設備文件或掛載目錄的其中一項便可。
語法:
umount [掛載點/設備文件]
案例:
假設卸載掉前邊掛載的/dev/sdb2設備,命令以下:
[root@heimatengyun ~]# umount /dev/sdb2
咱們使用du命令查看一個或多個文件佔用了多大的硬盤空間。
語法:
du [選項] [文件或目錄]
選項:
參數 | 做用 |
---|---|
-h | human-readable,已人類可讀的方式顯示單位(K、M、G等) |
-s | summarize,僅顯示後邊參數的總數 |
案例:
(1)使用du命令查看目錄大小
以我本機的test目錄爲例,其中有目錄有文件,以下圖:
[root@heimatengyun ~]# ll test/ total 104 -rw-rwxr--+ 1 root root 135 Dec 1 23:26 case.sh -rw-rwxr--+ 1 root root 219 Dec 2 23:57 function.sh -rw-rwxr--+ 1 root root 91 Dec 2 21:55 getsum.sh -rw-rwxr--+ 1 root root 85 Dec 2 21:48 greeting.sh -rwxrwxrwx+ 1 root root 53 Dec 1 09:22 hello.sh -rw-rwxr--+ 1 root root 186 Dec 1 23:11 if.sh -rwsrwxrwx+ 1 root root 145 Dec 1 16:06 mypid.sh -rw-rwxr--+ 1 root root 142 Dec 3 00:18 para.sh -rw-rwxr--+ 1 root root 338 Dec 1 16:00 pid.sh -rw-rwxr--+ 1 root root 99 Dec 1 15:22 sum.sh drwxrwxrwx+ 2 test test 29 Dec 20 14:52 test1 -rw-rwxr--+ 1 root root 9 Nov 30 20:43 test1.txt -rw-rwxr--+ 1 root root 0 Nov 30 15:34 test2.txt drwxr-xr-x. 2 root root 21 Dec 26 23:31 testln -rw-rwxr--+ 1 root root 139 Dec 2 23:55 while.sh
接下來,咱們看下不一樣參數的做用
[root@heimatengyun ~]# du test/ 20 test/test1 4 test/testln 132 test/ [root@heimatengyun ~]# du -s test/ 132 test/ [root@heimatengyun ~]# du -sh test/ 132K test/
經過以上案例,咱們能夠看到,僅僅能夠看到test目錄下的一級目錄大小,若是加-s參數則僅僅能看到自身目錄大小,若是加-h參數則能夠看到添加了單位k。
如何查看目錄下全部內容呢?
(2)查看目錄包括文件和目錄的全部內容的大小
[root@heimatengyun ~]# du test/* 8 test/case.sh 8 test/function.sh 8 test/getsum.sh 8 test/greeting.sh 8 test/hello.sh 8 test/if.sh 8 test/mypid.sh 8 test/para.sh 8 test/pid.sh 8 test/sum.sh 20 test/test1 8 test/test1.txt 4 test/test2.txt 4 test/testln 8 test/while.sh [root@heimatengyun ~]# du -s test/* 8 test/case.sh 8 test/function.sh 8 test/getsum.sh 8 test/greeting.sh 8 test/hello.sh 8 test/if.sh 8 test/mypid.sh 8 test/para.sh 8 test/pid.sh 8 test/sum.sh 20 test/test1 8 test/test1.txt 4 test/test2.txt 4 test/testln 8 test/while.sh [root@heimatengyun ~]# du -sh test/* 8.0K test/case.sh 8.0K test/function.sh 8.0K test/getsum.sh 8.0K test/greeting.sh 8.0K test/hello.sh 8.0K test/if.sh 8.0K test/mypid.sh 8.0K test/para.sh 8.0K test/pid.sh 8.0K test/sum.sh 20K test/test1 8.0K test/test1.txt 4.0K test/test2.txt 4.0K test/testln 8.0K test/while.sh [root@heimatengyun ~]#
對比以上三個命令能夠看出,若是命令後用*表示查看全部內容,那麼-s參數將失去意義,加與不加此參數效果都同樣。
df命令用戶查磁盤的掛載信息及空間佔用狀況。
語法:
df [參數] [目錄]
經常使用參數:
參數 | 做用 |
---|---|
-a | all,顯示全部文件,包括虛擬文件系統 |
-h | human-readable,以人類可讀的方式大小,好比單位K,M,G等 |
案例:
(1)查看指定目錄掛載狀態及佔用的磁盤空間
[root@heimatengyun ~]# df -h /newDisk/ Filesystem Size Used Avail Use% Mounted on /dev/sdb1 2.0G 33M 2.0G 2% /newDisk
(2)查看全部一級目錄佔用空間大小
[root@heimatengyun ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 18G 3.7G 14G 21% / devtmpfs 905M 0 905M 0% /dev tmpfs 914M 80K 914M 1% /dev/shm tmpfs 914M 8.9M 905M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sdb1 2.0G 33M 2.0G 2% /newDisk /dev/sda1 497M 119M 379M 24% /boot
若是加-a參數,則顯示全部的目錄
[root@heimatengyun ~]# df -ah Filesystem Size Used Avail Use% Mounted on rootfs 18G 3.7G 14G 21% / proc 0 0 0 - /proc sysfs 0 0 0 - /sys devtmpfs 905M 0 905M 0% /dev ...省略部份內容
具體參數能夠經過man命令查看,並多多練習查看不一樣參數的不一樣結果。
經過前面的學習,咱們已經具有磁盤管理的能力,所以本節將模擬真實生產環境中對服務器添加磁盤設備進行擴容管理。
總體步驟爲:在虛擬機中模擬添加入一塊新的硬盤存儲設備、分區、格 式化、掛載、檢查系統的掛載狀態、真實使用硬盤驗證是否成功添加。
此過程咱們在虛擬機中模擬添加一塊新的磁盤設備。
確保關閉虛擬機後,咱們在虛擬機管理主界面單擊「編輯虛擬機設置」選項
在彈出框中單擊「添加按鈕」
選擇硬件類型爲「磁盤」
點擊「下一步」按鈕,在新彈出的對話框中,保持默認的磁盤類型爲SCSI
點擊「下一步」按鈕,在新彈出對話中中保持默認的「建立新的虛擬磁盤」
單擊「下一步」按鈕,在新彈出的界面中保持默認的容量便可
單擊「下一步」按鈕,在新界面中選擇磁盤文件的保存位置,也能夠保持默認便可。
點擊「完成」按鈕,將返回虛擬機設置界面,並在此界面中能夠看到剛纔新添加的磁盤。
單擊「肯定」按鈕,磁盤添加完成,並在虛擬機管理主界面中也能夠看到剛纔添加的新磁盤。
根據前面講解的物理設備命名規則,咱們大膽猜測設備名稱應該爲sdb,表示是第二塊識別到的磁盤。後邊的步驟中,咱們將驗證這個猜測的正確性。
正式分區以前,先介紹一下Linux的磁盤分區命令fdisk,它提供了集添加、刪除、轉換分區等功能於一身的全套服務。
語法:fdisk [磁盤名稱]
fdisk提供了交互式的參數,能夠根據需求動態調整,常見參數以下:
參數 | 做用 |
---|---|
m | 查看所有可用的參數 |
n | 添加新的分區 |
d | 刪除某個分區信息 |
l | 列出全部可用的分區類型,全部磁盤信息包括未加載磁盤 |
t | 改變某個分區的類型 |
p | 查看分區信息 |
w | 保存並退出 |
q | 不保存直接退出 |
除了fdisk以外,再介紹一個命令lsblk,這個命令能夠列出全部可用塊設備的信息,並且還能顯示他們之間的依賴關係。
學會fdisk和lsblk命令以後,咱們先查看一下第一步新添加的磁盤信息(找出尚未分區的設備)。
可使用fdisk -l 命令查看,結果以下:
[root@heimatengyun ~]# fdisk -l Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes ...省略部份內容
也能夠經過lsblk命令查看,結果以下:
[root@heimatengyun ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 19.5G 0 part ├─centos-swap 253:0 0 2G 0 lvm [SWAP] └─centos-root 253:1 0 17.5G 0 lvm / sdb 8:16 0 20G 0 disk sr0 11:0 1 3.9G 0 rom
能夠看到設備名稱爲sdb,跟咱們前面猜測的設備名稱吻合。
使用fdisk命令管理/dev/sdb硬盤設備
經過參數p查看硬盤設備已有的分區信息,能夠看到硬盤的容量大小、扇區個數等信息:
[root@heimatengyun ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xf69cc7c1. Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xf69cc7c1 Device Boot Start End Blocks Id System
經過n參數添加新分區,接下來會提示建立主分區(p)仍是擴展分區(e),咱們用參數p建立主分區:
Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p
接下來會讓輸入主分區編號,咱們採用默認1,接下來會提示輸入扇區的起始位置,咱們保持默認直接按回車鍵,系統會自動幫咱們計算最靠前的空閒扇區位置。隨後提示咱們輸入扇區結束位置,咱們直接輸入+2G便可:
Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G Partition 1 of type Linux and of size 2 GiB is set
> 這個扇區結束位置實際上是定義整個分區的大小,咱們無需計算扇區的個數,直接輸入+2g便可建立一個容量爲2GB的硬盤分區。
接下來咱們再次用p參數查看剛纔的分區信息:
Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xf69cc7c1 Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 83 Linux
這樣咱們就能夠看到名稱爲/dev/sdb1的主分區信息了,能夠看到它的起始扇區位置爲2048,結束扇區位置爲4196351。
此時經過w參數保存並回車:
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
這樣分區信息就寫入成功,能夠經過前文講解的fdisk -l命令或lsblk命令查看硬件設備的分區信息。
通過上面的一些列操做以後,Linux 系統會自動把這個硬盤主分區抽象成/dev/sdb1設備文件。下面咱們就經過file命令進行查看該設備文件。
能夠經過file命令查看文件該分區設備文件。在查看以前,咱們先學習如下file命令
語法格式:file [參數選項] 目錄或文件
做用:辨識文件類型
明確語法格式以後,咱們用file命令查看剛纔的分區文件/dev/sdb1設備文件類型
[root@heimatengyun ~]# file /dev/sdb1 /dev/sdb1: block special
因而可知,剛纔添加分區的操做已經成功了。
> 注意:有時候系統並無自動把分區信息同步給Linux內核,所以執行上邊語句時可能獲得的結果爲:/dev/sdb1: cannot open (No such file or directory)。若是出現這種狀況須要手動執行partprobe命令將分區信息同步到內核中,而且建議是連續執行兩次partprobe命令。若是執行二次仍是無效,能夠直接重啓計算機,重啓以後就能夠了。
確認分區設備文件成功以後,咱們在補充下file命令的案例:
[root@heimatengyun ~]# file test/ test/: directory [root@heimatengyun ~]# file test/test1.txt test/test1.txt: ASCII text
能夠看到file命令能夠方便的查看出目錄或文件的類型。
分區建立成功,接下來就要格式化磁盤。
若是硬件存儲設備沒有進行格式化,Linux 系統沒法得知怎麼在其上寫入數據。Linux中用於磁盤格式化的命令爲mkfs。
語法格式:mkfs.文件系統類型 設備分區文件
咱們經過命令補齊命令能夠查看到mkfs命令根據系統類型分爲不一樣的命令:
[root@heimatengyun ~]# mkfs mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
瞭解mkfs命令以後,咱們使用xfs文件類型將以前建立的分區/dev/sdb1進行格式化:
[root@heimatengyun ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=256 agcount=4, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=524288, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
這樣就完成了分區的格式,接下來對文件進行掛載後就可使用設備了。
掛載磁盤使用以前講解的mount命令,須要先建立一個掛載點目錄。
[root@heimatengyun ~]# mkdir /newDisk [root@heimatengyun ~]# mount /dev/sdb1 /newDisk/ [root@heimatengyun ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 18G 3.7G 14G 21% / devtmpfs 905M 0 905M 0% /dev tmpfs 914M 80K 914M 1% /dev/shm tmpfs 914M 8.9M 905M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sda1 497M 119M 379M 24% /boot /dev/sdb1 2.0G 33M 2.0G 2% /newDisk
掛載成功後,經過df -h命令便可查看到已經掛載的設備。
接下來就可使用新加的磁盤設備了。
切換到新加設備所在的目錄,添加文件並查看文件及其佔用的大小:
[root@heimatengyun ~]# cd /newDisk/ [root@heimatengyun newDisk]# echo 'test'>test.txt [root@heimatengyun newDisk]# ll total 4 -rw-r--r--. 1 root root 5 Dec 28 18:57 test.txt [root@heimatengyun newDisk]# du -sh /newDisk/ 4.0K /newDisk/
能夠看到文件建立成功。
接下來使用df -h命令查看掛載狀態和硬盤使用量:
[root@heimatengyun ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 18G 3.7G 14G 21% / devtmpfs 905M 0 905M 0% /dev tmpfs 914M 80K 914M 1% /dev/shm tmpfs 914M 8.9M 905M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sdb1 2.0G 33M 2.0G 2% /newDisk /dev/sda1 497M 119M 379M 24% /boot
能夠看到磁盤掛載成功,至此,說明新掛載的文件沒有任何問題,能夠正常使用。
到目前爲止磁盤能夠正常使用了,可是正如前面提到的mount命令掛載的設備須要寫入fstab文件才能永久生效,所以咱們編輯fstab文件將掛載信息寫入:
[root@heimatengyun newDisk]# vi /etc/fstab ...省略部份內容,添加如下一行便可 /dev/sdb1 /newDisk xfs defaults 0 0
這樣就完成了新磁盤設備添加。
交換分區(SWAP)是在硬盤中預先劃分必定的空間,當真實物理內存不夠用時,將內存中暫時不經常使用的數據臨時放到硬盤中,以便騰出物理內存空間讓更活躍的程序服務來使用的技術。
可是須要注意的是,畢竟硬盤的讀寫速度確定比內存man,因此也只有當真實物理內存耗盡後纔會調用交換分區的資源。
交換分區的建立過程與掛載過程基本一致,前面添加的設備總大小爲20G,/dev/sdb掛載使用了2G,此處添加一個4G的主分區做爲交換分區,過程以下:
[root@heimatengyun ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (2-4, default 2): First sector (4196352-41943039, default 4196352): Using default value 4196352 Last sector, +sectors or +size{K,M,G} (4196352-41943039, default 41943039): +4G Partition 2 of type Linux and of size 4 GiB is set Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xf69cc7c1 Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 83 Linux /dev/sdb2 4196352 12584959 4194304 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@heimatengyun ~]#
交換分區格式化使用的命令與產品分區格式化有點區別,使用的是mkswap命令
[root@heimatengyun ~]# mkswap /dev/sdb2 /dev/sdb2: No such file or directory [root@heimatengyun ~]# partprobe
若是遇到上述狀況,須要執行partprobe或重啓便可
[root@heimatengyun ~]# mkswap /dev/sdb2 Setting up swapspace version 1, size = 4194300 KiB no label, UUID=ef101e7c-e17d-42b7-8124-bed7c27a08e0
掛載SWAP分區使用的是swapon命令,注意普通分區使用mount。
先使用free 命令查看下交互分區的大小,而後再用swapon命令掛載SWAP分區設備,再次對比查看分區大小的變化:
[root@heimatengyun ~]# free -m total used free shared buffers cached Mem: 1826 605 1221 8 1 219 -/+ buffers/cache: 383 1443 Swap: 2047 0 2047 [root@heimatengyun ~]# swapon /dev/sdb2 [root@heimatengyun ~]# free -m total used free shared buffers cached Mem: 1826 608 1218 8 1 219 -/+ buffers/cache: 386 1440 Swap: 6143 0 6143
能夠看到,掛載後SWAP交換分區變大了,說明掛載成功。
與普通分區掛載同樣,也須要將配置信息寫入fstab文件使其開啓自動掛載,在fstab文件加入最後一行,注意文件系統各種型爲swap。
[root@heimatengyun ~]# vim /etc/fstab ...省略部份內容 /dev/sdb1 /newDisk xfs defaults 0 0 /dev/sdb2 swap swap defaults 0 0
這樣交換分區也就添加成功。
前文提到過,Linux系統是多用戶多任務操做系統,這就意味着可能有不少用戶同時在使用該操做系統。
可是服務器硬件資源是有限的,咱們須要經過磁盤容量配額服務來限制某位用戶或某個用戶組針對特定文件夾可使用的 最大硬盤空間或最大文件個數,一旦達到這個最大值就再也不容許繼續使用。
磁盤容量配額功能經過quota命令實現,分爲軟限制和硬限制,當達到軟限制時提示用戶但仍可使用,直到達到硬配額爲止;而達到硬限制則直接不容許用戶在繼續使用。
RHEL7已經安裝quota 磁盤容量配額服務程序包,但存儲設備默認沒有開啓對quota 的支持,須要手動編輯/etc/fstab配置文件。
在fstab配置文件中的掛載目錄/boot中添加uquota參數使其支持磁盤配額功能。
[root@heimatengyun ~]# vim /etc/fstab ...省略部份內容 UUID=bfd83b27-ed2b-4770-8d17-9e5412f2be27 /boot xfs defaults,uquota 1 2 ...省略部份內容
重啓系統,查看是否生效
[root@heimatengyun ~]# reboot [root@heimatengyun ~]# mount |grep boot /dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)
能夠看到包含了usrquota代表已經生效。
xfs_quota命令是一個專門針對XFS文件系統來管理quota磁盤容量配額服務而設計的命令。咱們先了解一下xfs_quota命令的基本用法。
語法:
xfs_quota [參數] 配額 文件系統
參數:
參數 | 做用 |
---|---|
-x | 專家模式,能夠對quota服務進行更多複雜的配置 |
-c | 於以參數的形式設置要執行的命令 |
接下來咱們使用 xfs_quota 命令來設置用戶對/boot 目錄的 quota 磁盤容量配額。
(1)先建立一個普通用戶:testquota,並對/boot目錄添加其餘人寫入的權限,保證用戶能正常寫入數據:
[root@heimatengyun ~]# useradd testquota [root@heimatengyun ~]# chmod -Rf o+w /boot/
(2)限制testquota用戶磁盤使用量和建立文件的大小
具體的限額控制包括:硬盤使用量的軟限制和硬限制分別爲1MB 和3MB;建立文件數量的軟限制和硬限制分別爲2個和4個。
建立磁盤配額並查看設置是否成功:
[root@heimatengyun ~]# xfs_quota -x -c 'limit bsoft=1m bhard=3m isoft=2 ihard=4 testquota' /boot/ [root@heimatengyun ~]# xfs_quota -x -c report /boot/ User quota on /boot (/dev/sda1) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 95328 0 0 00 [--------] testquota 0 1024 3072 00 [--------]
建立成功後,切換到普通用戶並分別建立一個2M和4M的文件。(選擇2M的目的是恰好超過最小配額但又沒超過最大配額,而選擇4M則是超過了最大配額,這樣就能模擬出磁盤配額的效果)
[root@heimatengyun ~]# su - testquota [testquota@heimatengyun ~]$ dd if=/dev/zero of=/boot/testquota bs=2M count=1 1+0 records in 1+0 records out 2097152 bytes (2.1 MB) copied, 0.00166952 s, 1.3 GB/s [testquota@heimatengyun ~]$ dd if=/dev/zero of=/boot/testquota bs=4M count=1 dd: error writing ‘/boot/testquota’: Disk quota exceeded 1+0 records in 0+0 records out 3145728 bytes (3.1 MB) copied, 0.00411569 s, 764 MB/s [testquota@heimatengyun ~]$ ll /boot/testquota -rw-rw-r--. 1 testquota testquota 3145728 Dec 28 21:07 /boot/testquota [testquota@heimatengyun ~]$ exit logout
能夠看到2M的文件建立成功,可是4M的文件提示失敗了,說明針對用戶的磁盤配額生效了。
edquota 命令用於編輯用戶的 quota 配額限制,在爲用 戶設置了quota 磁盤容量配額限制後,可使用edquota命令按需修改限額的數值。
語法:
edquota [參數] [用戶]
參數:
參數 | 做用 |
---|---|
-u | 要針對哪一個用戶進行設置 |
-g | 要針對哪一個用戶組進行設置 |
edquota 命令會調用 Vi編輯器來讓 root 管理員修改要限制的具體細節。下面把 testquota用戶的硬盤使用量的硬限額從5M提高到8M:
[root@heimatengyun ~]# edquota -u testquota Disk quotas for user testquota (uid 1002): Filesystem blocks soft hard inodes soft hard /dev/sda1 3072 1024 3072 1 2 4
修改並保存便可。
本文介紹了Centos7系統中基本的磁盤管理技術,下一篇將講解更高級一點的磁盤陣列RAID及LVM技術。