du的原理 linux_Linux 文件系统管理
1、文件系統(tǒng)介紹
1)、Linux 文件系統(tǒng)特性
- super block(超級塊)
- 記錄整個文件系統(tǒng)的信息。包括 block 與 inode 的總量,已經(jīng)使用的 block 和 inode 的數(shù)量,未使用的 block 和 inode 的數(shù)量,block 與 inode 的大小,文件系統(tǒng)的掛載時間,最近一次的寫入時間等。
- data block(數(shù)據(jù)塊,也稱作 block)
- 用來實際保存數(shù)據(jù)的(柜子的隔板),block 的大小(1kb、2kb、4kb)和數(shù)量在格式化后就已經(jīng)決定,不能改變,除非重新格式化(制作柜子的時候,隔斷大小就已經(jīng)決定,不能更改,除非重新制作柜子)。每個 block 只能保存一個文件數(shù)據(jù),要是文件數(shù)據(jù)小于一個 block 塊,那么這個 block 的剩余空間不能被其它文件使用,要是文件數(shù)據(jù)大于一個 block 塊,則占用多個 block 塊。Windows 中磁盤碎片整理工具的原理就是把一個文件占用的多個 block 塊盡量整理到一起,這樣可以加快讀寫速度。
- inode(i 節(jié)點,柜子門上的標(biāo)簽)
- 用來記錄文件的權(quán)限(r、w、x),文件的所有者和所屬組,文件的大小,文件的狀態(tài)改變時間(ctime),文件的最近一次讀取時間(atime),文件的最近一次修改時間(mtime),文件的數(shù)據(jù)真正保存的 block 編號。每個文件需要占用一個 inode
2、文件系統(tǒng)命令
① df 命令
用來查看硬盤分區(qū)空間使用情況df -h[root@hepingfly 桌面]# df -hT 加個 -T 參數(shù),結(jié)果會多出 Type 這一列,顯示分區(qū)的文件系統(tǒng)類型 Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 9.8G 3.0G 6.3G 33% / tmpfs tmpfs 491M 80K 491M 1% /dev/shm /dev/sda1 ext4 976M 34M 892M 4% /boot /dev/sda3 ext4 4.8G 11M 4.6G 1% /home /dev/sr0 iso9660 3.7G 3.7G 0 100% /media/CentOS_6.8_Final② du 命令
我們經(jīng)常用這個命令來查看目錄大小,因為用 ll 去查看目錄大小不準確,使用 ll 去查看目錄帶下一般都是 4k 或者 4k 的倍數(shù),因為使用 ll 它統(tǒng)計出來的實際上是,目錄中存的所有文件名的大小,一個 block 占 4kb 如果一個 block 存不下就用兩個 block 去存,占 8kb。du [選項] [目錄或文件名]選項:
? -a:顯示每個子文件的磁盤占用量。默認只統(tǒng)計子目錄的磁盤占用量。
? -h :人性化顯示
? -s :統(tǒng)計總占用量,而不列出子目錄和子文件占用量[root@hepingfly init]# du -hs /home/ 104K /home/
說明:
du 與 df 的區(qū)別:du 是用于統(tǒng)計文件大小的,統(tǒng)計文件大小是準確的,df 是用于統(tǒng)計空間大小的,統(tǒng)計的剩余空間是準確的。有時候會存在這兩個統(tǒng)計不一致的情況,原因是 df 統(tǒng)計的是空間,臨時文件、垃圾文件等都會占用空間,df 就光統(tǒng)計文件大小,所以這兩個會存在差異情況。
③ dumpe2fs 命令
顯示磁盤狀態(tài)
dumpe2fs /dev/sda3④ 判斷文件類型
file 文件名 判斷文件類型type 命令名 判斷命令類型[root@hepingfly hgfs]# type mkdir 這個命令是外部命令 mkdir is /bin/mkdir [root@hepingfly hgfs]# type cd 這個命令是內(nèi)置命令 cd is a shell builtin [root@hepingfly hgfs]# cd /home/hepingfly/ [root@hepingfly hepingfly]# ll 總用量 8 -rw-r--r--. 1 root root 4 4月 18 00:07 abc -rw-r--r--. 1 root root 0 4月 18 00:06 abc~ drwxr-xr-x. 2 root root 4096 4月 17 23:59 test [root@hepingfly hepingfly]# file test 表示這是一個目錄 test: directory [root@hepingfly hepingfly]# file abc 表示這是一個文件 abc: ASCII text# 上面命令,在你寫 shell 腳本的時候可能會用到
3、手工分區(qū)
fdisk 命令
fdisk -l查看系統(tǒng)所有硬盤及分區(qū)
使用如下命令進行分區(qū):
①『 fdisk /dev/sdb 』 進行磁盤分區(qū)(在開始分區(qū)的時候還沒有分區(qū)號)
sdb 表示第二塊硬盤,我之前只有一塊硬盤,現(xiàn)在我新添加一塊硬盤,要對這塊硬盤進行分區(qū),所以寫 /dev/sdb注意這個 sdb 后面不能跟數(shù)字,因為數(shù)字是表示分區(qū)號,我現(xiàn)在就是沒有分區(qū)才要去分區(qū)的,如果寫分區(qū)號,代表都有分區(qū)了,那我還分什么區(qū)。
假如你原來有兩塊硬盤,現(xiàn)在新添加一塊硬盤,要對這個硬盤進行分區(qū),那么這里就要寫 /dev/sdc 了
你輸入上面的命令就會開始分區(qū)了,分區(qū)的時候會與系統(tǒng)進行交互。
fdisk 交互指定說明:
命令說明a設(shè)置可引導(dǎo)標(biāo)記b編輯 bsd 磁盤標(biāo)簽c設(shè)置 DOS 操作系統(tǒng)兼容標(biāo)記d刪除一個分區(qū)l顯示已知的文件系統(tǒng)類型。82 為 Linux swap 分區(qū),83 為 Linux 分區(qū)m顯示幫助菜單n新建分區(qū)o建立空白 DOS 分區(qū)表p打印分區(qū)列表q不保存退出s新建空白 SUN 磁盤標(biāo)簽t改變一個分區(qū)的系統(tǒng) IDu改變顯示記錄單位v驗證分區(qū)表w保存退出x附加功能
②具體分區(qū)步驟見:
https://console.cloud.tencent.com/cos5/bucket/setting?type=filelist&bucketName=shp-notes-1257820375&path=%252Fshp-linux%252F?ion=ap-chengdu這個里面 1~ 18 個截圖,建議把截圖弄出來放到 word 中,看更方便
③分區(qū)完成之后要進行格式化:
格式化,建立文件系統(tǒng):
mkfs -t ext4 /dev/sdb1mkfs -t ext4 /dev/sdb5說明:
ext4 表示 linux 的文件系統(tǒng),上面我在分區(qū)的時候分了一個主分區(qū),一個擴展分區(qū),一個邏輯分區(qū),擴展分區(qū)不能存儲數(shù)據(jù),也不能格式化,邏輯分區(qū),分區(qū)號是從 5 開始的,所以把 sdb1 和 sdb5 格式化后,建立文件系統(tǒng)才能使用
④ 建立掛載點
mkdir /disk1mkdir /disk5所有的分區(qū)都是要掛載之后才能使用的
⑤ 掛載
mount /dev/sdb1 /disk1mount /dev/sdb5 /disk5⑥ 查看
mount 查看所有已掛載的分區(qū)和光盤fdisk -l 查看系統(tǒng)分區(qū)
df -h 查看磁盤空間使用情況
4、自動掛載
我們只允許對固定設(shè)備做自動掛載,不允許對光盤或者 U 盤等移動硬盤做自動掛載。因為你如果對移動設(shè)備做了自動掛載,但是系統(tǒng)啟動的時候,你如果忘了插入光盤或者 U 盤,那么系統(tǒng)就會直接崩潰,因為它找不到這個設(shè)備。
如何自動掛載?
通過修改分區(qū)自動掛載文件實現(xiàn)。
vim /etc/fstab 注意:這個文件直接參與系統(tǒng)啟動,如果修改錯誤,系統(tǒng)啟動報錯vim /etc/fstab UUID=adec8353-015d-4846-9f00-d4f16630ec3a / ext4 defaults 1 1 UUID=1b8318b7-046d-4694-b723-afa92e96888e /boot ext4 defaults 1 2 UUID=f20a6373-1d80-4fcc-9d8d-a7c2be91d11f /home ext4 defaults 1 2 UUID=cc8c66fd-21d7-42ee-8a6f-3d62c71e09b0 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0解釋下上面的內(nèi)容:
- 第一列:設(shè)備文件名
- 第二列:掛載點
- 第三列:文件系統(tǒng)
- 第四列:掛載選項
- 第五列:是否可以被備份 0 :不備份 1:每天備份 2:不定期備份(建議寫 1)
- 第六列:是否檢測磁盤 fsck 0 : 不檢測 1:啟動時檢測 2:啟動后檢測(建議寫 2)
自動掛載示例:
vim /etc/fstab /dev/sdb1 /disk1 ext4 defaults 1 2 /dev/sdb5 /disk5 ext4 defaults 1 2# 這樣我就是實現(xiàn)了 sdb1 和 sdb5 這兩個分區(qū)開機自動掛載說明:
其實在上面我們也看到了,第一列有 UUID ,其實也可以使用 UUID 去進行掛載。其實使用 UUID 去掛載還會有好處,好處就是當(dāng)硬盤增加了新的分區(qū),或者分區(qū)的順序改變,再或者內(nèi)核升級后,仍然能夠保證分區(qū)能夠正確的加載,而不至于造成啟動障礙。使用 UUID 掛載,只需要把第一列的設(shè)備文件名換成查詢到的分區(qū) UUID 即可,其他列和使用設(shè)備文件名掛載一樣。
如何查詢分區(qū)對應(yīng)的 UUID:
ls -l /dev/disk/by-uuid/[root@hepingfly disk1]# ls -l /dev/disk/by-uuid/ 總用量 0 lrwxrwxrwx. 1 root root 10 4月 23 21:30 1b8318b7-046d-4694-b723-afa92e96888e -> ../../sda1 lrwxrwxrwx. 1 root root 10 4月 23 21:30 3731f19b-ecd4-4ac5-ad41-303c894ed742 -> ../../sdb5 lrwxrwxrwx. 1 root root 10 4月 23 21:30 6aedc6ac-d2e1-465e-a824-07b4b9d10ae5 -> ../../sdb1 lrwxrwxrwx. 1 root root 10 4月 23 21:30 adec8353-015d-4846-9f00-d4f16630ec3a -> ../../sda2 lrwxrwxrwx. 1 root root 10 4月 23 21:30 cc8c66fd-21d7-42ee-8a6f-3d62c71e09b0 -> ../../sda5 lrwxrwxrwx. 1 root root 10 4月 23 21:30 f20a6373-1d80-4fcc-9d8d-a7c2be91d11f -> ../../sda3# 使用上面的命令可以看到每個分區(qū)對應(yīng)的 UUID測試:
mount -a 重新掛載所有內(nèi)容再輸入 mount 命令,查看是否掛載成功?;蛘咧貑⒁残?。
5、parted 命令分區(qū)
我們 Linux 系統(tǒng)中有兩種常見的分區(qū)表,MBR 分區(qū)表和 GPT 分區(qū)表。
- MBR 分區(qū)表 :支持最大分區(qū)是 2TB ,最多支持 4 個主分區(qū),或 3 個主分區(qū) 1 個擴展分區(qū)
- GPT 分區(qū)表:支持最大 18EB 的分區(qū)(1EB = 1024PB = 1024 * 1024TB),最多支持 128 個分區(qū),其中 1 個系統(tǒng)保留分區(qū),127 個用戶自定義分區(qū)
一般我們使用 fdisk 命令進行分區(qū)的時候,都是對 MBR 分區(qū)表進行分區(qū),但是這種分區(qū)表,支持的硬盤最大 2TB,也就是說你硬盤容量如果大于 2TB ,使用 MBR 分區(qū)表后面的都不會識別了。所以如果你硬盤容量超過 2TB,就需要使用 parted 命令進行分區(qū)。另外,你使用 parted 命令分完區(qū)之后,就不會存在什么主分區(qū)、擴展分區(qū)、邏輯分區(qū)了,因為我們說之所以存在主分區(qū)、擴展分區(qū)、邏輯分區(qū),就是因為 MBR 分區(qū)表,最多支持 4 個主分區(qū),所以我們想突破 4 個主分區(qū)的限制,就弄出了擴展分區(qū)和邏輯分區(qū),那么現(xiàn)在 GPT 分區(qū)表,已經(jīng)支持 128 個分區(qū)了,所以就不需要這些主分區(qū)、擴展分區(qū)、邏輯分區(qū)了,都是主分區(qū)。
總結(jié)
以上是生活随笔為你收集整理的du的原理 linux_Linux 文件系统管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京环球影城适合孩子玩的项目
- 下一篇: “延萝倚峯壁”上一句是什么