Linux磁盘小知识分享

  • Post author:
  • Post category:linux




Linux磁盘分区、挂载



1 基础概念

硬盘分类

  • IDE Integrated Drive Electronics,电子集成驱动器。

    • 价格低、兼容强、性价比高
    • 数据传输速度慢、线缆长度过短、连接设备少
    • 包括小类

      • ATA Advanced Technology Attachment,高级技术附加装置
      • Ultra ATA
      • DMA
      • Ultra DMA
      • SATA Serial ATA,串口硬盘
      • PATA Parallel ATA,并口硬盘
  • SCSI [ˈskʌzi] Small Computer System Interface,小型计算机系统接口

    • SCSI接口是一个通用接口,在SCSI母线上可以连接主机适配器和八个SCSI外设控制器,外设可以包括磁盘、磁带、CD-ROM、可擦写光盘驱动器、打印机、扫描仪和通讯设备等
    • SCSI是个多任务接口,设有母线仲裁功能。挂在一个SCSI母线上的多个外设可以同时工作。SCSI上的设备平等占有总线
    • SCSI接口可以同步或异步传输数据,同步传输速率可以达到10MB/s,异步传输速率可以达到1.5MB/s
    • SCSI接口接到外置设备时.它的连接电缆可以长达6m


【文章福利

】小编推荐自己的Linux内核源码交流群:【


869634926


】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!

分区方式

  • MBR 分区

    • 最多支持 4 个主分区
    • 系统只能按照在主分区
    • 扩展分区要占一个主分区
    • 最大支持 2TB,但拥有最好的兼容性(最古老)
  • GPT 分区

    • 理论支持无限多主分区,但受操作系统限制(如 windows 下最大 128 个分区)
    • 最大支持 18 EB,B->K->M->G->T->P->E
    • windows7 64位开始支持GPT

windows 下常见分区

通常划分:

  • 主分区 C
  • 扩展分区 (概念)

    • 逻辑分区 D
    • 逻辑分区 E
    • 逻辑分区 F

4个主分区和 1主3逻辑分区的区别:

方便区分系统盘和数据盘

4个主分区后无法再继续创建分区,使用逻辑分区则可以随便划分

存疑:windows7 64位开始支持 GPT,所以上面分析不太靠得住


2 Linux 分区及相关指令


§2.1 基本认知

独立唯一的文件系统

Linux 无论划分多少分区,分别分给哪个目录使用,最终都属于一个根目录,这保证逻辑上 Linux 具有一个独立且唯一的文件结构,操作系统中任意分区都是文件系统的一部分 。

挂载(mount) 和 卸载(umount)

Linux 采用

挂载(mount)/卸载(umount)

的方式处理分区。一个分区会联系到整个文件系统的一个目录中去。因此可以使用访问目录的形式访问分区。


2.2 Linux 下硬盘盘符

盘符通常为 hdx~ 或 sdx~

其中:

  • hd 代表 IDE 硬盘
  • sd 代表 SCSI 硬盘,现在基本都是此类型
  • x 是盘号,为 [abcd] 之一,每一个代表一块完整的硬盘,每个硬盘可以划分主分区、扩展分区、逻辑分区

    • a 基本盘
    • b 基本从属盘
    • c 辅助盘
    • d 辅助从属盘
  • ~ 是数字

    • 1-4 主分区或扩展分区
    • 5 以后是逻辑分区


§2.3 lsblk [查看块设备]

全称:list block devices

指令:lsblk 选项

选项说明

  • -a, –all 显示所有设备
  • -b, –bytes 以bytes方式显示设备大小
  • -d, –nodeps 不显示 slaves 或 holders
  • -D, –discard print discard capabilities
  • -e, –exclude 排除设备 (default: RAM disks)
  • -f, –fs 显示文件系统信息
  • -h, –help 显示帮助信息
  • -i, –ascii use ascii characters only
  • -m, –perms 显示权限信息
  • -l, –list 使用列表格式显示
  • -n, –noheadings 不显示标题
  • -o, –output 输出列
  • -P, –pairs 使用key=”value”格式显示
  • -r, –raw 使用原始格式显示
  • -t, –topology 显示拓扑结构信息


§2.4 fdisk [分区指令]

指令:fdisk /dev/硬盘名/

说明:

动作 说明 作用
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition 删除一个分区
l list known partition types 列出分区类型
m print this menu 显示帮助手册
n add a new partition 创建新分区
o create a new empty DOS partition table
p print the partition table 列出分区表
q quit without saving changes 退出不保存
s create a new empty Sun disklabel
t change a partition’s system id 改变分区类型
u change display/entry units
v verify the partition table
w write table to disk and exit 写入磁盘并退出
x extra functionality (experts only) 扩展应用,专家功能


指令执行后磁盘多了新的

分区

,但尚未格式化


§2.5 mkfs [格式化]

全称:make file system 制作文件系统

指令:mkfs -t ext4 /dev/硬盘分区名/

执行后完成格式化,具有格式和 id,但尚未挂载


§2.6 mount [挂载]

全称:make file system 制作文件系统

指令:mount /dev/硬盘分区名 挂载目录

执行后分区具有挂载点,但重启后挂载点断开,尚未自动(永久)挂载

指令:mount -a 是自动挂载生效,每次重启从 /etc/fstab 中自动挂载


§2.7 umount [卸载]

指令:umount /dev/硬盘分区名

说明:

提示 device is busy,多为被挂载目录正在被使用,检查是否工作目录就是此目录,退出即可


§2.8 /etc/fstab [自动挂载配置]

全称:make file system 制作文件系统


3 Linux 磁盘健康及相关指令


§3.1 df [查看系统整体磁盘使用]

全称:disk free

指令:==df -lh ==


§3.2 du [查看磁盘占用]

全称:disk usage

指令:du 参数 目录 查看指定目录磁盘占用情况,不指定目录时,默认查看当前目录

说明:

参数

  • -h human,阅读友好的格式展示结果
  • -s 指定目录大小汇总,只显示一个大小,单位是K
  • -a 显示目录下磁盘占用,包含文件
  • –max-depth 指定显示的目录最大深度
  • -c 同时显示明细和汇总


§3.3 其他常用只用

文件数:ls -l 目标目录 | grep “^-” | wc -l

含子目录下文件数:ls -Rl 目标目录 | grep “^d” | wc -l

子目录数:ls -l 目标目录 | grep “^d” | wc -l

含子目录下子目录数:ls -Rl 目标目录 | grep “^d” | wc -l

树状结构显示目录:tree 目录


Linux磁盘扩容

环境: Debian 11

虚拟硬盘: 原MBR格式1T容量, 最新重新又多分配了1T空间

目标:

把重新分配的磁盘空间分配到对应的分区和根目录中.


基础知识

  1. MBR最多只支持2T的空间,超过2T则需要使用GPT分区. 其MBR可以无损转为GPT分区格式.
  2. 扩容时, 无法跨分区进行扩容. 空间磁盘空间只能分配在相邻的磁盘分区上.
  3. 虚拟机物理内存足够的时候,日常占用比较少的时候, 默认的swap空间可以删除
  4. 磁盘分区的工具有很多, 选择自己喜欢使用的就可以


磁盘分区工具及命令

层级 类型 命令 说明
0 硬盘/分区 lsblk 查看硬盘与分区信息
1 分区操作 fdisk 用来创建MBR分区(也可以创建GPT分区,但是支持的并不是特别完美)
1 分区操作 gdisk 用来创建GPT分区(如果要创建GPT分区,就来使用这个命令吧)
1 分区操作 cfdisk 图形化操作,较fdisk更直观简单的分区工具
1 分区操作 cgdisk 图形化操作,较gdisk更直观简单的分区工具
1 分区操作 parted 高级分区操作(注意操作,很多命令一键完成,没有提示,所以也就不存在后悔的余地,功能强大)
1 分区操作 growpart 可以非常方便的把磁盘空间进行扩容的工具, 需要下载
2 分区表操作 partprobe 当分区表进行修改调整之后, 需要重新读取分区表
3 文件系统 resize2fs 在调整的磁盘空间之后, 重新对文件系统进行分配.


实际操作


1. 转化GPT分区

此处: /dev/vda是需要操作的硬盘, /dev/vda1是需要扩容的分区

# gdisk 后跟主硬盘设备路径,不是分区路径
gdisk /dev/vda
w
y


2. 删除swap与其他分区

此处: 为了让空闲空间和扩容分区之间直接连接

# 清除swap分区配置信息, 关闭swap服务
## 查看磁盘加载情况
parted -l /dev/vda
tail -n 3 /etc/fstab
## 打开文件系统表, 将swap信息删除
vi /etc/fstab
tail -n 3 /etc/fstab
## 关闭swap
swapoff -a

# 删除其他分区
## 进入分区操作界面
parted /dev/vda
## (操作)打印分区信息
p
## (操作)删除对应分区
rm 2
## (操作)再次打印分区信息
p
## (操作)退出
quit


3. 扩容工具

groupart

安装及使用

# 安装
apt update;apt install -y cloud-utils cloud-initramfs-growroot
# 扩容
growpart /dev/vda 1
# 查看扩容后的磁盘空间
lsblk

磁盘空间扩容后, 文件系统需要对应扩容


4. 文件系统

# 查看
df -h
# 调整
resize2fs /dev/vda1