前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第十章 磁盘管理

第十章 磁盘管理

作者头像
晓天
发布2019-07-04 14:18:40
2.2K0
发布2019-07-04 14:18:40
举报
文章被收录于专栏:Linux、云计算技术交流

第十章 磁盘管理

10.1 磁盘基本概念

我们知道,日常中我们的台式机、笔记本电脑上的磁盘都会有几百G的容量,这种磁盘一般都是机械磁盘,即使用一些精密的机械部件组成的磁盘。而近几年来,越来越多的笔记本电脑中内置了固态磁盘,固态磁盘又称SSD磁盘。

SSD磁盘的是使用存储芯片提供空间,可以想象成类似于U盘一样,也是芯片式存储。SSD的特点是空间越大读写性能越好,所以SSD正在慢慢向PC机主流磁盘的应用发展。但是由于其成本、价格较高,且故障率高、寿命低等缺点,暂时不适合于应用在大型数据中心或磁盘阵列的环境中。本章我们还是以机械磁盘为主要的介绍对象。

10.1.1 磁盘结构

机械磁盘,顾名思义,是由机械组件组成的磁盘,它主要的储存空间是由盘片提供的。盘片是一个圆形的薄片,样子类似于小一号的光盘,现今使用的材质一般是铝材料的金属或石英玻璃。盘片表面会均匀的分布一次带有磁性的磁介质,可以想象成一层极细的磁性粉末,磁盘通过控制、识别磁介质的磁性不同,来区分0、1二进制数字。盘片的一侧表面称为一个盘面。盘面上的磁介质会按照一定的规则排列成一个一个的同心圆结构,每个同心圆称为一个磁道。每个磁道又被划分成多个小的弧形,称之为扇区,为了便于管理,每个扇区都会被加以编号,编号是从0开始计数的。如下图:

这里值得解释的是,每个扇区上存储的数据大小是固定的,都是512B(字节),无论是内层磁道上的扇区还是外层磁道上的扇区,无关长短如何,存储的容量都是512B。

而一块磁盘上的第一个扇区,即0号删除,被称为磁盘首扇区,英文MBR,虽然只有512B,但上面存放着本分区的分区表和引导程序相关信息。(关于引导程序的概念,会在后续章节讲解)

磁盘盘片的正面是由各个磁道组成的,那么侧看图是什么样的呢?请看下图:

如图所示,磁盘的侧面是多个盘片的罗列,其实不同的磁盘盘片数量也不尽相同,比如笔记本电脑的磁盘和移动硬盘的磁盘,可能只有一个盘片,台式机磁盘由于尺寸比较大,里面可能会有1-3个盘片不等。我们为了便于读者理解,这里以3个盘片为例讲解。其中3个盘片罗列以后,中心会有一个中轴贯穿,连接一个电机,带动3个盘片同时转动,而盘片之间由磁头读写数据,多个磁盘的一侧共连一个杠杆,也连着一个电机,控制磁头左右移动。由此,我们可以想象的到,盘片在转动的同时,磁头左右移动,就能够读写到所有盘面的任何位置的数据了。

再者,由于所有磁头是在同一条垂直线上的,所以,当一个磁盘定位到一个盘面的某个磁道时,其他所有磁头也都定位到了相应盘面的对应磁道上了。这样,我们可以想象一下,假设把上下所有磁头定位的磁道连贯起来,就会形成一个圆柱体的样子,称之为柱面。其实磁盘在进行存储时,是按柱面为存储顺序的,写满一个柱面再写入另一个柱面,这样所有磁头可以同时工作,效率较高。

了解了磁盘的机械结构,我们再来分析一下磁盘盘片的转速,一般盘片中轴所连接的点机会有不同的转速,分类来讲有如下三种:

1)低速磁盘 5400r/m(转每分钟) 常用于笔记本硬盘、移动硬盘

2)高速磁盘 7200r/m 常用于台式机硬盘

3)服务器磁盘 10000r/m 15000r/m 普通服务器常用

我们知道,有了磁盘,我们还要给它做分区,再格式化分区,才可以使用。那么分区的格式化分几种类型呢?一般也分为三种,如下:

1)快速格式化 仅清空分区数据,无修复功能,简称

快格

2)高级格式化 可以修复逻辑坏道,简称高格

3)低级格式化 可以标记物理坏道,简称低格

如上图可见,下侧点中“快速格式化”,即是快格,去掉“快速格式化”前的√,即是高格。windows和Linux系统内本身是不支持低级格式化的。

再来解释一下坏道问题。磁道上某块小区域,由于磁头的长期读写,可能会造成磁介质的排列不规范或磁性紊乱,造成无法正常读写,那么使用高格可以修复这些逻辑坏道,使其重新按照正确格式排列或磁性梳理正确。而物理坏道则是由于磁头的长时间磨损或收到磕碰、震荡等,致使磁道上某块区域磁介质丢失或失去磁性。这种物理坏道是无法修复的,只能使用特殊的工具软件,通过低格后标记出来,让磁头读写到这里时跳过坏道区间,继续向下读写。如果一块磁盘的物理坏道过多,则建议丢弃掉,因为坏道多会对磁头读写速度造成极大影响,并容易产生程序的数据丢失,致使电脑进场出现蓝屏现象。

另外,在Linux中,制作文件系统的概念即是格式化的意思。下面的章节中将频繁使用“制作文件系统”的称谓来替代“格式化”。还有分区的概念,对于已经格式化好的、可以使用的分区,我们也可以称之为文件系统。

10.1.2 磁盘分区类型

在Linux系统中,磁盘有两种使用方式:标准分区(又称基本磁盘)和LVM逻辑卷管理(又称动态磁盘)。我们将在下一章重点介绍LVM的管理,本章首先来介绍标准分区的原理。

磁盘的标准分区方式,分区时有以下三种分区类型:

1)主分区:允许装系统的分区,一块磁盘最多允许分4个主分区

2)扩展分区:不可以直接使用,即不允许存入数据;占主分区的一个名额

3)逻辑分区:必须建立在扩展分区之内,仅用于存数据,不支持安装系统,允许划分多个

可以想象,如果一块磁盘已经划分了4个主分区,但仍然有空闲空间,那么剩余的空闲空间是不允许再分分区的,因为4个主分区的名额已满。所以,一般磁盘的使用方案是:3主+1扩, 扩展的基础上创建多个逻辑分区。即创建3个主分区,磁盘剩余空间都划分给一个扩展分区,这样4个主分区的名额用满。进而再在扩展分区内划分多个逻辑分区

10.1.3 磁盘接口类型

之上,我们介绍完毕了磁盘的内部结构和分区方式,那么磁盘连接到主机时,接口是有如下几种的:

IDE,并口,已基本被淘汰

SATA,串口,PC机主流

SAS,串口,服务器主流,磁盘转速可达10kr/m、15kr/m,与SATA接口可兼容

SCSI,串口,小型机或大中型磁盘阵列使用

10.1.4存储设备分类

按照设备存储数据方式划分,有块设备和字符设备之分:

块设备,就是在空间使用时允许不依次、连续的使用空间,比如:某个分区中创建了f1、f2、f3,我们可以想象,这三个文件本来会在磁盘上依次连续的占用空间,但是当我们把f2删除后,f1和f3之间就会产生空间的间隙,所以若一个分区使用时间过长,势必会有很多类似的空闲间隙。这种使用空间时允许不依次使用,允许有空闲间隙的设备,我们称为块设备,所以磁盘就属于块设备类型。

ls -l ---显示第一个字符为 b,即表示块设备

字符设备,它要求空间使用必须连续,不允许有空闲间隙,比如磁带设备。

ls -l ---第一个字符为 c ,即表示字符设备

10.2 fdisk磁盘管理

10.2.1 分区表查看

我们可以使用命令fdisk -l 查本机磁盘的分区表信息,显示的结果如下图:

单词解释:sector 扇区 byte 字节

显示信息介绍:

第一行可见本机连接磁盘的名字和总容量

下侧显示具体分区表,其中 start、 end表示该分区的开始、结束扇区号

blocks列表示分区大小,单位KB。

ID system两列表示该分区的文件系统编号和类型,即是格式化类型,显示的是 83 linux,表示ext4文件系统

sda4的system列会显示为 extended,表示其为扩展分区,start和end占据了所有的剩余空间

sda5、sda6的start、end是在sda4范围内的,说明是逻辑分区。

通过sda4、sda5、sda6的blocks列信息,可计算出本块磁盘未做分区的空间大小。

注:在RHEL7.0之前版本,fdisk -l 显示中会有柱面(cylinder)的显示,start、end表示开始、结束柱面号。

除了fdisk –l 命令,我们还可以使用lsblk命令查看块设备的分区信息。如下图:

查看已挂载分区的使用信息,使用的是df -h 命令,其中-h参数表示按照合适的单位显示空间大小,若不加-h参数,显示时是以k作为单位,换算到M、G比较麻烦。

显示结果中有很多非分区的信息,仔细看会见到文件系统列中好多都包含tmp字符,tmp是template的缩写,即临时空间,是Linux系统使用的一些缓存、临时等空间,我们暂时不用关注,主看/dev/下的各分区信息即可。

10.2.2 fdisk分区工具使用简介

之前,我们使用fdisk -l 查看到本机有磁盘/dev/sda,已经划分了6个分区,通过blocks列又得出扩展分区sda4共大约7G容量,sda5、sda6各占用约2G,那么sda4中还剩余约3G未用,下面我们来针对这3G的空间做分区管理。命令如下:

fdisk /dev/sda ---使用fdisk工具,对磁盘进行分区管理,

回车后进入fdisk菜单界面,会要求输入操作命令,但是具体有哪些命令我们并不知道,按照括号中的提示,输入m,现示帮助,即所有可用命令的列表,如下图:

其中,常用的命令如下:

d 删除分区

n 创建新分区

t 更改文件系统类型,即格式化类型

p 查看分区表,等同于 fdisk -l 命令

w 保存新的分区表,退出

q 不保存退出

g 创建新的GPT分区表,GPT分区的功能后续再做介绍

o 创建新的dos分区表,默认是dos的

10.2.3 磁盘分区案例

依据fdisk菜单的提示信息,我们来开始手动新建分区:

fdisk /dev/sda ---进入fdisk管理菜单,后续操作如下:

输入n,创建分区=>输入开始扇区号,直接回车,即使用默认

=>输入结束扇区号: 若输入数字,表示指定结束扇区号,如 40000000

若输入+数字,表示占用的扇区数,如:+1000 即占1000个扇区

若输入+数字M/G,表示占用的空间大小,如:+800M,即占800M

在这里我们输入+800M

=>输入p,可查看到新建出的分区sda7

再次重复以上过程创建分区sda8,大小1000M

=>输入t,更改分区的文件系统类型

=>指定分区号,如:8,即指定更改sda8

=>到这里会要求输入文件系统编号,可输入l 显示所有可用文件系统号

=>在这里,我们输入86,即设置sda8的文件系统为windows的NTFS

=>输入w,保存退出

以上过程,如下图:

到此,我们可以看到已经新建出了2个分区:sda7、sda8。然后输入w即可保存分区表并退出了。

实验中,我们之所以更改sda8的文件系统为NTFS的,是为了让sda8分区可以被windows所使用。从兼容性的角度分析,windows是不能兼容Linux文件系统的,所以用Linux创建的分区,若采用ext4类型做格式化,在双系统的主机上(windows、Linux并存的主机)使用windows登录后,是无法访问Linux的分区的。如果我们在Linux中把某个分区按windows的NTFS或FAT格式化,则在windows中便可访问了。

保存退出以后,新的分区表被写入到了磁盘中,但是Linux系统中并未更新过来,用lsblk命令查看是见不到sda7、sda8的。若要刷新新的分区表到系统中,命令如下:

partprobe ---更新新的分区表给系统,或者reboot重启后也会更新

更新成功后,执行lsblk命令可见到新建的分区了。

有了分区,下一步我们需要对分区制作文件系统,即格式化。其实,刚才在fdisk菜单中,我们设置的文件系统类型,如:83 Linux、86 NTFS,都只是对分区的文件系统类型做了个标签、标记而已,在保存分区表后,并未真正做格式化,所以需要手动完成。命令如下:

mkfs -t ext4 /dev/sda7 ---给分区制作文件系统, -t 指定文件系统类型

mkfs -t vfat /dev/sda8

注:Linux中无法真正区分windows的NTFS、FAT类型,统一定位为vfat类型

我们也可以使用mkfs.ext4 /dev/sda7 mkfs.vfat /dev/sda8命令,两种命令效果相同,只是格式不同而已。

制作完文件系统的分区,按照Linux的特性,必须挂载后才可使用,所以我们还需要手动创建挂载点,如下:

cd /mnt ---Linux中习惯于在/mnt目录中存放设备的挂载点。

mkdir d1 d2 ---创建挂载点

最后挂载分区,即可使用了:

mount /dev/sda7 /mnt/d1 ---挂载分区,格式:mount 源设备 挂载点

mount /dev/sda8 /mnt/d2

lsblk df -h 都可查看到

mount ---查看本机挂载表,其中显示的type表示文件系统类型

到此新建的分区便可正常使用了,若想卸载分区,可是使用umount命令。

umount /dev/sda7 ---指定源设备卸载

umount /mnt/d2 ---指定挂载点卸载,注:指定源设备或挂载点任一个都可卸

注:卸载后,挂载点内的原有文件,都跟分区走了,挂载点恢复成空目录状态。

下面再来看一下下图中的操作:

图中,卸载时报设备正忙,卸载失败,仔细看,会发现问题是输入卸载命令时,当前路径已经在挂载点中了,所以才会失败。因此卸载前一定要先退出挂载点目录。

另外,卸载后,再次挂载时可以在命令后增加–o ro参数,如下:

mount /dev/sda7 /mnt/d1 -o ro

参数解释:-o 指定挂载权限,ro表示挂载后只读

如此,挂载后的分区只允许读取,不允许写入了。用mount命令查看,可见到该分区信息的()中显示为ro,即只读状态挂载

10.3 实现重启自动挂载

与环境变量的配置类似,我们使用命令做的分区挂载,当系统重启后,就是失效了,若想系统重启后能够自动挂载,需要编辑文件系统的配置文件,如下:

vi /etc/fstab ---编辑文件系统配置文件

格式:源设备 挂载点 文件系统类型 挂载权限 是否自动备份 是否自动扫描

/dev/sda7 /mnt/d1 ext4 rw,user 1 2

/dev/sda8 /mnt/d2 vfat defaults 0 2

解释:rw,user 表示设置挂载时的权限,user表示允许普通用户访问,一般都写defaults表示使用默认权限。若写上noauto则表示不自动挂载,一般光驱设备会写noauto。

第五列的数字,表示该分区是否支持自动备份,备份关机时未能及时保存的数据,会备到挂载点下的lost+found目录中,针对于windows的文件系统,即vfat格式的,是不支持自动备份的。

第六列的数字,表示开机后是否自动扫描,0不扫描,1自动扫描,2手动扫描。扫描即是检查有无逻辑坏道并修复。手动扫描的命令将在下一节介绍

注:若/etc/fstab书写有误,则开机自动进入单用户模式(如下图),即1级别,直接输入root的密码登录后,改回/etc/fstab中的正确设置,重启即可。

如果一台Linux主机,运行时间较长,很可能有些/etc/fstab中设定的自动挂载的分区,在日常使用中被人无意或有意的卸载了,我们又不想重启系统再自动挂载,可以使用如下命令完成挂载:

mount -a ---命令挂载/etc/fstab文件中指定所有分区。

即/etc/fstab中指定的分区,已处于挂载状态的则不再挂载,处于卸载状态的则会立即挂载。

10.4 UUID的使用

我们在编辑/etc/fstab时,会发祥里面有很多原有内容,好多都是以UUID=…开头的行,这些都是安装系统时创建的分区,制定为开机自动挂载,那么UUID是什么?作用是什么呢?

UUID其实是设备在系统中的唯一编号,使用下列命令可查看设备的UUID

blkid ---查看块设备id,即所有磁盘设备的UUID

blkid /dev/sda7 ---只查看指定分区的UUID

注:可以把UUID抄写到/etc/fstab中,模仿原有分区挂载的格式,设置自动挂载。

10.5 分区卷标

卷标其实是分区的一个标签或别名,可用于标记该分区中存放数据的种类。如:假设sda7中我们将放置常用的软件安装包,则为了便于长期的管理,可使用如下命令:

e2label /dev/sda7 "SoftPackage" ---给分区设置卷标

mount LABEL= SoftPackage /mnt/d1 ---使用卷标挂载,注意:LABEL大写

vi/etc/fstab ---使用卷标实现自动挂载

写入:LABEL= SoftPackage /mnt/d1 ext4 defaults 1 2

保存退出

e2label /dev/sda7 ---查看分区卷标

e2label /dev/sda7 "" ---撤销卷标

10.6 磁盘热连接

在实际的生产环境中,系统上运行着很多应用和服务,系统是不允许随意重启的。而我们知道,给系统增加了新磁盘后,需要重启才可被系统所识别、加载进去。那么如果想要不重启让新加磁盘被系统使用该如何操作呢?带着这个问题我们继续往下学习。

10.6.1 总线的概念

首先,我们来介绍一下计算机主板总线的概念。我们知道,一台计算机的基本工作原理是:所有程序都交由CPU执行,而CPU只从内存中提取数据再运行,运行结果也只返回给内存,再转给相应设备。所以,计算机的所有设备都是先把数据交给内存,再转给cpu处理。那么,内存和设备间是如何做数据交互的呢?答案是通过总线来实现。

从计算机组成的角度看,cpu、内存、声卡、显卡、磁盘等计算机组件都是独立的个体,这些组件都是统一插到主板上才组成一台计算机的,而主板上就会为这些组件设备间传输数据提供电子线路的支持,这些电子线路我们称为主板总线。

主板为了能够更好的为内存和其他设备提供传输支持,把所有组件设备按类型分配不同总线负责传输,如:USB总线负责所有USB类设备与内存间的数据传输;pci总线负责IO设备与内存间的数据传输,如显卡、声卡、网卡等;scsi总线负责存储类设备与内存间的数据传输,如:磁盘、光驱(注:某些笔记本电脑会把光驱连接到usb总线上)。所以,usb总线、pci总线、scsi总线是每台计算机主板上必备的三大总线。

其次,每根总线上都会有多个通道(可认为是接口)连接各个组件设备,为了提高效率,主板会给几个临近的通道分配一个芯片做管理,因此,一根总线上会有多个芯片管理多组通道,每个芯片都加以编号,从0开始计数。如:一块主板上有四个SATA磁盘接口,前两个由一个scsi0芯片管理,后两个由scsi1芯片管理。

再者,一个接口上一般会只有一个设备插槽,但有时也会有多个插槽的,类似于我们日常中购买的usb hub,它一端连接电脑的一个usb口上,另一端可以有多个usb插槽,可以同时连接多个usb设备。针对这种拥有多个插槽的接口,称为通道(channel)。

如图:scsi总线上有两个芯片,可视为scsi0,scsi1,每个总线上有两个通道,channel0、channel1,每个通道上又有两个插槽,可命令为ID0、ID1号槽。

好了,有了以上的概念介绍,我们就可以查看系统中存储设备的连接信息了。

cat /proc/scsi/scsi ---查看当前系统中存储设备的连接信息

可见磁盘、光驱所连接的总线信息,如:hostscsi0 channel 00 id 00 lun 00 等。

其中我们看到的scsi0 channel00 id00即对应总线芯片、通道、插槽号。TYPE显示为 Direct-Access的表示为磁盘设备,TYPE显示为CD-ROM表示为光驱。

注:/proc目录是Linux系统中较为特殊的目录,其中存放了当前系统的所有硬件信息、连接信息、参数信息等。/proc中数据是在每次开机时根据当时的硬件连接状况实时更新的。具体原理会在后续章节中介绍。

上图中,我们还可看到信息中有lun 00 项。关于lun的概念其实是存储领域中常用的理论,在这里我们可以理解lun是指多个磁盘组成的一个磁盘组,同一lun中的磁盘可以进行协同工作,如创建动态分区,分区空间跨越多块磁盘,这多块磁盘必须在同一lun中(关于动态分区,即LVM管理,将在下一章中讲解)。一般系统中的所有磁盘都放在同一个lun中。

10.6.2 热连接配置

有了以上的知识准备,我们可以来实际操作下。首先,先在虚拟机的配置中添加一块新磁盘,大小随意,如:10G。(右键虚拟机标签=>设置=>添加=>磁盘=>…)

磁盘连接好后,进入系统,输入以下命令:

echo "scsi add-single-device 0 00 0100" >> /proc/scsi/scsi

---增加磁盘连接信息,模拟原有磁盘的连接信息,仅ID号+1即可

--- 号码顺序:芯片号 channel号 id号 lun号

fdisk -l ---可见到新的磁盘,如:sdb, lsblk也可见到

fdisk /dev/sdb ---给新磁盘做分区,新磁盘新建分区时会有分区类型的选择:p 主分区 e 扩展分区,如下图:

其余操作就与之前讲过的磁盘管理一样了。

其实,在实际的生产环境中,很多系统是运行在云平台上的,即系统都是以类似于虚拟机形式存在(如ESXi的虚拟机、OpenStack的计算实例),并且系统上运行着应用或服务,在需要增加存储时,都是在虚拟的云平台管理工具中,给虚拟机分配新的磁盘,在系统中以如上的方式热加载到系统中的,所以本节操作较为使用,读者可多加练习。

10.7 usb存储设备的连接

众所周知,U盘、移动硬盘等usb设备是直接可以热插拔的,那么当Linux中连接到U盘后该如何使用呢?

其实很简单,因为U盘属于热插拔设备,当插入U盘后,Linux系统会自动识别并安装驱动,我们只需要等驱动安装完毕后,用fdisk –l 或lsblk即可查看得到,记录下其设备名,如:sdc 或 sdd等。因为U盘已经是格式化好的设备了,我们不需要再次格式化,直接创建挂载点,挂载使用就好了。

mkdir /mnt/uDisk ---创建挂载点

mount /dev/sdc /mnt/uDisk ---挂载使用

同样,如果是连接的移动硬盘,可以已经建立好分区了,fdisk–l后可见到移动硬盘中的各个分区,也是创建挂载点后挂载使用即可。

10.8 block存储块

下面,我们来介绍一下文件系统中对于文件的存储的原理。针对一个分区,当制作文件系统,即格式化时,会按照一个固定的大小,把分区空间划分成n多个存储块,称为block。分区中存入文件时,根据文件的大小,给其分配足够多的block即可,若block中有空间浪费,也不再用。这样磁头在分区内寻址时,即可以block的大小,快速后移,找到目标文件所在位置,所以,以block的形式存储文件,是为了加快分区内文件的寻址时间。

可以总结得到,block是一个分区给文件分配的最小空间单位,即一个文件在分区上占据的最小空间。举例来看,假设一个分区格式化时设定的block大小是4KB(4096B),则若有一个50B的文件,在分区内占据1个block的空间,block内剩余的4000多B是浪费掉的。若有一个500B的文件,同样占据1个block,但是若有一个5000B的文件,则会占据2个block空间。

Linux中,默认的block的大小为4KB,即制作文件系统时,若不做指定,则默认按4KB创建block。

之前我们讲过的命令中,ls -l 可见到文件的大小,是指文件的实际大小,但是文件在文件系统内占据的真实大小却是用du命令查看的,案例如下

du f1 ---查看文件在分区内占据的真正大小,显示单位:KB

du -s /var ---仅查看指定目录占分区空间的大小

关于一个文件系统(即分区)的block信息,我们可以用tune2fs命令查看:

tune2fs -l /dev/sda5 ---查看分区的block信息

一个文件系统的block大小,只有在制作文件系统时才可以设定,文件系统制作完毕后不可修改。制作文件系统时使用-b参数设置block大小,案例如下:

mkfs -t ext4 -b 2K /dev/sda7

注:-b指定block大小时,最大值是4KB,若设置大于4KB则会询问是否强制执行,

但强制执行后,分区将不可被挂载使用

10.9 磁盘扫描

之前章节中,我们介绍了/etc/fstab文件中可设置开机自动挂载的文件系统,其中最后一列的数字是表示是否开机自动扫描的,设置为2,则表示人为手动扫描。扫描的命令是fsck,案例如下:

fsck -t ext4 /dev/sda7 ---文件系统扫描,前提:未挂载的分区

注:或者使用fsck.ext4 /dev/sda7 也可以

另外,也可是设置系统自动的周期性扫描,如下:

tune2fs -c 5 /dev/sda7

--- -c指定扫描的挂载频率,即该分区每备挂载几次,自动扫描一次

tune2fs -i 5d /dev/sda7

--- -i指定扫描的时间频率,即每隔多少时间自动扫描一次

tune2 -c -1 /dev/sda7 ---设定为负一,表示取消

tune2 -i 0 /dev/sda7 ---设定间隔为零,表示取消

10.10文件系统中block的使用

10.10.1 inode节点

一个分区被制作文件系统后,所有的block块会被划分成两区域:inode区、数据IO区。

inode区:每一个block对应一个文件,存放该文件的属性信息,如:文件名、大小、权限、所属、数据区地址指针等。该block被称为文件的inode节点,简称i节点。可以认为,inode区中有多少个block就代表该分区能够存放多少个文件,即有多少个inode节点.

数据IO区:由inode节点中的数据区地址指针指向该文件在数据区中占据的地址编号,存放文件中的数据。如下图:

上节讲过的tune2fs -l 也可查看到分区的inode节点信息。

针对与文件我们使用stat命令查看其inode节点内的信息,如下:

stat f1 ---查看文件的inode信息

对于分区、文件的inode信息,还有如下命令可用:

df -h ---查看各分区数据IO区的使用率

df -i ---查看各分区inode区的使用,显示的单位是:个,即总共多少个inode,用了多少个,剩余多少个

ls -i ---查看文件的inode编号

再者,inode区中的第一个block,即0号inode节点不针对文件,专用于记录本分区的属性信息,如:分区大小、已用、未用、分区地址范围等。该inode被称为 超级块,所以超级块节点最为重要,如果超级块故障了,则整个分区将不可使用。为了超级块的数据安全,inode区中第31个inode作为超级块的备份,称为次超级块。

10.10.2 分区空间存满的原因分析

如果向一个分区中存入文件时,报分区已存满,则可能是由如下两种情况造成的:

情况一:

分区中存放较大的文件,把数据IO区占满,但是inode区仍有空闲的inode节点。可以接受

情况二:

分区中存放较小的文件,文件个数特别多,数据IO区仍有空闲,但inode节点被占满。不可接受

总结:在对分区制作文件系统时,需要提前思考该分区将要存放什么类型的数据,以便制定更合理的block方案。

10.11 find命令总结

Linux学习到现在,系统基本的文件、用户、权限、磁盘等各方面的管理我们已经学习完毕,而find命令,我们之前介绍了很少的一些功能,下面就来结合之前所学,把常用的参数详细介绍一下:

find /-name f1 ---按文件名找文件

find /-user zhang ---查找属主是zhang的文件

find / -groupzu11 ---按属组找文件

find / -perm 644 ---按准确权限找文件

find /-perm -111 --- -111表示ugo三项中都包括x权限的文件

find /-perm +111 --- +111表示ugo三项中至少有一项包括x权限的文件

find /-type f ---按文件类型找 f文件 d目录 l软链接 b块设备 c字符设备

find / -inum 166633 ---按inode编号找

find / -size +100M ---按大小找

find /mnt/-perm -111 -type f -exec {} \; ---查找到可执行文件后立即执行

参数解释:-exec 查找到后执行操作

{}是占位符,即把找到的结果放到{}处, \; 是结束符,必须加

find /mnt/-perm -111 -type f -exec chmod a-x {}\;

---查找到文件后,去除x权限

注:因为之前已经介绍过find命令的格式,所以以上find命令及其参数,直接以

案例形式为大家展示。具体效果大家可自行验证。

10.12 GPT分区

我们之前讲的分区方案,无论是原系统磁盘上新建分区还是新家磁盘全新的制作分区,默认使用的都是dos的分区表方案。dos分区表也是Linux、windows传统的分区表方案,适合于MBR引导的建立与启动。但是随着现今磁盘容量越来越大,对启动、读写、分区大小的要求越来越高,而且前数年就很多主板已经就出现了UEFI启动方式(windows2008开始支持UEFI启动),它就主要支持GTP分区格式,大体功能如下:

1、定义

GPT:Globally Unique Identifier Partition Table Format,全局唯一标示磁盘分区表格式。

2、功能

当前数据存储越来越大,为了能够支撑更大的分区,更大的独立文件。越来越多的技术开始支持GPT了。GPT还有另一个名字叫做GUID分区表格式,我们在许多磁盘管理软件中能够看到这个名字。而GPT也是UEFI所使用的磁盘分区格式。

GPT分区的一大优势就是针对不同的数据建立不同的分区,同时为不同的分区创建不同的权限。就如其名字一样,GPT能够保证磁盘分区的GUID唯一性,所以GPT不允许将整个硬盘进行复制,从而保证了磁盘内数据的安全性。相比与我们目前通常使用的MBR分区,GPT本身就有着得天独厚的优势。

fdisk /dev/sdb ---磁盘管理菜单中的g键即是创建GTP分区表的项

3、GPT特点

1). 支持128个分区

2). 支持大于2T的分区

3). 最大支持18EB

4). 操作灵活、简单

5). 安全性高

小结:由于GPT分区现今使用尚不频繁,尤其是在Linux服务器领域,主要还是使用dos分区方案,所以在此暂不做过多介绍,读者还是了解其功能即可。学习重点还是放在dos分区的管理上。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档