Linux系统的磁盘管理和文件系统
1.磁盘基础
1)磁盘结构
-
硬盘的物理结构
-
盘片:硬盘有多个盘片
-
磁头:每面一个磁头
-
-
硬盘的数据结构
- 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位
- 磁道:同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹
- 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
2)磁盘结构
-
硬盘存储容量=磁头数x磁道(柱面)数x每道扇区数x每扇区字节数(512字节)
-
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
-
磁盘接口类型
- IDE、SATA、SCSI、SAS、光纤通道
3)MBR与磁盘分区表示
-
主引导记录 (MBR:Master Boot Record)
-
MBR位于硬盘第一块物理扇区处。
-
MBR中包含硬盘的主引导程序和硬盘分区表。
-
分区表中有4个分区记录区,每个分区记录区占16字节。
-
Linux中将硬盘、分区等设备均表示为文件。
/dev/hda5
(dev为硬件设备文件所在目录,hd表示IDE文件,a为硬盘的顺序号–a、b、c…表示,5为分区号–1、2、3…表示)
-
4)磁盘分区结构
-
硬盘中的主分区数目只有4个。
-
主分区和扩展分区的序号限制在1~4。
-
扩展分区再分为逻辑分区。
-
逻辑分区的序号始终从5开始。
5)主分区、扩展分区与逻辑分区的定义和特点
①定义:
- 主分区:主分区是直接分配给硬盘的物理空间,用于安装操作系统或存储重要数据。
- 扩展分区:当需要超过4个分区时,就需要使用扩展分区。扩展分区本身不直接用来存储数据,而是作为逻辑分区的容器。
- 逻辑分区:逻辑分区是在扩展分区内部创建的分区,可以有多个。逻辑分区适合存储数据、程序或额外的操作系统,灵活性高。
②特点:
-
主分区:主分区可以直接存储数据,并且至少需要一个主分区来安装操作系统。
-
扩展分区的用途和特点:扩展分区提供了一个框架,可以在其中创建多个逻辑分区,便于管理和分类数据。扩展分区不能直接使用,必须再划分成逻辑分区。
-
逻辑分区的用途和特点:逻辑分区不支持直接启动操作系统,但数量不限(受限于硬盘空间)。逻辑分区可以包含文件系统,并且可以独立使用。
6)文件系统类型
①XFS文件系统
- 存放文件和目录数据的分区。
- 高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间。
- CentOS 7系统中默认使用的文件系统。
②SWAP交换文件系统
- 为Linux系统建立交换分区
- 一般设置为物理内存的1.5~2倍。
③Linux支持的其它文件系统
- EXT4、FAT32、NTFS、LVM
7)Swap分区的作用
交换分区(Swap Partition)是Linux系统中的一个重要功能,它类似于Windows系统的虚拟内存(pagefile.sys),用于在物理内存(RAM)不足时,将暂时不使用的数据或进程从RAM转移到硬盘上的特定区域,从而扩展系统的可用内存空间。
- 内存不足时的扩展:当物理内存不足以支持所有运行的程序时,swap分区可以作为临时的内存扩展,确保系统不会因内存不足而崩溃。
- 内存回收:swap分区还用于内存回收,即当内存使用存在压力时,操作系统会将不常访问的数据移动到Swap分区,从而释放物理内存供更需要的程序使用。
2.检测并确认新磁盘
查看所有连接的硬盘
-
使用
lsblk
:lsblk
这个命令会列出所有可用的存储设备及其分区,以树状图的形式显示。
-
使用
fdisk -l
:fdisk -l
这个命令会列出所有硬盘的分区表,包括硬盘的大小、类型、分区等信息。注意,
fdisk
可能需要管理员权限来查看所有硬盘。
3.规划硬盘中的分区
1)fdisk命令
①fdisk
是一个在Linux中用于创建和操作磁盘分区表的命令行工具。它允许用户查看、创建、编辑、删除和显示硬盘分区。
-
fdisk [选项] 磁盘设备
-
交互中常用的指令:
指令 | 功能 |
---|---|
m | 获取帮助菜单 |
n | 新建分区 |
p | 查看分区情况 |
d | 删除分区 |
t | 变更分区的类型 |
w | 保存分区操作并退出 |
q | 不保存分区操作并退出 |
2)磁盘分区表示
Linux中将硬盘、分区等设备均表示为文件/dev/sdb5
hd 表示IDE设备
sd 表示SCSI设备
硬盘的顺序号,以字母sd[a、b、c…]表示
分区的顺序号,以数字sdx[1、2、3…]表示。主分区从1-4,第一个逻辑分区始终从5开始。
3)规划过程
1)创建分区
fdisk /dev/sdb #查看、编辑sdb这块盘
:n #交互命令:新建分区
:p #交互命令:查看分区情况
分区号(1-4,默认1):1 #设置分区号(直接按ENTER则默认)
起始扇区(2048-41943039,默认为 2048):2048 #设置起始扇区(直接按ENTER则默认)
:+20G #设置分区大小,按ENTER则默认设置所有空间
:W #保存所以操作并退出
partprobe /dev/sdb #分区设置完后,最好重启一次,或用此命令使操作系统检测新的分区表情况
##partprobe /dev/sdx(报错用)
2)格式化硬盘和创建文件系统xfs
mkfs.xfs /dev/sdb1(通常修改磁盘后都需格式化和创建系统文件)
3)挂载过程
mount /dev/sdb1 /挂载点目录
4.创建文件系统
1)文件系统是操作系统中用于明确存储设备(如磁盘、固态硬盘等)或分区上的文件的方法和数据结构。它是操作系统中负责管理和存储文件信息的软件机构,通过文件系统,用户可以方便地创建、删除、读写文件,并对文件的存储空间进行管理。
2)在Linux系统中,您可以使用mkfs
命令来创建文件系统
以下是一些常见的文件系统类型及其对应的mkfs
命令:
- ext2/ext3/ext4:
mkfs.ext4 /dev/sdb1
这个命令将在/dev/sdb1
设备上创建一个ext4文件系统。您可以根据需要替换为ext2
或ext3
。
- XFS:
mkfs.xfs /dev/sdb1
5.挂载、卸载文件系统
挂载是将一个文件系统附加到一个目录的过程,从而使得该文件系统中的文件和目录可以通过挂载点访问。挂载点是一个空目录,用于将文件系统挂载到文件系统层次结构中。
在Linux系统中,您可以使用mount
和umount
命令来挂载和卸载文件系统
挂载文件系统
使用mount
命令挂载文件系统的基本语法如下:
mount [选项] 设备 文件系统挂载点
例如,要将/dev/sdb1
设备挂载到/mnt/mydisk
目录,您可以执行以下命令:
sudo mount /dev/sdb1 /mnt/mydisk
如果文件系统类型不是默认的类型,您需要指定-t
选项来指定文件系统类型,例如:
sudo mount -t ext4 /dev/sdb1 /mnt/mydisk
卸载文件系统
使用umount
命令卸载文件系统的基本语法如下:
umount [选项] 文件系统挂载点
例如,要卸载挂载在/mnt/mydisk
目录的文件系统,您可以执行以下命令:
sudo umount /mnt/mydisk
6.其它
1)who 命令 查看用户信息登录情况等
- root :第一个用户是 root 用户。
- pts/0 :表示该用户通过伪终端(pseudo terminal)pts/0登录。伪终端通常用于 SSH 会话或图形终端模拟器。
- 2022-01-01 10:30 :表示 root 用户在 2022 年1月1日10:30 登录。
- (192.168.1.2):表示 root 用户从 IP 地址 192.168.1.2 登录。
- 第二个用户是 user1。user1
- pts/1 :表示该用户通过伪终端pts/1登录
2)创建交换文件系统(详细版)
创建swap之前,目标分区应先通过fdisk 工具将分区类型ID 号设为 82
fdisk /dev/sdb
-->t
-->5
-->82 82为交换分区选项
mkswap /dev/sdb5 创建交换分区
swapon /dev/sdb5 启用新增加的交换分区:
swapoff /dev/sdb5 停用指定的交换分区:
swapon -s 查看每个分区的swap状态信息:
free -m查看总的swap状态信息:
2) mount指令
mount 是一个在 Unix 和 Linux 系统中常用的命令行工具,用于挂载(将文件系统附加到目录)或卸载(从目录中分离文件系统)文件系统。它允许用户访问存储在各种设备上的数据,如硬盘、CD-ROM、USB 设备等。
以下是 mount 命令的基本语法和一些常用选项:
mount [-t fstype] [-o options] device dir
-t fstype:指定要挂载的文件系统类型,如 ext4、vfat、ntfs 等。
-o options:指定挂载选项,如 ro(只读)、rw(读写)、noexec(禁止执行文件)等。多个选项可以用逗号
以下是一些常见的 mount 命令示例:
mount /dev/sda1 /mnt 挂载一个设备到指定目录
mount -o loop my_iso_file.iso /mnt 挂载一个 ISO 文件到一个目录
mount -t ntfs /dev/sda5 /mnt/windows 挂载一个 Windows 分区(NTFS 文件系统):
umount /mnt 卸载一个已挂载的设备