磁盘和设备管理命令53~58
53.fdisk: 小磁盘分区
fdisk 只能对2T内的硬盘进行分区。
格式:fdisk [选项] /dev/sdb
-l :查看分区信息
root@localhost /data# fdisk -l /dev/sdb
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6dc6ec12
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 20973567 5242880 83 Linux
/dev/sdb3 20973568 31459327 5242880 83 Linux
/dev/sdb4 31459328 41943039 5241856 5 Extended
/dev/sdb5 31461376 35655679 2097152 83 Linux
/dev/sdb6 35657728 41943039 3142656 83 Linux
---------------------------------
#进入 fdisk 的交互模式(需要 root 权限)
fdisk /dev/sdb
选项:
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
-------------------------------------
d delete a partition #删除分区
-------------------------------------
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
-------------------------------------
l list known partition types #显示分区类型
-------------------------------------
m print this menu #打印菜单
-------------------------------------
n add a new partition #创建新分区
-------------------------------------
o create a new empty DOS partition table
-------------------------------------
p print the partition table #打印分区表
-------------------------------------
q quit without saving changes #不保存,直接退出
-------------------------------------
s create a new empty Sun disklabel
-------------------------------------
t change a partition's system id #修改分区系统编号
-------------------------------------
u change display/entry units
v verify the partition table
-------------------------------------
w write table to disk and exit #保存分区信息并退出
-------------------------------------
x extra functionality (experts only)
--------------------------------------------------------
#创建新分区
#新建主分区1~3
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free) #主分区
e extended #扩展分区
Select (default p): p 或者直接回车
分区号 (1-4,默认 1): 1 或者直接回车
起始 扇区 (2048-41943039,默认为 2048):直接回车
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G #设置分区大小 +5G(就是给5G大小)
分区 1 已设置为 Linux 类型,大小设为 5 GiB
-----------------------------
#创建扩展分区4(扩展分区不能直接使用,分给逻辑分区5,逻辑分区6)
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e #扩展分区
已选择分区 4
起始 扇区 (31459328-41943039,默认为 31459328):
将使用默认值 31459328
Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 5 GiB
/dev/sdb4 31459328 41943039 5241856 5 Extended
------------------------------
#创建逻辑分区5
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (31461376-41943039,默认为 31461376):
将使用默认值 31461376
Last 扇区, +扇区 or +size{K,M,G} (31461376-41943039,默认为 41943039):+2G
分区 5 已设置为 Linux 类型,大小设为 2 GiB
-------------------------------
#创建逻辑分区6
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6dc6ec12
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 20973567 5242880 83 Linux
/dev/sdb3 20973568 31459327 5242880 83 Linux
/dev/sdb4 31459328 41943039 5241856 5 Extended
/dev/sdb5 31461376 35655679 2097152 83 Linux
/dev/sdb6 35657728 41943039 3142656 83 Linux
54.lsblk:查看磁盘及分区信息
lsblk 常用参数示例:
# 1. 显示所有设备,包括未挂载的设备
lsblk -a
# 2. 只显示挂载点及文件系统信息
lsblk -f
#查看磁盘分区信息
root@localhost ~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 120G 0 disk
├─sda1 8:1 0 512M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 116.5G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
├─sdb2 8:18 0 5G 0 part
├─sdb3 8:19 0 5G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
└─sdb6 8:22 0 3G 0 part
sr0 11:0 1 4.1G 0 rom
-------------------------------------------
#显示所有设备,包括未挂载的设备
root@localhost ~# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 120G 0 disk
├─sda1 8:1 0 512M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 116.5G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
├─sdb2 8:18 0 5G 0 part
├─sdb3 8:19 0 5G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
└─sdb6 8:22 0 3G 0 part
sr0 11:0 1 4.1G 0 rom
-------------------------------------------
#只显示挂载点及文件系统信息
root@localhost ~# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 81926481-b0ff-4f23-ba32-2f3e53aabba3 /boot
├─sda2 swap a305319b-d22e-46ce-94ae-7c28092bb7fb [SWAP]
└─sda3 xfs a5fcbca5-434e-4c3d-86af-27e5b2a1bb99 /
sdb
├─sdb1 xfs c2a72748-5d1f-4062-b4fa-8246753dc9f3
├─sdb2 xfs 7e536208-7593-47d8-8dfc-4bd8531bb4b8
├─sdb3 ext4 f12853e1-9b16-4067-8c47-ae5017fea961
├─sdb4
├─sdb5 ext4 266a29e2-d81c-4bab-9dc2-2ca8f845b3a6
└─sdb6 swap a877ab22-cbd3-467a-bbe2-76bafdc6e71f
sr0 iso9660 CentOS 7 x86_64
2016-12-05-13-55-45-00
55.mkfs.xxx:格式化文件
#给分区格式化
#扩展分区4 不能格式化
-------------------------------------------
#给分区格式化成 ext4 格式
mfks.ext4 /dev/sdb1
root@localhost ~# mkfs.ext4 /dev/sdb3
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
----------------------------------------
#给分区格式化成xfs 格式
mfks.xfs /dev/sdb2
root@localhost ~# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
----------------------------------------
#为了防止系统由于内存不足而崩溃,将内存中的部分数据存放入磁盘。
# swap 交换分区
# 给分区格式成 交换分区swap
mkswap /dev/sdb1
oot@localhost ~# mkswap /dev/sdb6
正在设置交换空间版本 1,大小 = 3142652 KiB
无标签,UUID=a877ab22-cbd3-467a-bbe2-76bafdc6e71f
------------------------------------------
56.mount 和 umount:挂载与卸载
mount:挂载设备
用法:mount [设备路径] [挂载点]
- 设备路径:指设备在系统中的地址,比如
/dev/sdb1(U 盘或硬盘分区)。 - 挂载点:指定一个目录,比如
/mnt,用来访问设备中的内容。
umount:卸载设备
用法:umount [挂载点或设备路径]
例子:卸载设备
#卸载磁盘
umount /dev/sdb1
umount /data/A
- 卸载挂载点
/mnt,断开设备和系统的连接。 - 卸载前确保设备中的文件没有被占用。
开机自动挂载
vim /etc/fstab
硬件设备(设备名/UUID) 挂载点 文件类型 磁盘设置 dump 磁盘检测
UUID=a5fcbca5-434e-4c3d-86af-27e5b2a1bb99 / xfs defaults 0 0
UUID=81926481-b0ff-4f23-ba32-2f3e53aabba3 /boot xfs defaults 0 0
UUID=a305319b-d22e-46ce-94ae-7c28092bb7fb swap swap defaults 0 0
/dev/sdb1 /data/A xfs defaults 0 0
/dev/sdb2 /data/B xfs defaults 0 0
/dev/sdb3 /data/C ext4 defaults 0 0
/dev/sdb5 /data/D ext4 defaults 0 0
/dev/sdb6 swap swap defaults 0 0
#设备名:/dve/sdb1
#UUID:唯一编号
#通过lsblk -l 查看
#磁盘设置类型:
> auto - 在启动时或键入了 mount -a 命令是自动挂载。
> noauto - 只在你的命令下被挂载。
> exec - 允许执行此分区的二进制文件。
> noexec - 不允许执行此文件系统上的二进制文件。
> ro - 以只读模式挂载文件系统。
> rw - 以读写模式挂载文件系统。
> user - 允许任意用户挂载此文件系统,若无显示定义,隐含启用 noexec,nosuid,nodev 参数。
> users - 允许所有 users 组中的用户挂载文件系统。
> nousers - 只能被 root 挂载。
> owner - 允许设备所有者挂载。
> sync - I/O 同步进行。
> async - I/O 异步进行。
> dev - 解析文件系统上的块特殊设备。
> nodev - 不解析文件系统上的块特殊设备。
> suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序临时提升权 限。
> nosuid - 禁止 suid 操作和设定 sgid 位。
> noatime - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。
> nodiratime - 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。
> relatime - 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断 mutt 或其他程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见 atime 参数)。
> flush - vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
> defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw,suid,dev,exec,auto, nouser,async。
#创建A,B,C,D目录
mkdir -p /data/{A,B,C,D}
#挂载磁盘到目录上
mount /dev/sdb1 /data/A
root@localhost /data# mount /dev/sdb1 /data/A/
root@localhost /data# mount /dev/sdb2 /data/B/
root@localhost /data# mount /dev/sdb3 /data/C/
root@localhost /data# mount /dev/sdb5 /data/D/
#查看系统中所有已挂载文件系统的磁盘空间使用情况
root@localhost /data# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 117G 2.2G 115G 2% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 509M 125M 385M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb1 5.0G 33M 5.0G 1% /data/A
/dev/sdb2 5.0G 33M 5.0G 1% /data/B
/dev/sdb3 4.8G 20M 4.6G 1% /data/C
/dev/sdb5 2.0G 6.0M 1.8G 1% /data/D
--------------------------------
#扩展分区4和交换分区6 不能挂载。
#swap交换分区
--------------------------------
#swapoff 关闭交换分区
root@localhost /data# swapoff /dev/sdb6
root@localhost /data# free -h
total used free shared buff/cache available
Mem: 1.8G 87M 1.6G 8.6M 141M 1.5G
Swap: 3.0G 0B 3.0G
-------------------------------
#swapon 是打开交换分区
swapon /dev/sdb6
root@localhost /data# swapon /dev/sdb6
root@localhost /data# free -h
total used free shared buff/cache available
Mem: 1.8G 89M 1.6G 8.6M 140M 1.5G
Swap: 6.0G 0B 6.0G
--------------------------------
#free -h 是 Linux 中用于查看系统内存(物理内存和交换分区)
① Mem(物理内存)部分
列名 含义说明
total 物理内存总容量(你的系统是 1.8 GB)
used 已被实际使用的内存(87 MB,包括进程直接占用的内存)
free 完全空闲、未被任何程序使用的内存(1.6 GB,这部分内存完全未被利用)
shared 被多个进程共享的内存(8.6 MB,比如共享库占用的内存)
buff/cache 用于 “缓冲区(buffer)” 和 “缓存(cache)” 的内存(141 MB)
- 缓冲区(buffer):临时存储即将写入磁盘的数据(比如刚修改的文件);
- 缓存(cache):临时存储从磁盘读取的数据(比如频繁访问的文件);
这部分内存看似 “被使用”,但系统需要时可以快速释放给其他程序使用。
available 系统实际可用的内存(1.5 GB),包括:
- 完全空闲的 free 内存;
- 可释放的 buff/cache 内存(这部分是 “潜在可用” 的)。
这个值最能反映 “系统还能给新程序分配多少内存”,比 free 更实用。
② Swap(交换分区)部分
交换分区是硬盘上的一块空间,当物理内存不足时,系统会把暂时不用的内存数据 “挪” 到这里(类似 “虚拟内存”)。
你的输出中 Swap 总容量 3.0 GB,used 为 0B,说明目前物理内存充足,未使用交换分区。
----------------------------------
# df -h 用于查看磁盘空间使用情况
#df 是 disk free 的缩写,功能是显示系统中所有已挂载文件系统的磁盘空间使用情况
#-h 是最常用的选项之一,作用是将磁盘容量以 “人类易读” 的单位显示(如 GB、MB)
root@localhost /data# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 117G 2.2G 115G 2% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 509M 125M 385M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
-------------------------------
root@localhost /data# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 117G 2.2G 115G 2% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 509M 125M 385M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb1 5.0G 33M 5.0G 1% /data/A
/dev/sdb2 5.0G 33M 5.0G 1% /data/B
/dev/sdb3 4.8G 20M 4.6G 1% /data/C
/dev/sdb5 2.0G 6.0M 1.8G 1% /data/D
磁盘分区
- MBR 与 GPT 在 Linux 大硬盘分区中的应用:
在 Linux 系统中,对超过 2TB 的硬盘进行分区需使用 GPT(GUID Partition Table) 分区表,而非 MBR(Master Boot Record)。MBR 分区表存在 2TB 大小限制,而 GPT 无此限制且支持更多分区数量。 - 基础概念:
- MBR(主引导记录):传统硬盘分区表格式,最大支持 2TB 分区,仅允许 4 个主分区 或 3 个主分区 + 1 个扩展分区。
- GPT(全局唯一标识分区表):新型硬盘分区标准,支持 超过 2TB 的分区,且可创建更多分区(无 MBR 的数量限制)。
57.gdisk:大磁盘分区
#大于2TB的磁盘可以使用gdisk分区
#安装gdisk
yum install -y gdisk
#分区
gdisk /dev/adc
n 创建分区
w 保存
q 退出
p 查看
58.df/du:查看磁盘大小
- df 查看分区挂载情况与磁盘占用率
- -h 显示单位
- du 查看目录中文件的大小
- 选项:
- -h 显示单位
- -s 不显示每个目录,只显示总大小
磁盘文件系统与格式化
什么是磁盘文件系统,有哪些以及区别?
文件系统:是操作系统中负责管理磁盘(如硬盘、U 盘、SSD 等)上文件与数据的一套软件机制,它定义了文件的存储结构、命名规则、元数据格式、空间分配方式及访问控制逻辑,是用户与物理存储设备之间的 “翻译官”。
- 文件系统中存放数据:
- block (块数据):数据内容,每个块默认4kb
- inode (元数据):文件的详细信息,名称、权限、大小
什么是磁盘格式化?
磁盘格式化(Disk Formatting)是对磁盘(如硬盘、U 盘、SSD 等)进行初始化处理的操作,其核心是建立文件系统,让磁盘能够被操作系统识别并用于存储文件。简单来说,格式化就像 “给空白磁盘划分存储空间规则”,让系统知道如何记录文件位置、大小等信息。
- 建立文件系统
- 创建并初始化 block,以及 inode
常见文件系统及特点
| 文件系统 | 适用场景 | 核心特点 |
|---|---|---|
| FAT32 | 老旧设备、小容量 U 盘(≤32GB) | 兼容性极强(多系统支持),但单文件≤4GB,无权限管理,易碎片化,空间利用率低(簇浪费)。 |
| NTFS | Windows 系统盘、企业存储 | 支持单文件 16EB、分区 256TB,带日志(防数据损坏),复杂权限(ACL)、加密 / 压缩,适合 Windows 环境,Linux 需驱动。 |
| exFAT | 大容量 U 盘、跨平台大文件(如 4K 视频) | 无 4GB 文件限制,兼容多系统(Linux 需驱动),优化空间分配(减少碎片),适合移动设备大容量存储。 |
| ext4 | Linux 系统盘、服务器数据 | 日志功能(崩溃恢复),单文件 16TB、分区 1EB,延迟分配(减少碎片),Linux 原生支持,稳定高效。 |
| XFS | 高性能服务器(视频编辑、数据库) | 擅长高并发 IO 和大文件,动态扩展分区,元数据管理高效,吞吐量高,企业级 Linux(如 Red Hat)首选。 |
| APFS | macOS/iOS 设备(如 Mac、iPhone) | 针对 SSD 优化,支持快照(快速备份)、空间共享、加密,写时复制(COW)减少磨损,苹果生态专属。 |
浙公网安备 33010602011771号