目录
- 前言
- 一、磁盘(硬盘)基础
- 二、MBR 磁盘分区
- 2.1 MBR 与 磁盘分区表示
- 2.2 Linux中查看硬盘分区
- 2.3 新增硬盘
- 2.4 对新增硬盘进行分区:fdisk
- 2.5 创建文件系统:mkfs
- 2.6 创建交换文件系统:mkswap
- 2.7 挂载、卸载设备文件命令:mount
- 2.8 【实验操作】
- 2.8.1 实验:创建分配主分区
- 2.8.2 实验:创建文件系统、挂载分区
- 2.8.3 实验:创建扩展分区
- 2.8.4 实验:创建逻辑分区
- 2.8.5 实验:更改分区类型为 Swap
- 2.8.6 实验:挂载解挂与目录的关系
- 三、文件系统
- 3.1 文件系统种类
- 3.2 设置文件系统自动挂载:/etc/fstab
- 3.3 自动挂载实验
- 四、GPT 磁盘分区
- 五、df、free、blkid 命令
前言
Linux 中首先创建硬盘,然后对因硬盘进行分区,分完区之后要进行格式化(创建文件系统),最后进行挂载。
一、磁盘(硬盘)基础
在 Linux 系统中,文件系统是创建在硬盘上的。因此,要想彻底理解文件系统的管理机制,就要先从了解硬盘开始。
磁盘结构:
机械硬盘主要由磁盘盘片、磁头、主轴与传动轴等组成,数据存放在磁盘盘片中。硬盘是上下双磁头,盘片在两个磁头中间高速旋转。
硬盘的物理结构:
- 盘片:硬盘有多个盘片,每个盘片有上下2面;
- 磁头:每一面都有一个磁头;
硬盘的数据结构(逻辑结构):
- 扇区:盘片被分为多个扇形区域,每个扇凶存放 512字节 的数据,是硬盘的最小存储单位;
- 磁道:同一盘片有许多不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹,最外面的同心圆就是 0 磁道;
- 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成;(具有相同编号的磁道会形成一个圆柱,这个圆柱就被称作磁盘的柱面)
【点击查看参考的原文链接】
磁盘知识点:
- 硬盘存储容量 = 磁头数 × 磁道(柱面)数 x 每道扇区数 × 每扇区字节数(512字节);
- 可以用 柱面/磁头/扇区 来唯—定位磁盘上每一个区域;
- 磁盘接口种类有:IDE(快要淘汰了)、SATA、SCSI、SAS(新一代SCSI技术)、光纤通道;
SATA 接口:抗干扰性强,支持热插拔等功能,速度快,纠错能力强。
SCSI 接口:小型机系统接口,广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等优势。
二、MBR 磁盘分区
2.1 MBR 与 磁盘分区表示
硬盘的顺序号,以字母a、b、c……表示;
分区的顺序号,以数字1、2、3……表示。主分区从1-4,第一个逻辑分区始终从5开始。
MBR 主引导记录(Master Boot Record):
- MBR 位于硬盘第一个物理扇区处;
- MBR 中包含硬盘的 主引导程序 和 硬盘分区表。
- 分区表有4个分区 记录区,每个分区记录区占16字节;
- MBR 总共 512字节,前446字节是 主引导记录,分区表保存在MBR扇区中的 第447-510字节中。
- Linux中将硬盘、分区等设备均表示为文件;
- 主启动记录 (MBR)磁盘分区支持最大卷为 2.2 TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区,在扩展分区里面可分多个逻辑分区。
磁盘分区结构:
- 硬盘中的 主分区数目 只有4个(1、2、3、4);
- 主分区和扩展分区的序号限制在 1~4 ;
- 只能建立一个扩展分区;
- 先建立 扩展分区后,才能再分为 逻辑分区;
- 逻辑分区的序号将始终从 5 开始,逻辑分区数量不限制。
硬盘,分区等设备文件 都保存在 /dev
目录当中,hd
表示 IDE设备,sd
表示 SCSI设备,第三为字母 a/b/c… 代表 硬盘的顺序号,1/2/3…代表分区号的顺序。
如 /dev/hda2
,表示 第二块 IDE磁盘设备。2 代表是磁盘分区,如果是5 代表逻辑分区。
执行命令 df -h
查看 磁盘空间使用情况:
2.2 Linux中查看硬盘分区
查看或管理磁盘分区:
命令格式:fdisk -l [磁盘设备名]
查看磁盘设备信息与分区信息;
命令格式:fdisk [磁盘设备名]
管理磁盘设备;
- Device(设备):分区的设备文件名称;
- Boot:是否是 MBR 引导分区。若是,则有 “
*
” 标识; - Start:该分区在硬盘中的起始位置(柱面数)。
- End:该分区在硬盘中的结束位置(柱面数)。
- Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节。
- Id:分区对应的系统 ID 号。例如,Linux中的 XFS分区 或 EXT4分区表示是
83
、LVM 逻辑卷是8e
、SWAP 交换分区是82
。 - System:分区类型(Linux 表示是主分区,Extended是扩展分区,swap 是交换分区)。
2.3 新增硬盘
往现有虚拟机系统中增加硬盘时,如果硬盘类型支持热插拔,则可以直接添加,否则就需要关机后添加磁盘。在虚拟机中则需要重启。
比如我在虚拟机中添加10G新硬盘,重启系统。
重新开机之后,执行命令 fdisk -l
,发现能查看到新增配的 10G磁盘,记住这个新设备名 /dev/sdb 。
但是:新增加的硬盘不能直接使用,需要分区、格式化之后才能够实用。
2.4 对新增硬盘进行分区:fdisk
管理磁盘分区命令:fdisk 设备名
,进入分区交互模式;
交互模式中的常用指令:
m:获取帮助菜单
n:新建分区
p:查看分区情况
d:删除分区
t:变更分区的类型
w:保存分区操作并退出
q:不保存分区操作并退出
【创建分区步骤】
--> fdisk /dev/sdb 后输入 n,p 主分区、e扩展分区、l 逻辑分区。
--> 输入选项:p 主分区 / e 扩展分区 / l 逻辑分区。(创建逻辑分区前要先创建扩展分区)
--> 设置分区:1 (主范围1-4,如按 Enter 键接受默认值)
--> 设置柱面序列:直接按 Enter 键接受默认值
--> 设置分区大小:+20G (指定大小为 20GB,如按 Enter 键接受默认值表示所有空间)
--w
变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统重启一次。
或者执行 “ partprobe /dev/sdb” 命令使操作系统检测新的分区表情况。
以防格式化分区时损坏硬盘中已有的数据。
2.5 创建文件系统:mkfs
mkfs(Make Filesystem),创建文件系统(格式化):
创建文件系统命令:mkfs -t 文件系统类型 分区设备名
;
步骤:
-->
mkfs -t xfs /dev/sdb1 #先给设备创建 xfs 文件系统 (格式化)
-->
mkdir /data #创建挂载目录
-->
mount /dev/sdb1 /data/ #分区挂载目录, 执行 df -h 查看磁盘情况
-->
cd /data #才可以进入目录进行操作
2.6 创建交换文件系统:mkswap
mkswap(Make swqp)
,创建交换文件系统;
命令:mkswap 分区设备名
;
命令实例:
分区号更改为 82 后:
swapon -s #查看当前使用swap文件系统的设备信息
mkswap /dev/sdb5 #设置分区的文件系统为swap文件系统
swapon /dev/sdb5 #启动新增加的交换分区
swapoff /dev/sdb5 #停用指定的交换分区
swapon -a #启动所有设备
swapoff -a #停用所有设备
cat /proc/meminfo | grep SwapTotal #查询交换分区大小
free -m #以M为单位查看使用内存的值
2.7 挂载、卸载设备文件命令:mount
挂载文件系统命令:mount [-t 类型] 存储设备名 /挂载点文件目录
;
挂载 ISO 镜像命令:mount -o loop ISO镜像文件 /挂载点目录
;
- -t:用于指定文件系统类型,通常可以省略,由Linux系统自动判别;
- -o:挂载参数列表,以英文逗号分隔;或用来描述特殊设备,用 loop 指定。
挂载之前, 目录 /data 读取创建时所在磁盘的内容,,将磁盘B挂载到这个目录下时,目录读取的是重新挂载后的 磁盘B中的数据。(见实验 2.8.6)
如:
mount #查看磁盘使用情况
mount /dev/cdrom /mnt
mount /dev/sdb1 /opt
#挂载已下载到系统中的镜像文件 到 /media 目录下
mount -o loop CentoS-7-x86_64-DVD-1708.iso /media
#mount -a #将/etc/fstab 中的挂载项进行挂载
#可以直接拖拽 或 在 winSCP 软件(基于SFTP协议)中直接拖拽,从宿主复制文件到虚拟机中。
注:mount 是 临时挂载,重启系统后 之前的挂载会失效。
比如:设备 /dev/sdb1 的 挂载点目录是 /data,重启系统后,df -h 看不到该挂载信息;
需要重新执行命令 mount /dev/sdb1 /data 才能查到。
umount 命令,卸载已挂载的文件系统:
卸载前提:挂载的设备或者目录没有被在使用中,要先退出挂载目录(在挂载点目录之外操作挂载点目录,否则会提示 :umount /挂载目录:目标忙
)。
命令格式:umount [-lf] 存储设备位置
或 umount [-lf] 挂载点目录
;
- -l:表示解除正在繁忙的文件系统;
- -f:表示强制卸载;
比如:设备 /dev/sdb1 的 挂载点目录是 /data,那么解挂时 执行:
umount /dev/sdb1 或 umount /data ,效果相同
2.8 【实验操作】
2.8.1 实验:创建分配主分区
【实际操作】:设置 主分区1 大小是4G:
执行命令 fdisk /dev/sdb
进入交互模式:
设置主分区1,在模式中 按 p 可以查看分配结果。
分配好之后执行 fdisk -l,能看到分配成功,分配的新设备名是 /dev/sdb1 。
输入命令 vi /dev/sd
按 Tab 键,查看 sd 开头的设备名。如果新增的分区设备名没展示出来,则执行 partprobe
命令重新刷新以下。
创建好了分区后,不能直接使用,需要创建文件系统(对分区进行初始化),才能对分区文件进行操作。见实验 2.7.2 :
2.8.2 实验:创建文件系统、挂载分区
- 创建文件系统(格式化)
- 挂载分区
- 正常使用磁盘
验证:执行df -hT
命令,可查看磁盘分区使用 文件系统 与 挂载点:
注意:挂载信息在系统重启后就会消失,/data 就会使用默认的/dev/sda5 硬盘,想使用新的 /dev/sdb1 磁盘文件的话,可以重新使用 mount 将 /data 牡蛎挂载到 sdb1 上,想永久挂载到 /dev/sdb1 上时,可以在开机就会执行的配置文件中添加该信息。
2.8.3 实验:创建扩展分区
上面创建的主分区我只分配了4个G,还有6个G能够进行创建分区,再次执行 fdisk /dev/sdb
命令,这次 选择创建 Extended 扩展分区,分2个G:
输入 w
保存并退出。
接下来的 创建文件系统、挂载 并没有去配置所谓无法使用该分区,创建扩展分区只是为了下面去创建 逻辑分区。
2.8.4 实验:创建逻辑分区
输入命令: fdisk /dev/sdb
。
可在 /data2 目录下进行操作。在未配置系统配置文件的情况下,重启系统后需要重新挂载(为文件目录 指定 磁盘)。
2.8.5 实验:更改分区类型为 Swap
比如我通过 fdisk
命令创建了一个主分区设备 /dev/sdb3
。想要修改其为 swap 交换文件分区,操作如下:
步骤:
创建 swap之前,目标分区应先通过 fdisk 工具将分区类型 ID 号设为 82;
fdisk /dev/sdb
-->
t
-->
输入分区号,如3
-->
82
-->
w 保存并退出
partprobe /dev/sdb #刷新新建的分区
mkswap /dev/sdb3 #
swapon -s #查看挂载之前的 swap中设备状态信息
swapon /dev/sdb3 #启动新增加的交换分区
swapon -s #查看挂载后的信息
2.8.6 实验:挂载解挂与目录的关系
比如我根目录所在磁盘 /dev/sda5 中创建一个 /data 目录,并创建文件 sda5555.txt,这些文件都是在 磁盘 /dev/sda5 中;
这时候执行命令 mount /dev/sdb1 /data
,将 磁盘 /dev/sdb1 挂载到 /data 目录上,那么这时候 /data 就没有 sda5555.txt 的文件,因为磁盘都不一样了;
执行 umount /dev/sdb1
解挂 /data 后,会回到创建的 /dev/sda5 磁盘,又能查到 sda5555.txt 这个文件。
三、文件系统
3.1 文件系统种类
XFS文件系统:
- 存放文件和目录数据的分区;
- 高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间;
- CentOS 7 系统中默认使用的文件系统;
SWAP 交换文件系统:
- 为 Linux系统建立交换分区;
- —般设置为物理内存的 1.5~2倍;
- 当物理内存不够用了,会把数据临时存到SWAP空闲的硬盘上;
Linux支持的其它文件系统类型:
- EXT3(Centos 5)
- EXT4(Centos 6)
- XFS(Centos 7)
- FAT32(win xp)
- NTFS(Win 7\8\10)
- LVM(逻辑卷:初级的 可扩展弹性伸缩磁盘券)
3.2 设置文件系统自动挂载:/etc/fstab
因为 mount 是 临时挂载,重启系统后 之前的挂载会失效,可在 /etc/fstab 中进行自动挂载配置。
配置文件为: /etc/fstab
● 包含需要开机后自动挂载的文件系统记录;
● Linux操作系统在每次开机时,会自动读取 /etc/fstab
文件的内容,自动挂载其中所指定的文件系统,根据文件里面的配置挂载磁盘。
● 可以挂载设备和镜像文件
vi /etc/fstab #直接在末尾添加一行新配置
/dev/sdb1 /opt xfs defaults 0 0 #存储设备
/dev/sr0 /mnt iso9660 defaults 0 0 #ISO镜像
- 第1字段:设备名 或设备卷标名。
- 第2字段:文件系统的 挂载点目录 的位置。
- 第3字段:文件系统类型,如 xfs、 swap,iso9660(光盘镜像文件) 等。
- 第4字段:挂载参数,即 mount 命令 " -o " 选项后可使用的参数。
例如,defaults (默认参数)、rw (可读写)、ro (只读)、noexec (禁用执行程序)。 - 第5字段:表示文件系统是否需要 dump 备份(dump是一个备份工具)。一般设为1时表示需要,设为 0 时将被dump忽略。
- 第6字段:该数字决定在系统启动时进行 磁盘检查 的顺序。0 表示不进行检查,1表示优先检查,2表示其次检查。根分区可设为1,其他分区设为2。
查看/etc/fstab,可以看到第一列的系统默认分区的设备名是用 UUID 来挂载的:
Linux设备中的 UUID 简介:
UUID是为系统中的存储设备提供 唯一的 标识字符串。如果你在系统中启动的时候,使用盘符(设备编号)挂载时,可能因找不到设备而加载失败,而使用UUID挂载时,则不会有这样的问题。(云主机最好使用UUID挂载设备,如果使用设备名挂载设备,有可能出现重启后找不到设备的情况)。
使用UUID挂载设备的原因:
自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺序。如果你在插入了USB盘时启动了系统,而下次启动时又把它拔掉了,就有可能导致设备名分配不一致。,使用UUID可以使同一块卡挂载在同一个目录下。
查看UUID和磁盘设备挂载之间的关系:blkid
或 ls -l /dev/disk/by-uuid
命令。
3.3 自动挂载实验
进入 fstab 文件,修改后保存退出 ,重启系统。
如果是 光盘镜像文件 在添加一行 /dev/sr0 /mnt iso9660 defaults 0 0
。
重启后 执行 df -hT
发现挂载成功,设备名,文件系统类型、挂载目录 都是对的;或者用 mount 命令查看挂载列表
。
如果重启后登录不了系统,那么说明这个文件配置有误。在提示命令行 输入root 密码,进入 vi /etc/fstab 重新修改保存后,init 6 重启。
四、GPT 磁盘分区
全局唯一标识分区表(GUID Partition Table,缩写:GPT)
GPT是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。
传统的主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑分区。
与MBR分区方法相比,GPT具有更多的优点,因为它允许每个磁盘有多达128个分区,支持高达18EB(千兆兆字节)的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。
- 若磁盘小于2TB,可用
fdisk /dev/sdb
进行分区,即MBR 分区格式; - 若磁盘大于2TB,可用
parted /dev/sdb
进行分区,因为MBR分区磁盘是不能大于2.2TB,所以超过2TB一般使用GPT 分区格式。
操作实例:
参考链接
1、选择分区硬盘
注:【】里面的是需要输入的参数。
首先类似 fdisk 一样,先选择要分区的硬盘,以 /dev/sdb 为例, ((parted)表示在 parted 中输入的命令,其他为自动打印的信息)
parted /dev/sdb```
**2、创建分区**
  选择了 /dev/sdb 作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):
```handlebars
(parted) 【mklabel】
New disk label type? 【gpt】 #我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车
3、完成分区操作
创建好分区表以后,接下来就可以进行分区操作了,执行 mkpart
命令,分别输入分区名称,文件系统和分区 的起止位置
(parted) 【mkpart】
Partition name? []? 【dp1】
File system type? [ext2]? 【ext4】
Start? 【0】 (可以用百分比表示,比如Start? 0% , End? 50%)
End? 【500G】
4、验证分区信息
分好区后可以使用 print
命令打印分区信息,下面是一个 print 的样例
(parted) 【print】
Model: VBOX HARDDISK (ide)
Disk /dev/sdb: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 500GB 500GB dp1
5、删除分区示例
如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果
parted /dev/sdb
(parted) 【rm 1】 #rm后面使用分区的号码,就是用print打印出来的Number
(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/sdb: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
6.格式化操作,完成后即可挂载使用
mkfs.ext4 /dev/sdb1
mkdir /data
mount /dev/sdb1 /data
7.最后加入 /etc/fstab
自动挂载
vim /etc/fstab
/dev/sdb1 /data ext4 defaults 0 0
五、df、free、blkid 命令
格式:df [选项]
选项 | 说明 |
---|---|
-h | 显示分区的容量单位 |
-T | 显示文件系统的类型,如 xfs |
-i | 显示分区的 inode 号码数量 |
free 命令显示系统使用和空闲的【内存】情况,包括物理内存、交互区内存(swap)和内核缓冲区内存
free -m #以M为单位查看使用内存的值
使用blkid 查看UUID
更多推荐
Linux 磁盘分区管理与文件系统配置
发布评论