目录
引言
一、磁盘基础
1、磁盘结构
2、MBR与磁盘分区表示
3、磁盘分区结构
4、文件系统类型
二、检测并确认新硬盘及规划硬盘中的分区
1、fdisk命令
2、交互模式中的常用指令
3、常用指令的命令
三、创建文件系统
1、mkfs 命令(Make Filesystem,创建文件系统—格式化)
2、mkswap命令(make swap,创建交换文件系统)
四、挂载、卸载文件系统操作
1、设备文件系统的临时挂载
2、设备文件系统的自动挂载
3、查看磁盘使用情况
4、卸载已挂载的文件系统
总结
在Windows系统中,文件都是存储在磁盘(硬盘)里的,只要知道文件存储的位置,便能将文件打开,进行后续的操作。而在Linux系统中的磁盘(硬盘)存储和Windows系统有所不同,磁盘的分区和创建文件系统以及挂载和卸载文件系统。当遇到系统磁盘存储数据非常饱满,作为运维工程师的我们,就要很熟练的去管理以及维护磁盘,下面就简单叙说一下磁盘基础理论以及相关的配置命令。
①硬盘的物理结构
盘片:硬盘有多个盘片,每个盘片2面;
磁头:每面一个磁头。
②硬盘的数据结构
扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位。
磁道:同一盘片不同半径的同心圆。
柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成。
③硬盘存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
④可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域。
⑤磁盘接口类型:IDE、SATA、SCSI、SAS(6GB/s)、光纤通道
①MBR是主引导记录,位于硬盘第一个物理扇区处,MBR中包含硬盘的主引导程序和硬盘分区表。MBR总共512字节, 前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。分区表有4个分区记录区,每个分区记录区占16字节,主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区,在扩展分区里面可以分多个逻辑分区。
②Linux中将硬盘、分区等设备均表示为文件
/dev/hda5(/设备文件/硬盘文件hd-第一块设备a-磁盘分区号5)
这里面其中:
dev表示硬件设备文件所在的目录
hd表示IDE设备(sd表示SCSI设备)
a表示硬盘的顺序号(以字母a、b、c……表示)
5表示分区的顺序号(以数字1、2、3……表示)
注意一点是:Linux系统插移动硬盘需要安装驱动,才能识别。
①硬盘中的主分区数目只有4个。
②主分区和扩展分区的序号限制在1~4。
③扩展分区再分为逻辑分区。
④逻辑分区的序号将始终从5开始。
①XFS文件系统:存放文件和目录数据的分区;高性能的日志型文件系统;CentOS7系统中默认使用的文件系统。
②SWAP交换文件系统:为Linux系统建立交换分区
③Linux支持的其它文件系统类型:FAT16、FAT32、NTFS;EXT4、JFS等等
查看或管理磁盘分区:fdisk -l [磁盘设备] 或 fdisk [磁盘设备]
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009fa5f
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 9414655 4194304 82 Linux swap / Solaris
/dev/sda3 9414656 125829119 58207232 83 Linux
Devic:分区的设备文件名称。
Boot:是否是引导分区。若是,则有"*"标识。
Start:该分区在硬盘中的起始位置(柱面数)。
End:该分区在硬盘中的结束位置(柱面数)。
Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为1024字节。
Id:分区对应的系统ID号。83表示Linux中的XFS分区或EXT4分区、82表示swap分区、8e表示LVM逻辑卷、fd表示RAID。
System:分区类型。
序号 |
指令 |
含义 |
序号 |
指令 |
含义 |
1 |
a |
设置可引导标记 |
9 |
p |
显示磁盘当前的分区表 |
2 |
b |
修改bsd的磁盘标签 |
10 |
q |
退出fdisk程序,不保存任何修改 |
3 |
c |
设置Dos操作系统兼容标记 |
11 |
s |
创建一个新的空白的Sun磁盘标签 |
4 |
d |
删除一个分区 |
12 |
t |
改变一个分区的系统号码 |
5 |
l |
显示已知的分区类型,其中82为Linux |
13 |
u |
改变显示记录单位 |
6 |
m |
显示帮助菜单 |
14 |
v |
对磁盘分区表进行验证 |
7 |
n |
增加一个新的分区 |
15 |
w |
保存修改结果并退出fdisk程序 |
8 |
o |
创建一个新的空白的DOS分区表 |
16 |
x |
特殊功能 |
首先虚拟机设置里面新添加20G的硬盘(SCSI)
[root@localhost ~]# fdisk -l #(先查看,这边没有20G的硬盘显示)
磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009fa5f
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 9414655 4194304 82 Linux swap / Solaris
/dev/sda3 9414656 125829119 58207232 83 Linux
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan #(当不能关闭系统的情况下,
可以用这条命令,扫描到新添加的磁盘)
[root@localhost ~]# fdisk -l #(再查看,下面已经有20G的硬盘显示)
磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009fa5f
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 9414655 4194304 82 Linux swap / Solaris
/dev/sda3 9414656 125829119 58207232 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost ~]# fdisk /dev/sdb #(管理磁盘分区)
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xe22a23ec 创建新的 DOS 磁盘标签。
命令(输入 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): #(默认就行)
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G #(设置主分区大小)
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n #(增加一个新的分区)
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p #(主分区)
分区号 (2-4,默认 2):2 #(主分区号)
起始 扇区 (10487808-41943039,默认为 10487808): #(默认就行)
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+3G #(设置主分区大小)
分区 2 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):n #(增加一个新的分区)
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p #(主分区)
分区号 (3,4,默认 3):3 #(主分区号)
起始 扇区 (16779264-41943039,默认为 16779264): #(默认就行)
将使用默认值 16779264
Last 扇区, +扇区 or +size{K,M,G} (16779264-41943039,默认为 41943039):+2G #(设置主分区大小)
分区 3 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n #(增加一个新的分区)
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e #(扩展分区)
已选择分区 4
起始 扇区 (20973568-41943039,默认为 20973568): #(默认就行)
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+8G #(设置扩展分区大小)
分区 4 已设置为 Extended 类型,大小设为 8 GiB
命令(输入 m 获取帮助):d #(删除一个分区)
分区号 (1-4,默认 4):3 #(删除主分区)
分区 3 已删除
命令(输入 m 获取帮助):n #(增加一个新的分区)
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): l #(逻辑分区)
添加逻辑分区 5
起始 扇区 (20975616-37750783,默认为 20975616): #(默认就行)
将使用默认值 20975616
Last 扇区, +扇区 or +size{K,M,G} (20975616-37750783,默认为 37750783):+3G #(设置逻辑分区大小)
分区 5 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):t #(改变一个分区的系统号码)
分区号 (1,2,4,5,默认 5):2 #(选择需要改变的分区号)
Hex 代码(输入 L 列出所有代码):82 #(改变的分区类型)
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p #(显示磁盘当前的分区表)
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe22a23ec
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 16779263 3145728 82 Linux swap / Solaris
/dev/sdb4 20973568 37750783 8388608 5 Extended
/dev/sdb5 20975616 27267071 3145728 83 Linux
命令(输入 m 获取帮助):w #(保存修改结果并退出fdisk程序)
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]#
mkfs -t 文件系统类型 分区设备
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb4 /dev/sdb5
[root@localhost ~]# ls /sbin/mkfs* #(查看sbin下的格式类型)
/sbin/mkfs /sbin/mkfs.cramfs /sbin/mkfs.ext3 /sbin/mkfs.fat /sbin/mkfs.msdos /sbin/mkfs.xfs
/sbin/mkfs.btrfs /sbin/mkfs.ext2 /sbin/mkfs.ext4 /sbin/mkfs.minix /sbin/mkfs.vfat
[root@localhost ~]# mkfs -t 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
[root@localhost ~]# lsblk #(查看分区情况)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 4G 0 part [SWAP]
└─sda3 8:3 0 55.5G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
├─sdb2 8:18 0 3G 0 part
├─sdb4 8:20 0 1K 0 part
└─sdb5 8:21 0 3G 0 part
sr0 11:0 1 4.3G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]#
mkswap 分区设备
[root@localhost ~]# mkswap /dev/sdb2 #(创建交换文件系统)
mkswap: /dev/sdb2: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 3145724 KiB
无标签,UUID=c1ad8065-df01-4347-8ef5-0b01840ec795
[root@localhost ~]# cat /proc/meminfo |grep SwapTotal #(查看总交换空间大小)
SwapTotal: 4194300 kB
[root@localhost ~]# swapon /dev/sdb2 #(启用交换分区)
[root@localhost ~]# cat /proc/meminfo |grep SwapTotal #(确认交换空间大小已增加)
SwapTotal: 7340024 kB
[root@localhost ~]# swapoff /dev/sdb2 #(停用交换分区)
[root@localhost ~]# cat /proc/meminfo |grep SwapTotal #(确认交换空间大小已恢复)
SwapTotal: 4194300 kB
[root@localhost ~]#
[root@localhost ~]# cd / #(到根目录下)
[root@localhost /]# mkdir file1 #(创建一个“file1”的目录)
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 56G 5.6G 50G 11% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 167M 330M 34% /boot
tmpfs tmpfs 378M 8.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 32K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
[root@localhost /]# mount /dev/sdb1 /file1/ #(临时挂载-挂载的磁盘+挂载的目录)
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 56G 5.6G 50G 11% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 167M 330M 34% /boot
tmpfs tmpfs 378M 8.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 32K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /file1
/etc/fstab配置文件
包含开机后自动挂载的文件系统记录(需要挂载的磁盘+挂载的目录+文件格式+默认+不做备份+不自检)
[root@localhost /]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Jul 24 13:40:06 2021
#
# 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
#
UUID=1803f380-db89-4ced-a44b-f97ba2cc00aa / xfs defaults 0 0
UUID=58e1e7ef-0740-4c54-a6a9-95a240e9136b /boot xfs defaults 0 0
UUID=f84580d8-02b7-452e-8985-504090c75cb6 swap swap defaults 0 0
/dev/sdb1 /file1 xfs defaults 0 0
~
~
~
~
~
~
~
~
~
~
~
:wq
[root@localhost /]# mount -a #(将/etc/ fstab的所有内容重新加载)
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 56G 5.6G 50G 11% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 167M 330M 34% /boot
tmpfs tmpfs 378M 8.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 32K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /file1
df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户
df [选项] [文件]
主要参数 | 含义 |
-h | 以容易理解的格式印出文件系统大小,例如136KB、2 4MB、21GB。 |
-T | 显示文件系统类型。 |
[root@localhost /]# df -Th #(T增加文件类型)
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 56G 5.6G 50G 11% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 167M 330M 34% /boot
tmpfs tmpfs 378M 8.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 32K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /file1
[root@localhost /]#
umount命令
①umount 挂载点目录
②umount 存储设备位置
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 56G 5.6G 50G 11% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 167M 330M 34% /boot
tmpfs tmpfs 378M 8.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 32K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /file1
[root@localhost /]# umount /file1/ #(挂载点目录)
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 56G 5.6G 50G 11% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 167M 330M 34% /boot
tmpfs tmpfs 378M 8.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 32K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
[root@localhost /]# umount /dev/sdb1 #(存储设备位置)
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 56G 5.6G 50G 11% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 167M 330M 34% /boot
tmpfs tmpfs 378M 8.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 32K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
[root@localhost /]#
1、硬盘结构分为物理结构和数据结构,物理结构由盘片和磁头组成;数据结构由扇区、磁道、柱面组成。硬盘常见的接口类型有IDE、SATA、SCSI、SAS、光纤通道。
2、MBR是主引导记录,位于硬盘第一个物理扇区处,MBR中包含硬盘的主引导程序和硬盘分区表,MBR总共512字节。
3、每个磁盘最多有4个主分区,或3个主分区、1个扩展分区,在扩展分区里面可以分多个逻辑分区(从5开始)。
4、文件系统类型:XFS文件系统;SWAP交换文件系统;其它文件系统类型:FAT16、FAT32、NTFS;EXT4、JFS等等。
5、fdisk命令可以对磁盘设备进行查看或管理磁盘分区操作。
6、mkfs命令是创建文件系统;mkswap命令是创建交换文件系统。
7、mount命令用于挂载硬盘、光盘等设备文件,umount命令可以根据设备文件或挂载点卸载指定的设备。