從"/"開始
目錄名稱嚴(yán)格區(qū)分大小寫
-
主要常見目錄的定義
/boot 開機(jī)所需文件——內(nèi)核,開機(jī)菜單及所需配置文件等 /dev 任何設(shè)備與接口都以文件形式存放在此目錄 /etc 配置文件 /home 用戶主目錄 /bin 單用戶維護(hù)模式下還能夠被操作的命令 /lib 開機(jī)時(shí)用到的函數(shù)庫及/bin與/sbin下面命令要調(diào)用的函數(shù) /sbin 開機(jī)過程中需要的 /media 一般掛載或刪除的設(shè)備 /opt 放置第三方的軟件 /root 系統(tǒng)管理員的主文件夾 /srv 一些網(wǎng)絡(luò)服務(wù)的數(shù)據(jù)目錄 /tmp 任何人均可使用的“共享”臨時(shí)目錄 /proc 虛擬文件系統(tǒng),例如系統(tǒng)內(nèi)核,進(jìn)程落萎,外部設(shè)備及網(wǎng)絡(luò)狀態(tài)等 /usr/local 用戶自行安裝的軟件 /usr/sbin 非系統(tǒng)開機(jī)時(shí)需要的軟件/命令/腳本 /usr/share 幫助與說明文件术羔,也可放置共享文件。 /var 主要存放經(jīng)常變化的文件,如日志。 /lost+found 當(dāng)文件系統(tǒng)發(fā)生錯(cuò)誤時(shí),將一些丟失的文件片段存放在這里
物理設(shè)備命名
硬盤由大量的扇區(qū)組成式散,其中第一個(gè)扇區(qū)保存著主引導(dǎo)記錄與分區(qū)表信息,單個(gè)扇區(qū)為512b,其中主引導(dǎo)要占446b,每記錄一個(gè)分區(qū)要 16b,所有最多只能有4個(gè)主分區(qū)打颤,但是可以是3個(gè)主分區(qū)加一個(gè)擴(kuò)展分區(qū)暴拄,而這個(gè)擴(kuò)展分區(qū)又可以分為無數(shù)個(gè)邏輯分區(qū),就可以用邏輯分區(qū)來 完成多分區(qū)的需求了编饺。
Linux系統(tǒng)中一切都是文件乖篷,那么硬件也不外乎。既然是文件就必須有名稱啦透且,系統(tǒng)內(nèi)核的設(shè)備管理器(Udev)會(huì)自動(dòng)將硬件名稱規(guī)范起來撕蔼,讓我們可以通過設(shè)備名稱猜出設(shè)備大致的屬性以及分區(qū)信息等,Udev會(huì)一直以守護(hù)進(jìn)程的形式運(yùn)行并偵聽來自內(nèi)核發(fā)出的uevent來管理/dev目錄下的設(shè)備文件
-
常見的設(shè)備命名方法
IDE設(shè)備 /dev/hd[a-d] SCSI/SATA/U盤 /dev/sd[a-p] 軟驅(qū) /dev/fd[0-1] 打印機(jī) /dev/lp[0-15] 光驅(qū) /dev/cdrom 鼠標(biāo) /dev/mouse 磁帶機(jī) /dev/st0或/dev/ht0(IDE設(shè)備)
而一臺(tái)主機(jī)上可以有多塊硬盤秽誊,系統(tǒng)便會(huì)用a-p來代表16塊不同的硬盤(默認(rèn)從a開始分配)且分區(qū)編號(hào)也很有講究.主分區(qū)編號(hào)從1開始至4結(jié)束鲸沮,按順序(也可指定分配數(shù)字)。邏輯分區(qū)從編號(hào)5開始按順序(也可指定分配數(shù)字)
-
示例:/dev/sda5
- 首先/dev目錄下的都是硬件锅论。
- 其次sd開頭的是存儲(chǔ)設(shè)備讼溺。
- 然后a代表第一個(gè)被識(shí)別到的設(shè)備。
- 最后5代表它是邏輯分區(qū)最易。
- 簡(jiǎn)單來講:"這是第一塊硬盤設(shè)備中編號(hào)為5的邏輯分區(qū)"
文件系統(tǒng)與數(shù)據(jù)資料
常見的文件系統(tǒng)怒坯,Ext3, Ext4, XFS
-
因?yàn)橛脖P要保存的數(shù)據(jù)實(shí)在太多了,所以一定要有個(gè)叫super block的"硬盤地圖"并在上面記錄著整個(gè)文件系統(tǒng)的信息藻懒,但絕不可能把數(shù)據(jù)直接寫到這個(gè)大地圖中剔猿,因?yàn)檫@樣的話會(huì)導(dǎo)致它"很大",查詢與寫入速度會(huì)變得非常慢嬉荆,于是每個(gè)文件的權(quán)限與屬性都會(huì)記錄在inode table中(每個(gè)文件都會(huì)占用一個(gè)獨(dú)立的inode表格归敬,默認(rèn)為128bytes),記錄著:
- 該文件的訪問權(quán)限(read,write,execute)
- 該文件的所屬主與組(owner,group)
- 該文件的大小(size)
- 該文件的創(chuàng)建或狀態(tài)修改時(shí)間(ctime)
- 該文件的最后一次訪問時(shí)間(atime)
- 該文件的修改時(shí)間(mtime)
- 文件的特殊權(quán)限(SUID,SGID,SBIT)
- 該文件的真實(shí)數(shù)據(jù)地址(point)
-
而實(shí)際的數(shù)據(jù)則保存在block塊中(大小可以是1K、2K或4K)弄慰,下面的說明中,我們以4K為例蝶锋。
- 情況一:文件體積很新剿(1K),那么依然會(huì)占用一個(gè)block扳缕,潛在的浪費(fèi)3K慌闭。
- 情況二:文件體積很大(5K),那么會(huì)占用兩個(gè)(5K-4K剩下的1K也要占用一個(gè)block)躯舔。 一個(gè)inode大小僅為128bytes(Ext3)驴剔,但記錄一個(gè)block則消耗4bytes,當(dāng)寫inode被占滿后會(huì)取出一個(gè)block用于號(hào)碼記錄而不再是保存實(shí)際的文件系統(tǒng)
掛載
掛載操作指的是當(dāng)用戶需要使用硬盤設(shè)備或分區(qū)數(shù)據(jù)時(shí)粥庄,需要先將其與一個(gè)已存在的目錄文件做關(guān)聯(lián)丧失,而這個(gè)動(dòng)作就叫"掛載"
-
mount命令用于掛載文件系統(tǒng),格式為:"mount 文件系統(tǒng) 掛載目錄"
- -a 掛載所有在/etc/fstab中定義的文件系統(tǒng)
- -t 指定文件系統(tǒng)的類型
mount命令只需要填寫設(shè)備與掛載目錄參數(shù)即可惜互,一般來講系統(tǒng)會(huì)自動(dòng)去判斷要掛載文件的類型
-
如果需要將設(shè)備"/dev/sdb2"掛載到"/backup"目錄布讹,文件格式為ext4
mount /dev/sdb2 /backup #不用指定格式
使用mount命令執(zhí)行掛載操作后立即就可以使用該文件系統(tǒng)了,但重啟后則失效训堆。如果想讓重啟后依然生效描验,我們就必須將掛載信息按照指定的格式寫入到/etc/fstab文件中。 "/etc/fstab"包含著文件系統(tǒng)與掛載信息等內(nèi)容坑鱼,因?yàn)檫^于重要膘流,所以只有root用戶才可以編輯它
-
填寫格式如下:"設(shè)備文件 掛載目錄 格式類型 權(quán)限選項(xiàng) 自檢 優(yōu)先級(jí)"
- 設(shè)備文件:一般為設(shè)備的路徑+名稱,也可以寫UUID值等鲁沥。
- 掛載目錄:指定要掛載到的目錄呼股,需掛載前創(chuàng)建好。
- 格式類型:即指定文件系統(tǒng)的格式画恰,比如有ext3/ext4/xfs/iso9660/swap等卖怜。
- 權(quán)限選項(xiàng):默認(rèn)為defaults(rw,suid,dev,exec,auto,nouser,async),可指定acl或quota等阐枣。
- 自檢:若為1則開機(jī)后進(jìn)行磁盤自檢马靠,0為不自檢。
- 優(yōu)先級(jí):若"自檢"為1蔼两,則可對(duì)多塊硬盤進(jìn)行優(yōu)先級(jí)設(shè)置甩鳄。
-
定義設(shè)備"/dev/sdb2"開機(jī)自動(dòng)掛載到"/backup"目錄,文件格式為ext4额划,默認(rèn)權(quán)限且無需開機(jī)自檢
/dev/sdb2 /backup ext4 defaults 0 0
-
umount命令用于撤銷已經(jīng)掛載的設(shè)備文件妙啃,格式為:"umount [掛載點(diǎn)/設(shè)備文件]
unmount /dev/sdb2
添加硬盤設(shè)備
- 當(dāng)全新安裝了一塊新的硬盤設(shè)備后,為了更充分、安全的利用硬盤空間首先要進(jìn)行磁盤的分區(qū)揖赴,然后格式化馆匿,最后掛載使用
創(chuàng)建分區(qū)
#查看所有硬盤,包括沒有掛載
fdisk -l
# 輸入p查看當(dāng)前分區(qū)詳情
p
Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos
Disk identifier: 0x0c114c38
#輸入n新建新的分區(qū)
n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
#選擇分區(qū)類型
Select (default p):p
#設(shè)置分區(qū)號(hào)燥滑,一般情況下是3主分區(qū)渐北,一個(gè)邏輯分區(qū)
分區(qū)號(hào) (1-4, default 1): 1
#磁盤的起始扇區(qū),直接回車即可:
First sector (2048-10485759, default 2048):2048
#鍵入+2G铭拧,代表該分區(qū)的大小為2G
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): +2G
#敲擊字符w赃蛛,將上述分區(qū)信息保存
w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
#讓內(nèi)核同步分區(qū)信息(此步驟僅在沒有找到分區(qū)設(shè)備的情況下才需要執(zhí)行,非必要?jiǎng)幼鞑笃小#? partprobe
格式化為xfs文件系統(tǒng)
在Linux系統(tǒng)中用于格式化的命令是mkfs呕臂,它支持的文件類型有:cramfs,ext2,ext3,ext4,fat,msdos,xfs,btrfs,minix,vfat
-
使用方法非常的簡(jiǎn)單:"mkfs.文件類型名稱",例如要格式分區(qū)為ext4肪跋,則命令為"mkfs.ext4 硬盤分區(qū)名稱"
#將上面的分區(qū)格式化為ext4文件系統(tǒng) mkfs.ext4 /dev/sdb1
將硬盤掛載在目錄中
-
將硬盤設(shè)備掛載到/newFS目錄
mkdir /newFS mount /dev/sdb1 /newFS/
設(shè)置系統(tǒng)啟動(dòng)后自動(dòng)掛載該硬盤設(shè)備
-
編緝fstab文件
vim /etc/fstab /dev/sdb1 /newFS ext4 defaults 0 0 # 我們現(xiàn)在就可以通過訪問/newFS目錄來使用硬盤資源
查看硬盤的使用情況
df命令用于查看掛載點(diǎn)信息與磁盤使用量歧蒋,格式為:"df [選項(xiàng)] [文件]"
-
參數(shù)
- -a 顯示出所有的文件系統(tǒng)(包括虛擬的)
- --total 展出出總體使用量
- -h 更易讀的容量格式如1K,234M,2G...
- -i 展示出Inode的信息(默認(rèn)是磁盤使用信息)
- -T 顯示出文件系統(tǒng)的類型
-
查看掛載信息與硬盤使用量:"df -h"
df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) udev 973M 0 973M 0% /dev tmpfs 199M 6.3M 193M 4% /run /dev/sda1 18G 4.8G 12G 29% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 52K 199M 1% /run/user/1000 /dev/sr0 1.4G 1.4G 0 100% /media/rancune/Ubuntu 16.04 LTS amd64 /dev/sdb1 2.0G 3.0M 1.8G 1% /newFS
du命令用于查看磁盤的使用量,格式為:" du [選項(xiàng)] [文件]"
-
參數(shù)
- -a 評(píng)估每個(gè)文件而非目錄整體占用量州既。
- -c 評(píng)估每個(gè)文件并計(jì)算出總占用量總和疏尿。
- -h 更易讀的容量格式如1K,234M,2G...
- -s 僅顯示占用量總和。
-
查看newFS中文件所占空間
du -sh /newFS/ 20K /newFS/
swap分區(qū)
SWAP即交換分區(qū)是一種類似于Windows系統(tǒng)虛擬內(nèi)存的功能易桃,將一部分硬盤空間虛擬成內(nèi)存來使用褥琐,從而解決內(nèi)存容量不足的情況,因?yàn)镾WAP畢竟是用硬盤資源虛擬的晤郑,所以速度上比真實(shí)物理內(nèi)存要慢很多敌呈,一般只有當(dāng)真實(shí)物理內(nèi)存耗盡時(shí)才會(huì)調(diào)用SWAP
-
創(chuàng)建swap分區(qū)
# 新建分區(qū)同上 # ... # 修改分區(qū)類型,輸入t t Selected partition 1 # 查看可用的分區(qū)類型 Hex code (type L to list all codes): L #輸入swap分區(qū)類型 Hex code (type L to list all codes): 82 #查看分區(qū)信息 p #保存 w #格式化為swap分區(qū) mkswap /dev/sdb1 #啟動(dòng)swap分區(qū) swapon /dev/sdb1 # 設(shè)置為開機(jī)后自動(dòng)掛載該SWAP分區(qū)設(shè)備 vim /etc/fstab /dev/sdb1 swap swap defaults 0 0 #查看當(dāng)前的內(nèi)存容量 free -m
磁盤冗余陣列(RAID)
Redundant Array of Independent Disks造寝,即獨(dú)立的硬盤組磕洪,作用是防止硬盤物理損壞以及增加存儲(chǔ)設(shè)備的吞吐量。RAID常見的組合有0诫龙、1析显、5和10
RAID0:需要至少兩塊(含)硬盤,可以有效的提高硬盤的性能和吞吐量签赃,但沒有數(shù)據(jù)的冗余和錯(cuò)誤修復(fù)能力谷异,將多塊硬盤通過硬件或軟件的方式串聯(lián)在一起,成為一個(gè)大的卷集锦聊,將數(shù)據(jù)依次寫入到各個(gè)硬盤中歹嘹,這樣性能會(huì)極大提升,但若任意一塊硬盤故障則整個(gè)系統(tǒng)的數(shù)據(jù)都會(huì)受到破壞孔庭。
RAID1:需要至少兩塊(含)硬盤尺上,可以有效的提高數(shù)據(jù)資料的安全性和可修復(fù)性材蛛,但成本卻提高了,實(shí)現(xiàn)原來是在數(shù)據(jù)寫入硬盤時(shí)也會(huì)在另外一塊閑置的硬盤上生成鏡像文件怎抛,在不影響性能的情況下最大限度保證數(shù)據(jù)資料的可靠性卑吭,只要在一對(duì)鏡像盤中還有一塊硬盤可以使用,那么數(shù)據(jù)也不會(huì)丟失马绝,具有很好的硬盤冗余能力豆赏,雖然對(duì)數(shù)據(jù)來講絕對(duì)的安全,但成本卻明顯增加迹淌,磁盤利用率僅為50%
邏輯卷管理
磁盤容量配額
-
quota的磁盤配額可以限制用戶的硬盤可用空間或最大創(chuàng)建文件數(shù)量,并且還有軟/硬限制的區(qū)別:
- 軟限制:當(dāng)達(dá)到軟限制時(shí)會(huì)提示用戶己单,但允許用戶在規(guī)定期限內(nèi)繼續(xù)使用唉窃。
- 硬限制:當(dāng)達(dá)到硬限制時(shí)會(huì)提示用戶,且強(qiáng)制終止用戶的操作
虛擬文件系統(tǒng)
- 隨著計(jì)算機(jī)系統(tǒng)的發(fā)展產(chǎn)生出了眾多的文件系統(tǒng)纹笼,為了使用戶在讀取或?qū)懭胛募r(shí)不用關(guān)心底層的硬盤結(jié)構(gòu)纹份,于是在Linux內(nèi)核中的軟件層為用戶程序提供了一個(gè)文件系統(tǒng)接口(VFS,Virtual File System),這樣就轉(zhuǎn)而統(tǒng)一對(duì)這個(gè)虛擬文件系統(tǒng)進(jìn)行操作啦廷痘。即實(shí)際文件系統(tǒng)在VFS下隱藏了自己的特性和細(xì)節(jié)蔓涧,使得我們?cè)谌粘J褂脮r(shí)覺得"文件系統(tǒng)都是一樣的"。
軟硬方式鏈接
硬鏈接(hard link)可以被理解為一個(gè)"指向原始文件inode的指針"笋额,系統(tǒng)不為它分配獨(dú)立的inode與文件元暴,所以實(shí)際上來講硬鏈接文件與原始文件其實(shí)是同一個(gè)文件,只是名字不同兄猩。于是每添加一個(gè)硬鏈接茉盏,該文件的inode連接數(shù)就會(huì)增加1,直到該文件的inode連接數(shù)歸0才是徹底刪除枢冤。概括來說因?yàn)橛叉溄訉?shí)際就是指向原文件inode的指針鸠姨,即便原始文件被刪除依然可以通過鏈接文件訪問,但是不能跨文件系統(tǒng)也不能鏈接目錄文件
軟鏈接也稱為符號(hào)鏈接(symbolic link)即"僅僅包含它索要鏈接文件的路徑名"因此能做目錄鏈接也可以跨越文件系統(tǒng)淹真,但原始文件被刪除后鏈接文件也將失效讶迁,如同Winodw?中的"快捷方式"
ln命令用于創(chuàng)建鏈接文件,格式為:"ln [選項(xiàng)] 目標(biāo)"核蘸,默認(rèn)創(chuàng)建的是硬鏈接
-
命令參數(shù)
- -s 創(chuàng)建"符號(hào)鏈接"(默認(rèn)是硬鏈接)
- -f 強(qiáng)制創(chuàng)建文件或目錄的鏈接
- -i 覆蓋前先詢問
- -v 顯示創(chuàng)建鏈接的過程
-
示例
#創(chuàng)建一個(gè)/usr/hb/的軟鏈接 ln -s /usr/hb/ /home/hb_link #刪除軟鏈接使用rm命令巍糯,注意,其末尾不能加“/” rm -rf /home/hb_link