Linux文件系統
馮諾依曼在1945年提出計算機的五大組成部分
運算器:CPU
控制器:CPU
存儲器:內存和硬盤
輸入設備:鼠標、硬盤
輸出設備:顯示器
一、硬盤結構
機械硬盤結構
- 扇區:硬盤的最小存儲單位,大小為512字節
- 磁道:由扇區組成的園
- 柱面:多扇片下,所有盤片的同一磁道組成的
固態硬盤結構
固態硬盤的特點
固態硬盤,使用固態電子芯片陣列而制成的硬盤,由控制單元和存儲單元組成
特點:讀寫快、噪音低、防震、輕薄,有寫入次數限制,容量較小、價格高
在固態硬盤中,為了便于理解,有邏輯上的磁道、扇區的概念
二、Centos6 下的ext4文件系統
1.磁盤使用流程
對硬盤進行分區
格式化指定文件系統
掛載使用
分區:MBR與GPT
MBR分區方式
- 主引導記錄 是位于磁盤最前邊的一段引導代碼
- 主引導程序 占用了446byte
- 分區表 占用了64byte,16標識一個分區
- 有效標識符占用了2byte,標記MBR是否有效
GPT分區方式
- 現存系統最大支持128個主分區
- 最大支持18EB分區
- 提供分區表的冗余
- 實現分區表備份與安全
2.使用虛擬機進行MBR分區
1.關機添加硬盤
2.查看是否添加成功 ls /dev/sda
3.使用fdisk+設備文件名進行分區
#進入分區界面
[root@localhost ~]# fdisk /dev/sda1
歡迎使用 fdisk (util-linux 2.23.2)。更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。Device does not contain a recognized partition table
使用磁盤標識符 0xd4897b23 創建新的 DOS 磁盤標簽。命令(輸入 m 獲取幫助):
? fdisk交互頁面中可用選項有
m:尋求幫助 | d:刪除分區 | l:顯示分區類型 | n:新建分區 |
---|---|---|---|
p:顯示分區表信息 | q:不保存退出 | t:修改分區id,l可查看 | w:保存并退出 |
3.格式化與掛載
super block:超級塊,記錄每個分區的block的大小、數量
inode表:用來快速搜索磁盤上的索引節點
data block:數據塊,保存真實數據的位置,block的大小和數量在格式化成文件系統已經固定,除非重新格式化,否則不能修改。
單個文件占用小于一個block的大小時,單獨占用一個block,剩余空間不會被利用。
inode:i節點,記錄inode號、權限、屬主屬組、時間戳、大小、占了那幾個block。
3.1 查看使用的扇區
fdisk -l 設備文件
[root@localhost ~]# fdisk -l磁盤 /dev/sda:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x000b1fe4設備 Boot Start End Blocks Id System
/dev/sda1 * 2048 1050623 524288 83 Linux
/dev/sda2 1050624 41943039 20446208 8e Linux LVM
3.2 查看分區情況
fdisk -l 設備文件 查看分區情況[root@localhost ~]# fdisk -l /dev/sdb1磁盤 /dev/sdb1:3221 MB, 3221225472 字節,6291456 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
3.3 格式化:
命令格式:mkfs.文件系統類型 磁盤路徑[root@localhost ~]# mkfs.xfs /dev/sdb2
3.4 掛載
命令格式:mount -t 文件系統類型 路徑 掛載點補充:df -h 查看已掛載的磁盤空間使用情況df -i 查看已掛載的inode號
3.5 永久掛載
blkid 查詢UUID
選擇需要掛載的分區,復制到/etc/fstab[root@localhost ~]# blkid
/dev/sda1: UUID="c198eb8b-f5d7-4dd1-9083-dc4168a9588d" TYPE="xfs"
/dev/sda2: UUID="xCaOvp-L9To-Obc9-5BLe-d9ES-vncR-Iz9pqm" TYPE="LVM2_member"
/dev/sdb1: UUID="371168b5-8eaf-4ddc-b26a-9e283ea06181" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="333657ff-e432-4b66-bca9-9201ce9f726c"
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/centos-root / xfs defaults 0 0
UUID=c198eb8b-f5d7-4dd1-9083-dc4168a9588d /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
UUID=371168b5-8eaf-4ddc-b26a-9e283ea06181 /root/disk1 xfs defaults 0 0
3.6 查看UUID
1.dumpe2fs -h 分區設備名2.ls -l /dev/disk/by-uuid/
[root@localhost ~]# ls -l /dev/disk/by-uuid/
總用量 0
lrwxrwxrwx. 1 root root 10 5月 14 04:29 131eb8b0-a1b4-47d0-9d94-c2571c083711 -> ../../dm-13.查看分區文件系統:df -T
補充命令:
partprode:將磁盤分區變化信息通知內核,請求操作系統重新加載分區表-s:顯示磁盤分區匯總信息-h:顯示幫助信息fack:文件系統修復
格式:fack -y 分區名
三、Centos 7下的XFS文件系統
XFS每個單個文件系統量最大支持8eb,單個文件可以支持16tb。
XFS是一個適合高容量磁盤與 巨型文件的文件系統
1.XFS組成部分
XFS文件系統在數據的分布上主要分為三部分:
數據區(data section)
文件系統活動登錄區(log section)
實時運行區(realtime section)
2.XFS文件系統相關查詢命令
df -t #查看已經掛載分區的文件系統類型xfs_info 掛載點/設備文件名 #查看已掛載XFS文件系統元數據信息命令blkid #列出設備的UUID等參數lsblk #查看設備詳細信息
[root@localhost ~]# lsblk /dev/sdb2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb2 8:18 0 2G 0 part [SWAP]
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 19.5G 0 part ├─centos-root 253:0 0 18.5G 0 lvm /└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part [SWAP]
└─sdb2 8:18 0 2G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
[root@localhost ~]#
3.磁盤分區
GPT分區表
命令格式:gdisk 設備文件完整路徑 #分區完成后,可以通過查看/proc/partitions來確定分區是否修改成功partprode -s #更新Linux內核的分區表信息
4.磁盤格式化
mkfs.xfs 創建xfs文件系統
[root@localhost ~]# mkfs.xfs /dev/sdb1
5.文件系統掛載
掛載:mount
選項-a:根據/etc/fstab文件,將所有磁盤進行掛載-t:指定文件系統類型來進行掛載-o:掛載特殊選項
6.開機自動掛載
開機自動掛載需要寫入配置文件/etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=866208a7-b3a2-4998-b20a-4c8dc6ecd0dc /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
第一列:磁盤設備文件名或UUID
第二列:掛載點
第三列:磁盤分區的文件系統
第四列:文件系統參數
async/sync(異步、同步) | 設置磁盤是否以異步方式運行,默認異步(性能較佳) |
---|---|
auto/noauto | 自動、手動,默認文件系統自動掛載 |
rw/ro | 讀寫、只讀,設置磁盤以讀寫或者只讀運行 |
exec/noexec | 執行、不執行。限制文件系統可執行操作 |
suid/nosuid | 該文件系統是否允許SUID權限存在 |
defaults | 同時擁有rw、suid、dev、exec、suto、async等功能 |
第五列:能否被dump備份(0:不備份,1:每天備份,5不定期備份)
第六列:是否以fsck檢驗扇區
補充命令
stat:文件名、文件大小、占用block數量、單個block大小、所在設備編號、inode號、硬鏈接數、權限、屬主屬組、訪問時間、數據修改時間、狀態修改時間[root@localhost ~]# stat .cshrc 文件:".cshrc"大小:100 塊:8 IO 塊:4096 普通文件
設備:fd00h/64768d Inode:33942934 硬鏈接:1
權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
環境:system_u:object_r:admin_home_t:s0
最近訪問:2013-12-29 10:26:31.000000000 +0800
最近更改:2013-12-29 10:26:31.000000000 +0800
最近改動:2024-04-22 22:46:36.028008307 +0800
創建時間:-
cat:改變訪問時間
vim:改變數據修改時間
chmod、chown:權限的變動改變狀態修改時間
[root@localhost ~]#
命令格式:du 目錄或分區掛載點
命令選項:
-a:列出目錄下所有子文件和子目錄占用空間大小(默認列出子目錄)。
-h:以常見單位顯示目錄大小。
-s:遞歸式顯示目錄下所有子文件子目錄占用總空間。
掛載的三種方式
臨時掛載:mount
永久掛載:vim /etc/fstab
mount -a:重新掛載/etc/fstab
擴展swap分區
swap
指的是交換分區(swap space),它是磁盤上的一塊區域,可以是一個分區,也可以是一個文件,或者是兩者的組合。
1.修改分區ID
[root@localhost ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10Partition table scan:MBR: protectiveBSD: not presentAPM: not presentGPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): n
Partition number (3-128, default 3):
First sector (34-41943006, default = 8390656) or {+-}size{KMGTP}:
Last sector (8390656-41943006, default = 41943006) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 68E53DD4-EB72-44D6-A891-EC8367BDD529
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 29360061 sectors (14.0 GiB)Number Start (sector) End (sector) Size Code Name1 2048 4196351 2.0 GiB 8200 Linux swap2 4196352 8390655 2.0 GiB 8200 Linux swap3 8390656 12584959 2.0 GiB 8200 Linux swap
#8200是Centos7中的swap的默認systemID
Command (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.2.mkswap /dev/sdb3 #swap格式化3.swapon /dev/sdb3 #開啟設備swapoff /dev/sdb3 #關閉設備4.free -k -m -g -h #查看swap情況
[root@localhost ~]# free -k #以kb顯示swap大小total used free shared buff/cache available
Mem: 995892 664036 68396 26972 263460 101380
Swap: 5242868 21768 5221100
[root@localhost ~]# free -g #以gb顯示swap大小total used free shared buff/cache available
Mem: 0 0 0 0 0 0
Swap: 4 0 4
[root@localhost ~]# free -m #以mb顯示swap大小total used free shared buff/cache available
Mem: 972 648 66 26 257 99
Swap: 5119 21 5098
[root@localhost ~]# free -h #以常見單位顯示swap大小total used free shared buff/cache available
Mem: 972M 648M 66M 26M 257M 99M
Swap: 5.0G 21M 5.0G
[root@localhost ~]#
ble
Mem: 972 648 66 26 257 99
Swap: 5119 21 5098
[root@localhost ~]# free -h #以常見單位顯示swap大小
total used free shared buff/cache available
Mem: 972M 648M 66M 26M 257M 99M
Swap: 5.0G 21M 5.0G
[root@localhost ~]#
注:fdsik命令可以在centos6、7版本使用,gdisk在centos7可以使用,如果需要在centos6使用yum安裝即可