• 八、 文件系统管理


    磁盘管理

    (1) MBR分区表
    		1.  主引导程序(boot loader)占用了 446byte
    				安装操作系统时写入引导程序
    		2.  分区表(Partition table)占用了 64byte
    				(每个分区信息16b,可存储4个分区信息)
    		3.  有效标志符(magic number)占用了 2byte(55AAH 代表有效)
    				标志MBR分区表是否生效
    (2) 主引导扇区的读取流程:
    ① BIOS 加电自检 ( Power On Self Test -- POST )。BIOS 执行内存地址的跳转指令,跳转到固化在 ROM 中的自检程序处,对系统硬件(包括内存)进行检查。
    ② 读取主引导记录(MBR)。当 BIOS 检查到硬件正常并与 CMOS 中的设置相符后, 按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS 将相应启动设备的第一个扇区(也就是MBR 扇区)读入内存。
    ③ 检查 MBR 的结束标志位是否等于 55AAH,若不等于则转去尝试其他启动设备,如果没有启动	设备满足要求则显示“NO ROM BASIC”然后死机。
    ④ 当检测到有启动设备满足要求后,BIOS 将控制权交给相应启动设备。启动设备的 MBR 将自	己复制到 0000:0600H 处,然后继续执行。
    ⑤ 根据 MBR 中的引导代码启动引导程序。
    

    数据存储的层级

    	表示层:文件名
    	逻辑层:文件系统(data-block:4k)	super-block高级格式化
    	物理层:扇区(512byte)		分区表(MBR-64byte)低级格式化
    		格式化:写入文件系统(写入存储规范)
    

    文件系统

    super block:超级块,记录每个分区的 block 的大小、数量;块位图(已使用和未使用的 inode和 block 的数量);文件系统挂载时间,最后修改时间,最近检查时间。
    		块位图:记录最后一个文件的存储位置和所有未存储的数据块位置
    	data block:数据块,保存真实数据的位置,block 的大小和数量在格式化成文件系统时已经固定, 除非重新格式化,否则不能修改。单个文件占用小于一个 block 的大小时,单独占用一个 block,剩余空间不会被利用。inode:别名 i 节点;记录 inode 号、权限、属主属组、时间戳、大小、占了哪几个 block
    inode 显示的数据又叫文件的元数据
    

    磁盘管理命令

    	df -ahT 参数				以常见单位显示文件系统类型,包括挂载(a-所有,h-人性化显示,T-类型type)
    	du -sh	参数				查看文件大小(包括其内文件大小之和)(s-和,h-人性化显示,a-每个文件)
    	du -h  -x --max-depth=1	查看当前目录下一级目录的空间大小
    	fsck -y 分区名			自动修复出现问题的文件系统
    	dumpe2fs -h 分区名		详细显示磁盘状态
    	stat 文件名				查看文件详细信息
    	file文件					判断文件类型
    	type命令名				判断命令是外部命令还是内置命令
    	fdisk -l				查看系统所有硬盘及分区
    

    MBR分区

    1) 普通分区
    	fdisk 设备名		分区
    		p:打印分区表
    		n:新建一个新分区
    		d:删除一个分区
    		m:输出菜单
    		q:不保存退出
    		w:把分区写进分区表,保存并退出
    	mkfs -t ext4 分区设备名称		格式化(-t:指定文件类型)
    	mke2fs –text4 –b4096 –i4096 /dev/sdb1	格式化(b-指定block大小,i-多少个block分配一个	inode号)
    	mkfs.* 分区设备名称		格式化(*代表文件系统)
    2) 创建swap分区
    			① fdisk /dev/sdb1
    				--t  --1  --82  --w
    			② mkswap /dev/sdb1		格式化
    			③ swapon /dev/sdb1		启用swap分区
    			④ vim /etc/fstab		将swap分区添加到配置文件,实现自动挂载
    			⑤ mount -a				检查/etc/fstab是否错误
    			⑥ free					查看实际swap分区大小
    3) 编辑/etc/fstab 系统开机自动挂载文件
    	1.  设备文件名(UUID)UUID:/dev/disk/by-uuid
    	2.  挂载点
    	3.  文件系统类型
    	4.  挂载特殊选项
    	5.  是否备份:  0 不备份 1 每天备份  2 不定期备份
    	6.  是否检查磁盘状态: 0 不检查 1 启动时检查 2 启动后检查
    4) 修复启动文件错误  /etc/fstab
    	1)根据提示输入所需的 root 密码,那么修改下/etc/fstab
    	2)对/目录进行重新挂载成读写rw
    		mount  -o  remount,rw  /
    	3)修改/etc/fstab 中的错误
    

    GPT分区表

        GPT(GUID Partition Table)"全局唯一标识磁盘分区表" ,主要用来代替 MBR 分区表,突破存储限制。
    GPT 分区表的构成
    		◆ LBA 0 :GPT 分区的最开头,考虑兼容性问题,开头仍然存放 MBR 分区表,只是里面存放的
    是指向 GPT 的指针。防止有一些系统不识别 GPT 分区表。
    		◆ LBA 1 :存储了硬盘的总存储空间,以及 GPT 分区表的信息,定义最多能创建 128 个分区,每个分信息占用的空间是 128 字节;128 个分区中有一个是用来存储备份分区表的,所以可以手动指定的分区数为 127 个分区。
    		◆ LBA 2-33:每个分区信息存放的位置,每个分信息占用的空间是 128 字节。2-33
    正好是 32 个扇区。32*512=16384,每个分区信息占用了 128 字节,16384/128=128 个分区。
    	LBA0(0磁道,1扇区)	LBA1(0,2)	LBA2(0,3)	……	LBA33(0,34)
    主引导程序
    446byte	分区表
    
    64byte	有效标志符
    2byte	总大小,gpt分区表信息
    512byte	存储4个分区信息,每个128b
    512byte	……
    ……
    ……	存储4个分区信息,每个128b
    512byte
    

    GPT分区操作

    	parted /dev/sdb1
    		① print 		查看
    		② mklabel		修改分区表类型	
    			MBR—-> msdos		GPT—-> gpt
    		③ mkpart		创建分区	起始点5G,结束点 10G
    			无保存选项,每次操作直接保存
    		⑤ quie		退出
    		⑥ mkfs		格式化
    注:
    1) UUID查看:blkid	
    		blkid -o list			列表方式查看详细信息
    		blkid -s TYPE			显示所有设备文件系统
    		fsck -y /dev/sdc		修复文件系统异常
    		partprobe /dev/sdc		修复文件系统异常
    2) 添加新硬盘
    	查看主机总线号
    	[root@localhost ~]# ls /sys/class/scsi_host/ 	host0  host1  host2
    	依次扫描总线号
    	[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan  
    	[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host1/scan  
    	[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan	  
    	如果有多个,则使用循环
    	[root@localhost ~]# for i in /sys/class/scsi_host/host*/scan;do echo "- - -" > $i;done  
    


    作者:Outsrkem
    出处:https://www.cnblogs.com/outsrkem/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    [大话数据结构]线性表之单链表结构和顺序存储结构
    [大话数据结构]算法
    [C#编程参考]把图像转换为数组的两种实现
    [C#绘图]在半透明矩形上绘制字符串
    [C#绘图]Matrix类
    在C#调用C++的DLL方法(二)生成托管的DLL
    在C#调用C++的DLL方法(一)生成非托管dll
    彻底解决 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    修复./mysql/proc
    linux 网络连接数查看方法
  • 原文地址:https://www.cnblogs.com/outsrkem/p/11170562.html
Copyright © 2020-2023  润新知