12 Linux实操篇-Linux磁盘分区、挂载

12 Linux实操篇-Linux磁盘分区、挂载

  1. 《鸟哥的Linux私房菜 基础学习篇 第四版》1
  2. 《鸟哥的Linux私房菜 服务器架设篇 第三版》2
  3. 《韩顺平_2021图解Linux全面升级》3

12.1 Linux分区

12.1.1 原理介绍

  为了将实际的物理硬盘分区空间和Linux系统中的目录联系起来,Linux系统采用了一种叫“挂载”的处理方法。第四章介绍到,整个Linux目录就像一个向上生长的大树,根目录是“起点”,下级目录就是开枝散叶的枝杈,这其中任何一个目录都可以“挂载”新的硬盘空间。所谓 “挂载”就是将一个硬盘分区和一个目录联系起来,于是在系统上进入某个目录就相当于访问到该磁盘分区。对于Linux来说,无论有几个分区、分给哪个目录使用,它归根结底就只有一个根目录,是一个独立且唯一的文件结构。Linux中每个分区都是用来组成整个文件系统的一部分。

硬盘1
Linux系统
挂载mount
挂载mount
挂载mount
分区1
分区2
分区3
其他分区...
/boot
/root
/home
其他目录...
根目录/
swap交换分区
图12-1 硬盘分区挂载到Linux目录下的示意图

  如上图所示,给出了Linux“挂载”的示意图:现在存在一块物理硬盘且分为3个分区,这3个分区就分别挂载到了相应的Linux目录下,以保证系统的正常工作。这种“挂载”关系非常灵活,可以任意的“挂载”和“卸载”;而不像Windows中“目录”和“磁盘空间”牢牢绑定在一起,不能在Windows自带的“磁盘管理”中任意的更改映射关系。

那如何查看系统挂载的情况呢?——指令lsblk(12.1.3节还会介绍)

[root@CentOS76 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   17G  0 part /
sr0     11:0    1 1024M  0 rom  

如上所示,sda是一块20G的硬盘,包含3个分区sda1sda2sda3。其中,1G的sda1挂载到/boot目录下,2G的sda2挂载到交换分区swap,17G的sda3挂载到根目录/下,sr0是光驱,简单了解一下即可。这个映射关系正如上图12-1所示,当然若后期空间不足,还可以将一块新的硬盘进行分区再挂载到Linux目录下。

12.1.2 硬盘说明

Linux硬盘主要分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘:

SCSI硬盘:驱动器标识符为“sdx~”。

  • “sd”:表示分区所在设备的类型,“sd”是SCSI硬盘。
  • “x”:表示盘号(a,b,c,d,…)。a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘。
  • “~”:表示分区。数字1到4表示主分区或扩展分区,从5开始就是逻辑分区。

IDE硬盘:驱动器标识符为“hdx~”。

  • “hd”:表示是IDE硬盘。
  • 其他内容同上。

举例

  • sda3表示为第一个SCSI硬盘上的第三个主分区或扩展分区。
  • sdb2表示为第二个SCSI硬盘上的第二个主分区或扩展分区。

  Linux磁盘命名(盘号)采用26进制,比如sda表示的就是第一个SCSI硬盘,sdb就是第二个SCSI硬盘,…,sdaa就是第27个SCSI硬盘,所以Linux系统可挂载硬盘的数量没有限制。但是Windows系统默认支持的最大盘符数量是26个,如果已经挂载的盘符数量超过26个,就会出现盘符不够用的情况。下面是可能的解决方法:

  1. 使用subst命令将一个盘符映射到另一个盘符。
  2. 使用Diskpart软件将一个盘符更改为另一个盘符。

参考文章“26个磁盘盘符,这个命令一键搞定!”。
参考知乎提问“Windows 系统最多可以拥有几个盘符?”。

  并且,Windows的磁盘空间管理方式是通过使用磁盘清理工具来清除不需要的文件,或者在磁盘已满的情况下使用磁盘碎片整理工具来释放空间。这种方式可能会导致磁盘空间的浪费,因为磁盘清理工具只能清除已知的临时文件和一些系统文件,而不能识别用户自己创建的文件。而Linux则使用“超级块”来管理磁盘空间。每个文件系统都有一个超级块,它包含了文件系统的元数据和关键信息。这使得Linux可以更有效地管理磁盘空间,因为它可以检测并清除不需要的文件,而不需要用户手动执行这些操作。这也就可以理解为什么Linux系统无需“刷新”这个操作了。

进一步可以查看“Windows空间和Linux空间的最大的区别是什么?”。

12.1.3 查看设备的挂载情况-lsblk

# 基本语法-lsblk
lsblk [选项] [<设备> ...]

# 常用选项-lsblk
-f  查看块设备的文件系统类型及UUID
-a  列表所有块设备
-h  查看中文帮助信息

关于lsblk的更多介绍可以查看知乎文章“【运维必看】Linux命令之lsblk命令”。下面展示其应用实例:

[root@CentOS76 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   17G  0 part /
sr0     11:0    1 1024M  0 rom  
[root@CentOS76 ~]# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                      
├─sda1 ext4         2e1b1edd-64e9-43f0-9362-138e2bd6adc5 /boot
├─sda2 swap         7e2d03c3-f47a-4721-b29d-1a7b9170fe61 [SWAP]
└─sda3 ext4         43bc1b00-e520-4cfb-8c4b-8f0afbde5dbe /
sr0  

上面lsblk -f显示的内容:【第一列】是分区情况;【第二列】是文件系统类型;【第三列】是每个分区的40位唯一标识符;【第四列】就是该分区的挂载点。

12.2 Linux新增硬盘-演示“挂载”

  下面以增加一块硬盘为例来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念。比如我们现在想在根目录/下创建一个新的目录newdisk,并将一块新硬盘sdb的第一个分区挂载到newdisk上。具体的步骤可以查看我的博文“辅助笔记-linux新增硬盘”,大致的步骤描述如下:

  1. 虚拟机添加硬盘
  2. 分区——fdisk
  3. 格式化——mkfs
  4. 挂载——mount
  5. 设置永久挂载——修改 /etc/fstab

12.3 磁盘使用情况查询

  在Linux使用过程中,会不停的向磁盘空间中写数据,此时磁盘空间会越来越小。作为Linux使用者就需要时刻关注磁盘空间使用情况,当空间不足时应及时添加新的硬盘或分区,以保证系统正常运行。下面就介绍Linux下常用的磁盘情况查询指令。

12.3.1 整体磁盘使用情况-df

Linux下查询系统整体磁盘使用情况的指令是df -h,基本语法为:

# 基本指令-df
df [选项]... [文件]...  # 显示磁盘文件系统信息

# 常用选项
--help  查看中文帮助文档
-h      以人类习惯显示磁盘空间

若磁盘使用空间达到80%以上,就需要清理磁盘空间或添加新的磁盘了。下面展示一个应用案例:

# 【案例1】查询系统整体磁盘使用情况。
[root@CentOS76 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        3.9G     0  3.9G    0% /dev
tmpfs           3.9G     0  3.9G    0% /dev/shm
tmpfs           3.9G   13M  3.9G    1% /run
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda3        17G  5.2G   11G   33% /
/dev/sdb1       991M  2.6M  922M    1% /newdisk
/dev/sda1       976M  178M  732M   20% /boot
tmpfs           797M   12K  797M    1% /run/user/42
tmpfs           797M     0  797M    0% /run/user/0

13.3.2 指定目录的磁盘使用情况-du

# 基本语法-du
du -h [目录]  # 查询指定目录的磁盘占用情况,默认为当前目录

# 常用选项-du
-s  指定目录占用大小汇总
-h  按照人类习惯显示计量单位
-a  含文件
-c  列出明细的同时,增加汇总值
--max-depth=1   子目录深度为1

下面展示一个应用案例:

# 【案例1】查询/opt目录的磁盘占用情况,深度为1。
# 首先看看/opt里面都有啥
[root@CentOS76 ~]# ls /opt
rh  VMwareTools-10.3.25-20206839.tar.gz  vmware-tools-distrib  杂文.txt

# 演示-h:只显示一级目录的大小
[root@CentOS76 ~]# du -h --max-depth=1 /opt
155M	/opt/vmware-tools-distrib
4.0K	/opt/rh
210M	/opt

# 演示-ha:将目录及文件都列出来了
[root@CentOS76 ~]# du -ha --max-depth=1 /opt
155M	/opt/vmware-tools-distrib
3.5M	/opt/杂文.txt
4.0K	/opt/rh
52M	/opt/VMwareTools-10.3.25-20206839.tar.gz
210M	/opt

# 演示-hac:就多了最后一行
[root@CentOS76 ~]# du -hac --max-depth=1 /opt
155M	/opt/vmware-tools-distrib
3.5M	/opt/杂文.txt
4.0K	/opt/rh
52M	/opt/VMwareTools-10.3.25-20206839.tar.gz
210M	/opt
210M	总用量

12.2.3 工作实用指令-wctree

下面展示五个应用案例:

  • 提示:统计指令wc参数依次统计-l行数、-c字节数、-m字符数、-w单次数。
  • 提示:显示指令ls-R选项可以递归的显示所有的该目录及其子目录下所有的文件。
  • 提示:Linux默认不安装tree指令,安装指令yum install tree
# 【案例1】统计/opt文件夹下文件的个数。
[root@CentOS76 ~]# ll /opt
总用量 56360
drwxr-xr-x. 2 root root     4096 1031 2018 rh
-rw-------. 1 root root 54056661 731 2022 VMwareTools-10.3.25-20206839.tar.gz
drwxr-xr-x. 8 root root     4096 731 2022 vmware-tools-distrib
-rw-r--r--. 1 root root  3642757 723 16:24 杂文.txt
[root@CentOS76 ~]# ll /opt | grep "^-"              # 只显示“杠-”开头的普通文件
-rw-------. 1 root root 54056661 731 2022 VMwareTools-10.3.25-20206839.tar.gz
-rw-r--r--. 1 root root  3642757 723 16:24 杂文.txt
[root@CentOS76 ~]# ll /opt | grep "^-" | wc -l      # 统计个数
2


# 【案例2】统计/opt文件夹下目录的个数。
[root@CentOS76 ~]# ll /opt | grep "^d" | wc -l
2


# 【案例3】统计/opt文件夹下文件的个数,包括子文件夹里的。
[root@CentOS76 ~]# ll -R /opt | grep "^-" | wc -l
1462


# 【案例4】统计/opt文件夹下目录的个数,包括子文件夹里的。
[root@CentOS76 ~]# ll -R /opt | grep "^d" | wc -l
480


# 【案例5】以树状显示/opt目录的前两级结构。
[root@CentOS76 ~]# tree /opt
bash: tree: 未找到命令...
[root@CentOS76 ~]# yum install tree
##################################
# 按照提示安装就行。
##################################
[root@CentOS76 ~]# tree -L 2 /opt       # 只显示前两级目录统计
/opt
├── rh
├── VMwareTools-10.3.25-20206839.tar.gz
├── vmware-tools-distrib
│   ├── bin
│   ├── doc
│   ├── etc
│   ├── FILES
│   ├── INSTALL -> ./doc/INSTALL
│   ├── installer
│   ├── lib
│   ├── vgauth
│   └── vmware-install.pl -> ./bin/vmware-uninstall-tools.pl
└── \346\235\202\346\226\207.txt

8 directories, 5 files

  1. 《鸟哥的Linux私房菜 基础学习篇 第四版》 ↩︎

  2. 《鸟哥的Linux私房菜 服务器架设篇 第三版》 ↩︎

  3. 《韩顺平_2021图解Linux全面升级》 ↩︎

猜你喜欢

转载自blog.csdn.net/weixin_46258766/article/details/131977578