Linux 文件系統(tǒng)的操作實(shí)現(xiàn)
此讀書筆記比較主要記錄文件系統(tǒng)的相關(guān)操作。
磁盤與目錄的容量
磁盤的整體數(shù)據(jù)是在superblock塊中,但是每個個別文件的容量則在inode當(dāng)中記載,常用來顯示磁盤使用量的兩個命令
df: 列出文件系統(tǒng)的整體磁盤使用量
du: 評估文件系統(tǒng)的磁盤使用量(常用于評估目錄所占容量)
$ df [-ahikHTm] [目錄或文件名] 參數(shù): -a: 列出所有的文件系統(tǒng),包括系統(tǒng)特有的/proc(/proc掛載在內(nèi)存中,不會占用磁盤空間)等文件系統(tǒng); -k: 以KB的容量顯示各文件系統(tǒng) -m: 以MB的容量顯示各文件系統(tǒng) -h:以人們較易閱讀的GB、MB、KB等格式自行顯示 -H: 以M=1000K 替換M=1024K 的進(jìn)位方式 -T: 連同該分區(qū)的文件系統(tǒng)名稱也列出(例如ext3) -i: 不用硬盤容量,而以inode的數(shù)量顯示
df主要讀取的數(shù)據(jù)幾乎都是針對整個文件系統(tǒng),因此讀取的范圍只要是在super block內(nèi)的信息,所以這個命令顯示結(jié)果的速度非常快速。
$ du [-ahskm] 文件或者目錄名稱 參數(shù): -a 列出所有的文件與目錄容量,因?yàn)槟J(rèn)僅統(tǒng)計目錄的文件量而已 -h 以人們較易讀的容量顯示 -s 列出總量,而不列出每個個別的目錄占用容量 -S 不包括子目錄下的總計 -k 以KB列出容量顯示 -m 以MB列出容量顯示
du會直接查找文件系統(tǒng)的所有文件數(shù)據(jù)
連接文件: ln
在linux下的連接文件有兩種:一種是類似Windows上的快捷方式,可以讓你快速連接到目標(biāo)文件或目錄。另外一種則是通過文件系統(tǒng)的inode連接來產(chǎn)生新文件名,而不是產(chǎn)生新文件,這種稱為硬鏈接(hard link)。
hard link(硬連接和實(shí)際連接)
- 每個文件都會占用一個inode,文件的內(nèi)容由inode的記錄來指向。
- 想要讀取文件,必須要經(jīng)過目錄記錄的文件名來指向到正確的inode號碼才能讀取。
- 文件名與目錄有關(guān),而文件內(nèi)容則與inode有關(guān),而hard link就是在某個目錄下新建一個文件名連接到某inode號碼的關(guān)聯(lián)記錄。
vagrant@vagrant-ubuntu-trusty-64:~$ cd /tmp vagrant@vagrant-ubuntu-trusty-64:/tmp$ touch tes vagrant@vagrant-ubuntu-trusty-64:/tmp$ ln test test1 vagrant@vagrant-ubuntu-trusty-64:/tmp$ ll -i test test1 62273 -rw-rw-r-- 2 vagrant vagrant 0 Dec 17 12:39 test 62273 -rw-rw-r-- 2 vagrant vagrant 0 Dec 17 12:39 test1
可以看到兩個文件的inode號碼是一致的,他們的文件權(quán)限屬性完全一樣,而連接數(shù)變?yōu)榱?。
硬連接最大的好處就是安全,如果你將任何一個文件名刪除,其實(shí)inode與block都是存在的。此時可以通過另外一個文件名來讀取到正確的文件數(shù)據(jù),不論你使用哪個文件名來編輯,最終的結(jié)果都會寫到相同的inode與block中,因此均能進(jìn)行數(shù)據(jù)的修改。
一般來說,使用hard link設(shè)置連接文件時,磁盤的空間和inode的數(shù)目都不會改變,hard link只是在某個目錄下的block多寫一個關(guān)聯(lián)數(shù)據(jù)而已,既不會增加inode也不會耗用block數(shù)量(除非當(dāng)你在block增加多一個關(guān)聯(lián)數(shù)據(jù)時剛好磁盤滿了,就可能需要增加多一個block來記錄文件名關(guān)聯(lián)性,而導(dǎo)致磁盤空間的變化)。
硬連接的限制:
- 不能跨文件系統(tǒng)
- 不能連接到目錄,因?yàn)槿绻褂胔ard link連接到目錄,連接的數(shù)據(jù)需要連同被連接目錄下面的所有數(shù)據(jù)都建立連接,會造成環(huán)境相當(dāng)大的復(fù)雜度,因此對于目錄暫時不支持
symbolic link(符號連接,也即快捷方式)
symbolic link就是創(chuàng)建一個獨(dú)立的文件,而這個文件會讓數(shù)據(jù)的讀取指向它鏈接的那個文件的文件名,由于只是利用文件作為指向的操作,所以當(dāng)源文件被刪除后,symbolic link的文件會找不到源文件而導(dǎo)致無法打開。
vagrant@vagrant-ubuntu-trusty-64:/tmp$ ln -s test test2 vagrant@vagrant-ubuntu-trusty-64:/tmp$ ll -i test test2 62273 -rw-rw-r-- 2 vagrant vagrant 0 Dec 17 12:39 test 62275 lrwxrwxrwx 1 vagrant vagrant 4 Dec 17 13:07 test2 -> test
兩個文件指向不同的inode號碼,連接文件的重要內(nèi)容就是它會寫上目標(biāo)文件的文件名,因?yàn)榧^右邊的文件是 4 Byte,所以連接文件的大小為 4 byte。
由symbolic link所創(chuàng)建的文件為一個獨(dú)立的新的文件,所以會占用掉inode與block。
修改symbolic link文件時,會改動到源文件。
$ ln [-sf] 源文件 目標(biāo)文件 參數(shù): -s: 如果不加任何參數(shù)進(jìn)行連接,那就是hard link,至于-s就是symbolic link -f: 如果目標(biāo)文件存在時,主動將目標(biāo)文件直接刪掉再重建。
關(guān)于目錄的連接數(shù)
當(dāng)以hard link進(jìn)行文件的連接時,文件的連接數(shù)會增加1,那當(dāng)我們創(chuàng)建一個空的目錄時,由于存在 . 與 .. 這兩個目錄,那么當(dāng)我們創(chuàng)建一個空的目錄/tmp/testing時,基本會有3個東西:
/tmp/testing
/tmp/testing/.
/tmp/testing/..
其中 /tmp/testing 和 /tmp/testing/. 都代表該目錄,而 /tmp/testing/.. 則代表 /tmp 這個目錄,所以當(dāng)我們創(chuàng)建一個新目錄,新的目錄連接數(shù)為2,而上層目錄的連接數(shù)則會增加1。
磁盤的分區(qū)、格式化、檢驗(yàn)與掛載
如果要在系統(tǒng)中新增一塊硬盤時,需要做以下動作:
- 對磁盤進(jìn)行分區(qū),以新建可用的分區(qū)
- 對該分區(qū)進(jìn)行格式化,以創(chuàng)建系統(tǒng)可用的文件系統(tǒng)。
- 若想要仔細(xì)一點(diǎn),則可對剛才新建好的文件系統(tǒng)進(jìn)行檢驗(yàn)。
- 在linux系統(tǒng)上,需要創(chuàng)建掛載點(diǎn)(也即是目錄),并將它掛載上來。
磁盤分區(qū):fdisk
$ fdisk [-l] 設(shè)備名稱 參數(shù): -l: 輸出后面接的設(shè)備所有的分區(qū)內(nèi)容。若僅有fdisk -f時,則系統(tǒng)將會把整個系統(tǒng)能夠找到的設(shè)備的分區(qū)均列出來。 # 例如: # 先找出磁盤文件名 vagrant@vagrant-ubuntu-trusty-64:/tmp$ df / Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc1 41251136 3631948 35883276 10% / # 輸入fdisk,但不要加上數(shù)字 vagrant@vagrant-ubuntu-trusty-64:/tmp$ fdisk /dev/hdc 它會提示Command(m for help): 輸入m就可以看到相關(guān)參數(shù)提示 d 代表刪除一個分區(qū) n 代表新增一個分區(qū) p 代表在屏幕中顯示分區(qū)表 q 代表不存儲,離開fdisk程序 w 代表將剛才的操作寫入分區(qū)表
特別注意 q 和 w,只要離開fdisk時按下q,那么所有的操作都不會生效,相反按下 w 就是操作生效的意思。
刪除磁盤分區(qū)
要刪除分區(qū)(例如將/dev/hdc全部分區(qū)刪除)需要做下面幾步:
- fdisk /dev/hdc: 先進(jìn)入fdisk界面
- p:先看下分區(qū)信息,假設(shè)要刪掉/dev/hdc1
- d: 這個時候要選擇一個分區(qū),就選1
- w 或者 q: w可存儲到磁盤數(shù)據(jù)表,并離開fdisk; 如果后悔,直接按下q就可以取消剛才的刪除操作。
新增磁盤分區(qū)
需要進(jìn)行一下的動作:
- fdisk /dev/hdc: 先進(jìn)入fdisk界面
- n: 新增分區(qū)
- p 或 e 或 l:選擇不同的分區(qū)類型,其中p代表主分區(qū),e代表擴(kuò)展分區(qū),l代表邏輯分區(qū)
- 1 - 4:分區(qū)號,可選1-4,如果是邏輯分區(qū),則不需要輸入分區(qū)號
- 輸入結(jié)束柱面號碼,如果要自己計算柱面/分區(qū)的大小太麻煩,可以使用類似"+512M"的形式,來讓系統(tǒng)幫我們分配最接近512M的柱面號碼
- p: 查看分區(qū)信息
- w 或者 q: w可存儲到磁盤數(shù)據(jù)表,并離開fdisk; 如果后悔,直接按下q就可以取消剛才的刪除操作。
對于創(chuàng)建分區(qū)的形式(主分區(qū)/擴(kuò)展分區(qū)/邏輯分區(qū))以及分區(qū)的大小,一般來說新建分區(qū)的形式會有下面的幾種情況:
- 1-4號尚有剩余,且系統(tǒng)未有擴(kuò)展分區(qū):此時會出現(xiàn)讓你挑選Primary/Extended的選項(xiàng),且你可以指定1~4號間的號碼
- 1-4號尚有剩余,且系統(tǒng)有擴(kuò)展分區(qū):此時會出現(xiàn)讓你挑選Primary/Logical的選項(xiàng),若選擇p你還需指定1~4號間的號碼;若選擇l則不需要設(shè)置號碼,因?yàn)橄到y(tǒng)會自動指定邏輯分區(qū)的文件名號碼
- 1-4沒有剩余,且系統(tǒng)有擴(kuò)展分區(qū):此時不會讓你挑選分區(qū)類型,直接會進(jìn)入logical的分區(qū)形式
一般分區(qū)完是需要重啟(reboot)才能更新內(nèi)核的分區(qū)表信息,可以使用"partprobe"強(qiáng)制讓內(nèi)核重新找一次分區(qū)表
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- linux文件系統(tǒng)調(diào)整大小的方法(linux調(diào)整分區(qū)大小)
- Linux中如何查看已掛載的文件系統(tǒng)類型詳解
- 查看linux文件系統(tǒng)塊大小的實(shí)現(xiàn)方法
- Linux環(huán)境下使用GFS文件系統(tǒng)
- 詳細(xì)分析Linux文件系統(tǒng)
- Linux查看分區(qū)文件系統(tǒng)類型的方法總結(jié)
- 使用‘fsck’修復(fù)Linux中文件系統(tǒng)錯誤的方法
- Linux新技術(shù)對象存儲文件系統(tǒng)
- Linux日志式文件系統(tǒng)面面觀
- Linux環(huán)境中使用Ext3文件系統(tǒng)
相關(guān)文章
使用腳本實(shí)現(xiàn)故障時自動重啟Apache
這篇文章主要介紹了使用腳本實(shí)現(xiàn)故障時自動重啟Apache,需要的朋友可以參考下2014-12-12linux添加自定義service服務(wù),開機(jī)自啟動方式
這篇文章主要介紹了linux添加自定義service服務(wù),開機(jī)自啟動方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08關(guān)于安裝linux redhat后無法使用yum命令安裝gcc-c++問題的解決過程
這篇文章主要介紹了關(guān)于安裝linux redhat后無法使用yum命令安裝gcc-c++問題的解決過程,需要的朋友可以參考下2017-08-08Linux使用suid vim.basic文件實(shí)現(xiàn)提權(quán)
這篇文章主要介紹了Linux使用suid vim.basic文件實(shí)現(xiàn)提權(quán),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07Linux進(jìn)程網(wǎng)絡(luò)流量統(tǒng)計的實(shí)現(xiàn)過程
這篇文章主要介紹了Linux進(jìn)程網(wǎng)絡(luò)流量統(tǒng)計的實(shí)現(xiàn)過程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09詳解輕巧AMH虛擬主機(jī)面板安裝使用和GCE云空間搭建網(wǎng)站實(shí)例
這篇文章主要介紹了輕巧AMH虛擬主機(jī)面板安裝使用和GCE云空間搭建網(wǎng)站實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07Linux網(wǎng)絡(luò)相關(guān)配置文件
這篇文章主要介紹了Linux網(wǎng)絡(luò)相關(guān)配置文件的相關(guān)資料,通過本文希望大家能對Linux 網(wǎng)路配置文件的掌握,需要的朋友可以參考下2017-08-08LuManager Linux/Unix服務(wù)器管理面板推薦之國產(chǎn)面板
國外VPS 大多數(shù)是 Linux /Unix平臺,Linux/Unix平臺的優(yōu)點(diǎn)也很多,重點(diǎn)是它還是免費(fèi)的,(用過美國VPS 的朋友都知道國外IDC 裝Windows是需要版權(quán)費(fèi)的)國內(nèi)大型網(wǎng)站幾乎都是用Linux/Unix平臺2012-09-09