一、磁盘基础
1.磁盘的结构
1.1 硬盘的物理结构
- 盘头:硬盘有多个盘头,没盘片2面
- 磁头:每面一个磁头
1.2 磁盘的数据结构
- 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位。、
- 磁道:同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹
- 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
- 硬盘存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数(512字节)
- 可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
1.3 磁盘的接口类型
IDE、SATA、SCSI、SAS、光纤通道等
2.MBR与磁盘分区表示
2.1 主引导记录-MBR(Master Boot Record)
- MBR位于硬盘第一个物理扇区处
- MBR中包含硬盘的主引导程序和硬盘分区表
- 分区表有4个分区记录区,每个分区记录区占16个字节
- Linux中将硬盘、分区等设备均表示为文件
2.2 磁盘分区结构
- 硬盘中的主分区数目只有4个
- 主分区和扩展分区的序号限制在1~4
- 扩展分区再分为逻辑分区
- 逻辑分区的序号将始终从5开始
二、文件系统
1.文件系统类型
1.1 XFS文件系统
- 存放文件和目录数据的分区
- 高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间。
- CentOS 7系统中默认使用的文件系统
1.2 SWAP - 交换文件系统
- 为 Linux 系统建立交换分区
- 一般设置为物理内存的1.5~2倍
1.3 Linux支持的其他文件系统类型
EXT4、FAT32、NTFS、LVM等
三、管理磁盘分区和文件系统
1 管理磁盘分区
fdsik "硬件设备" #进入交互模式管理磁盘
例:fdisk /dev/sdb
交互模式中的常用命令 | 解释 |
---|---|
m | 获取帮助菜单 |
n | 新建分区 |
p | 查看分区情况 |
d | 删除分区 |
t | 变更分区的类型 |
w | 保存分区操作并退出 |
q | 不保存分区操作并退出 |
2.创建分区
2.1 创建xfs磁盘分区演示
[root@wzx ~]# fdisk /dev/sdc #进入管理磁盘交互模式
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x2aac8364.
Command (m for help): n #创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #选择主分区
Partition number (1-4, default 1): 1
First sector (2048-629145599, default 2048):2048 #起始扇区
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-629145599, default 629145599): +10G #分区大小
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): w #保存并退出操作
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@wzx ~]# mkfs.xfs /dev/sdc1 #格式化并创建xfs文件系统
meta-data=/dev/sdc1 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, 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
[root@wzx /]# mount /dev/sdc1 /abc123 #把分区临时挂载到/acb123下
2.2 创建swap分区演示
[root@wzx /]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).
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 (1 primary, 0 extended, 3 free)
e extended
Select (default p): p #为主分区
Partition number (2-4, default 2): 2 #分区号
First sector (20973568-629145599, default 20973568):
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-629145599, default 629145599): +6G #分区大小
Partition 2 of type Linux and of size 6 GiB is set
Command (m for help): t #改变文件系统类型
Partition number (1,2, default 2): 2 #分区号
Hex code (type L to list all codes): 82 #82对应SWAP文件系统
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): w #保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@wzx /]# partprobe /dev/sdc #重新检测磁盘信息
[root@wzx /]# mkswap /dev/sdc2 #创建swap文件系统
Setting up swapspace version 1, size = 6291452 KiB
no label, UUID=6189f6bb-3c18-4454-81d5-affbc8c1bc22
[root@wzx /]# swapon /dev/sdc2 #开启交换分区
[root@wzx /]# swapon -s /dev/sdc2 #查看所有swap信息
Filename Type Size Used Priority
/dev/dm-1 partition 4194300 0 -2
/dev/sdc2 partition 6291452 0 -3
[root@wzx /]# swapoff /dev/sdc2 #停用交换分区
[root@wzx /]# swapon -s /dev/sdc2 #查看所有swap信息
Filename Type Size Used Priority
/dev/dm-1 partition 4194300 0 -2
3.挂载文件系统
3.1 临时挂载
mount -t "文件系统类型" "存储设备" "挂载点"
例:mount -t xfs /dev/sdc1 /abc123
- ps:-t用于指定文件系统类型,通常可以省略,由系统自动识别
3.2 永久挂载(自动挂载)
开机时系统会自动读取/etc/ftab文件内容,自动挂载文件系统。
vi /etc/ftab
#编辑ftab配置
#
# /etc/fstab
# Created by anaconda on Tue Jul 30 02:14:22 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=3d016aa4-dfe1-4a11-b046-6c1578c66573 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdc1 /abc123 xfs defaults 0 0
#硬件设备 #挂载点 #文件系统类型 #挂载参数 #第一个0-dump备份(1-是,2否)
#第二个0磁盘检查顺序(0-不进行,1-优先检查,2-其次检查)
4. df 命令 - 查看磁盘使用情况
df -hTi
-h 人性化显示
-T 查看文件系统类型
-i 查看inode号
[root@wzx /]# df -hTi
Filesystem Type Inodes IUsed IFree IUse% Mounted on
devtmpfs devtmpfs 469K 441 468K 1% /dev
tmpfs tmpfs 472K 1 472K 1% /dev/shm
tmpfs tmpfs 472K 1.3K 471K 1% /run
tmpfs tmpfs 472K 16 472K 1% /sys/fs/cgroup
/dev/mapper/centos-root xfs 18M 38K 18M 1% /
/dev/sda1 xfs 512K 327 512K 1% /boot
tmpfs tmpfs 472K 1 472K 1% /run/user/0
/dev/sdc1 xfs 5.0M 3 5.0M 1% /abc123
5. iostat 命令 - 查看硬盘读写性能
avg-cpu参数 | 解释 |
---|---|
%user | 用户态运行应用程序所花费的时间百分比 |
%nice | CPU执行“nice”值(优先级)被调整过的进程所花费的时间 |
%system | CPU在内核态执行系统调用或处理中断等任务所花费的时间百分比 |
%iowait | CPU等待I/O(输入/输出)操作完成所花费的时间百分比 |
%steal | 当前虚拟机因虚拟化技术而“丢失”的CPU时间 |
%idle | CPU处于空闲状态的时间百分比 |
Device参数 | 解释 |
---|---|
tps | 每秒发送到磁盘的I/O请求数 |
kB_read/s | 每秒从磁盘读取的数据量 |
kB_wrtn/s | 每秒向磁盘写入的数据量 |
kB_read | 从磁盘读取的总数据量 |
kB_wrtn | 向磁盘写入的总数据量 |