前言:
系统磁盘管理是维护系统稳定、高效的运行的核心任务之一。
系统磁盘管理能够通过文件系统和合理划分磁盘分区保障数据存储的有序性,并能通过磁盘监控、快照备份、分区隔离和动态调整磁盘空间等功能,确保数据安全可靠的同时提升系统性能。
一、物理硬盘
1.硬盘物理结构
1.1、硬盘结构
硬盘中的每个盘片都有两面且都可以存储数据。每个盘面都有一个磁头,用于读取数据。所有磁头都是固定的,一起做物理移动。但是每次只有一个磁头执行存取数据的任务,选择使用哪个磁头是由系统控制的。磁头间的切换非常迅速,而磁头摆动寻道则比较慢。磁头摆动,找到要读取数据所在的磁道;盘片通过转动,将数据“送到”磁头下。
1.2、磁头数、磁道、柱面、扇区
每个盘面都有一个磁头,因此磁头数 = 盘面数。 上以盘片轴心为圆心,不同半径的同心圆称为磁道磁道之间有一定的间隙,以免磁道之间磁介质相互影响。每个磁道被等分为若干个弧段(扇区),每个扇区可以存放512个字节的数据。扇区是磁盘驱动器向磁盘读写数据的最小单元。不同盘片半径相同的磁道组成的一个“柱面”。
2.CHS编号
CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区)。每个柱面、磁头、扇区都有自己的编号。
2.1、磁道编号
磁头编号: 从上到下,分别为磁头0号,磁头1号......
柱面编号: 最外圈的柱面编号为0,往里依次递增1,2,3.....
2.2、扇区编号
每个磁道都可以被分为若干个扇区,假设有18个扇区,编号依次为1,... 18。这里的1...18在一个磁道中是唯一的,但不同磁道之间会重复。因此,要确定一个扇区在硬盘(多个盘片)中的具体位置,则需要结合柱面号/磁头号/扇区号来确定——绝对扇区编号,或者是为整个硬盘的所有扇区分配一个唯一的编号——DOS扇区编号(也称为相对扇区编号或逻辑扇区编号)。
绝对扇区: 由柱面号/磁头号/扇区号唯一确定
DOS(Disk Operating System)扇区(逻辑扇区): 磁盘操作系统为了管理方便,会将柱面号/磁头号/扇区号确定的扇区编号转换为易于管理和计算的单一数字编号,称为相对扇区编号或逻辑扇区编号。DOS扇区编号是从柱面0/磁头0/扇区1开始的,编号为0,依次递增,即柱面0/磁头0/扇区18的DOS扇区编号为18;柱面0/磁头1/扇区1的DOS扇区编号为19...。每个分区的第一个扇区的逻辑扇区编号为0。
2.3、通过CHS计算硬盘容量
硬盘存储容量=磁头数×柱面数×每个磁道扇区数×每个扇区字节数
3.磁盘存储分化
分区的最小单位为柱面(Cylinder),也就是说,分区其实就是指定从第几个柱面到第几个柱面属于哪个区。假设硬盘有400个柱面,平均分为4个区(C、D、E、F盘),则第四个分区F的柱面范围是第301号到第400号柱面。分区表中,记录的就是就是每个分区的起始柱面号和结束柱面号。因为分区表只有64字节,因此最多只能容纳4个分区的记录(硬盘默认),要想分更多的去,则需要通过扩展分区来创建逻辑分区。
4.开机流程
4.1加载bios:(Base Input Output System,基本输入输出系统,读做/'baious/)是硬件厂商写入到主板ROM里的一个程序,电脑开机时,会最先执行BIOS。
4.2、MBR: BIOS在执行的过程中,会根据用户设置(即在BIOS的Boot界面选择的优先启动项,U盘/硬盘/光驱),如果硬盘的优先级最高,则计算机会从硬盘的第一个扇区的MBR中的读取引导加载程序(Boot Loader)。和BIOS一样,主引导分区MBR是硬件本身会支持的东西。
引导加载程序:(Boot Loader)是用于读取操作系统内核文件的一个小软件,不同的操作系统有各自的引导加载程序。每个分区都可以有自己的文件系统,有自己的引导扇区,在启动的过程中,用户可以选择是直接加载引导程序所在分区的操作系统,还是将引导加载功能交给各分区引导扇区中的加载程序。boot loader的功能主要有:提供菜单:让用户选择不同的开机选项,是多重引导的重要功能。载入内核文件:直接指向可开机的程序区段,开始操作系统。转交其他loader: 将引导加载功能转交给其他loader负责。
最后,引导加载程序加载操作系统的内核文件,启动操作系统!
二、文件系统
1.根文件系统
根文件系统是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
2.虚拟文件系统
虚拟文件系统VFS软件抽象层为用户屏蔽了底层文件系统的差异,向上层提供了统一地访问接口。
3.真文件系统
真文件系统其实是实际存储设备的文件系统,挂载于EEPROM、 Nor FLASH、 NAND FLASH、 eMMC 等存储器中。
3.1、ext4
是Linux系统下的日志文件系统,使用64位空间记录块数量和i-节点数量。
3.2、xsf
XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中,目前CentOS 7将XFS+LVM作为默认的文件系统。
4.伪文件系统
4.1、procfs
procfs是 进程文件系统的缩写,包含一个伪文件系统(启动时动态生成的文件系统),用于通过内核访问进程信息。这个文件系统通常被挂载到 /proc 目录。
4.2、devtmpfs
如果将一个设备连接到Linux系统时,通常需要一个设备驱动程序才能正常工作。此时通过设备文件或设备节点与设备驱动程序交互,这些是看起来像普通文件的特殊文件。由于这些设备文件就像普通文件一样,所以可以使用ls、cat等程序与它们交互。这些设备文件一般存放在/dev目录下。
4.3、devtmpfs
sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。sysfs 文件系统被挂载在 /sys 挂载点上。
三、磁盘分区与挂载
添加新磁盘后需热扫描才能被系统识别
cd /sys/class/scsi_host目录名下输入:for i in `ls /sys/class/scsi_host`;do echo "- - -" > ${i}/scan;done
识别新磁盘
1.磁盘分区方式
1.1、MBR
主引导记录 支持四个主分区或三个主分区一个扩展分区及分区下的逻辑分区,扩展分区占用主分区编号额度(逻辑分区的名称从sdb5开始)
1.2、GPT
是GUID分区表(GUID Partition Table)的缩写; 含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。 自纠错能力强,一块磁盘上主分区数量不受(4个的)限制,支持大于18EB的总容量, 几乎没有上限,最大支持到128个分区,分区大小支持到256TB。GPT无法直接产生主引导记录,需要借助MBR连用。
2.分区命令
2.1、fdisk
交互式分区命令fdisk /dev/sdb
添加主分区
添加扩展分区
添加逻辑分区
2.2、parted
parted /dev/sdb 新建分区 
mount挂载 sdb1格式化后删除重建仍存留数据故不用格式化也能被识别。
所有分区删除前都需要取消挂载,umount之后 rm-rf删除,fdisk中d删除。
3.查看与识别命令
3.1、lsblk
3.2、partprobe
加载当前文件系统的容器,识别容量。
3.3、blkid
查看磁盘分区的UUID
4.格式化命令
mkfs: 用于格式化磁盘分区,生成指定的文件系统。格式化后分区中的数据将丢失!!! 开始分区前必须要格式化。
mkfs -t xfs /dev/sdb1
或者mkfs.xfs /dev/sdb1 mkfs.ext4 /dev/sdb3

5.挂载命令
5.1mount和swapon
mount ,挂载一个文件系统;swapon:挂载swap文件系统。 所有临时挂载,重启失效。
mount /dev/sdb1 /sdb1
swap分区需用mkswap格式化后才能被相应挂载识别。创建swap分区的两种方式:
(1) 直接格式化正常创建的分区使用:mkswap /dev/sdb1 执行swapon /dev/sdb2 /sdb2 
(2)从sda中抽取部分空间做扩容使用:dd if=/dev/zero of=/swap1 bs=1024M count=4 ——查看ls -l swap1——修改权限chmod 600 /swap1——格式化mkswap /swap1——挂载swapon /swap1 
5.2、umount和swapoff
-a卸载所有可卸载的文件系统
umount /dev/sdb1
swapoff /dev/sdb3
四、LVM逻辑卷
PV物理卷LVM 最底层,可以是物理硬盘或者分区,整个硬盘,或使用fdisk 等⼯具建⽴的普通分区,包许多默认 4MB 大小的 PE(Physical Extent,基本单元)。
PE物理区域PV 中可以用于分配的最小存储单元,可以在创建 PV 的时候制定(默认为 4MB),如 1M, 2M, 4M, 8M, 32M, 64M… 组成同⼀VG 中所有 PV 的 PE大小应该相同。
VG卷组建立在 PV 之上,可以含有一个到多个 PV,一个或多个物理卷组合而成的整体。
逻辑卷建立在 VG 之上,相当于原来分区的概念,不过大小可以动态改变。从卷组中分割出的一块空间,用于建立文件 系统。
1.pvcreate
创建物理卷pvcreate /dev/sdb1 需要先创建好分区后再进行操作 pvdisplay查看
2.vgcreate
创建卷组vgcreate /dev/sdb1 vgdisplay查看
3.lvcreate
创建逻辑卷lvcreate /dev/sdb1 lvdisplay查看
4.格式化
5.挂载
6.扩建
6.1、xfs格式
创建lvextend -L 识别容量xfs_growfs /dev/c2508/lv1 
6.2、ext4格式
创建lvcreate -n lv2 vg3 -L +1G 
格式化mkfs.ext4 /dev/vg3/lv2 
新建目录mkdir /lv2
挂载 mount /dev/vg3/lv2 /lv2
扩建 lvextend /dev/vg3/lv2 -L +1G
特别注意基于linux7系统时需要取消挂载后扩建
lvextend /dev/vg2/lv2 -L +2G——e2fsck -f /dev/vg2/lv2显示无法继续——取消挂载:umount /lv2——检查e2fsck -f /dev/g2/lv2——识别resize3fs /dev/vg2/lv2——挂载mount /dev/vg2/lv2 /lv2
五、磁盘配额
1.类型
1.1、配额类型:1.用户配额 usrquota 2.组配额 grquota
1.2、限制类型 :1.软限制(可灵活调配、可突破的)2.硬限制(不可突破限制) 限制内容为容量大小:inode节点(文件数量)
2.配置命令
2.1、quota挂载打开权限
2.2、XFS文件系统的磁盘配额命令
查看文件数量配额
试验创建文件
创建大小只能拷进50M 
六、硬盘检测与修复
1.fack
fsck - 检查并修复Linux文件系统
2.xfs_repair
修复损坏硬盘

修复完成重新挂载成功
3.badblocks
查询设备的坏区块
七、文件系统备份与回复
1.xfsdump
1.1、备份整个分区xfsdump -f /opt/dump_sdb1 /dev/sda1交互式备份
1.2、备份分区中的目录或文件xfsdump -f /optdump_sda1_0 -s grub2/grub.cfg /boot -L dump_sda1_0 -M sda1_0
1.3、查看已备份的文件系统cd /var/lib/xfsdump/inventory
2.xfsrestore
先删除挂载点下的内容后恢复文件系统数据
xfsrestore -f /opt/dump_sdb1 /sdb1
附录:xfs的常用命令
xfs_admin: 调整 xfs 文件系统的各种参数
xfs_copy: 拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式)
xfs_db: 调试或检测 xfs 文件系统(查看文件系统碎片等)
xfs_check: 检测 xfs 文件系统的完整性
xfs_bmap: 查看一个文件的块映射
xfs_repair: 尝试修复受损的 xfs 文件系统
xfs_fsr: 碎片整理
xfs_quota: 管理 xfs 文件系统的磁盘配额
xfs_metadump: 将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中
xfs_mdrestore: 从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统
xfs_growfs: 调整一个 xfs 文件系统大小(只能扩展)
xfs_logprint: print the log of an XFS filesystem
xfs_mkfile: create an XFS file
xfs_info: expand an XFS filesystem
xfs_ncheck: generate pathnames from i-numbers for XFS
xfs_rtcp: XFS realtime copy command
xfs_freeze: suspend access to an XFS filesystem
xfs_io: debug the I/O path of an XFS filesystem
以上均为学习干货。不足之处,敬请指正。
2530

被折叠的 条评论
为什么被折叠?



