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

linux的磁盘管 理

发布时间:2023-01-11 11:03:32 所属栏目:Linux 来源:
导读:  磁盘的结构:

  磁盘的外部结构包括电源结构、数据接口、控制电路板、固定面板。如下图所示:

  磁盘的内部结构包括磁头组件、磁头驱动机构、磁盘片、主轴组件、前端控制电路

  磁盘控制电路中
  磁盘的结构:
 
  磁盘的外部结构包括电源结构、数据接口、控制电路板、固定面板。如下图所示:
 
  磁盘的内部结构包括磁头组件、磁头驱动机构、磁盘片、主轴组件、前端控制电路
 
  磁盘控制电路中包括:主控制芯片、数据传输芯片、高速数据缓存芯片;
 
  磁盘的磁头:采用了非接触式结构,加电后悬浮在高速旋转的磁盘表面;
 
  磁盘的磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这个圆形轨迹就叫磁道。
 
  磁盘的柱面:磁盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。
 
  磁盘的扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段就被称为磁盘的扇区。
 
  磁盘容量的计算:header(磁头量)*cylinder/header(每个header负责的柱面)*sector/cylinder(每个柱面上包含的扇区数)*512bytes/sector(每个扇区上容纳的字节数)。因此磁盘的计算方式为:Header*Cylinder*Sector*512Bytes
 
  磁盘工作原理:磁盘利用特定的磁粒子的极性记录数据,读取数据时将不同极性转换成不同的电脉冲信号,再利用数据转换器将原始信号变成电脑可以使用的数据。写数据时正好相反。
 
  磁盘的主要参数:容量、转速、平均寻道时间、数据传输率
 
  磁盘中的第一扇区
 
  磁盘中的第一扇区非常重要,主要记录了两种重要信息:
 
  第一种是:主引导分区(Master Boot Record ,MBR)可以安装引导加载程序的地方,446Bytes。
 
  第二种是:分区表,记录整块分区磁盘的状态。 64bytes。还剩下2bytes,装的是magic number。
 
  磁盘分区表
 
  在分区表所在的64bytes容量中,总共分为4组记录区,魅族记录区记录了该区段的起始与结束的柱面号码,这四个分区被称为主分区或者扩展分区。
 
  既然第一个扇区所在分区表只能记录四条数据,那么我们可以利用额外的扇区来记录更多的分区信息。
 
  扩展分区的目的是使用额外的扇区记录分区信息,扩展分区本身并不拿来格式化。
 
  开机流程与主引导分区
 
  BIOS:开机主动执行的韧体,会认识第一个可开机的设备。
 
  MBR:第一个可开机设备的第一个扇区内的主引导分区块,内包含引导加载程序。
 
  引导加载程序(Boot loader):一支可读取内核文件来执行的软件。
 
  内核文件:开始操作系统的功能。
 
  开机流程:首先是硬件上电自检,待检测完毕之后,系统会自动载入BIOS。接下来BIOS会分析目前系统中包括哪几种存储介质。以硬盘为例,BIOS会依据用户的设置取得能够开机的硬盘,并且到硬盘里面去读取第一个扇区的MBR位置。MBR这个仅有446bytes的硬盘里面会放置最基本的引导加载程序,主要是将内核文件加载进来。
 
  其中boot loader是在MBR之上的一层软件,主要功能包括:1.提供菜单,2.载入内核文件,3.转交其他loader。
 
  5.linux的文件系统
 
  linux系统中的文件数据除了文件实际内容外,通常含有非常多的属性。文件系统通常会将这两部分的数据分别存放到不同的块,权限与属性放置到inode中,至于实际数据则放置到data block中。另外还有一个超级块会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量。
 
  super block:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息。
 
  inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码。
 
  block:实际记录文件的内容,若文件太大时,会占用多个block。
 
  对于data block中的限制为:
 
  1.原则上,block的大小与数量在格式化完就不能够在改变了(除非重新格式化)
 
  2.每个block内最多只能够放置一个文件的数据
 
  3.乘上,如果文件大于block的大小,则一个文件会占用多个block数量。
 
  4.乘上,如果文件小于block,则该block的剩余空间就不能够再使用了。
 
  对于inodetable(inode 表格)
 
  1.该文件的访问权限(rwx)
 
  2.该文件的所有者与组(owner/group)
 
  3.该文件的大小
 
  4.该文件创建或状态改变的时间(ctime)
 
  5.最近一次的读取时间(atime)
 
  6.最近修改的时间(mtime)
 
  7.定义文件特性的标识(flag)
 
  8,该文件真正内容的指向
 
  除此之外inode的特色:
 
  1.每个inode大小均固定为128bytes。
 
  2. 每个文件都仅会占用一个inode。
 
  3.因此能够创建的inode的数量与文件中block的数量是相对应的。
 
  4.系统读取文件时需要先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能够开始实际读取block的内容。
 
  下面来聊一下文件创建、删除、复制、剪切等操作,在linux所属的文件系统中,这些操作是如何完成的。
 
  文件的查找过程 ——举例来讲:/var/logs/messages
 
  文件系统会找到存放根目录的inode号,通过该inode号找到data block中的根目录,在根目录下存放着它目录下面的一系列的文件名,找到了一个叫var的目录名,同时也找到了该目录的inode号(暂时叫i_var),此时从inode表中去查找i_var中对应的data block的block块;然后查询该块的内容,查到一个文件叫logs的目录,同时也找到了该目录的inode号(暂时称为i_log),再次从inode表中去查询i_log对应的data block块,找到对应的该块,查询里面的内容,发现了一个叫messages的文件,同时也找到了该文件的inode号,然后根据此inode号找到对应data block块。至此找到了该文件。
 
  文件的创建过程:
 
  过程如同上述,当找到logs目录时,此时它会查找inode bitmap,查找空闲的inode。
 
  6.linux的挂载点与文件系统的简单操作
 
  将文件系统与目录树结合的操作称为挂载。挂载点一定是目录,该目录是进入该文件系统的入口。因此并不是你有任何文件系统都能使用,必须要挂载到目录树的某个目录后,才能使用该文件系统。
 
  df:列出文件系统的整体磁盘用量 -h,以人们容易阅读的方式进行显示 -i 显示inode节点数
 
  du:评估文件系统的磁盘使用量 -h:同上, -s,列出目录总量 -a:列出文件
 
  dumpe2fs 显示每个区段以及data block的信息 -h 设备文件名
 
  7.链接文件
 
  硬链接:hard link只是在某个目录下新建一条文件名连接到某个inode号码的关联记录而已。
 
  1.只能对文件创建,不能应用于目录。
 
  2.不能跨文件系统
 
  3.创建硬链接会增加文件被链接的次数。
 
  软链接:symbolic link就是在创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。
 
  1.可应用与目录。
 
  2.可以跨文件系统。
 
  3.不会增加被链接文件的链接次数。
 
  4.其大小为指定的路径所包含的字符个数。
 
  命令:ln -sv src dest
 
  8.设备文件:与系统外设及存储等相关的一些文件,通常都集中在/dev目录下。
 
  b:按块为单位,随机访问的设备; 硬盘;随机地在硬盘的不同块读写
 
  c:按字符为单位,线性设备; 键盘 ;一次性读取,不能截断。
 
  /dev目录下代表的不是
 
  主设备号(major number) 标识设备类型
 
  次设备号(minor number)标识同一类型中不同设备
 
  mknod [OPTION]... NAME TYPE [MAJOR MINOR] -m MODE
 
  9.硬件设备的设备文件名
 
  IDE,ATA:hd
 
  SATA: sdSCSI: sd USB:sd
 
  a,b,c...来区别同一种类型下的不同设备。
 
  hda: hda1:第一个主分区 had2,had3,had4,hda5:第一个逻辑分区
 
  查看当前系统中识别了几块硬盘
 
  fdisk -l [/dev/to/some_device_file]
 
  10.文件系统和VFS
 
  常见的文件系统包括:
 
  传统文件系统:ext2,iso9660..
 
  日志文件系统:ext3/ntfs...
 
  网络文件系统:nfs..
 
  linux管理文件系统是通过VFS进行管理。
 
  11.磁盘的分区、格式化、检验与挂载
 
  新增一块磁盘时,需要进行的操作包括:
 
  1.对磁盘进行分区,以新建可用的分区。
 
  2.对该分区进行格式化,以创建系统可用的文件系统。
 
  3.若想要仔细一点,则可对刚才新建好的文件系统进行检查。
 
  4.在linux系统上,需要创建挂载点(也就是目录),并将它挂载上来。
 
  12.常用命令
 
  1.磁盘分区
 
  fdisk 【-l】 设备名称 :查阅系统内的所有分区有哪些
 
  partprobe:强制让内核重新找一次分区表 cat /proc/partitions
 
  因为磁盘无法卸载,所以内核无法重新取得分区表信息,因此此时系统会要求我们重新启动(reboot)以更新内核的分区表信息才行。
 
  2.磁盘管理
 
  文件系统管理
 
  mkfs : make file system
 
  -t FSTYPE
 
  mkfs -t ext2 = mkfs.ext2
 
  mkfs -t ext3 = mkfs.ext3
 
  专门管理ext系列文件:
 
  mke2fs
 
  -j:创建ext3类型文件系统
 
  -b BLOCK_SIZE:指定块大小,默认为4096;可以取值为1024,2048,4096;
 
  -L LABEL 执行卷标;
 
  -m #:指定给预留给超级用户的块数百分比
 
  -i # :用于指定为多少字节的空间创建一个inode,默认为8192;这里给出的数值应该为块大小的2^n倍;
 
  -N:指定inode数
 
  -F:强制创建文件系统
 
  -E:用户指定额外文件系统属性
 
  blkid:查询或查看磁盘设备的相关属性
 
  UUID TYPE LABEL
 
  e2label:用于查看或定义卷标
 
  e2label 设备文件 卷标:设定卷标
 
  tune2fs:调整文件系统的相关属性
 
  -j: 不损害原有数据,将ext2升级为ext3;
 
  -L LABEL: 设定或修改卷标;
 
  -m #: 调整预留百分比;
 
  -r #: 指定预留块数;
 
  -o: 设定默认挂载选项;
 
  acl
 
  -c #:指定挂载次数达到#次之后进行自检,0或-1表关闭此功能;
 
  -i #: 每挂载使用多少天后进行自检;0或-1表示关闭此功能;
 
  -l: 显示超级块中的信息;
 
  dumpe2fs: 显示文件属性信息
 
  -h: 只显示超级块中的信息
 
  fsck: 检查并修复Linux文件系统
 
  -t FSTYPE: 指定文件系统类型
 
  -a: 自动修复
 
  e2fsck: 专用于修复ext2/ext3文件系统
 
  -f: 强制检查;
 
  -p: 自动修复;
 
  挂载:将新的文件系统关联至当前根文件系统
 
  卸载:将某文件系统与当前根文件系统的关联关系予以移除
 
  mount 设备 挂载点
 
  设备: 设备文件:/dev/sda5 卷标:LABEL=“” UUID :UUID=""
 
  挂载点:目录
 
  要求:1.此目录没有被其他进程使用
 
  2.目录得事先存在
 
  3.目录中的原有的文件将会暂时隐藏
 
  mount:显示当前系统已经挂载的设备及挂载点
 
  mount [options] [-o options] DEVICE MOUNT_POINT
 
  -a 表示挂载/etc/fstab文件中定义的所有文件系统
 
  -n 默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab中,使用-n选项意味着挂载设备时,不把信息写入此文件。
 
  -t FSTYPE:指定正在挂载设备上的文件的类型;不使用此选项时,mount会调用blkid命令获取对应文件系统的类型。
 
  -r:只读挂载,挂载光盘时使用此选项
 
  -w:读写挂载
 
  -o:指定额外的挂载选项,也即指定文件系统启用的属性。
 
  remount:重新挂载当前文件系统
 
  ro:挂载为只读
 
  rw:读写挂载
 
  挂载完成后Linux 磁盘管理,通过挂载点访问对应文件系统上的文件。
 
  umount:卸载某文件系统
 
  umount 设备 umount 挂载点
 
  注意事项:挂载的设备没有进程使用
 
  1、创建一个2G的分区,文件系统为ext2,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的8%;挂载至/backup目录,要求使用卷标进行挂载,且在挂载时启动此文件系统上的acl功能;
 
  1.创建分区:fdisk /dev/sda8
 
  2. 分区格式化:mke2fs -L DATA -b 1024 -m 8 /dev/sda8
 
  3.挂载: mount-o acl LABEL=DATA /backup
 
  2. 将此文件系统的超级块中的信息中包含了block和inode的行保存至/tmp/partition.txt中;
 
  tune2fs -l /dev/sda1 | egrep 'inode|block'
 
  dumpe2fs -h /dev/sda1 | grep -E 'inode|block'
 
  ?3、复制/etc目录中的所有文件至此文件系统;而后调整此文件系统类型为ext3,要求不能损坏已经复制而来;
 
  cp -R /etc/* /backup
 
  tune2fs -j /dev/sda8
 
  4、调整其预留百分比为3%;
 
  # tune2fs -m 3 -L DATA /dev/sda8
 
  5、以重新挂载的方式挂载此文件系统为不更新访问时间戳,并验正其效果;
 
  # stat /backup/inittab
 
  # cat /backup/inittab
 
  # stat
 
  # mount -o remount,noatime /backup
 
  # cat
 
  # stat
 
  6. 对此文件系统强行做一次检测;
 
  e2fsck -f /dev/sda8
 
  7、删除复制而来的所有文件,并将此文件系统重新挂载为同步(sync);而后再次复制/etc目录中的所有文件至此挂载点,体验其性能变化;
 
  rm -rf /backup/*
 
  mount -o remount,sync /backup
 
  cp -R /etc/* /backup
 
  13.开机挂载/etc/fstable和/etc/mtab
 
  1.规则:
 
  1.根目录必须挂载,且一定要先于其他挂载点被挂载出来。
 
  2.其他挂载点必须为已新建的目录,可任意指定,弹药遵从系统目录架构原则。
 
  3. 所有挂载点在同一时间之内,只能挂载一次。
 
  4.所有分区在同一时间之内,只能挂载一次。
 
  2.挂载光盘文件
 
  mount -o loop mount设备 mount point
 
  14.内存交换空间swap
 
  1. mkswap /dev/sda8 -L LABEL
 
  swapon /dev/sda8
 
  swapoff /dev/sda8
 
  2.fuser: 验正进程正在使用的文件或套接字文件
 
  -v: 查看某文件上正在运行的进程
 
  -k:
 
  -m
 
  fuser -km MOUNT_POINT:终止正在访问此挂载点的所有进程
 

(编辑:拼字网 - 核心网)

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