加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_沈阳站长网 (https://www.024zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux学习—磁盘管理知识点总结

发布时间:2022-10-22 11:28:33 所属栏目:Linux 来源:
导读:  磁盘管理

  目录

  一、设备文件

  设备文件关联至设备驱动程序,用户通过操作这些设备文件间接管理对应的硬件设备

  一个设备的名称表示整个磁盘,而分区则用设备名加上一个分区号来表
  磁盘管理
 
  目录
 
  一、设备文件
 
  设备文件关联至设备驱动程序,用户通过操作这些设备文件间接管理对应的硬件设备
 
  一个设备的名称表示整个磁盘,而分区则用设备名加上一个分区号来表示
 
  设备文件类型:
 
  块设备 存取单位是块,如磁盘
 
  字符设备 存取单位是字符,如键盘
 
  为了方便管理这些设备,系统设置了主设备号和次设备号用来区分
 
  看如下示例:
 
  8 代表主设备号 后边的数字代表次设备号
 
  重点在于后边的次设备号,该数字与分区槽所在的位置有关
 
  创建设备文件:
 
  mknod 文件名 b 主设备号 次设备号创建块设备文件
 
  mknod 文件名 c 主设备号 次设备号 创建字符设备文件
 
  二、磁盘介绍
 
  (针对机械硬盘)
 
  磁盘的结构图如下:
 
  CHS(柱面/磁头/扇区)
 
  C:一个柱面号即磁道号,通常由外向内依次编号,通常作为文件系统的最小单位
 
  H:一个磁头号即盘面号,一个盘面仅有一个磁头
 
  S:一个磁道可以有多个扇区,通常一个扇区512字节,一个扇区包含三个字段
 
  标识字段校验字段数据字段
 
  磁盘的存储容量=磁头数*磁道数*扇区数*512(字节)
 
  磁盘的编址方式:
 
  ①CHS方式 #柱面,#磁头,#扇区的方式绝对寻址
 
  ②LBA方式 以0柱面,0磁头,1扇区表示整个磁盘的第一个扇区,后面的扇区相对依次编号
 
  三、磁盘分区
 
  在虚拟机界面新创建创建一个磁盘
 
  可是现在远程终端并不能同步新加的磁盘
 
  需要输入
 
  echo '- - -' > /sys/class/scsi_host/host0/scan
 
  同步磁盘信息
 
  fdisk -l 查看新创建的磁盘
 
  每个磁盘的第一个扇区存放的是分区信息(MBR—Master Boot Record),包括三部分:
 
  1、boot loader(446字节) Linux下为grub
 
  2、硬盘分区表(16字节*4=64字节)
 
  3、结束位(2字节) 十六进制的55 aa
 
  hexdump命令可以查看二进制的文件,-C表示16进制输出
 
  hexdump -C -n 512 /dev/sda -v 查看分区信息有数据(16进制)
 
  hexdump -C -n 512 /dev/sdb -v 查看分区信息全为0
 
  现在来做这样一个实验(对分区表)
 
  dd if=/dev/sda of=/dev/sdb bs=1 count=512 将/dev/sda的磁盘前512字节信息复制给/dev/sdb
 
  再次执行hexdump -C -n 512 /dev/sdb -v,分区表信息和结束位信息如下:
 
  结果两张磁盘的分区信息一样,唯一不同的是/dev/sdb没有第五个分区的信息(原因是分区表只有16字节*4=64字节,只能保存四张分区表的信息,即不能保存逻辑分区的信息),效果图如下:
 
  dd if=/dev/zero of=/dev/sdb bs=1 count=512 破坏/dev/sdb的分区信息
 
  fdisk -l
 
  发现/dev/sdb的分区消失
 
  总结:MBR中的分区表就是存放着整个磁盘的分区信息,并且最多只能划分三个分区加一个扩展分区
 
  继续实验(对结束位)
 
  dd if=/dev/sda of=/dev/sdb bs=1 count=512
 
  dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510 (破坏分区信息的结束位)
 
  hexdump -C -n 512 /dev/sdb -v,结果结束位的55 aa变为了00 00
 
  fdisk -l 显示/dev/sdb没有分区
 
  dd if=/dev/sda of=/dev/sdb bs=1 count=2 skip=510 seek=510
 
  hexdump -C -n 512 /dev/sdb -v
 
  fdisk -l 显示/dev/sdb又有分区
 
  总结:结束位用来区分MBR的结束,如果没有该结束位,则系统无法识别出分区表的结束,即没有分区
 
  四、创建磁盘分区
 
  fdisk——磁盘分区
 
  -l 列出指定外围设备的分区表状况(以柱面为单位)
 
  -u 搭配-l选项,用扇区数目代替柱面数目(以扇区为单位,一个扇区512字节)
 
  子命令:
 
  a 在当前分区设定一个可启动标志
 
  b 编辑一个BSD磁盘标识
 
  c 切换为DOS兼容磁盘配额
 
  d 删除当前分区
 
  l 列出所有分区的类型
 
  m 主菜单
 
  n 创建一个新分区
 
  o 创建一个DOS分区
 
  p 输出所有分区列表和每个分区的信息
 
  q 退出,不保存
 
  s 创建一个空的Sun磁盘标识
 
  t 替换当前分区的类型
 
  u 修改分区表中的条目的显示的单位(柱面和扇区)
 
  v 检测错误,显示为分配扇区数的总和
 
  w 保存修改退出
 
  x 进入高级操作模式Linux 磁盘管理,专家级操作命令
 
  在子命令模式下Ctrl+backspace为删除键
 
  用fdisk命令完成对磁盘的分区工作之后,该磁盘仍然不具备存储功能,还需要对所需的文件系统格式化
 
  fdisk是一个比较面相底层的系统工具,因此在使用的时候最好预先对数据进行备份,以免误操作造成数据丢失
 
  gdisk命令--该命令默认没有安装,使用yum -y install gdisk安装 (和fdisk极其类似)
 
  parted 命令(实时生效,使用的时候注意)
 
  格式:parted + [选项] + 设备文件 [命令 + 参数]
 
  [选项]
 
  -l 显示所有磁盘的分区信息
 
  [命令 + 参数] (子命令模式下可以使用tab键补齐)
 
  mklabel 创建分区表结构(gpt结构不能使用fdisk -l查看)
 
  print 显示分区信息
 
  mkpart primary 创建分区(默认单位为M)
 
  rm 删除分区
 
  quit 退出子命令模式
 
  实例:
 
  parted?/dev/sdb
  mklabel?gpt?
  mkpart?primary?1?200
  mkpart?primary?200?300
  quit
  parted?-l
  五、同步分区表
 
  操作系统所在盘不会及时更新分区表信息
 
  查看内核是否同步分区表信息方法:
 
  ls 设备文件名*
 
  cat /proc/partitions
 
  lsblk 命令不会即时显示,该命令读取的是内存中的磁盘分区信息(树状结构)
 
  同步分区表信息的方法:(只是修改显示的信息,实际对硬盘没有操作)
 
  partprobe 设备文件名(centos6仅对非系统所在盘有效)
 
  partx-a /dev/sdb 更新增加的分区
 
  partx -d /dev/sdb --nr NUM1-NUM2 更新删除的分区
 
  六、文件系统
 
  存储设备或分区上的文件的方法和数据结构,一个硬盘想要存放数据,必须先创建文件系统
 
  查看当前操作系统支持的文件系统:
 
  ls /lib/modules/$(uname -r)/kernel/fs/
 
  cat /proc/filesystems
 
  创建文件系统:
 
  mkfs 创建文件系统
 
  mkfs.FS TYPE + 设备文件
 
  mkfs -t FS TYPE + 设备文件
 
  mkfs -L label + 设备文件 设定卷标
 
  mke2fs——创建ext系列文件系统
 
  -j 相当于-t ext3
 
  文件系统类型
 
  blkid 查看文件系统信息 (mount列出所有设备的格式类型)
 
  tune2fs + 分区 重新设定ext系列文件系统的参数
 
  -l 显示指定分区的超级块信息
 
  -L 修改label
 
  -U 设置UUID
 
  dumpe2fs + 分区 导出分区的文件系统详细信息(包含超级块信息)
 
  -h 效果和tune2fs -l一样
 
  超级块 :存储整个文件系统信息的一个块
 
  一个磁盘有MBR和四个分区,
 
  一个分区有boot sector和文件系统,
 
  一个文件系统有多个block group,
 
  一个block group有超级块,块位图,inode位图,inode表和数据块等
 
  dumpe2fs?/dev/sda1
  dumpe2fs?1.41.12?(17-May-2010)
  Filesystem?volume?name:???
  Last?mounted?on:??????????/boot
  Filesystem?UUID:??????????051c003c-2cef-4115-bc1c-525759174a77
  Default?mount?options:????user_xattr?acl
  Filesystem?state:?????????clean
  Errors?behavior:??????????Continue
  Filesystem?OS?type:???????Linux
  Inode?count:??????????????51200
  Block?count:??????????????204800
  Reserved?block?count:?????10240
  Free?blocks:??????????????153675
  Free?inodes:??????????????51161
  First?block:??????????????1
  Block?size:???????????????1024
  Fragment?size:????????????1024
  Reserved?GDT?blocks:??????256
  Blocks?per?group:?????????8192
  Fragments?per?group:??????8192
  Inodes?per?group:?????????2048
  Inode?blocks?per?group:???256
  Flex?block?group?size:????16
  Filesystem?created:???????Tue?Jan??9?04:48:06?2018
  Last?mount?time:??????????Tue?Feb?13?06:48:50?2018
  Last?write?time:??????????Tue?Feb?13?06:48:50?2018
  First?inode:??????????????11
  Inode?size:??????????128
  Group?0:?(Blocks?1-8192)?[ITABLE_ZEROED]
  ??Checksum?0x4512,?unused?inodes?2008
  ??Primary?superblock?at?1,?Group?descriptors?at?2-2
  ??Reserved?GDT?blocks?at?3-258
  ??Block?bitmap?at?259?(+258),?Inode?bitmap?at?275?(+274)
  ??Inode?table?at?291-546?(+290)
  ??3785?free?blocks,?2009?free?inodes,?6?directories,?2008?unused?inodes
  ??Free?blocks:?4408-8192
  ??Free?inodes:?24,?41-2048
  上为执行dumper2fs /dev/sda1 命令的部分执行结果,Group 0之前是超级块的内容,之后是每个块组的一些信息
 
  通常将超级块、块位图、inode位图成为文件的元数据,而inode表和数据块成为数据。
 
  文件系统检测和修复
 
  当对数据修改并将文件写入磁盘时,发生在非正常关机和死机,就会发生数据不一致的问题,为此需要对文件系统进行检查。
 

(编辑:我爱制作网_沈阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!