✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Java案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Linux中的磁盘管理与打包命令
文章目录
- 磁盘基础
- 1、IDE接口
- 2、SCSI接口
- inode与block
- 磁盘分区表
- 打包命令tar
- 其他打包压缩工具
磁盘基础
目前的磁盘可以分为 固态硬盘(SSD盘,新式硬盘)、机械硬盘(HDD盘,传统硬盘)、混合硬盘(HHD盘,一块基于传统机械硬盘诞生出来的新硬盘)。
SSD采用 闪存颗粒 来存储,HDD采用 磁性碟 片来存储,混合硬盘(Hybrid Hard Disk,HHD)是把磁性硬盘和闪存集成到一起的一种硬盘。
绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。
磁盘是一种采用磁介质的数据存储设备,数据存储在密封于洁净的硬盘驱动器内腔的若干个磁盘片上。这些盘片一般是在以铝为主要成分的片基表面涂上磁性介质所形成,在磁盘片的每一面上,以转动轴为轴心,以一定的磁密度为间隔的若干个同心圆就被划分成磁道(Track),每个磁道又被划分成若干个扇区(Sector),数据就按扇区存放在硬盘上(所以扇区是硬盘的基本存储单位,每个扇区的大小为 512B)。每个磁盘的第一个扇区非常重要,里面的 512 个字节记录里两个重要的信息:①主引导记录(Main Boot Record,MBR),存放开机管理程序,大小为 446B;②分区表,记录这个磁盘分区的情况,大小为64B。
在每一磁面上都相应地有一个读写磁头(Head),所以不同磁头的所有相应位置的磁道就构成了柱面(Cylinder)。传统的磁盘读写都是以柱面、磁头、扇区为寻址方式的(CHS 寻址)。
磁盘在上电后保持高速旋转(7200转/min以上,现在高达10 00转/min),位于磁头臂上的磁头悬浮在磁盘表面,可以通过步进电机在不同柱面之间移动,对不同的柱面进行读写。所以在上电期间如果硬盘受到剧烈震荡,磁盘表面就容易被划伤,磁头也容易损伤。
磁盘的物理组成是由多个圆形磁片、机械手臂、磁片读写头以及主轴马达组成的,通过马达让磁盘转动、机械手臂控制磁头在盘片上移动来读取存储在磁盘上的资料的。
磁盘根据接口的不同,目前主要分为两种类型:IDE接口和SCSI接口。
1、IDE接口
IDE接口的硬盘在一些旧的计算机里还可以看到。传输速度理论上可以达到133MBps。
2、SCSI接口
SCSI的英文全称为Small Computer System Interface(小型计算机系统接口),是同IDE(ATA)完全不同的接口,IDE接口是普通PC的准接口,而SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。
目前常用的硬盘都是SCSI接口的,传输速率可以达到320MBps。
Linux 系统内,磁盘设备也被看成是一种类型的文件。
inode与block
不管在Windows系统还是Linux中磁盘分区完毕后都要对系统进行格式化,操作系统才能够使用这个分区。格式化的原因是将磁盘初始化成该操作系统能够识别的文件属性与权限。
Linux系统对硬盘格式化后,将Linux的文件权限与文件属性相关的信息保存到inode中,将实际的数据保存到data block中,将文件系统的整体信息和inode block的数量存放到superblock中。其实 Linux 系统对磁盘的格式化就是将磁盘划分为 n个inode,m个block 和 1个superblock。
- inode:记录文件的属性、权限,一个文件占用一个inode,同时将记录文件的数据保存到对应的block中。文件与inode的关系是一一对应的,一个文件拥有一个inode。
inode包含文件的元信息,具体有如下内容:- 文件的字节数;
- 文件拥有者的User ID;
- 文件的Group ID;
- 文件的读、写、执行权限;
- 文件的时间戳:ctime,inode上一次变动的时间;mtime,文件内容上一次变动的时间;atime,文件上一次打开的时间;
- 链接数,即有多少文件名指向这个inode;
- 文件数据block的位置;
- block:存放文件的实际内容,如果文件太大,一个文件要占用多个block,也就是文件与 block 的关系是一多对应的。
- superblock:记录文件的整体信息,inode的数量、block的数量,二者的使用情况,剩余量,以及文件格式的相关信息。
inode 的多少控制着能够创建文件的多少,一旦inode被分配完了,即使有多大的剩余空间也不能再创建新的文件。
磁盘分区表
磁盘分区不可能对磁盘进行物理分割,磁盘分区是逻辑上的。磁盘的每个扇区大小为512B,其中446B用来保存MBR的信息,64B保存分区的信息。保存每组分区信息需要16B。因此,一个硬盘的分区表中最多能保存4组分区信息。
分区表中能够保存的4个分区可以分为两个类型,主分区(Primary)与扩展分区(Extended)。一个硬盘最多可以分4个主分区,即如果4个全部为主分区,那么这块硬盘也就只能有4个分区了。如果主分区小于4个那么就在分区表中保存1~3个主分区加一个扩展分区,扩展分区是可以继续划分成逻辑分区的,逻辑分区是可以格式化使用的,即扩展分区是逻辑分区的“容器”。因此可以解决一块硬盘上只能有4个分区的问题。
- 分区是对第一扇区的分区表进行划分;
- 硬盘默认分区表只能写入四组分区信息;
- 四组分区信息分为主分区与扩展分区;
- 扩展分区只能有1个,扩展分区不能被格式化使用,只能继续划分为逻辑分区;
- 能够被格式化使用的是主分区和逻辑分区;
- 一个硬盘可以有1~4个主分区,1个扩展分区,也可以没有扩展分区。逻辑分区可以若干;
- 主分区是硬盘的启动分区,它是独立的,也是硬盘的第一个分区;
- 硬盘的容量=主分区的容量+扩展分区的容量;
- 扩展分区的容量=各个逻辑分区的容量之和。
分区后的命名规则是设备名称加相应的编号。
实例1:
设备/dev/hda分为5个分区,其划分形式是被分为3个主分区和一个扩展分区,其名称分别为hda1、hda2、hda3和hda4,其中hda4为扩展分区又被划分为两个逻辑分区。逻辑分区的名称一定是从hda5开始,每增加一个分区,分区名称的数字就加1,hda6代表第二个逻辑分区。因此,/dev/had能够被使用的分区为/dev/hda1、/dev/hda2、/dev/hda3、/dev/hda5、/dev/hda6.
实例2:
有一块大容量硬盘,将其暂时分为4个分区,同时还有其他剩余容量可以作为未来规划使用,能不能将其分为4个主分区?你将建议如何划分?
- 分区表中最多只能存储4组分区数据,因此如果都划分成主分区的话,就不满足题干所说的留剩余空间以备其他用途,因此不能分为4个主分区。
- 为了满足题干中说的要有4个分区,还要有剩余空间留作他用,所以可以使用3个主分区加上1个扩展分区的分区方法。
- 还可以使用1个主分区+1个扩展分区,其中1个扩展分区暂时分为3个逻辑分区,且有剩余空间。
- 还可以使用2个主分区+1个扩展分区,其中1个扩展分区暂时分为2个逻辑分区,且有剩余空间。
打包命令tar
Linux下的压缩与打包是分开的,是使用不同命令来实现的。
Linux的打包和压缩一般是配合、组合使用的
Linux下的 tar命令就是实现了打包的功能,tar可以将一个文件夹(或者称为目录)打包成一个文件,并且还支持和gzip以及bzip2配合使用,直接将目录打包并且压缩。
tar是个相对比较复杂的命令,复杂在其参数比较多,并且经常用于和bzip2与gzip的配合使用上面。
名称:tar
使用权限:所有使用者
使用方式:tar [选项] [打包文件名] 源文件
参数 | 说明 |
---|---|
-c | 创建打包文件。 |
-x | 解包或者解压缩。 |
-t | 查看tarfil里面的文件。 |
-z | 使用gzip进行压缩或者解压缩。 |
-j | 使用bzip2进行压缩或者解压缩。 |
-v | 显示压缩或者解压缩过程。 |
-f filename | -f后面接要压缩或者解压缩的文件名。 |
-p | 使用源文件的原来属性(属性不会依据使用者而变)。 |
-P | 保留绝对路径。 |
-N | 比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中。 |
–exclude FILE | 在压缩的过程中,不要将FILE打包;除此之外的意思。 |
注意: 在参数的下达中,c/x/t仅能存在一个,不可以同时存在,因为不可能同时压缩与解压缩。
tar 命令的参数虽然很多,但常用的并不是很多,基本就是 -j、-c、-t、-v、-x 等。
其他打包压缩工具
gzip和bzip2不是Linux唯一的打包压缩工具,在Linux下还有其它的打包压缩工具,比如比较有名的并且是开源软件的7-Zip压缩解压缩软件、dd软件、cpio软件等,其大部分都支持多个系统平台,以及Windows下常用的WinRAR也有Linux版本的。
相对于Linux来说,tar和gzip以及bzip2的结合,处理的效率还是比较高的,并且压缩比也是很不错的,所以Linux平台默认都是以这三个命令作为打包压缩工具。
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。