一切從“/”開始
在Linux系統中,目錄、字符設備、塊設備、套接字、打印機等都被抽象成了文件,一切皆為件
與windows操作系統不同,Linux系統內不存在C/D/E/F盤等,一切文件都是從根(/)目錄開始的
Linux系統中按照文件系統層次化標準(FHS)采用樹形結構存放文件,以及定義了常見目錄的用途
Linux系統中的文件和目錄名稱是嚴格區分大小寫的,文件名稱不能包含斜杠(/)
Linux系統的文件存儲結構
?前面提到的FHS是根據以往無數Linux系統用戶和開發者的經驗而總結出來的,是用戶在Linux系統中存儲文件時需要遵守的規則,用于指導我們應該把文件保存在什么位置,以及告訴用戶應該在何處找到所需的文件
Linux系統中常見的目錄名稱以及相應內容
目錄名稱 | 應放置文件的內容 |
/boot | 開機所需的文件——內核、開機菜單以及所需配置文件等 |
/dev | 以文件形式存放任何設備與接口 |
/etc | 配置文件 |
/home | 用戶家目錄 |
/bin | 存放單用戶模式下還可以操作的命令 |
/lib | 開機時用到的函數庫,以及/bin與/sbin下面的命令需要調用的函數 |
/sbin | 開機過程中需要的命令 |
/media | 用于掛載設備文件的目錄 |
/opt | 放置第三方軟件 |
/root | 系統管理員的家目錄 |
/srv | 一些網絡服務的數據文件目錄 |
/tmp | 任何人均可使用的“共享”臨時目錄 |
/proc | 虛擬文件系統,例如系統內核、進程、外部設備及網絡狀態等 |
/usr/local | 用戶自行安裝的軟件 |
/usr/sbin | Linux系統開機時不會使用到的軟件/命令/腳本 |
/usr/share | 幫助與說明文件,也可放置共享文件 |
/var | 主要存放經常變化的文件 |
/lost+found | 當文件系統發生錯誤時,將一些丟失的文件片段存放在這里 |
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 |
現在的IDE設備很少見了,所以一般的硬盤設備都會是以“/dev/sd”開頭的。
一臺主機上可以有多塊硬盤,因此采用a~p來代表16塊不同的硬盤(默認從a開始分配)
硬盤的分區編號也有規則:
①主分區或擴展分區的編號從1開始,到4結束
②邏輯分區從編號5開始
首先,/dev/目錄中保存的應當是硬件設備文件;其次,sd表示是存儲設備;然后,a表示系統中同類接口中第一個被識別到設備,最后,5表示這個設備是一個邏輯分區。
所謂擴展分區,嚴格上講它不是一個實際意義的分區,它僅僅是一個指向下一個分區的指針,這種指針結構將形成一個單向鏈表
硬盤分區的規劃
文件系統
最常見的文件系統如下:
Ext3:是一款日志文件系統,能夠在系統異常死機時避免文件系統資料丟失,并能自動修復數據的不一致與錯誤
Ext4:Ext3的升級版,作為RHEL6系統中的默認文件管理系統,它支持的存儲容量高達1EB,且能夠有無限多的子目錄。另外,Ext4文件系統能夠批量分配block塊,從而極大地提高了讀寫效率
XFS:是一種高性能的日志文件系統,而且是RHEL7中默認的文件管理系統,它的優勢在發生意外死機后尤其明顯,即可以快速地恢復可能被破壞的文件,而且強大的日志功能只用花費極地的計算和存儲性能。最大可支持的存儲容量為18EB
掛載硬件設備
mount命令
mount命令用于掛載文件系統
格式為:mount 【文件系統】 掛載目錄
mount命令中可用的參數
參數 | 作用 |
-a | 掛載所有在/etc/fstab中定義的文件系統 |
-t | 指定文件系統的類型 |
掛載是在使用硬件設備前所執行的最后一步操作
只需要用mount命令把硬盤設備或分區與一個目錄文件進行關聯,然后就能在這個目錄中看到硬件設備中的數據了
對于比較新的Linux系統來講,一般不需要使用-t參數來指定文件系統的類型,Linux系統會自動進行判斷。
而mount命令中的-a參數,它會在執行后自動檢查/etc/fstab文件中有無疏漏被掛載的設備文件,如果有,則自動掛載操作
umount命令
umount命令用于撤銷已經掛載的設備文件
格式為:umount 【掛載點/設備文件】
添加硬盤設備
fdisk命令
在Linux系統中,管理硬盤設備最常用的方法當屬fdisk命令
格式為:fdisk 【磁盤名稱】
fdisk命令中的參數及其作用
參數 | 作用 |
-m | 查看全部可用的參數 |
-n | 添加新的分區 |
-d | 刪除某個分區的信息 |
-l | 列出所有可用的分區類型 |
-t | 改變某個分區的類型 |
-p | 查看分區信息 |
-w | 保存并退出 |
-q | 不保存直接退出 |
我們先使用熟悉一下fdisk命令
fdisk -l?
fdisk /dev/nvme0n2? 分區
?我們輸入m,查看幫助
?輸入參數n嘗試添加新的分區。系統會要求您是選擇繼續輸入參數p,還是輸入參數e來創建擴展分區。我們這里輸入參數p來創建一個主分區。
在確認創建一個分區后,系統要求您先輸入主分區的編號。
主分區的編號:1-4
因此這里輸入默認的1就行了,不輸入任何數字,系統自動選擇默認值
接下來系統會提示定義起始的扇區位置,這不需要改動,我們直接回車鍵默認即可,系統會自動算出最靠前的空閑扇區的位置
最后,系統會要求定義分區的結束扇區,這其實就是要去定義整個分區的大小是多少
我們再次使用參數p來查看硬件設備中的分區信息
?我們設置好了以后,千萬記得輸入w參數進行保存
在上述步驟完成后,Linux系統會自動把這個硬盤主分區抽象成文件
我們可用file命令查看該文件的屬性
如果沒有同步的話可用使用partprobe手動同步到內核,輸入幾次后還沒同步,就重啟把
如果硬件存儲設備沒有進行格式化,則Linux系統無法得知這么在其上寫入數據。因此,在對存儲設備進行分區后還需進行格式化。
在Linux系統中用于格式化操作的命令是:mkfs
格式:mkfs.文件類型名稱? 硬盤文件
簡單掛載一下
du命令
既然存儲設備已經順利掛載,接下來就可嘗試通過掛載點目錄向存儲設備中寫入文件了
在寫入文件之前,先介紹用于查看文件數據占用量的du命令
格式為:du 【選項】【文件】
簡單來說就是查看硬盤空間的情況
我們先cp一些文件放入掛載目錄
命令行掛載后,設備文件會在下一次重啟的時候失效。如果想讓這個設備文件的掛載永久有效,則需要把掛載的信息寫入配置文件
?添加交換分區
SWAP(交換)分區是一種通過在硬盤中預先劃分一定發空間,然后將把內存中暫時不常用的數據臨時存放在硬盤中,以便騰出物理內存空間讓更活躍的程序服務來使用技術,其設計目的是為了解決真實物理內存不足的情況。但由于交換分區畢竟是通過硬盤設備讀寫數據的,速度肯定要比物理內存慢,所以只有當真實物理內存耗盡后才會調用交換分區的資源。
交換分區的建立與掛載并使用存儲設備的過程很像
在生產環境中:交換分區的大小一般是真實物理內存的1.5-2倍
使用SWAP分區專用的格式化命令? mkswap ,對新建的主分區進行格式化操作:
使用swapon命令把準備好的SWAP分區設備正式掛載到系統中。
我們可用free -m命令查看交換分區的大小
?為了能夠讓新的交換分區設備在重啟后依然生效,需要按照下面的格式將相關的信息寫入到配置文件中去,記得保存:
?磁盤容量配額
硬件資源是固定的有限的,如果某些用戶一直在Linux系統上創建文件或者存放電影,硬盤空間總有一天會被占滿。針對這種情況。root管理員就需要使用磁盤容量配額服務來限制某個用戶或者某個用戶組針對特定文件夾可使用的最大硬盤空間或最大文件個數,一旦達到這個最大值就不再允許繼續使用。
可用使用quota命令來進行管理,從而限制用戶的硬盤可用容量或所能創建的最大文件個數。
quora命令有兩種功能:
①軟限制:當達到軟限制時會提示用戶,但仍允許用戶在限定的額度內繼續使用
②硬限制:當達到硬限制時會提示用戶,且強制終止用戶的操作
reboot之后
?接下來創建一個用于檢查quota磁盤容量配額效果的用戶tom,并針對/boot目錄增加其他人的寫權限,保證用戶能夠正常寫入數據:
xfs-quota命令
xfs-quota命令是專門針對XFS文件系統來管理quota磁盤容量配額服務而設計的命令
格式: xfs-quota 【參數】配額 文件系統
當配置好上述的各種軟硬限制后,嘗試切換到這個普通用戶,然后分別嘗試創建一個體積為5MB和8MB的文件,可發現,在創建8MB的文件時受到了限制:
edquota命令
edquota命令用于編輯用戶的quota配額限制
格式為:edquota 【參數】【用戶】
在用戶設置了quota磁盤配額限制后,可用使用edquota命令按需修改限額的數值
其中
-u 參數表示要針對那個用戶
-g 參數表示要針對那個用戶組
edquota命令會調用Vi或Vim編輯器來讓root管理員修改要限制的具體細節
下面我們把tom的限額從5提到8MB
?軟硬方式鏈接
鏈接就像windows系統中的快捷方式一樣
①硬鏈接:硬鏈接文件與原始文件其實是同一個文件,只是名字不一樣。我們每添加一個硬鏈接,該文件的inode連接數就會加1,而且只有當該文件inode連接數為0時,才能徹底刪除它。
②軟鏈接(符號鏈接):僅僅包含所鏈接文件的路徑名,因此能鏈接目錄。也可用跨越文件系統進行鏈接,但是,當原始文件刪除后,鏈接文件也將失效。這點和windows上的快捷方式一樣的性質。
ln命令
ln命令用于創建鏈接文件
格式為:ln 【選項】目標
Usage: ln [OPTION]... [-T] TARGET LINK_NAMEor: ln [OPTION]... TARGETor: ln [OPTION]... TARGET... DIRECTORYor: ln [OPTION]... -t DIRECTORY TARGET...
In the 1st form, create a link to TARGET with the name LINK_NAME.
In the 2nd form, create a link to TARGET in the current directory.
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
Create hard links by default, symbolic links with --symbolic.
By default, each destination (name of new link) should not already exist.
When creating hard links, each TARGET must exist. Symbolic links
can hold arbitrary text; if later resolved, a relative link is
interpreted in relation to its parent directory.必選參數對長短選項同時適用。--backup[=CONTROL] 為每個已存在的目標文件創建備份文件-b 類似--backup,但不接受任何參數-d, -F, --directory 創建指向目錄的硬鏈接(只適用于超級用戶)-f, --force 強行刪除任何已存在的目標文件-i, --interactive prompt whether to remove destinations-L, --logical dereference TARGETs that are symbolic links-n, --no-dereference treat LINK_NAME as a normal file ifit is a symbolic link to a directory-P, --physical make hard links directly to symbolic links-r, --relative create symbolic links relative to link location-s, --symbolic make symbolic links instead of hard links-S, --suffix=SUFFIX override the usual backup suffix-t, --target-directory=DIRECTORY specify the DIRECTORY in which to createthe links-T, --no-target-directory treat LINK_NAME as a normal file always-v, --verbose print name of each linked file--help 顯示此幫助信息并退出--version 顯示版本信息并退出The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values:none, off 不進行備份(即使使用了--backup 選項)numbered, t 備份文件加上數字進行排序existing, nil 若有數字的備份文件已經存在則使用數字,否則使用普通方式備份simple, never 永遠使用普通方式備份Using -s ignores -L and -P. Otherwise, the last option specified controls
behavior when a TARGET is a symbolic link, defaulting to -P.GNU coreutils 在線幫助:<https://www.gnu.org/software/coreutils/>
請向 <http://translationproject.org/team/zh_CN.html> 報告 ln 的翻譯錯誤
完整文檔請見:<https://www.gnu.org/software/coreutils/ln>
?
?
?
?
?