文章目录

    • 一.磁盘结构
    • 1.设备文件
    • 2.mknod创建设备文件
    • 2.硬盘接口类型
    • 3.机械硬盘和固态硬盘
    • 4.设备文件
    • 5.添加磁盘
    • 6.CHS和LBA
  • 二. 分区类型
    • 1.管理分区
    • 2.分区
    • 3.MBR分区结构
    • 4.GPT分区
  • 三. 管理分区的命令
    • 1.查看分区
    • 2.parted命令
    • 3.分区工具fdisk和gdisk
    • 克隆分区
    • 同步分区
    • 创建分区步骤:
  • 四. 文件系统
    • 1.文件系统类型
    • 2.文件系统分类
    • 3.创建文件系统
      • 对文件创建文件系统
    • mke2fs 格式化ext
    • 4.文件系统标签
    • 5.文件系统检测和修复

用到的命令
mknod,fdisk,gdisk

一.磁盘结构

1.设备文件

I/O Ports: I/O设备地址
一切皆文件:open(), read(), write(), close()
设备类型:/dev
块设备:block,存取单位“块”,磁盘
字符设备:char,存取单位“字符”,键盘

块设备:支持缓存,提高效率
字符设备:一个一个输入

设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
设备号码:
主设备号:major number, 标识设备类型(使用同一种驱动)
次设备号:minor number, 标识同一类型下的不同设备

2.mknod创建设备文件

查看当前炒作系统支持的文件系统类型cat /proc/filesystems
linux中支持的文件系统驱动在/lib/modules/uname –r/kernel/fs/
在/dev下面可以看到不同的设备
第一个表示主设备类型(第几个类型)相同为同一个设备
第二个表示:次设备号类型的编号(同样类型的设备编号)

例如:
构建一个和/dev/sr0相同的设备 (这是光盘)
mknod 创建设备

mknod 名字 主类型(字符)   次类型(数字)

将这个设备挂载到/mnt文件里-------相当于光盘
只要设备名对应的编号----和类型相同(系统就认为是同一个设备)

2.硬盘接口类型

并行:
IDE:133MB/s
SCSI:640MB/s
串口:
SATA:6Gbps
SAS:6Gbps
USB:480MB/s

3.机械硬盘和固态硬盘

Cat /sys/block/sda/queue/rotational 查看是哪种硬盘
rotational转速,有旋转的是机械
1为机械硬盘,0固态硬盘

机械硬盘HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有
一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤
固态硬盘SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控
制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、
功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致
区别
相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍
相较于SSD,HDD在价格、容量占有绝对优势
硬盘有价,数据无价,目前SSD不能完全取代HHD

4.设备文件

系统内核的设备管理器udev会自动将硬件名称进行规范
磁盘设备的设备文件命名:/dev/DEV_FILE
SCSI, SATA, SAS, IDE,USB: /dev/sd
虚拟磁盘:/dev/vd 、/dev/xvd
ide设备的文件名称为/dev/hd*
SCSI或SATA涉笔文件名为/dev/sd*
不同磁盘标识:a-z,aa,ab…
/dev是硬件目录,sd开头是存储设备
/dev/sda, /dev/sdb, …

同一设备上的不同分区:1,2, …
/dev/sda1, /dev/sda5
硬盘存储术语
head:磁头
track:磁道
cylinder:柱面
sector:扇区,512bytes

5.添加磁盘

主要是/sys/class/scsi_host文件夹下面的host0,host1,host2这三个目录下面的scsi总线号
添加方式:重新扫描scsi以热插拔方式添加新设备

echo '- - -' > /sys/class/scsi_host/host0/scan
echo '- - -' > /sys/class/scsi_host/host1/scan
echo '- - -' > /sys/class/scsi_host/host2/scan

一般scsi_host下面有很多host文件夹
可以使用循环扫描完成

for i in /sys/class/scsi_host/host*/scan;do echo "- - -" > $i ;done

6.CHS和LBA

CHS
采用24bit位寻址
其中前10位表示cylinder,中间8位表示head,后面6位表示sector
最大寻址空间8GB
LBA(logical block addressing)
LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位LBA上限达到128 GiB。2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128 Petabytes
由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

二. 分区类型

1.管理分区

为什么分区

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

2.分区

两种分区方式:MBR,GPT

MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
如何分区:按柱面
0磁道0扇区:512bytes
446bytes: boot loader启动计算机(主引导程序
64bytes:分区表,其中每16bytes标识一个分区
2bytes: 55AA 有效标识位,用来区分是否有效
MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

查看ada分区的前512字节 hexdump查看二进制

3.MBR分区结构

硬盘主引导记录MBR由4个部分组成
主引导程序(偏移地址0000H–0088H),它负责从活动分区中装载,并运行系统引导程序
出错信息数据区,偏移地址0089H–00E1H为出错信息,00E2H–01BDH全为0字节
分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH–01FDH,
每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
结束标志字,偏移地址01FE–01FF的2个字节值为结束标志55AA

MBR结构512字节的含义

MBR中的DPT结构16个字节的含义

4.GPT分区

全是主分区
支持128个分区
化一个分区编号靠前就是外圈内圈的速度快
使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使操作系统启动

GPT分区结构

BIOS+MBR与UEFI+GPT

三. 管理分区的命令

1.查看分区

列出块设备lsblk -f 可列出相应的UUID
blkid相当于 lsblk -f ,查看所有分区的UUID和文件系统类型
查看文件cat /proc/partitions,
查看设备名:ls /dev/sdb*
真正硬盘的分区表fdisk -l /dev/sdb
centos6可以看到磁盘存储属于的全部内容
centos7中只有扇区 sector
用 fdisk -l -u=cylinder可以使centos7变成以柱面显示

创建分区使用:
fdisk 创建MBR分区
gdisk 创建GPT分区
parted 高级分区操作
partprobe重新设置内存中的内核分区表版本

2.parted命令

parted的操作都是实时生效的,小心使用
用法:parted [选项]… [设备 [命令 [参数]…]…]
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200 (默认M)
parted /dev/sdb rm 1
parted –l 列出分区信息

可以交互式使用
给sdb创建分区 gpt 分区必须是连续空间

print打印分区表
开始分区mkpart primary全是主分区 从第几个空间到底几个空间(默认单位M)

这样就能看到sdb的设备

删除用rm 编号

3.分区工具fdisk和gdisk

gdisk /dev/sdb 类fdisk 的GPT分区工具
fdisk -l 设备查看分区
fdisk /dev/sdb 管理分区
子命令:

p 分区列表
t 更改分区类型
n 创建新分区(p主分区,e扩展分区,l逻辑分区)
d 删除分区
v 校验分区
u 转换单位
w 保存并退出
q 不保存并退出

a 设置启动分区
b 编辑分区标签
c toggle the dos compatibility flag
l 列出分区类型
m 输出帮助信息


结果就是这样----共1个G的空间 分区标号为2

分一个逻辑分区(逻辑分区一定是在扩展分区里面分的)
所以这个范围就是在上一个扩展分区范围之内

如果删除逻辑分区5 而后面的6会充当分区5(设备名是不稳定的

如果将扩展分区删了–那么他的逻辑分区也会被删掉
正常情况下分区必须按次序分(连续)

有些分区的id好是特殊的例如swap和内存交换数据的id=82
t字母用来改id号
L里面有id号类型

在centos6中用fdilk分区后w保存退出后出现一个错误weaning
用除fdisk之外的方法查看不到分区后情况的
lsblk ,cat /proc/partitions ,ls /dev/sda*
硬盘的分区成功了 但内存的同步不了
这是就必须同步分区用partx -a /dev/sda


如果用fdisk删除了分区
那么用**partx -d --nr 分区编号 /dev/sda** 来同步

克隆分区

将a 的分区克隆到c上
如果硬盘c内存不够,那么会出错

在fdisk中有个v校验
只能克隆主分区,扩展分区,
不能克隆逻辑分区,因为逻辑分区在扩展分区的里面的,逻辑分区在ebr中,所以逻辑分区是克隆不出来的
注意克隆是永久保存的
gdisk擅长管理gpt例如./dev/sdd

同步分区

centos6
/partx -a /dev/sdb
kpartx -a /dev/sdb -f:force
删除分区用partx -d -nr M-N /dev/sdb

centos5,7
partprobe /dev/sdb

创建分区步骤:

1.打开设备文件创建MBR分区fdisk /dev/sdb
2.创建分区并w保存
3.通知内核读取更新后的分区表 (同步分区表)
centos6
/partx -a /dev/sdb
kpartx -a /dev/sdb -f:force
删除分区用partx -d -nr M-N /dev/sdb

centos5,7
partprobe /dev/sdb
4.查看分区表是否更新cat /proc/partitionsfdisk -l

四. 文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即
在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等
支持的文件系统:/lib/modules/`uname –r`/kernel/fs

1.文件系统类型

ext2(Extended file system) :适用于那些分区容量不是太大,更新也不频繁的情况,不支持日志功能,例如 /boot 分区
ext3:是 ext2 的改进版本,其支持日志功能相当于ext3=ext2+日志,能够帮助系统从非正常关机导致的异常中恢复。它通常被用作通用的文件系统
ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使
用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
xfs:SGI,支持最大8EB的文件系统
btrfs(Oracle), reiserfs, jfs(AIX), swap
光盘iso9660
Windows:FAT32, exFAT,NTFS
Unix: FFS(fast), UFS(unix), JFS2
网络文件系统:NFS, CIFS
集群文件系统:GFS2, OCFS2(oracle)
分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未经处理或者未经格式化产生的文件系统

df -T 可以查看文件系统的类型
Centos6多数都是用的ext系列的文件系统

Centos7用的是xfs

2.文件系统分类

根据其是否支持"journal"功能
日志型文件系统: ext3, ext4, xfs, …
非日志型文件系统: ext2, vfat

文件系统的组成部分
内核中的模块:ext4, xfs, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

Linux的虚拟文件系统:VFS
查前支持的文件系统:cat /proc/filesystems

VFS

3.创建文件系统

mkfs命令:

mkfs.类型 /dev/分区
mkfs -t 类型  /dev/分区

(1) mkfs.TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs -t TYPE /dev/DEVICE
-L ‘LABEL’ 设定卷标

对文件创建文件系统

前提必须取消挂载状态

如果已经有文件系统
加上-f 重新格式化

mke2fs 格式化ext

mke2fsext系列文件系统专用管理工具

-t {ext2|ext3|ext4} 指定文件系统类型
-b {1024|2048|4096} 指定块大小
-L ‘LABEL’ 设置卷标
-j 相当于 -t ext3mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小
-N # 指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m # 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] 启用指定特性
-O ^FEATURE 关闭指定特性

加卷标,就是起名字(尽量设置成挂载点的名字)

4.文件系统标签

指向设备的另一种方法
与设备无关
blkid:块设备属性信息查看
blkid [OPTION]… [DEVICE]
-U UUID 根据指定的UUID来查找对应的设备
-L LABEL 根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL
e2label DEVICE [LABEL]
findfs :查找分区
findfs [options] LABEL=
findfs [options] UUID=

tune2fs重新设定ext系列文件系统可调整参数的值

-l 查看指定文件系统超级块信息;super block
-L 'LABEL’ 修改卷标
-m # 修预留给管理员的空间百分比
-j 将ext2升级为ext3
-O 文件系统属性启用或禁用, –O ^has_journal
-o 调整文件系统的默认挂载选项,–o ^acl
-U UUID 修改UUID号 

dumpe2fs:显示ext文件系统信息,将磁盘块分组管理
-h:查看超级块信息,不显示分组信息

xfs_info:显示已挂载的 xfs 文件系统信息
xfs_info mountpoint

tune2fs -l /dev/sdb1
相当于 dumpe2fs -h /dev/sdb1

uuidgen生成随机的uuid
给ext2 加上日志 has_journal 将相当于ext3用-O加

源数据放在超级快里面
查看超级块inode table里面的内容(在centos6里面使用)

超级块和inode table

查看文件系统的驱动 locate 文件系统.ko
Xz是压缩格式

在centos6中后来分的分区中没有acl策略
-o acl 就是加上acl
-o ^acl 删除acl

查看分组ext系列情况dumpe2fs /dev/sdb1
或者 tune2fs -l /dev/sdb1
Xfs系列 xfs_info /dev/sdb1
超级块很重要很重要----所以需要备份(默认有备份)
这样就可以修复坏了 的文件系统

查看分区 # xfs_info /dev/sda3 适用于centos7
要求必须挂载到某个目录中才能用着个命令查询

5.文件系统检测和修复

注意:一定要取消挂载之后在执行修复–
否则就是二次加错

文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下执行下面命令修复
fsck: File System Check

fsck.FS_TYPE
fsck -t FS_TYPE
注意:FS_TYPE 一定要与分区上已经文件类型相同
-a 自动修复
-r 交互式修复错误

e2fsck:ext系列文件专用的检测修复工具

-y 自动回答为yes
-f 强制修复
-p 自动进行安全的修复文件系统问题

xfs_repair:xfs文件系统专用检测修复工具

-f 修复文件,而设备
-n 只检查
-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot

磁盘存储和文件管理----分区,文件系统 lsblk,blkid,findfs,parted,partprobe,partx,mkfs,mke2fs,uuidgen,locate相关推荐

  1. Linux笔记 No.17---(磁盘分区fdisk,gdisk,parted、格式化mkfs,mke2fs、挂载mount、卸载umount、df、du、lsof命令)

    文章目录 一.磁盘 (一)机械硬盘(HDD) 1.基本组成 2.逻辑结构 (二)固态硬盘(SSD) 二.硬盘分区 (一)基本概念 1. MBR(MS-DOS 主引导记录区)方案 2.GPT(GUID ...

  2. Linux查看分区文件系统类型总结

    在Linux 中如何查看分区的文件系统类型,下面总结几种查看分区文件系统类型的方法. 1: df -T 命令查看 这个是最简单的命令,文件系统类型在Type列输出.只可以查看已经挂载的分区和文件系统类 ...

  3. Linux查看分区文件系统类型的几种方法

    ​ 在Linux 中如何查看分区的文件系统类型,下面总结几种查看分区文件系统类型的方法. 1.df -T 命令查看 这个是最简单的命令,文件系统类型在Type列输出.只可以查看已经挂载的分区和文件系统 ...

  4. 分区文件系统FAT文件系统

    最近个人几篇文章分析了改分区文件系统的文章. 关联文章的地址 一.分区与分区表 分区和卷是一个经常换着应用的语术.通常情况下没有什么问题,因为他们是一同件事件.只是说法上稍有不同而已.当然,理解这两个 ...

  5. 安装系统以及磁盘分区所要知道的磁盘的类型、分区文件系统等知识

    终于你明白,这就是爱情.终有一个人,老是跟你过不去,你却很想跟他过下去. 磁盘的类型: MBR磁盘:MBR磁盘最大支持2TB,如果是大于2TB的磁盘选择MBR格式会造成磁盘容量的浪费,建议选择GPT格 ...

  6. 乌班图查看分区文件系统类型的命令

    乌班图是一款开源的磁盘分区工具,它可以用来查看磁盘分区的文件系统类型. 要查看分区文件系统类型,可以使用以下命令: sudo fdisk -l 该命令会列出系统中所有的磁盘分区信息,包括分区号.起始扇 ...

  7. centos7parted分区_Linux-centos7超过2TB使用parted命令分区

    介绍说明: parted的操作都是实时的,也就是说你执行了一个分区的命令,他就实实在在地分区了, 而不是像fdisk那样,需要执行w命令写入所做的修改, 所以进行parted的测试千万注意不能在生产环 ...

  8. 【Linux】分区和格式化硬盘(fdisk | parted)

    摘要 本文探讨如何在 Linux 中对硬盘进行分区,并对分区进行格式化. 样例 我们现在来完成一个对硬盘分区和格式化的任务.硬盘大小为 223.6G,设备名为 sdd,需要划分为 5 个分区: 分区 ...

  9. pe读linux硬盘分区工具_Linux分区工具:Fdisk与Parted以及GParted

    前言:Linux和windows一样也有多种磁盘分区工具,在Linux中比较流行的有五种工具:KDE分区管理器.Fdisk.GParted.GNOME磁盘分区工具.Parted.个人最喜欢GParte ...

最新文章

  1. 理解YOLOv2训练过程中输出参数含义
  2. 面试使用计算机,面试相关之计算机基础
  3. POJ 1018 Communication System
  4. s()++php,jquery siblings()函数正确用法
  5. VII Python(9)socket编程
  6. win服务器自动发邮件,windows关机前执行脚本设置与关机blat自动发送邮件脚本模板...
  7. 最短路弗洛伊德(Floyd)算法加保存路径
  8. Linux设备驱动模型4——平台总线实践
  9. STATA画图命令(一)
  10. 域名可以用多久_一个域名能用多少年
  11. linux dot命令,linux绘图工具之dot
  12. java jks 转pfx_证书pfx转换成jks
  13. buuctf刷题记录(6)
  14. 如何从固态硬盘启动计算机,怎么把固态硬盘设置为第一启动系统
  15. 机械手臂c语言如何编程,一种串联机械手臂的示教编程方法
  16. 如何使用Google底部导航栏创建通知徽章
  17. 最新架构amd服务器cpu,AMD第一款ARM处理器正式发布!
  18. Python 表示无穷大的数
  19. 字符串转换成JSON
  20. 基于多模态数据挖掘算法matlab,多模态生物数据分析与挖掘研究

热门文章

  1. VMware16 NAT端口映射外网访问虚拟机Centos7
  2. C语言入门(大一笔记)数组篇
  3. 【CVPR2017周博磊】Network Dissection: Quantifying Interpretability of Deep Visual Representations
  4. 1H411000机电工程常用材料及工程设备——1H411020机电工程常用工程设备
  5. 智能电表c语言开发,智能电表之自动抄表主流方案盘点(一)
  6. 二级MS Office 考什么,点进来细说
  7. java线程写个计时器_用Java开发C/S应用(二):启动新的线程,制作一个计时器...
  8. 柱插筋计算机械接头吗,柱基础插筋的计算.ppt
  9. go install命令
  10. 杆梁单元及其坐标变换(工程有限元方法(曾攀))