一:硬碟存盤
1、存盤型別
根據存盤的特性不同,可以將存盤分為記憶體和外存兩類,
-
記憶體:又叫做主存盤器,計算機中所有程式的運行都是在記憶體中進行,
-
外存:又叫做輔助存盤器,因為記憶體容量小且斷電會丟失所有資料,所以磁盤來實作資料的持久化存盤,例如:硬碟,U盤,軟盤,光碟
2、硬碟和磁盤:
磁盤是一個廣泛的概念,是一個總的稱呼,用來描述多種不同型別的存盤介質,包括硬碟、軟盤、光碟、閃存盤等等,
所以硬碟也可以被稱為磁盤,因為硬碟也是一種磁性存盤介質,
3、硬碟型別
根據存盤原理的不同,可以將硬碟分為機械硬碟和固態硬碟兩類,
-
機械硬碟:HDD(Hard Disk Drive), 由物理盤片、磁頭、控制電機、轉軸等幾部分組成,
-
固態硬碟:SSD(Solid State Drive) ,用固態電子存盤芯片陣列而制成的硬碟,

4、介面型別
從整體的角度上,硬碟介面分為IDE、SCSI、STAT、USB、M.2等型別,
- IDE:133MB/s,并行介面,早期家用電腦介面(淘汰了)
- SCSI:640MB/s,并行介面,早期服務器用的介面
- SATA:6Gbps,SATA資料埠與電源埠是分開的,即需要兩條線,一條資料線,一條電源線, 一般的家用電腦的介面
- SAS:6Gbps,SAS是一整條線,資料埠與電源埠是一體化的,SAS中是包含供電線的,而SATA中不包含供電線,SATA標準其實是SAS標準的一個子集,二者可兼容,SATA硬碟可以插入SAS主板上,反之不行,
- USB:Universal Serial Bus,中文叫通用串行總線,480MB/s
- M.2:M.2介面,是Intel推出的一種替代MSATA新的介面規范(M.2就是從筆記本誕生的),可以兼容多種通信協議,如sata、PCIe、USB等,如果 M.2 插槽如果不支持特定的協議,相應的固態硬碟將無法識別和使用,


5、硬碟尺寸
服務器使用的硬碟尺寸只要有兩種,LFF和SFF,
-
LFF:3.5寸硬碟
-
SFF:2.5寸硬碟

6、資料的存盤方式
機械硬碟存盤資料的時候,是將資料存盤在其內部的盤面上,盤面類似于DVD光碟,每個盤面劃分成了一圈一圈的磁道,最外圈是0磁盤,然后每個磁盤有劃分為了N多個小塊,這個小塊叫做扇區,扇區大小固定,是512byte,

0磁道0扇區:指的就是最外面那個磁盤的第一個扇區,大小是512位元組,
7、硬碟空間的使用
在服務器上加入一塊新的硬碟后,需要經過磁區、格式化和掛載才能正常使用硬碟的空間,
- 硬碟磁區:將一個物理硬碟在邏輯上分為多個硬碟,每一個邏輯硬碟就叫做一個磁區,
- 創建檔案系統:硬碟或磁區格式化的程序就是創建檔案系統的程序,
- 掛載新檔案系統:將額外檔案系統與根檔案系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它檔案訪問入口的行為
8、硬碟的磁區說明
將硬碟進行磁區具備以下優點:
- 便于資料管理,可以將作業系統、應用程式、用戶資料等分別存盤在不同的磁區
- 可以安裝多個作業系統和使用不同的檔案系統,將不同的作業系統安裝在不同的磁區中,這樣可以避免不同作業系統之間的沖突,
- 可以優化磁盤的性能,將作業系統、應用程式等放置在不同的磁區中,可以避免資料碎片,提升硬碟讀寫速度,
對硬碟進行磁區的時候有兩種磁區方式(MBR磁區和GPT)磁區,不同的磁區方式具有不同的特點,
MBR磁區:
Master Boot Record(主引導記錄),1982年開發而來,使用32位表示扇區數,磁區的大小不能超過2T,最多只能有四個主磁區,如果需要使用更多的磁區,可以將一個磁區格式化為邏輯磁區,再基于邏輯磁區創建多個擴展磁區,
硬碟使用MBR的磁區型別方式后,會將整個硬碟的磁區資訊放在0磁道0扇區這個512位元組大小的空間中,前446位元組存放boot loader,中間64位元組存放磁區表資訊,每16位元組用來標識一個磁區資訊,最后2位元組作為標志位,
MBR的三種磁區型別
- 主磁區:primary,可以存放資料也可以裝系統
- 擴展磁區:extended,不能直接存資料,需要在里面劃分邏輯磁區才能存放資料(相當于一個容器)
- 邏輯磁區:logical,作用和主磁區一樣
GPT磁區:
GUID(Globals Unique Identifiers) partition table,最多支持128個磁區,其中沒有擴展磁區的概念,每個磁區都可以是主磁區.每個磁區的最大空間理論上可以達到9.4ZB,
BIOS和UEFI:
作用:BIOS和UEFI都是負責計算機硬體初始化、開機自檢和引導作業系統,
- BIOS:是只讀記憶體(ROM)中的一段程式,這段程式叫做"基本輸入輸出系統"(BasicInput/Output System),簡稱為BIOS,計算機通電后,第一件事就是讀取ROM芯片中的程式,
- EFI:(Extensible Firmware Interface)可擴展韌體介面,最初由Intel開發,是Intel的專有技術,是BIOS的升級版,
- UEFI:(Unified Extensible Firmware Interface)統一的可擴展韌體介面,是基于EFI標準的一個具體實作,并由多個公司共同推動和支持,現在UEFI是一個開放的標準,UEFI不再是intel的專有技術,
BIOS和UEFI的區別
- BIOS只能引導傳統的MBR磁區,UEFI支持MBR、GPT等磁區,
- UEFI提供了Secure Boot(安全啟動)功能,在啟動程序中只加載由受信任的制造商簽名的軟體和驅動程式,
- UEFI支持的硬體設備和介面更多,例如USB 3.0、NVMe、網路堆疊等
- UFEI提供了圖形界面,可以用滑鼠操作,BIOS只能用鍵盤操作,
windows:只能安裝 BIOS + MBR 或是 UEFI + GPT組合,
linux:可以實作 BIOS + GPT + GRUB 組合
Linux中的設備檔案:
在linux中,一切及皆檔案,包括硬體設備,硬體設備會被映射為/dev下面的一個檔案設備檔案,
設備檔案根據存盤單位的不同分為兩種:
- 塊設備檔案:存盤單位是block,例如硬碟,
- 字符設備檔案:存盤單位是char,例如鍵盤,
設備檔案的命令規則:
# SAS,SATA,SCSI,IDE,USB: /dev/sdX
# nvme協議: /dev/nvme0n#
# 虛擬磁盤: /dev/vd 或/dev/xvd
查看塊設備檔案:lsblk
tom@ubuntu1604:~$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 8a39188a-59cd-4899-b4c1-22aec246c18f /
├─sda2
└─sda5 swap 4442a597-37c1-4639-bc25-881505c12d98 [SWAP]
sdb
├─sdb1 ntfs 老毛桃U盤 1C98D9A698D97EA8
└─sdb2 vfat EFI 0BE8-0ECB
sr0 iso9660 Ubuntu-Server 16.04.6 LTS amd64 2019-02-27-00-06-32-00
二:檔案系統
1、檔案系統的概念
檔案系統就是在作業系統中負責管理和存盤檔案資訊的軟體結構稱為檔案管理系統,
檔案系統是對檔案存盤設備的空間進行組織和分配,負責檔案存盤并對存入的檔案進行保護和檢索,
檔案系統的創建:
硬碟或磁區在進行格式化的程序,就是創建檔案系統的程序,
windows 常用檔案系統
- FAT32:最多只能支持16TB的檔案系統和4GB的檔案
- NTFS:New Technology File System,windows獨有的檔案系統,linux不支持,最多只能支持16EB的檔案系統和16EB的檔案
- exFAT:Linux和windows都支持,時為了解決FAT32等不支持4G及其更大的檔案而推出de1,適合于閃存的檔案系統,例如U盤,
Linux 常用檔案系統
- ext系列:最新版本的時ext4,Ext4的檔案系統容量達到1EB,而支持單個檔案則達到16TB,理論上支持無限數量的子目錄,
- xfs:最大可以支持8EB的檔案系統,而支持單個檔案則達到8EB,能以接近裸設備I/O的性能存盤資料,
- swap:用于Linux的交換磁區,在Linux中,使用整個交換磁區來提供虛擬記憶體,
- iso9660: 光碟的檔案系統型別
裸檔案系統
- raw:裸檔案系統是指未經過格式化的磁盤磁區或映像檔案,因此它沒有檔案系統結構和元資料,也沒有任何檔案或目錄可見,
裸檔案系統是一個塊設備,它可以像其他塊設備一樣進行讀寫操作,因此裸檔案系統通常用于虛擬化環境中,作為虛擬機磁盤鏡像的基礎,
網路檔案系統
- NFS:(Network File System)網路檔案系統,一般使用在局域網中,
- CIFS:(Common Internet File System)通用過internet檔案系統,
虛擬檔案系統
- VFS: 為用戶程式提供檔案和檔案系統操作的統一介面,屏蔽不同檔案系統的差異和操作細節,

例如:
使用ls查看磁盤上的檔案,因為檔案系統的功能是由作業系統的內核提供,應用程式是通過訪問檔案系統,然后檔案系統再去訪問具體的檔案,但是不同檔案系統底層是實作和區別差別可能非常大,所以程式的系統呼叫可能會不同,為了方便程式的統一呼叫,就就使用了虛擬檔案系統提供統一的介面,
檔案系統的組成
由三部分組成,分別是內核中的模塊,虛擬檔案系統和用戶空間的管理工具,
- 內核中的模塊:提供對應檔案系統的功能,例如ext4, xfs, vfat
- Linux的虛擬檔案系統:提供統一的介面,例如VFS
- 用戶空間的管理工具:提供對內核檔案系統管理的工具,例如mkfs.ext4, mkfs.xfs,mkfs.vfat
查看當前系統支持的檔案系統:
# 方法一:
ls -l /lib/modules/`uname -r`/kernel/fs
# 方法二:
cat /proc/filesystems

2、Inode 和 Block
當某個存盤設備被格式化為EXT系列的檔案系統后,檔案系統會將磁盤空間分為兩部分:inode區域和資料區域(也稱為塊區域),
Inode區域:存放檔案的元資料資訊
包含了若干了Inode,每個inode存放一個檔案的元資料資訊(檔案大小、型別、權限、UID、GID、所有者、所屬組等資訊)和唯一的Inode編號,以及指向檔案資料塊的指標,
Block區域:存放檔案真正的資料部分
- ? 存放檔案的真正資料部分,資料區域被分割成一個個大小相等的塊,每個塊通常為4KB或8KB,
- ? 目錄塊也是存盤在資料區域中的一種特殊的資料塊,它存盤了一組目錄項,每個目錄項存放一個檔案的檔案名和Inode編號,

例如:
當需要訪問一個檔案時,檔案系統會通過目錄項找到對應的inode,然后根據inode中的資訊來讀取或寫入檔案的內容,因此,目錄項在檔案系統中扮演了非常重要的角色,它們充當了檔案和檔案系統之間的橋梁,
洗掉某個目錄就是把目錄檔案的資料塊部分的檔案串列和檔案的節點編號的映射關系洗掉的程序
在EXT系列檔案系統中創建檔案流程:
- 首先,檔案系統會找到一個未使用的inode號碼,并分配給新檔案,inode包含檔案的元資料,如權限、所有者、創建時間、修改時間等資訊,
- 然后,檔案系統會找到一個或多個未使用的資料塊,這些資料塊將用于存盤檔案的實際內容,
- 接著檔案系統會將inode與資料塊的資訊記錄在檔案系統的元資料區域中,以便以后可以找到并訪問它們,
- 最后檔案系統會將檔案的名稱和與該檔案相關聯的inode號碼存盤在目錄中,目錄是一個特殊的檔案,它包含檔案系統中所有檔案和目錄的串列,
3、軟鏈接和硬鏈接
軟鏈接:類似于windows的快捷方式

特點:
-
軟鏈接和源檔案不是同一個檔案
-
允許對目錄檔案創建軟鏈接,
-
支持跨設備和跨磁區創建軟鏈接,
-
創建一個軟鏈接到一個目錄下,沒有指定軟連接的名字,那么軟連接的名字和源檔案名一致
硬鏈接:一個檔案多個檔案名

特點:
- 不允許對目錄檔案創建硬鏈接
- 不能跨設備、跨磁區,例如sda1的檔案不能硬鏈接到sda2上面,
4、硬碟的磁區工具
fdisk
使用fdisk創建硬碟磁區的時候,默認會將硬碟的磁區型別格式化為MBR格式的磁區型別,
例如:
# 創建磁區表
root@ubuntu1804:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n # 創建一個磁區表
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p # 創建主磁區
Partition number (1-4, default 1): # 磁區編號,
First sector (2048-41943039, default 2048): # 不輸入表示從當前位置開始
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +10G # 磁區的大小
Created a new partition 1 of type 'Linux' and of size 10 GiB.
Command (m for help): p # 查看磁區表的資訊
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 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: 0x3ea7c314
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 20973567 20971520 10G 83 Linux
Command (m for help): w # 保存設定并退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
# 洗掉磁區表
root@ubuntu1804:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 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: 0x3ea7c314
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 20973567 20971520 10G 83 Linux
/dev/sdb2 20973568 31459327 10485760 5G 83 Linux
Command (m for help): d # 洗掉磁區表
Partition number (1,2, default 2): 2 # 洗掉的磁區表編號 表示洗掉第二個磁區
Partition 2 has been deleted.
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 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: 0x3ea7c314
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 20973567 20971520 10G 83 Linux
Command (m for help): w #保存退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
gdisk
gdisk工具是默認會把硬碟的磁區型別格式化為GPT型別,如果磁區型別非gpt格式,會默認轉換為gpt格式,
例如:
# 新建磁區表
root@ubuntu1804:~# gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): w
Final 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.
The operation has completed successfully.
# 洗掉磁區表
root@ubuntu1804:~# gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present # 當前硬碟的磁區型別
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Model: VMware Virtual S
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): E0199E20-EDB2-43D1-B653-3E8080E547EA
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 37748669 sectors (18.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4196351 2.0 GiB 8300 Linux filesystem
Command (? for help): d 1 # 洗掉標號為1的磁區表
Using 1
Command (? for help): w # 保存退出
Final 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.
The operation has completed successfully.
parted
parted工具可以管理gpt和mbr型別的磁區表,其它的磁區型別也可以管理,例如sun、bsd等,
注意:parted的操作都是實時生效的,需要小心使用,
例如:
# 新建磁區表
root@ubuntu1804:~# parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p # 將硬碟磁區型別改為gpt
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes # 確認更改
(parted) mkpart primary ext4 0% 20% # mkpart 磁區型別 檔案系統型別 磁區的開始位置 磁區的結束位置 -1:表示磁盤的最后
(parted) mkpart primary ext4 20% 40%
(parted) mkpart primary ext4 40% 70%
(parted) p # 查看磁區表資訊
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 4295MB 4294MB ext4 primary
2 4295MB 8590MB 4295MB ext4 primary
3 8590MB 15.0GB 6442MB ext4 primary
(parted) quit
Information: You may need to update /etc/fstab.
# 洗掉磁區表 # 退出
root@ubuntu1804:~# parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 10.7GB 10.7GB primary
(parted) rm 1 # rm 1 表示洗掉編號為1的磁區表
(parted) quit
Information: You may need to update /etc/fstab.
查看磁區型別:
blkid /dev/device
PTTYPE="dos" # MBR型別
PTTYPE="gpt" # GPT型別
parted -l
Partition Table: msdos # MBR型別
Partition Table: gpt # GPT型別
fdisk -l
Disklabel type: dos # MBR型別
Disklabel type: gpt # GPT型別
修改磁區型別
MBR-->GPT
parted /dev/sdb
(parted) mklabel gpt
GPT-->MBR
parted /dev/sdb
(parted) mklabel msdos
5、硬碟格式化工具
mkfs工具
mkfs是一個Linux/Unix作業系統中用于創建檔案系統的命令列工具,它可以用于格式化磁盤或磁區,以便在上面創建新的檔案系統,
例如:
# 格式化硬碟為ext4檔案系統
sudo mkfs.ext4 /dev/sdb 或 sudo mkfs -t ext4 /dev/sdb
# 指定Inode的數量
sudo mkfs -t ext4 -M 2000000 /dev/sdb
常用選項:
-t {ext2|ext3|ext4|xfs} 指定檔案系統型別
-b {1024|2048|4096} 指定塊 block 大小,默認4kb
-L ‘LABEL’ 設定卷標,便于在系統中識別,
-i # 指定一個inode節點的大小;默認256位元組,即一個block可以存放16個inode
-N # 指定磁區中創建多少個inode,默認inode空間占總空間的1%
硬碟掛載工具
硬碟掛載是將硬碟驅動器(例如硬碟、SSD等)連接到作業系統檔案系統的程序,將某個硬碟驅動器掛載到檔案系統后就可以對硬碟進行讀寫等操作,
mount工具
例如:
# 將/dev/sdb1掛載到/mnt/data 不指定檔案系統型別,會自動進行檢測
sudo mount /dev/sdb1 /mnt/data
# 掛載的時候手動指定檔案系統的型別
sudo mount -t ntfs /dev/sdb1 /mnt/data
說明:
使用mount進行掛載的時候,如果確定了要掛載的檔案系統的型別,使用-t引數指定檔案系統型別可以確保系統以正確的方式掛載檔案系統,避免可能的錯誤和問題,
如果掛載的時候不確定檔案系統的型別,系統會對檔案系統進行自動檢測,但是當存在多個可能的檔案系統型別時,系統可能會選擇錯誤的型別導致掛載失敗,
mount命令的常用引數:
-t fstype:指定檔案系統型別,如果不指定會自動進行檢測
-o <掛載選項>:指定掛載選項,多個選項用逗號隔開,
# 掛載選項
# ro 以只讀方式掛載檔案系統,
# remount 重新掛載檔案系統,相當于先umount再mount
# defaults 使用默認的掛載選項,相當于rw, suid, dev, exec, auto, nouser, async
# async 異步模式,記憶體更改時,寫入快取區buffer,過一段時間再寫到磁盤中,效率高,但不安全
# sync 同步模式,記憶體更改時,同時寫磁盤,安全,但效率低下
# noatime 指定檔案系統不更新最后訪問時間
# _netdev 當網路可用時才對網路資源進行掛載,如:NFS檔案系統,如果網路不可達不加該選項會導致系統無法啟動,
-r:以只讀方式掛載檔案系統,
-w:以可讀寫方式掛載檔案系統,默認就是以可讀可寫的方式掛載
-a 自動掛載所有支持自動掛載的設備(定義在了/etc/fstab檔案中,且掛載選項中有auto功能)
noatime選項說明:
使用 noatime 選項可以禁止系統更新檔案或目錄的訪問時間戳,即 atime 屬性,當檔案或目錄被訪問時,系統不會更新 atime 屬性,而是保留原來的值,可以較少磁盤IO,提高檔案系統的性能,
使用noatime的場景:
在某些高并發的應用中,可能會有大量的讀取操作,如果每次讀取都更新 atime 屬性,會對系統的性能造成很大的影響,這種情況下可以考慮加noatime選項,
不能使用noatime的場景:
如果應用程式需要用到檔案的訪問時間,就不能使用 noatime 選項,因為使用 noatime 選項會禁止系統更新檔案或目錄的訪問時間戳,即 atime 屬性,這會導致應用程式無法獲取檔案的最后訪問時間,從而影回應用程式的功能,
掛載規則說明:
- 一個掛載點同一時間只能掛載一個設備,如果掛載了多個設備就只顯示最后一個設備
- 一個設備可以掛載到多個掛載點
- 掛載點通常是空的目錄檔案
umount工具
umount用于卸載掛載的檔案系統,
例如:
umount device 或 umount mountpoint
# 例如:
umount /dev/sda1
查看掛載的設備
# 方法一:使用mount命令,會列出所有已掛載的設備及其掛載點
root@ubuntu1804:~# mount
/dev/sda5 on / type ext4 (rw,relatime,errors=remount-ro,data=https://www.cnblogs.com/heyongshen/p/ordered)
# 方法二:查看內核引數
root@ubuntu1804:~# cat /proc/mounts
/dev/sda1 /boot ext4 rw,relatime,data=ordered 0 0
# 方法三:df命令
root@ubuntu1804:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 954M 0 954M 0% /dev
tmpfs tmpfs 198M 11M 187M 6% /run
/dev/sda5 ext4 58G 4.2G 51G 8% /
tmpfs tmpfs 986M 0 986M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 986M 0 986M 0% /sys/fs/cgroup
/dev/sda1 ext4 922M 80M 780M 10% /boot
tmpfs tmpfs 198M 0 198M 0% /run/user/0
持久掛載:
將掛載保存到/etc/fstab中可以下次開機時,自動啟用掛載
#使用`man 5 fstab `查看/etc/fstab組態檔格式
# 格式
device mountpoint fs_type options 0 0
# 例如:
/dev/sdb1 /data ext4 defaults,noatime 0 0
# 表示將/dev/sdb1這個磁區掛載到/data這個目錄,并且使用默認的掛載選項,不進行本分和檔案系統檢查,
# 說明
# 備份頻率(一般用不上):0:不做備份 1:每天轉儲 2:每隔一天轉儲
# 檔案系統檢查的次序:開機檢測檔案系統的程序,其中允許的數字是0 1 2
# 0:不自檢 ,1:首先自檢;一般只有rootfs才用 2:非rootfs使用
6、移動設備的管理
當把u盤設備插入linux系統后,會被內核探測為SCSI設備,會被映射到/dev下作為一個設備檔案,例如:/dev/sdaX、/dev/sdbX等,
-
圖形界面:usb設備會自動掛載到
/run/media/路徑下, -
字符界面:需要手動進行usb設備的掛載才能正常使用,

說明:ubuntu默認支持識別 NTFS 檔案系統格式的 U 盤,CentOS 默認情況下不支持識別 NTFS 檔案系統格式的 U 盤,
如果不識別需要安裝ntfs-3g 軟體包來支持 NTFS 格式的 U 盤,
插入u盤后可以通過系統日志看到相關資訊:
root@ubuntu1804:~# tail -f /var/log/syslog
Mar 19 17:14:51 ubuntu1804 kernel: [ 5822.106369] usb 1-1: new high-speed USB device number 8 using ehci-pci
Mar 19 17:14:51 ubuntu1804 kernel: [ 5822.455825] usb 1-1: New USB device found, idVendor=0930, idProduct=6544
Mar 19 17:14:51 ubuntu1804 kernel: [ 5822.455827] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Mar 19 17:14:51 ubuntu1804 kernel: [ 5822.455828] usb 1-1: Product: DataTraveler 2.0
Mar 19 17:14:51 ubuntu1804 kernel: [ 5822.455829] usb 1-1: Manufacturer: Kingston
Mar 19 17:14:51 ubuntu1804 kernel: [ 5822.455829] usb 1-1: SerialNumber: 001BFC3653BCC341E91386F4
Mar 19 17:14:51 ubuntu1804 kernel: [ 5822.458677] usb-storage 1-1:1.0: USB Mass Storage device detected
Mar 19 17:14:51 ubuntu1804 kernel: [ 5822.458909] scsi host33: usb-storage 1-1:1.0
Mar 19 17:14:52 ubuntu1804 kernel: [ 5823.499865] scsi 33:0:0:0: Direct-Access Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 4
Mar 19 17:14:52 ubuntu1804 kernel: [ 5823.500256] sd 33:0:0:0: Attached scsi generic sg3 type 0
Mar 19 17:14:52 ubuntu1804 kernel: [ 5823.504780] sd 33:0:0:0: [sdc] 60549120 512-byte logical blocks: (31.0 GB/28.9 GiB)
Mar 19 17:14:52 ubuntu1804 kernel: [ 5823.507219] sd 33:0:0:0: [sdc] Write Protect is off
Mar 19 17:14:52 ubuntu1804 kernel: [ 5823.507220] sd 33:0:0:0: [sdc] Mode Sense: 45 00 00 00
Mar 19 17:14:52 ubuntu1804 kernel: [ 5823.509773] sd 33:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Mar 19 17:14:52 ubuntu1804 kernel: [ 5823.523647] sdc: sdc1 sdc2
Mar 19 17:14:52 ubuntu1804 kernel: [ 5823.535055] sd 33:0:0:0: [sdc] Attached SCSI removable disk
lsusb工具
lsusb工具用于顯示 USB 總線上連接的設備串列,使用 lsusb 可以查看連接到計算機上的 USB 設備串列,從而判斷u盤設備是否插入了系統中,
例如:查看usb設備資訊:
# usbutils工具包
root@ubuntu1804:~# lsusb
Bus 001 Device 008: ID 0930:6544 Toshiba Corp. TransMemory-Mini / Kingston DataTraveler 2.0 Stick (2GB)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

7、du和df使用說明
du:disk usage,一般是用來查看目錄或指定檔案的大小
選項:
-h # 自動使用合適的單位進行顯示,默認單位是kb
-s # 顯示指定目錄或檔案的總大小
--exclude=/path # 用于排除指定的檔案或目錄
例如:
# 查看整個系統的大小,但不統計/sys和/proc這連個虛擬檔案系統
root@ecs-1746-0001:~# du -sh --exclude='/proc' --exclude='/sys' /
23G /
# 統計某個目錄下目錄檔案的大小
# 需要進入待統計的目錄
root@ecs-1746-0001:~# cd DeploySystem-Ubuntu-20.04/
root@ecs-1746-0001:~/DeploySystem-Ubuntu-20.04# du -sh */ | sort -rh
2.1G packages/
5.6M lib/
3.1M phplib/
156K conf/
48K include/
16K job/
4.0K SourceCode/
# */通配符表示所有子目錄
# 統計某個目錄下每個檔案的大小
# 1. 進入該目錄
root@ecs-1746-0001:~# cd DeploySystem-Ubuntu-20.04/
# 2. 進行統計
root@ecs-1746-0001:~/DeploySystem-Ubuntu-20.04# du -ah --exclude='{'.','..'}' */ | sort -rh | more
# --exclude='{'.','..'}'表示不統計.和..檔案
# */通配符表示所有子目錄
df:disk free,主要用來查看掛載了的檔案系統情況,
注意:df看到的檔案系統中真實占用的空間大小,而非表面上的空間大小,因為檔案系統本身就有元資料,所以即使是剛創建的干凈檔案系統,也會占用一定的空間
選項:
-h:自動使用合適的單位進行資料的顯示
-T:顯示檔案系統的型別
例如:
root@ubuntu1804:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 954M 0 954M 0% /dev
tmpfs tmpfs 198M 11M 187M 6% /run
/dev/sda5 ext4 58G 4.2G 51G 8% /
tmpfs tmpfs 986M 0 986M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 986M 0 986M 0% /sys/fs/cgroup
/dev/sda1 ext4 922M 80M 780M 10% /boot
tmpfs tmpfs 198M 0 198M 0% /run/user/1000
tmpfs tmpfs 198M 0 198M 0% /run/user/0
df和du統計資訊不相同的情況:
df > du的情況:
當把檔案洗掉了,但是空間并沒有被釋放(有行程再使用這個檔案,洗掉了這個檔案不會馬上釋放空間)時候,使用df看到的資料比du統計的大,即:df>du
例如:
# 創建要給1G大小的檔案
root@ubuntu1804:~# dd if=/dev/zero of=./a.txt bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.23766 s, 868 MB/s
#
root@ubuntu1804:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext4 58G 5.2G 50G 10% /
/dev/sda1 ext4 922M 80M 780M 10% /boot
root@ubuntu1804:~# du -sh /
5.2G /
# 在另一個視窗使用vim打開這個檔案
root@ubuntu1804:~# vim a.txt
# 在本視窗洗掉該檔案
root@ubuntu1804:~# rm -rf a.txt
# 使用lsof查看,發現a.txt這個檔案被vim行程使用,所以洗掉了檔案沒有釋放空間
root@ubuntu1804:~# lsof | grep delete
vim 22197 root 3r REG 8,5 1073741824 3673208 /root/a.txt (deleted)
# 再次統計大小
root@ubuntu1804:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext4 58G 5.2G 50G 10% /
/dev/sda1 ext4 922M 80M 780M 10% /boot
root@ubuntu1804:~# du -sh /
4.2G /
df < du的情況:
當某個目錄檔案掛載到其他設備了的時候(多個設備空間的組合),這就是所說的檔案系統重疊時候,即df < du
例如:
# /dev/sda5磁區掛載到/根目錄下,顯示已經用了4.2G空間
root@ubuntu1804:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext4 58G 4.2G 51G 8% /
/dev/sda1 ext4 922M 80M 780M 10% /boot
# 使用du工具統計根目錄大小也是4.2G
root@ubuntu1804:~# du -sh /
4.2G /
# 將sdb1磁區掛載到/xx下
root@ubuntu1804:~# mount /dev/sdb1 /xx
# 創建要給1G大小的檔案
root@ubuntu1804:~# dd if=/dev/zero of=/xx/a.txt bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 10.6664 s, 101 MB/s
# 再次使用du統計/的大小已經變為了5.2G
root@ubuntu1804:~# du -sh /
5.2G
# 使用df查看 仍然是4.2G
root@ubuntu1804:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext4 58G 4.2G 51G 8% /
/dev/sda1 ext4 922M 80M 780M 10% /boot
/dev/sdb1 ext4 3.9G 1.1G 2.7G 28% /xx
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/547421.html
標籤:Linux
下一篇:RHCE服務----DNS
