Linux入门教程:P13->磁盘管理类

本系列文章为尚硅谷武晟然老师的Linux入门教程学习笔记,前面的系列文章链接如下
Linux入门教程:P3->Linux文件系统
Linux入门教程:P4->Vim编辑器
Linux入门教程:P5->网络配置
Linux入门教程:P6->系统管理
Linux入门教程:P7->Shell介绍
Linux入门教程:P8->文件目录类
Linux入门教程:P9->时间日期类
Linux入门教程:P10->用户权限类
Linux入门教程:P11->文件查找类
Linux入门教程:P12->压缩解压类

文章目录

  • 一、查看目录占用空间大小
  • 二、查看磁盘使用情况
  • 三、查看设备挂载情况
  • 四、挂载和卸载
  • 五、磁盘分区


一、查看目录占用空间大小

背景

①展示目录详细信息
前面我们讲过,使用ls -l或者ll命令可以详细地展示目录的信息。但是如果它的子目录里边又有嵌套的子目录,还有很多层级,这个时候我们就不方便直接看到了。对于这种显示,Linux里边有另外的一个小工具,tree。它以一个标准的树状目录把想要列举出的目录下面的所有子目录层级全部列出来。默认的Centos7里边没有这个工具,可以通过yum install tree安装。安装完成后,查看当前目录的结构,如下所示。里面由于有汉字,所以这些数字是对应的Unicode。
在这里插入图片描述
②展示磁盘使用情况
不过我们还有另外一个需求,就是在实际的操作过程当中,我们不光是想要知道当前的目录结构,随着使用的时间越来越长,文件目录越来越多,这个层级结构会越来越复杂,所占用的硬盘空间也会越来越大。因此,我们随时都要关心当前的硬盘占用情况。虽然ls -lh可以明显的看出当前目录下边每一个文件到底有多大,但是假如我们使用ls -lg /查看根目录的文件大小,可以发现大小仅28K。
在这里插入图片描述
这是因为ls -lh只是简单地把这里所有列举出来的文件和目录的大小做了叠加,而这里列举大小的时候并不是嵌套地把每一个目录的总大小都放在一起算。比如这里的root,我们前面看过root里边有很多几十M的东西,而在这里只有4K,他其实算的就只有当前这个目录。
所以我们更加希望的是,有单独的一个命令可以直接统计出当前目录里边所有内容,包括他下面的子文件、子文件夹占用硬盘空间大小。

du

du: disk usage 磁盘占用情况
基本语法: du 目录/文件 (功能描述:显示目录下每个子目录的磁盘使用情况)
如果直接使用du,则会把当前目录下所有占据空间大小的东西都列举出来。这样看着会很乱,我们其实只希望用一个比较简单的方式看一下当前目录到底有多大,可以直接看最后一行,这就是当前目录的大小。当然,du有很多可选的一些选项,能让输出更加的友好一些。
在这里插入图片描述
选项说明:
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-a 不仅查看子目录大小,还要包括文件
-c 显示所有的文件和子目录大小后,显示总和
-s 只显示总和
--max-depth=n 指定统计子目录的深度为第 n 层
示例: 使用du -ah简化显示。
在这里插入图片描述
使用du -sh展示当前目录大小总和
在这里插入图片描述
使用du --max-depth=1 -ah展示当前目录大小总和,但是只显示第一层深度。
在这里插入图片描述


二、查看磁盘使用情况

背景

我们现在可以使用du -sh /查看根目录的大小,可以看到大小为11G。
在这里插入图片描述
但是这不是我们现在硬盘被占用的总共的大小,看起来是差不多,但是跟真正磁盘的占用还是不太一样。之前安装系统时做了磁盘分区的操作,划分了一个引导分区、一个交换分区和根分区。平常我们使用的所有的文件存放的地方是这个根分区。因为Linux文件系统是一个虚拟目录,我们并没有办法从目录结构里边看到到底哪块磁盘占用了多少空间。这个时候我们就不能用du命令了,需要用df

df

df: disk free 空余磁盘
基本语法: df 选项 (功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)
示例: 使用df -h查看磁盘的使用情况,如下所示。
在这里插入图片描述
可以看到:
①我们之前为根分区分配了55G内存,对应的设备就是/dev/sda3
②我们之前为boot分区分配了1G内存,对应的设备就是/dev/sda1
③剩下的其实不完全都是磁盘占用的信息,因为我们可以看到它们的文件系统不是在dev目录下边管理的,这个文件系统叫tmpfs或者dvtmpfs,它表示的是一个临时的文件系统。
基于内存的文件系统
它是Linux里边比较特殊的一种文件系统类型。所以这里边我们不光是对于硬盘有一个展示,内存相应的那些设备其实也是有一个展示。
问: 什么样的设备对应的是内存给我们设置的这个临时文件系统?
答: 真正的内存和swap分区。swap分区主要是跟内存进行页面的置换来进行交换,可以当做虚拟内存,所以它们俩的文件系统是一致的,就都使用的是tmpfs这个temporary file system。
这里我们可以看得非常清楚:
①有一个文件系统tmpfs,挂载点是/dev/shm。shm就是shared memory,即就是共享内存。也就是说这一块内存空间是所有系统进程都去共享的,这些进程都能访问到这个目录。这块内存大小默认是系统内存的一半,2G。
②有一个文件系统tmpfs,挂载点是/run。这都是与运行时有关的东西,所以我们可以想到内存和虚拟内存swap分区都是跟系统或者运行时相关的东西。
③有一个文件系统devtmpfs,它表示linux内核一开始启动的时候会创建文件系统,然后会创建一个/dev目录,这就是当前文件系统的挂载点,它主要就是用来管理我们当前所有设备。所以这4个2G加起来就是8G,我们的swap当时分配了4G,内存本身也是4G,所以加起来8G。

free

示例:使用free -h查看内存的使用情况。
在这里插入图片描述
我们可以看到当前的物理内存以及虚拟内存(swap分区)总共有多少空间、使用了多少空间、空余多少空间、正在共享的内存空间。


三、查看设备挂载情况

lsblk

功能描述: 查看设备挂载情况。
前面两个命令没有详细地看到真正的磁盘信息,而lsbkc就可以看到。lsblk就是list block的缩写,列出当前所有的块设备(硬盘光盘之类的存储设备)的挂载情况。
示例:
使用lsblk查看磁盘的挂载情况。
在这里插入图片描述
可以看出:
①当前有一个存储设备sda,它的类型是disk-硬盘。
②这个硬盘又分成了3个分区
③后面的mountpoint就是对应的挂载点。
④第一个引导分区挂载到了boot下面,第二个交换分区挂载到了swap下面,最后一个分区挂载到了根目录下面。这些分区的大小也和我们最开始分配的大小相同。
cdrom
除了sda这块硬盘之外,我们看到下面还有一个sr0,它的type是rom。我们当时做系统安装的时候用到了光盘,我们使用光驱把ISO镜像文件加载进去,从光驱启动系统。现在尽管没有用那个光盘里边的信息了,没有把它直接挂载进来,但是这个光驱设备还是在的,它的type就是cdrom。
所有的设备都在/dev/目录下边,我们通过ls /dev/ | grep sr0可以找到。
在这里插入图片描述
使用ll /dev/ | grep sr0显示完整的信息。
在这里插入图片描述
可以发现sr0类型是b,即block,块存储设备。除此之外还有一个cdrom,它是一个软链接(类型是l),直接链接到了sr0。这是Linux为了方便我们去管理,直接给了sr0一个更加容易理解的名字,叫做cdrom。

硬盘名称的由来

使用lsblk查看设备挂载情况时,根据硬盘的不同会看到不同的名称,如sdahdavda。这里主要看第一个字母的含义,最常见的是sda。不管是个人电脑还是服务器,我们所使用的硬盘根据不同的接口类主要划分为以下几类:
IDE硬盘:早期的硬盘用IDE的比较多,现在就很少见了,因为它的读写性能都比较差。
SATA硬盘:串行ATA接口规范的硬盘,支持热插拔。比起传统的IDE硬盘,它快很多,而且数据存储容量大、成本更低,所以现在我们的个人电脑一般用的都是SATA硬盘。
SCSI硬盘
SCSI是一种计算机系统标准接口,所以不光是硬盘可以用这种接口,像光驱、扫描仪等各种各样的电脑外设都可以使用这种接口。所以它本身是有一个专门的控制器去进行数据操作、数据传输,它的数据传输速度会更快。服务器要求的是性能要更强,所以用SCSI硬盘会更多一点。之前我们在做虚拟机配置的时候,我们对硬盘默认选择的就是SCSI硬盘。
在这里插入图片描述

Linux对硬盘分区命名的规则

①如果有多块硬盘,如IDE硬盘,则它们的名称都是HD开头。第一块硬盘就叫做HDA,第二块就是HDB…以此类推。
②如果有多块SATA或者SCSI硬盘,则都是SD开头。同样第一块硬盘叫SDA,第二块硬盘叫SDB。
③如果你用到了虚拟化的模拟设备,则是以VD开头。
如果每一块硬盘要分区,则直接在名称后加上数字1、2、3…即可。所以我们在前面看到了sda1、sda2、sda3。

lsblk -f

lsblk -f:查看详细的设备挂载情况,显示文件系统信息。
示例: 使用lsblk -f,可以看到文件系统信息。
Linux入门教程:P13->磁盘管理类_第1张图片
可以看出:
①除了当前硬盘和分区的名称以及后面的挂载点这两个主要信息,还有文件系统的类型。
②我们当时选用的是XFS,64位高性能的日志文件系统。如果我们当时选择的是EXT4第四代扩展文件系统,那这里显示肯定就是EXT4。
③第二个分区的文件类型不同,是swap。
④每个分区后面有一串字符,这是UUID。UUID是系统为当前的每一个分区创建的唯一的一个标志符号,共40位。用这个ID就可以唯一地指定当前的分区。


四、挂载和卸载

背景

①前面我们发现除了挂载的硬盘外,下面还有一个光盘。这个光盘没有挂载点,所以无法直接访问到它,因为所有的设备必须要对应着一个目录。在/dev/下的是我们的设备文件,肯定不可能找到光盘里边的东西。要找到光盘里面的东西,就必须把光盘挂载到某个位置去。
②之前讲硬盘分区的时候就提到了挂载点,我们当前有一块硬盘,我们把它划分了三个分区:boot分区(1G)、swap分区(4G)、根分区(45G)。平常在执行操作的时候,并不会说直接把一个很大的文件放到哪个分区里面去。一般来说这里有一个文件系统,里面有许多目录,比如根目录、root目录、home目录等等。现在我们直接把这个文件放到对应的目录下边去就可以了。
③那这个目录到底又对应着我们硬盘上的哪一个存储位置呢?这种对应关系就需要用一种映射来表示,这种映射就是我们所说的挂载点。文件系统本来是一个虚拟的目录结构,我们在使用这个目录的时候并不关心它的底层存放位置在哪里,而Linux需要知道这个对应关系,只要在硬盘分区的时候一次性的把它配置好了,后面我们就不用管了。
④这个配置的过程我们就知道了第一个分区的挂载点挂载到了boot下边,所以只要你在boot这个目录下边的所有文件都会存入到一个G的第一个分区的磁盘空间里面去。第二个分区的4个G是swap分区,我们不会把文件放进去了,这是我们的交换分区,虚拟内存。最后这45个G直接挂载到了根目录下边,所以除了boot这个目录里边的内容,剩下所有的东西我们都是基于这个根目录扩展出来的分支。所以所有的剩下的文件和文件夹都是存放到第三个分区这45个G空间里面去。
⑤所以现在我们又多了一个光盘出来,尽管我们不用再去对它做分区了,那同样也应该考虑当前这个光盘里边的文件。只要我们给这个光盘设置一个挂载点挂载上去就可以通过文件系统访问到了。之前我们说过有一个叫/mnt/的目录,它本来就是让我们去挂载外部的一些存储设备,所以我们就把这个光盘挂载到/mnt/目录下边去,接下来在这个目录里边就可以访问到光盘里面的东西了。


mount/umount

准备工作:
接下来我们实际操作一下,既然要挂载一个光盘,我们首先得有这个光盘。可以使用安装Centos时那个镜像文件,我们首先对虚拟机做一些配置。选择哪个镜像文件,状态选择为已连接。
在这里插入图片描述
我们回到桌面会发现这里直接就弹出来了一个光盘的图标,这跟Windows里面其实是一样的,它默认整个系统有桌面环境,就会给我们直接做一个挂载。挂载完就可以直接点击进去看到里面的内容了。
在这里插入图片描述
但是我们并不是希望直接在桌面里面去访问光盘的文件,我们还是希望在命令行里去做访问。我们先查看一下当前镜像文件的挂载点在哪里,通过lsblk可以进行查看。
在这里插入图片描述
现在我们想要手动尝试一下挂载命令,于是先将其弹出。
在这里插入图片描述
可以看到没有挂载了。
在这里插入图片描述
mount
基本语法:mount [-t vfstype] [-o options] device dir (功能描述:挂载设备)
参数功能:如下图所示
在这里插入图片描述
我们在/mnt下新建一个cdrom文件夹,然后将准备将光盘挂载到那里去。
在这里插入图片描述
这里直接提找不到媒体,这个因为刚才我们做了弹出操作。弹出之后CD/DVD这里就又不是连接状态了。如果又选上已连接的话,因为这边我们有图形化的界面,它又会自动帮我们挂载。
在这里插入图片描述
解决方案:
①首先注销
在这里插入图片描述
②然后再去选中已连接。
在这里插入图片描述
③最后重新登陆,使用lsblk可以看到没有自动挂载了。
在这里插入图片描述
于是再次执行挂载命令mount /dev/cdrom /mnt/cdrom/(把cdrom换成sr0也可以),可以看到挂在成功。
在这里插入图片描述
再次执行lsblk也可以看到挂载成功。
在这里插入图片描述
我们进入到/mnt/cdrom/下ls可以看到光盘的文件内容了。
在这里插入图片描述
umount
基本语法:umount 设备文件名或挂载点
示例:使用umount /mnt/cdrom卸载掉sr0/cdrom。
在这里插入图片描述
我们再次访问这个/mnt/cdrom目录的话,我们会发现这个目录还存在,但是里边的东西就都没有了。
在这里插入图片描述

设置自动挂载

背景: 每次一开机进来之后我就希望它默认就能将上面那个光盘识别出来,直接就把它挂载上,就像我提前已经分好的一个区一样。
自动挂载: 需要修改/etc/fstab配置文件。
我们做自动挂载配置时要去改一个配置文件,叫做fstab(file system tab)。我们进去看看里面的内容。
在这里插入图片描述
可以看出:里边其实就是所有的设备的挂载信息
①三个分区的挂载点、UUID、文件类型。
②最后有两个0,代表的含义如下:
----第一个0表示dump选项。我们当时在安装系统的时候,有一个勾选是有一个工具叫做kdump,我们当时直接把它去掉了。kdump主要就是给整个系统定期做备份,如果出现故障的时候直接可以回滚到之前的状态,所以这个标志位就是表示是否来做备份。如果这里给1的话,那就表示每天定时去做备份操作,0表示不备份。
----第二个0表示当前文件系统检查的优先级。有一个命令叫做fsck,也就是file system check,用来检查和修复当前文件系统。开机时系统默认就会使用这个命令来做文件系统检查,检查的时候就会根据这里设置的优先级来决定检查文件系统的先后顺序。如果说这里设成1的话,优先级就是最高的,一般根目录会设成1。如果设成2的话,那就是等1的全检查完了之后然后再去检查2。我们现在设成0表示不检查,开机的时候不用fsck去做文件系统检查。
添加信息: 我们不用写UUID,直接写设备名称就可以了。然后跟上挂载点、文件类型、默认选项、两个0。
在这里插入图片描述


五、磁盘分区

背景

现在我们知道了:
①查看当前硬盘的使用情况
②查看当前块设备的挂载情况
③对一个新加入的设备进行挂载
思考: 前面挂载的光盘,如果挂载硬盘该怎么做呢?这就不止是挂载的问题了,我们首先对它进行分区操作,然后按照不同的文件系统类型进行格式化、最后设置挂载点。对于硬盘分区格式化操作,有一个专门的命令,即fdisk

fdisk -l

fdisk -l:只是查看一下当前磁盘的分区详情,看到的信息会比lsblk看到的分区信息更加详情。
示例: 查看当前磁盘的分区详情。
在这里插入图片描述
可以看出:
①磁盘名:/dev/sda
②磁盘大小:64.4GB
③具体的字节数、扇区数、逻辑扇区大小、物理扇区大小、IO大小、对应的标签类型、标志符号
④每一个分区的信息:
----设备:分区名称,这里有sda1、sda2、sda3
----Boot:表示是否是当前的启动分区(引导分区)。如果这里打了星号,说明这就是引导分区。这里很显然sda1的挂载点是boot。
----Start和End:分区开始和结束的位置。开始我们配置的时候都是从2048开始,所以当前的大小稍微有一点空余。
----Blocks:当前分区的容量大小了
----ID:当前分区类型的ID
----System:当前系统分区的类型。sda1和sda3这两个分区是系统的标准分区,它们的名称就叫Linux。而第二个交换分区就是Linux swap或者是Salaries。

fdisk

一些配置:
目前我们只有一块硬盘,需要再添加一块。
在这里插入图片描述
默认磁盘类型为SCSI、创建新虚拟磁盘、磁盘大小为20GB、默认名称。
在这里插入图片描述
然后可以看出多了一块新硬盘
在这里插入图片描述
查看:
我们输入fdisk -l可以看出仍然只有原来的sda硬盘。
在这里插入图片描述
然后输入lsblk也可以看出只有sda这个硬盘。
在这里插入图片描述
这是因为硬盘不像光盘可以热启动、热插拔,我们当前必须要重启才可以,所以我们直接reboot。现在再执行lsblk,可以看到就有sdb了。
在这里插入图片描述
执行fdisk -l可以看到多了一个sdb,它的类型也是硬盘。它下面没有做分区,而且也没有挂载点,所以接下来我们要做的事情就是对sdb进行处理。
在这里插入图片描述

硬盘分区

基本语法:fdisk 硬盘名
我们这里执行fdisk /dev/sdb,看到这里有非常明确的中文提示
在这里插入图片描述
我们输入M获取帮助
在这里插入图片描述
我们主要能够用到的命令操作有以下几个:
n:添加一个新的分区。
q:退出,不保存任何更改。
w:保存退出(把分区表的信息写入到硬盘里边,然后直接退出)。
p:打印当前的分区表的信息,和外边fdisk -l看到的信息一样,只不过我们看到的只是这个磁盘sdb它本身的信息,
我们输入n进行分区,接下来需要选择分区的类型。
Linux入门教程:P13->磁盘管理类_第2张图片
p:p指的是primary,主分区。对于Linux而言,它的一块磁盘里边最多划分4个主分区。e:如果想划分更多的分区,可以把这里边的一个主分区替换成扩展分区。换成扩展分区之后,就可以扩展出若干个逻辑分区,严格意义上来讲逻辑分区已经不算真正意义上的分区。逻辑分区最多能划分多少12,前面这4个主分区就是1 2 3 4,后边的扩展分区编号是5到16。
我们这里输入p,或者直接回车也行。接着输入分区号,我们直接输入1即可。
在这里插入图片描述
接下来都选择默认选项,起始扇区设置为2048,分区大小为20G
在这里插入图片描述
然后输入p查看。
在这里插入图片描述
接下来按w直接保存退出,开始同步磁盘
在这里插入图片描述
然后我们输入lsblk -f查看,可以发现sdb的分区信息就已经有了。但是这里没有文件系统,也没有UUID,所以说系统其实没有办法识别它。因为我们没有对它进行格式化,不知道用什么文件系统,当然也就不会分配UID了,对应的也就没有挂载点。
在这里插入图片描述

格式化

基本语法:mkfs -t 文件系统类型 设备名 (make file system)
我们输入mkfs -t xfs /dev/sdb1,结果如下。
在这里插入图片描述
输入lsblk -f,可以看到这里的类型也有了,后边的UUID也有了,现在就差最后一步做挂载了。
在这里插入图片描述

挂载

思考: 接下来我们把sdb1挂载到哪里呢?之前我们有一块硬盘叫sda,它有3个分区。第一个分区是挂载到了boot下边,第二个分区是swap,第三个分区直接挂载到根目录下边。除了boot下边的内容,其它所有的内容都存放在了sda这块硬盘的第三个分区里面,那这里面存放东西太多了。我们的/home/目录下边有各种普通用户的主目录吗,比方说atguigu。我们希望把atguigu下面的东西单独都放在一块新的硬盘上,也就是我们新添加的sdb这块新硬盘,
挂载
基本语法:mount 设备名 挂载点
我们输入mount /dev/sdb1 /home/atguigu/,可以看到把sdb1挂载到了atguigu下。
在这里插入图片描述
测试:
使用df -h查看一下当前的硬盘占用的空间,当前这块sdb磁盘里面已经写入了一些初始的配置信息,占用了33MB。
在这里插入图片描述
我们现在复制一个大的文件(xshell的安装包)到/home/atguigu下面去,可以看出sdb1的已用大小变大了。
在这里插入图片描述

卸载

我们使用umount /dev/sdb1卸载掉sdb1,之后使用df -h可以看到卸载成功,没有任何sdb的信息。
在这里插入图片描述
使用lsblk还可以识别到这个硬盘,但是他已经被卸载掉了,对应的文件访问不到了。
在这里插入图片描述
/athuigu目录也就划分到sda3分区来了,我们再去查看atguigu下的内容,可以看到没有安装包了,只有这两个配置文件了。
在这里插入图片描述

你可能感兴趣的:(Linux入门教程,linux,vim,运维,服务器,unix)