磁盘管理与文件系统

361 阅读12分钟

磁盘

磁盘(disk)是指利用磁记录技术存储数据的存储器

磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。

磁盘空间的管理使用

  1. 分区

  2. 文件系统

  3. 格式化

  4. 挂载

1磁盘结构

1.1硬盘的物理结构

1.png

1.2硬盘的数据结构

  • 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大)
  • 磁道:同一盘片不同半径的同心圆
  • 柱面:不同盘片相同半径构成的圆(柱面和磁道数量相同)

Snipaste_2022-03-24_21-42-51.png

1.3硬盘存储容量

  • 硬盘存储容量=磁头数(8个2进制)×磁道(柱面)数×每道扇区数(6个二进制)×每扇区字节数

    1柱面=512 * 扇区数/磁头数×磁道=512* 63 *255=7.84M

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

1.4 硬盘接口的类型

硬盘接口类

  • IDE:133MB/s,并行接口,早期家用电脑

  • SCSI:640MB/s,并行接口,早期服务器

  • SATA:6Gbps,SATA数据端口与电源(长的,数据线短的)端口是分开的,即需要两条线,一条数据线,一条电源线

  • SAS:6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入SAS主板上,反之不行。

  • M.2:

  • 光纤接口

机械与固态

机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电 机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴 上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直 径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径 方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操 作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精 密设备,进入硬盘的空气必须过滤

固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单 元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的 完全相同,在产品外形和尺寸上也与普通硬盘一致 相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD 的2倍

Snipaste_2022-03-24_21-56-50.png

2MBR与磁盘分区

2.1 分区好处

  • 优化I/O性能
  • 实现磁盘空间配额限制
  • 提高修复速度
  • 隔离系统和程序
  • 安装多个OS
  • 采用不同文件系统

2.2硬盘分区

常见的硬盘可以划分为主分区、扩展分区和逻辑分区,通常情况下主分区只有四个,而 扩展分区可以看成是一个特殊的主分区类型,在扩展分区中可以建立逻辑分区。主分区一般 用来安装操作系统,扩展分区则多用来存储文件数据

常见的硬盘可以划分为主分区、扩展分区和逻辑分区,通常情况下主分区只有四个,而 扩展分区可以看成是一个特殊的主分区类型,在扩展分区中可以建立逻辑分区。主分区一般 用来安装操作系统,扩展分区则多用来存储文件数据

3.文件系统

常见的硬件设备在/dev目录下

[root@localhost ~]# ll /dev/sd*
##此处的8代表设备的类型
brw-rw----. 1 root disk 8, 0 3月  17 06:21 /dev/sda
brw-rw----. 1 root disk 8, 1 3月  17 06:21 /dev/sda1
brw-rw----. 1 root disk 8, 2 3月  17 06:21 /dev/sda2

3.1 文件系统

操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统,用来管理(增删改查恢复)文件的程序

[root@localhost ~]# cat /proc/filesystems   ##查看当前系统支持的 文件类型
nodev	sysfs
nodev	rootfs
nodev	ramfs
nodev	bdev
nodev	proc
nodev	cgroup
nodev	cpuset
nodev	tmpfs
nodev	devtmpfs
nodev	debugfs
nodev	securityfs
nodev	sockfs
nodev	pipefs
nodev	anon_inodefs
nodev	configfs
nodev	devpts
nodev	hugetlbfs
nodev	autofs
nodev	pstore
nodev	mqueue
nodev	selinuxfs
	xfs
nodev	rpc_pipefs
nodev	nfsd
	fuseblk
nodev	fuse
nodev	fusectl

3.1.1 XFS

  • 根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
  • 用优化算法,日志记录对整体文件操作影响非常小
  • 是一个全64-bit的文件系统,最大可以支持8EB的文件系统,1EB=1024PB1PB=1024TB(1TB=1024GB)
  • 而支持单个文件则达到8EB能以接近裸设备I/O的性能存储

3.1.2 swap

swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据 时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过 多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存不足。

3.1.3FAT16、FAT32、

且最大只能支持32GB分区,单个文件也只能支持最大4GB。

3.1.4NTFS(xfs)

NTFS文件系统所具备3个功能:错误预警功能、磁盘自我修复功能和日志功能,单个文件64GB

3.1.5EXT4

Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分 区是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件 (16TB)、最大1EB的文件系统,以及速度的提升1EB=1024PB=1024TB

3.1.6 JFS

主要是为满足服务器的高吞吐量和可靠性需求而设计、开发的。单个文件最大限制16TB,该文件系统最大支持1PB的容量。1PB=1024TB

4.分区工具

4.1 fdisk

格式:fdisk -l [磁盘设备]

fdisk [磁盘设备]

选项:

  • m 打印出菜单
  • p 打印出当前分区表
  • n 新建一个分区
  • d 删除一个分区
  • t 改变分区的属性,系统ID
  • w 保存
  • q 不保存退出
[root@localhost ~]# fdisk -l /dev/sda

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    10487807     5242880   83  Linux
/dev/sda2        10487808   111167487    50339840   8e  Linux LVM

Device:分区的设备文件名称。
Boot:是否是引导分区。若是,则有“*”标识。主系统
Start:该分区在硬盘中的起始位置(柱面数)。
End:该分区在硬盘中的结束位置(柱面数)。
Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节。
Id:分区对应的系统 ID 号。83 表示 Linux 中的 XFS 分区或 EXT4 分区、8e 表示 LVM 逻辑卷。LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,与之相关的知识将在后面的章节介绍。
System:分区类型。识别到新的硬盘设备后,就可以在该硬盘中建立新的分区了。在 Linux 操作系统中,分区和格式化的过程是相对独立的

#fdisk /dev/sdb    ##创建一个分区

4.2 blkid

查看块设备属性信息

[root@localhost ~]# blkid
/dev/mapper/centos-root: UUID="695a8a35-5f1e-4d13-9b07-3b0083e6e2af" TYPE="xfs" 
/dev/sda2: UUID="Tq2U67-y9Z3-gLFQ-BM4l-lYT3-j4qK-ltFBA3" TYPE="LVM2_member" 
/dev/sda1: UUID="ea627680-b055-437c-9f2d-1a16e2b6bce3" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="f4430ebc-567d-44e4-8e61-ddf8ac6e8d88" TYPE="swap"

4.3mkfs

选项

-t {ext2|ext3|ext4|xfs} 指定文件系统类型

-b {1024|2048|4096} 指定块 block 大小

-L ‘LABEL’ 设置卷标

-j 相当于 -t ext3, mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3-i

-i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小

-N  # 指定分区中创建多少个inode

-I 一个inode记录占用的磁盘空间大小,128---4096

-m  # 默认5%,为管理人员预留空间占总空间的百分比

-O FEATURE[,...] 启用指定特性-O ^FEATURE 关闭指定

4.4 mkswap

swap

特殊的文件系统,缓解内存不足,为了个别应为程序加内存有点浪费

添加交换分区的空间

mkswap + 分区

swapon +分区 开启

swapoff +分区 关闭

5.挂载与解挂载

5.1mount

mount [ -t 类型 ] 存储设备 挂载点目录

mount -o loop ISO镜像文件 挂载点目录

-t fstype 指定要挂载的设备上的文件系统类型,如:ext4,xfs
-r readonly,只读挂载
-w read and write, 读写挂载,此为默认设置,可省略
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有
auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
[root@localhost ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        40G  4.8G   36G   12% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.0M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs       5.0G  179M  4.9G    4% /boot
tmpfs                   tmpfs     378M   52K  378M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /mnt

# findmnt  查看 设备的详细信息
[root@localhost ~]# findmnt /mnt
TARGET SOURCE   FSTYPE  OPTIONS
/mnt   /dev/sr0 iso9660 ro,relatime
选项功能
rw/ro是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。
async/sync此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。
dev/nodev是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。
auto/noauto是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。
suid/nosuid设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。
exec/noexec设定在文件系统中是否允许执行可执行文件,默认是允许。
user/nouser设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。
defaults定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。
remount重新挂载已挂载的文件系统,一般用于指定修改特殊权限。

5.2永久挂载

需要 将文件写入 /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Mar 17 06:13:07 2022
#
# 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=ea627680-b055-437c-9f2d-1a16e2b6bce3 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

第 1 字段:设备名或设备卷标名。
第 2 字段:文件系统的挂载点目录的位置。
第 3 字段:文件系统类型,如 XFS、Swap 等。
第 4 字段:挂载参数,即mount 命令“-o”选项后可使用的参数。例如,defaults、rw、ro、noexec 分别表示默认参数、可写、只读、禁用执行程序。
第 5 字段:表示文件系统是否需要 dump 备份(dump 是一个备份工具)。一般设为 1时表示需要,设为 0 时将被 dump 忽略
第 6 字段:该数字决定在系统启动时进行磁盘检查的顺序。0 表示不进行检查,1 表示优先检查,2 表示其次检查。根分区应设为 1,其他分区设为 2。
通过在/etc/fstab 文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区。例如,执行以下操作将添加自动挂载分区/dev/sdb1 的配置记录

5.3 df

df [OPTION]... [FILE]

[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        40G  4.8G   36G   12% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.0M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs       5.0G  179M  4.9G    4% /boot
tmpfs                   tmpfs     378M   52K  378M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /mnt

[root@localhost ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         ea627680-b055-437c-9f2d-1a16e2b6bce3   /boot
└─sda2          LVM2_member                 Tq2U67-y9Z3-gLFQ-BM4l-lYT3-j4qK-ltFBA3 
  ├─centos-root xfs                         695a8a35-5f1e-4d13-9b07-3b0083e6e2af   /
  └─centos-swap swap                        f4430ebc-567d-44e4-8e61-ddf8ac6e8d88   [SWAP]
sr0             iso9660     CentOS 7 x86_64 2017-09-06-10-51-00-00                 /mnt