前言

本文是视频教程韩顺平 一周学会Linux部分章节的归纳总结,内容补充和错误纠正。

概念

Linux的磁盘分区机制

Linux的磁盘分区机制是指将物理硬盘划分为多个逻辑部分的过程。每个分区都被视为独立的逻辑驱动器,并有自己的文件系统进行格式化和挂载。以下是Linux磁盘分区机制的核心概念:

  1. 主分区(Primary Partition):主分区是硬盘上最基本的分区类型,最多可以划分为4个主分区。每个主分区都可以被视为一个独立的逻辑驱动器。

  2. 扩展分区(Extended Partition):扩展分区是一种特殊类型的主分区,它可以容纳多个逻辑分区。只能有一个扩展分区存在,并且必须在4个主分区之中。

  3. 逻辑分区(Logical Partition):逻辑分区是在扩展分区内创建的分区。通过扩展分区,可以划分出多个逻辑分区来扩展硬盘上的分区数量。

  4. 文件系统(File System):每个分区都需要格式化为特定的文件系统以用于存储数据。常见的Linux文件系统包括ext4、XFS、Btrfs等。

  5. 挂载(Mounting):挂载是将一个分区与Linux文件系统中的目录进行关联的过程。挂载点是一个现有目录,在该目录中的文件和目录将与相应分区中的数据进行关联。

通过对硬盘进行适当的分区,可以将不同类型的数据和文件系统隔离开来,并提供更好的管理和数据保护。例如,可以将操作系统安装在一个分区上,用户数据放在另一个分区上,这样即使系统损坏,用户数据仍然可以保持安全。

简单说Linux系统可以把磁盘分区映射到目录上,例如把硬盘分区成C,D,E,F四个分区,分别挂载到/mnt/A,/home,/D,/swap目录下,就可以通过这些目录去访问这些分区了。

硬盘说明

Linux系统的常见驱动器标识符有hdx~sdx~,如果在虚拟化环境下,可能还会有vdx~

  • hd代表IDE硬盘,sd代表一般块设备,包括SCSI、SATA、USB等,vd则代表虚拟磁盘
  • x是按照字母排列代表是第几个硬盘,例如a是第1个,b是第2个,以此类推z是第26个硬盘
  • ~是用数字表示分区,1-4是分区,5之后是扩展分区里的逻辑分区

例如:

  • hda1就是第1个IDE硬盘的第1个分区
  • sdb3就是第2个SCSI、SATA硬盘的第3个分区
  • vdc2则表示第3块虚拟磁盘的第2 个分区

命令

查看磁盘分区挂载情况

lsblklsblk -f:list block的缩写,查看磁盘分区挂载情况,加上-f可以看到文件系统的信息

操作磁盘分区

fdisk [-l] 设备名称:fdisk 是 Linux 的磁盘分区表操作工具

  • fdisk -l [设备名称] :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
  • fdisk [设备名称]:使用fdisk修改磁盘分区,输入m有更详细的说明,比较常用的有d删除分区,n新增分区,q不保存离开,w写入离开,p显示分区情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(base) [root@VM-16-13-centos ~]# fdisk  /dev/vda 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag 切换可引导标志
b edit bsd disklabel 编辑BSD磁盘标签
c toggle the dos compatibility flag 切换DOS兼容性标志
d delete a partition 删除分区
g create a new empty GPT partition table 创建新的空GPT分区表
G create an IRIX (SGI) partition table 创建IRIX(SGI)分区表
l list known partition types 列出已知的分区类型
m print this menu 显示此菜单
n add a new partition 添加新分区
o create a new empty DOS partition table 创建新的空DOS分区表
p print the partition table 打印分区表
q quit without saving changes 不保存更改退出
s create a new empty Sun disklabel 创建新的空Sun磁盘标签
t change a partition's system id 更改分区的系统ID
u change display/entry units 更改显示/输入单位
v verify the partition table 验证分区表
w write table to disk and exit 将表写入磁盘并退出
x extra functionality (experts only) 额外功能(仅限专业人士)

命令(输入 m 获取帮助):

格式化磁盘分区

mkfs [-t 文件系统格式] 设备名称:格式化分区,-t用于指定文件系统格式,输入mkfs后按下两次tab来查看系统支持的文件系统格式

示例:mkfs -t ext4 /dev/sdc1

挂载磁盘分区

临时挂载

使用mount挂载的分区在系统重启后就会失效,所以被称为临时挂载

  • mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 设备名称 挂载点:将磁盘分区挂载到文件目录

  • umount [-fn...] 设备名称或挂载点:卸载分区,

    • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
    • -n :不升级 /etc/mtab 情况下卸除。

示例:

  • mount /dev/sdc1 /mnt/sdc1:将分区/dev/sdc1挂载到目录/mnt/sdc1
  • umount /dev/sdc1:卸载分区/dev/sdc1

永久挂载

修改/etc/fstab文件之后执行mount -a可以实现永久挂载

磁盘使用情况查询

查询整个磁盘分区的空间占用情况

df [-ahikHTm...] [目录或文件名]:检查文件系统的磁盘空间占用情况。如果带目录或者文件名,则会显示这个目录所在的磁盘分区的磁盘空间占用情况。不带则会显示所有的磁盘分区的空间占用情况

部分选项与参数:

  • -a:列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k:以 KBytes 的容量显示各文件系统;
  • -m:以 MBytes 的容量显示各文件系统;
  • -h:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H:以 M=1000K 取代 M=1024K 的进位方式;
  • -T:显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext4) 也列出;
  • -i:不用硬盘容量,而以 inode 的数量来显示

一般来说df -h [目录或文件名] 比较直观,用得比较多

查询指定目录的磁盘空间占用情况

du [-ahskmd...] 文件或目录名称:和df不同,du是查询指定目录以及所有子目录的大小

部分选项与参数:

  • -a:列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h:以人们较易读的容量格式 (G/M) 显示;
  • -s:仅显示指定目录或文件的总大小,而不显示其子目录的大小。
  • -S:包括子目录下的总计,与 -s 有点差别。
  • -k:以 KBytes 列出容量显示;
  • -m:以 MBytes 列出容量显示;
  • -d N--max-depth=N:指定目录深度,不指定会查询所有子目录的大小

一般来说du -h --max-depth=1 文件或目录名称 比较直观,用得比较多

统计与显示

统计/opt文件夹下的文件个数

命令:ls -l /opt | grep "^-" | wc -l

解释:

  • ls -l /opt:列出指定目录下文件和子目录的详细内容
  • | grep "^-"grep正则表达式,过滤出-开头的信息,-开头是文件,d开头是目录
  • | wc -l:word count是用于计数的命令行工具,wc将计算指定文件的行数、字数,以及字节数,wc -l是统计行数

统计/opt文件夹下的目录个数

命令:ls -l /opt | grep "^d" | wc -l

解释参照上面

统计/opt文件夹下的文件个数,包括子文目录下的

命令:ls -lR /opt | grep "^-" | wc -l

解释:-R是递归,其余参照上文

统计/opt文件夹下的目录个数,包括子目录下的

命令:ls -lR /opt | grep "^d" | wc -l

解释参照上文

树状显示文件目录结果

可以安装并使用tree指令来实现