一、分区概念
1、基本概念
(1) 一块硬盘最多只能有4个主分区
(2) 其中一个(且最多只能有一个)主分区能作为扩展分区,而扩展分区不能写入数据,只能包含逻辑分区
2、格式化
分区之后的磁盘并不能直接使用,而是需要先进行格式化,又称为逻辑格式化。它是指根据用户选定的文件系统(FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表(主要用于标识文件的各个block在磁盘中的位置,相当于索引)等用于文件管理的磁盘空间。粗略来说,就是将磁盘进一步按照指定格式划分成block块(4kb)
3、硬件设备文件名
与Window不同的是,Linux磁盘分区之后,并不能直接分配盘符,而是需要先对硬件设备本身进行命名(这个过程是系统自动完成的)。不同的设备有固定的命名规则和样式。如下图所示:
硬件 | 设备文件名 |
---|---|
IDE硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB硬盘 | /dev/sd[a-p] |
Virtl/O界面 | /dev/vd[a-p] 用于虚拟机内 |
光驱 | /dev/cdrom或/dev/sr0 |
软盘 | /dev/fd[0-1] |
打印机(USB) | /dev/usb/lp[0-15] |
鼠标 | /dev/mouse |
以两块硬盘为例,展示硬件设备的分区和命名规则:
特别注意:因为1、2、3、4分区号是分配给主分区的,所以尽管硬盘b只有两个主分区(sdb1和sdb2),但是其逻辑分区仍然是从5开始编号(sdb5、sdb6和sdb7)。
4、挂载
将硬件设备名和Linux目录(借用windows的说法是盘符)关联的过程。也就是将硬件设备名挂载到Linux某个目录,之后就可以通过该目录访问硬件设备中的数据。
Linux中必须挂载的两个分区目录包括:根分区(/)和swap分区(作为交换分区,即内存不够用时,临时借用的硬盘上的一部分空间)。
推荐挂载的分区目录:/boot,作为系统启动分区。
二、文件系统结构
硬盘分区之后,Linux文件系统结构示例如下:
1、目录逻辑结构
2、目录物理结构
由上图可知,物理结构和逻辑结构可能是分裂的。在实际物理存储时,我们会为/boot和/home单独分配一片磁盘空间,作为单独的分区,虽然在逻辑上,/boot和/home都属于/下面的子目录。通俗来说,根目录下的/boot子目录中的数据会存储到sda1分区,/home子目录中的数据则会存储到sda2分区,而根目录下其它子目录文件则会存储到sda3分区。
三、文件系统查看命令
1、df命令
[root@master ~]# df -h
重点关注/dev/vda3和/dev/vda2, 表明该云服务器(aliyun)上有两个硬盘分区,然后挂载点(目录)分别是根目录(/)和/boot/efi。
2、du命令
用于查看目录(递归其所有子目录和文件)磁盘占用空间大小:
du [选项] [目录或文件名]
-a 显示每个子文件的磁盘占用量,默认值统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如KB,MB或GB等
-s 统计总占用量,而不列出子目录和子文件的占用量
(1) 显示etc目录下每个子文件夹的磁盘占用量
[root@master ~]# du -h /etc
(2) 显示etc目录总的磁盘占用量
# 查看etc目录下所有文件的大小
[root@master ~]# du -sh /etc
24M /etc
3、挂载命令
(1)mount基本用法
显示挂载信息
[root@master /]# mount
(2)mount完整命令
mount [-t文件系统][-L 卷标名][-o特殊选项] 设备文件名 挂载点
选项:
-t 文件系统,加入文件系统类型来指定挂载的类型,可以是ext3、ext4、iso9660等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以指定挂载的额外选项
常用的特殊选项(-o):
示例:
mount -o remount,noexec /home/
这样设置后,/home/目录下的文件将不具备可执行权限。
(3)mount挂载和卸载示例
>>挂载光盘
1. 挂载
# 1.建立挂载点
[root@master /]# mkdir /mnt/cdrom
# 2.挂载光盘
[root@master /]# mount -t iso9660 /dev/cdrom/ /mnt/cdrom
2. 卸载
umount 设备文件名或挂载点
[root@master /]#umount /mnt/cdrom
>>挂载U盘
# 查看U盘设备文件名
[root@master /]#fdisk -l
# 挂载U盘
[root@master /]#mount -t vfat /dev/sdb1 /mnt/usb/