Linux 磁盘管理与文件系统

文章目录

        • 前言
        • 一:磁盘基础
          • 1.1 磁盘结构
          • 1.2 MBR与磁盘分区表示
          • 1.3 磁盘分区结构
          • 1.4 文件系统类型
        • 二:检测并确认新磁盘,规划硬盘中的分区命令
          • 2.1 fdisk命令 创建分区
          • 2.2 交互模式中的常用指令选项
        • 三:创建文件系统
          • 3.1 mkfs命令 (分区后,进行格式化命令)
          • 3.2 mkswap命令(格式化后,创建虚拟内存)
        • 四:挂载、卸载文件系统
          • 4.1 mount挂载命令
          • 4.2 umount 取消挂载命令
          • 4.3 设置文件系统的自动挂载
          • 4.4 df命令–查看磁盘使用情况

前言

磁盘(disk)是指利用磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(soft disk,简称软盘),如今常用的磁盘是硬磁盘(hard disk,简称硬盘)。
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。

一:磁盘基础

硬盘(Hard Disk Driver,简称HDD)是计算机常用的存储设备之一。

1.1 磁盘结构

Linux 磁盘管理与文件系统_第1张图片

1.1.1:硬盘的物理结构
盘片:硬盘有多个盘片,每个盘片2面

磁头:每面一个磁头

1.1.2:硬盘的数据结构
扇区:盘面被分成多个扇形区域,每个扇区存放512个字节的数据

PS:硬盘的第一个扇区,叫做引导扇区

磁道:同一盘片不同半径的同心圆(当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track))

柱面:不同盘片相同半径构成的圆柱面(在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder))

PS:固态硬盘:电子芯片存储,速度快,但是数据丢失无法恢复

机械硬盘:磁道存储,速度一般,数据丢失有几率恢复

1.1.3:存储容量
硬盘存储容量=磁头数 x 磁道(柱面)数 x 每道扇区数 x 每扇区字节数

可以用柱面/磁头/扇区来确定唯一定位磁盘上每一个区域

磁盘接口类型:

  • IDE(并口),现在已经退出市场
  • SATA(串口) 最常见,目前最常用的是sataⅢ
  • SCSI接口,服务器专用

磁盘上面的接口有两个

小接口是电源接口,大接口口是数据传输接口

1.2 MBR与磁盘分区表示

1)主引导记录(MBR:Master Boot Record)

​ MBR位于硬盘第一个物理扇区处

​ MBR中包含硬盘的主引导程序和硬盘分区表,是硬盘的目录索引

​ 分区表有4个分区记录区,每个分区记录去占16个字节

2)Linux中将硬盘、分区等设备均表示为文件
MBR类型的硬盘有四个主分区, GPT类型的有128主分区
Linux 磁盘管理与文件系统_第2张图片

1.3 磁盘分区结构
  • 硬盘中的主分区数目只有4个
  • 因此主分区和扩展分区的序号也就限制在1~4
  • 扩展分区不起直接存储数据的功能,可以再往下级分为逻辑分区
  • 逻辑分区的序号将始终从5开始

蓝色是主分区,绿色代表扩展分区,绿色里面是逻辑分区

Linux 磁盘管理与文件系统_第3张图片

1.4 文件系统类型

1)XFS文件系统
存放文件和目录数据的分区

高性能的日志型文件系统

CentOS 7 系统中默认使用的文件系统

2)SWAP,交换文件系统
为Linux系统建立交换分区
3)Linux支持的其它文件系统类型
FAT16、FAT32、NTFS

EXT4、JFS…

XFS文件格式支持1PB存储容量

SWAP,即虚拟内存

FAT系列没有安全性

EXT3 是centos 5版本时使用

EXT4,是centos 6 版本时使用

JFS用的少

二:检测并确认新磁盘,规划硬盘中的分区命令

2.1 fdisk命令 创建分区

1)查看或管理磁盘分区命令

[root@lpf ~]# fdisk -l
磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000d8ce0

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    10227711     4064256   82  Linux swap / Solaris
/dev/sda3        10227712   629145599   309458944   83  Linux

磁盘 /dev/sdb:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@lpf ~]# fdisk /dev/sdb                            #对磁盘sdb进行分区
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xc477d97a 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):
2.2 交互模式中的常用指令选项
选项 含义
-l list含义,查看当前磁盘分区信息 ;若是后面加设备磁盘,则只查看目标磁盘
m 查看帮助信息
p 打印,显示的意思
n 创建新分区
d 删除分区
t 转换文件系统类型格式
w 保存配置
q 退出
[root@lpf ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xc477d97a 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n     #创建新分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p     #选择主分区
分区号 (1-4,默认 1):1     #选择主分区1
起始 扇区 (2048-209715199,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): P
分区号 (2-4,默认 2):2
起始 扇区 (20973568-209715199,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-209715199,默认为 209715199):+20G
分区 2 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e      #选择为扩展分区
分区号 (3,4,默认 3):3
起始 扇区 (62916608-209715199,默认为 62916608):
将使用默认值 62916608
Last 扇区, +扇区 or +size{K,M,G} (62916608-209715199,默认为 209715199):+30G
分区 3 已设置为 Extended 类型,大小设为 30 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l        #设置为逻辑分区,从5开始
添加逻辑分区 5
起始 扇区 (62918656-125831167,默认为 62918656):
将使用默认值 62918656
Last 扇区, +扇区 or +size{K,M,G} (62918656-125831167,默认为 125831167):
将使用默认值 125831167
分区 5 已设置为 Linux 类型,大小设为 30 GiB
[root@lpf backup]# fdisk -l

磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000d8ce0

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    10227711     4064256   82  Linux swap / Solaris
/dev/sda3        10227712   629145599   309458944   83  Linux

磁盘 /dev/sdb:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc477d97a

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568    62916607    20971520   83  Linux
/dev/sdb3        62916608   125831167    31457280    5  Extended
/dev/sdb5        62918656   125831167    31456256   83  Linux

三:创建文件系统

3.1 mkfs命令 (分区后,进行格式化命令)

实际上 mkfs命令是一个前端工具,可以自动加载不同的程序来创建各种类型的分区,而后端包括有多个与mkfs命令相关的工具程序,这些程序位于/sbin/目录中,例如:支持XFS分区格式的mkfs.xfs程序等。

Make Filesystem,创建文件系统(格式化)

mkfs -t 文件系统类型 分区设备
命令示例:

mkfs -t xfs /dev/sdb1

或 mkfs.xfs /dev/sdb1

3.2 mkswap命令(格式化后,创建虚拟内存)

在Linux系统中,Swap分区的作用类似于Windows系统中的“虚拟内存”,可以在一定程度上缓解物理内存不足的情况。在当前Linux主机运行的服务较多,需要更多的交换空间支撑应用时,可以为其增加新的交换分区。

使用mkswap命令工具可以在指定的分区上创建交换文件系统,目标分区应先通过fdisk工具将ID号设为82.

mkswap /dev/sdb5 创建交换分区

swapon /dev/sdb5 临时开启交换分区

swapoff /dev/sdb5 关闭交换分区

[root@lpf ~]# cat /proc/meminfo|grep 'SwapTotal'   #查看swap分区大小
SwapTotal:       4064252 kB                        #默认4G,用于存储临时文件
[root@lpf ~]# mkswap /dev/sdb5     #创建交换分区sdb5
mkswap: /dev/sdb5: warning: wiping old vfat signature.
正在设置交换空间版本 1,大小 = 31456252 KiB
无标签,UUID=09524ae0-54ef-4fec-ad5f-8bdb53ef7bd6
[root@lpf ~]# swapon /dev/sdb5     #临时启用交换分区
[root@lpf ~]# cat /proc/meminfo|grep 'SwapTotal'
SwapTotal:      35520504 kB
[root@lpf ~]# swapoff /dev/sdb5     #关闭交换分区
[root@lpf ~]# cat /proc/meminfo|grep 'SwapTotal'
SwapTotal:       4064252 kB
[root@lpf ~]# vi /etc/fstab
/dev/cdrom /mnt iso9660 defaults 0 0  #添加永久挂载
磁盘分区    挂载点  文件系统类型  权限  是否备份 代表加载序列,第几个被加载

四:挂载、卸载文件系统

4.1 mount挂载命令
mount命令基本格式
mount          显示当前系统中已挂载的各个分区(文件系统)的相关信息,最近挂载的文件信息将显示在最后面
mount [-t 文件系统类型] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
mount -a  将现在所有能挂载的都挂载

文件系统类型通常可以省略,系统会自动识别

存储设备即对应分区的设备文件名(如/dev/sdb1 , /dev/cdrom)或网络资源路径

挂载点即用户指定用于挂载的目录

光盘对应的设备文件通常使用’/dev/cdrom’,其实这是一个连接文件,连接到实际的光盘设备’/dev/sr0’。这两个名称都表示光盘设备。由于光盘是只读的存储介质,因此在挂载时系统会出现’mounting read-only’的提示信息。

例如,将光盘设备挂载到/media/cdrom目录 
[root@hostname ~]#mount /dev/cdrom /media/cdrom

挂载Linux分区或U盘设备时的用法也一样,只需要指定正确的设备位置和挂载目录即可。

例如:将/dev/sdb1分区挂载到新建的/ccc目录下
[root@hostname ~]#mkdir /ccc
[root@hostname ~]#mount /dev/sdb1 /ccc

在Linux系统中,U盘设备被模拟成SCSI设备,因此与挂载普通的SCSI硬盘中的分区并没有明显的区别。U盘一般使用FAT16或FAT32的文件系统,若不确定U盘设备文件的位置,可以先执行‘fdisk -l’命令进行查看,确认。

例如:将位于/dev/sdc1的U盘设备挂载到新建的/ccc/usbdisk目录下
[root@hostname ~]#mkdir /ccc/usbdisk
[root@hostname ~]#mount /dev/sdc1 /ccc/usbdisk

proc,sysfs,tmpfs等文件系统是Linux运行所需要的的临时文件系统,并没有实际的硬盘分区与其相对应,因此也成为了’伪文件系统’。

例如:proc文件系统实际上映射了内存及CPU寄存器中的部分数据

在实际工作中,可能会经常从互联网中下载一些软件或应用系统的ISO镜像文件,在无法刻录光盘的情况下,需要将其解压后才能浏览,使用其中的文件数据。若使用mount挂载命令,则无需解开文件包即可浏览,使用ISO镜像文件中的数据。

ISO镜像文件通常被视为一种特殊的“回环”文件系统,因此在挂载时需要添加“-o loop”选项

例如:将下载的CentOS系统的DVD光盘镜像文件“CentOS-7-x86_64-DVD-1611.iso”挂载到/media/mnt目录下。
[root@hostname ~]#mount -o loop CentOS-7-x86_64-DVD-1611.iso /media/mnt
4.2 umount 取消挂载命令

卸载文件系统时,使用挂在单目录或对应设备的文件名作为卸载参数。

Linux系统中,由于同一个设备可以被挂载到多个目录下,所以一般建议通过挂载点的目录位置来进行卸载。

使用命令的基本格式
umount 存储设备位置
umount 挂载点目录

Centos 7.6 强制卸载已挂载的分区

fusermount -uz /opt

或者

[root@dbserver /]# ps aux |grep 3052
root 2218 0.0 0.0 163052 1648 ? Sl 10:30 0:00 gnome-keyring-daemon --start
root 3052 0.0 0.0 108328 1732 pts/1 Ss+ 11:12 0:00 -bash

[root@dbserver /]# kill -9 3052

[root@dbserver /]# umount /dev/sdb6
4.3 设置文件系统的自动挂载

/etc/fstab 配置文件
系统中的/etc/fstab文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据,Linux系统在每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统。

​ 默认的fstab文件中包括了根分区,/boot分区,交换分区及proc,tmpfs等伪文件系统的挂载配置。
Linux 磁盘管理与文件系统_第4张图片

在/etc/fstab文件中,每一行记录对应一个分区或设备的挂载配置信息,从左到右包括六个字段,含义如下

字段 解释
第一字段 分区/设备名/设备卷标名
第二字段 挂载点,文件系统的挂载点目录的位置
第三字段 文件系统类型,如xfs,Swap等
第四字段 挂载参数(包括权限和功能),即mount命令“-o”选项后可使用的参数。例如:default,rw,ro,noexec分别表示默认参数,可写,只读,禁用执行程序。
第五字段 表示文件系统是否需要dump备份(dump是一个备份工具),设为1时表示需要,设为0时将被dump忽略
第六字段 该字段用于决定系统启动时进行磁盘检查的顺序。0:不进行检查。1:优先检查。2:其次检查、对于根分区应设为1,其他分区设为2.

通过在“/etc/fstab”文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区。

例如,添加自动挂载分区/dev/sdb1的配置
[root@hostname ~]# vi /etc/fstab
...//省略部分内容
/dev/sdb1       /ccc    xfs    default  0 0
4.4 df命令–查看磁盘使用情况

不带选项和参数的mount命令可以显示分区的挂载情况,若要了解系统中已经挂载各文件系统的磁盘使用情况(如剩余磁盘空间等),可以使用df命令。

df命令使用文件或者设备作为命令参数,较常用的选项为“-h”"-T"。其中,“-h”选项可以显示更容易读的容量单位,而“-T”选项用于显示对应文件系统的类型。

[root@lpf ~]# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda3      xfs       295G  5.9G  290G    2% /
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/sr0       iso9660   4.3G  4.3G     0  100% /mnt
/dev/sda1      xfs      1014M  174M  841M   18% /boot
tmpfs          tmpfs     378M   12K  378M    1% /run/user/42
tmpfs          tmpfs     378M     0  378M    0% /run/user/0

你可能感兴趣的:(linux系统管理,linux)