1.文件系統(tǒng)的概念
文件系統(tǒng)(File System)是文件管理系統(tǒng)的簡稱,根據(jù)維基百科的描述,文件系統(tǒng)是用來組織數(shù)據(jù)在存儲介質(zhì)上的存儲方式以及檢索方式的。沒有文件系統(tǒng),信息在存儲介質(zhì)上會是一個很大的信息塊,沒法知道一條信息什么時候會結(jié)束,也沒法知道信息在什么時候開始,對信息的管理就會十分的麻煩。
2.df命令
df 檢查文件系統(tǒng)的磁盤空間占用情況。
顯示已掛載的文件系統(tǒng),相當(dāng)于在windows下打開計算機(jī)C、D、E盤的大小多少。
-a ∶列出所有的文件系統(tǒng),包括系統(tǒng)特有的 /proc 等文件系統(tǒng)
-k ∶以 KBytes 的容量顯示各文件系統(tǒng)
-m ∶以 MBytes 的容量顯示各文件系統(tǒng)
-h ∶以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示
-H ∶以 M=1000K 取代 M=1024K 的進(jìn)位方式
-T ∶連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出
-i ∶不用磁盤容量,而以 inode 的數(shù)量來顯示
練習(xí):
1.將系統(tǒng)內(nèi)所有文件系統(tǒng)列出來(不含特殊內(nèi)存內(nèi)的文件系統(tǒng)與swap),都以1KB的容量來列出來。(tmpfs是一種虛擬內(nèi)存文件系統(tǒng),而不是塊設(shè)備,是基于內(nèi)存的文件系統(tǒng)。/dev/shm是與內(nèi)存有關(guān)的掛載)
df

2.將容量結(jié)果以易讀的方式顯示出來
df -h

3.將系統(tǒng)內(nèi)的所有特殊文件系統(tǒng)及名稱都列出來
df -aT

4.將/etc該目錄或文件所在的分區(qū)容量顯示出來
df -h /etc

5.將目前各個分區(qū)當(dāng)中的inode數(shù)量列出
df -ih

6.使用ls命令的-i選項查看文件的inode號
ls -li

問題:
df 代表什么意思?
df . 代表什么意思?
如圖所示 df命令是檢查文件系統(tǒng)的磁盤空間占用情況。 df . 命令是檢查當(dāng)前文件夾所在的磁盤的磁盤空間占用情況


說明一下范例所輸出的結(jié)果信息:
Filesystem: 代表該文件系統(tǒng)是在哪個分區(qū),所以列出設(shè)備名稱。
1k-blocks: 說明下面的數(shù)字單位是1KB
Mounted on 掛載點
3.du命令
du 統(tǒng)計目錄(或文件)所占磁盤空間的大小(即查看文件夾大小,將里面的東西大小也顯示出來)
-a ∶分列出所有的文件與目錄容量(不可用于統(tǒng)計)。
-h ∶以人們較易讀的容量格式 (G/M) 顯示;
-s ∶統(tǒng)計目錄總?cè)萘浚c-a相對。
-k ∶以 KBytes 列出容量顯示;
-m ∶以 MBytes 列出容量顯示;
用法:du [-ahskm] 文件或目錄名稱
練習(xí):
1.列出當(dāng)前目錄下的所有目錄容量,即文件夾的大小(默認(rèn)不包含文件的容量)
du
#直接輸入du沒有加任何參數(shù)時,則du會分析當(dāng)前所在目錄的文件與目錄所占用的硬盤空間。
#但是,實際顯示時,僅會顯示目錄容量(不含文件)。
#因此,目錄有很多文件沒有被列出來,所以全部的目錄相加不會等于.的容量

2.將文件的容量(大小)也列出來
du -a
du -ah

3.s:single的意思,只顯示單層的,即這個目錄的大小
du -s /etc
4.顯示根有多大
du -sh /
5.列出根目錄下每個目錄所占用的容量
du -sm /*
6.列出/usr下每個目錄所占用的容量
du -sh /usr/*
問題:
du 代表什么意思?
du . 代表什么意思?
du 統(tǒng)計目錄(或文件)所占磁盤空間的大小
du. 統(tǒng)計當(dāng)前目錄所占磁盤空間大小

4.索引節(jié)點
Linux文件是通過inode和block來存儲的。
文件系統(tǒng)存儲的最小單位是block(塊),文件的實際數(shù)據(jù)放置到block塊中。
文件數(shù)據(jù)除了文件實際內(nèi)容外,通常含有非常多的屬性。
Linux操作系統(tǒng)的文件權(quán)限(rwx)與文件屬性(所有者、群組、時間參數(shù)等)存放到inode中。一個文件占用一個inode,同時記錄此文件的數(shù)據(jù)所在的block號碼。
另外,還有一個超級快(superblock)會記錄整個文件系統(tǒng)的整體信息,包括inode與block的總量、使用量、剩余量等。
5.硬連接
硬連接是Linux和Unix里面專有的一個概念,在其它操作系統(tǒng)里面并沒有硬連接這個概念。
如A、B均指向磁盤中的同一塊空間,使用A或者B都能達(dá)到操縱文件的目的。創(chuàng)建硬連接增加連接數(shù)。
rm命令減少連接數(shù),當(dāng)連接數(shù)為0時,刪除這個文件?!斑B接”這個字段的意義為“有多少文件名連接到這個inode”,如果你將任何一個“文件名”刪除,其實inode與block都還是存在的。
硬鏈接僅能在單一文件系統(tǒng)中進(jìn)行,所有hard link是有限制的:
a.不能跨文件系統(tǒng)
b.不能連接到目錄
練習(xí):
1.新建一個目錄,在新目錄里操作
mkdir xx
cd xx
2.復(fù)制/etc/passwd,-a選項連同屬性一起復(fù)制
cp -a /etc/passwd .
3.使用du命令以字節(jié)為單位顯示當(dāng)前目錄的大小,使用df命令查看當(dāng)前目錄所在分區(qū)的inode數(shù)量
du -sb;df -i .
4.為passwd文件建立硬連接,ln為link的簡寫,不要寫錯了
ln passwd passwd-hd
5.查看當(dāng)前目錄大小和當(dāng)前目錄所在分區(qū)中的inode數(shù)量是有否變化
du -sb;df -i .
6.查看文件passwd和passwd-hd的inode號是否相同?
ll -i
#可見整個inode與block的容量并沒有改變
#硬鏈接和原文件的inode號相同,指向同一個文件,只是連接數(shù)(別名)增加了。
6.軟連接(又稱符號連接)
符號連接就是在創(chuàng)建一個獨立的文件,類似于快捷方式,B是A的符號連接,那么B可看作是A的引用。刪除B,則A繼續(xù)存在。ll命令后,箭頭右邊的文件名共有幾個英文,每個英文占1個byte,就是文件的大小幾byte。
練習(xí):
1.為文件passwd建立符合連接
ln -s passwd passwd-so
2.查看當(dāng)前目錄大小和當(dāng)前目錄所在分區(qū)中的inode數(shù)量
du -sb;df -i .
3.查看文件passwd和passwd-so的inode號是否相同?
ll -i
4.整個容量和inode數(shù)量都增加了,軟連接文件有自己的inode號,所以,軟連接是增了新文件
cat passwd-so
cat passwd-hd #訪問軟、硬連接文件
#刪除原文件,軟、硬連接文件還能被訪問么?
rm -f passwd
7.磁盤分區(qū)fdisk
fdisk非常危險,一般我們只是使用它來查看磁盤分區(qū)情況,沒有掛載上的也能查到
練習(xí):
fdisk -l //列出系統(tǒng)內(nèi)能夠找到的設(shè)備的分區(qū)
#只查看某一個硬盤
fdisk -l /dev/sda
練習(xí):
將系統(tǒng)現(xiàn)有磁盤的最后一個分區(qū)刪掉,重新建一個分區(qū)
fdisk -l //先查看一下系統(tǒng)中硬盤的名稱,eg:/dev/sda
fdisk /dev/sda
m //m命令是幫助
p //打印當(dāng)前磁盤的分區(qū)情況
d //deletc分區(qū)
3 //假設(shè)最后一個分區(qū)的分區(qū)號是3
n //n命令可以新建一個分區(qū)
p //新建一個主分區(qū)
4 //設(shè)置一個分區(qū)號
Enter
+512M
p //使用p命令查看一下分區(qū)情況
n //n命令可以新建一個分區(qū)
e //新建一個擴(kuò)展分區(qū)
3 //設(shè)置一個分區(qū)號
Enter
Enter
p //使用p命令查看一下分區(qū)情況
后面可以繼續(xù)在擴(kuò)展分區(qū)中建邏輯分區(qū)
q //q命令退出未將修改保持
注意:
主分區(qū)與擴(kuò)展分區(qū)最多可以有4個擴(kuò)展分區(qū)最多只能有一個邏輯分區(qū)是由擴(kuò)展分區(qū)繼續(xù)分出來的
8.mount命令
mount掛載文件系統(tǒng)
-t ∶可以加上文件系統(tǒng)種類來指定欲掛載的文件系統(tǒng)的類型。
常見的Linux支持類型有ext2、ext3、vfat、reiserfs、iso9660(光盤格式)、nfs、cifs、smbfs(此三種為網(wǎng)絡(luò)文件系統(tǒng)類型)
練習(xí)掛載U盤:
a) 插U盤之前使用fdisk查看當(dāng)前系統(tǒng)中的磁盤情況
fdisk -l
b) 插U盤后再次使用fdisk查看當(dāng)前系統(tǒng)中的磁盤情況,eg:/dev/sdb
fdisk -l
c) 建立準(zhǔn)備掛載的目錄
mkdir /mnt/usb
d) 使用mount命令將U盤掛上去
mount /dev/sdb /mnt/usb
cd /mnt/usb
e)查看U盤里的內(nèi)容
ls
f)卸載U盤
umount usb或umount /dev/sdb //使用后,卸載,拔除USB設(shè)備