程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 操作系统 - Linux

    • 基础操作
    • 目录操作
    • 文件操作
    • 用户和权限管控
    • 打包和解压
    • 定时任务管理
    • 系统管理
    • 网络服务操作
    • 磁盘分区管理
      • 其他常用命令
    • 云服务器
    • 操作系统 - Linux
    scholar
    2024-03-27
    目录

    磁盘分区管理

    # 1. 挂载文件系统(mount)

    mount命令在Linux系统中用于将文件系统挂载到指定的目录,从而可以访问该文件系统中的文件和目录。这是管理Linux文件系统的核心命令之一,尤其重要当涉及到添加新的存储设备或访问不同类型的文件系统时。

    # 1. 基本语法

    mount [选项] [设备] [挂载点]
    
    1
    • [设备]:指的是要挂载的设备或文件系统,通常是一个设备文件名,如/dev/sdb1。
    • [挂载点]:是一个目录,用于访问挂载后的文件系统。这个目录应该是存在的,如果不存在需要先创建。

    # 2. 常用命令和选项

    • 显示已挂载的文件系统:
    mount
    
    1

    不带任何参数时,mount命令会列出当前系统中所有已挂载的文件系统。

    • 挂载文件系统:
    mount /dev/sdb1 /mnt
    
    1

    这个命令将/dev/sdb1设备挂载到/mnt目录。在执行挂载命令之前,应确保/mnt目录已经存在。

    • 自动挂载:

    在/etc/fstab文件中添加一行配置可以实现设备的自动挂载。这对于希望在系统启动时自动挂载某些文件系统的情况非常有用。

    /dev/sdb1 /u01 ext2 defaults 0 2
    
    1

    这里,/dev/sdb1是要挂载的设备,/u01是挂载点,ext2是文件系统类型,defaults代表默认挂载选项,0 2是dump和fsck的相关设置。

    • 指定文件系统类型 -t:
    mount -t <文件系统类型> [设备] [挂载点]
    
    1

    使用-t选项可以指定要挂载的文件系统类型,如ext4、ntfs等。

    • 指定挂载选项 -o:
    mount -o <选项> [设备] [挂载点]
    
    1

    使用-o选项可以指定挂载的额外选项,例如ro(只读挂载)、rw(读写挂载)等。

    # 2. 磁盘分区基础

    磁盘分区就像是把你的硬盘分成若干个独立的部分,每个部分可以独立使用。这有点像把一块大饼干分成几个小块,每个人可以拿一块吃。

    image-20231217033123833

    在 Linux 中,我们有三种类型的分区:

    1. 主分区(Primary Partition):主分区就像是你的主卧室,你可以在这里放你最重要的东西。一个硬盘最多可以有四个主分区。

    2. 扩展分区(Extended Partition):在一个硬盘上,你最多可以创建四个主分区。但如果你需要更多的分区,可以选择不使用全部的主分区,而是将其中一个主分区位置设定为扩展分区。扩展分区本身并不直接存储数据,而是作为一个容器,可以包含多个逻辑分区。

    3. 逻辑分区(Logical Partition):逻辑分区就是扩展分区里的小房间,你可以在扩展分区里创建很多个逻辑分区。

    • 每个逻辑分区都是独立的,就像硬盘上的主分区一样。你可以在每个逻辑分区上创建文件系统,然后将其挂载到系统的目录树中,就像挂载主分区一样。
    • 虽然逻辑分区是在扩展分区内部,但在使用上,它们和主分区没有太大的区别。
    • 例如,你可以创建三个主分区和一个扩展分区。在这个扩展分区内部,你可以创建多个逻辑分区。这样,你就可以拥有超过四个可以使用的分区。

    # 3. 文件系统

    文件系统就像是你房间里的柜子,用来放你的东西。不同的文件系统就像是不同类型的柜子,有的大有的小,有的有抽屉有的没有。 在 Linux 中,我们常用的文件系统有:

    1. ext4:这是 Linux 中最常用的文件系统,它支持大文件和大容量硬盘,还有很多其他的特性。

    2. XFS:这是一个高性能的文件系统,适合用在大容量和高并发的环境中。

    3. Btrfs:这是一个新型的文件系统,它支持很多高级特性,如快照、数据压缩和数据校验等。

    # 4. 磁盘分区命令

    在 Linux 中,我们有很多命令可以用来进行磁盘分区。以下是一些常用的命令:

    1. fdisk:这是一个用来管理磁盘分区的工具。你可以用 fdisk 来查看你的磁盘信息,创建新的分区,删除已有的分区等。

    • 例如,你可以使用 fdisk -l 来查看你的磁盘和分区信息。这就像是查看你的房子有多少个房间,每个房间有多大。
    • 你也可以使用 fdisk /dev/sda 来对 /dev/sda 这个磁盘进行分区。这就像是在你的房子里添加或删除房间。

    2. mkfs:这是一个用来创建文件系统的工具。你可以用 mkfs 来在一个分区上创建一个新的文件系统。

    • 例如,你可以使用 mkfs.ext4 /dev/sda1 来在 /dev/sda1 这个分区上创建一个 ext4 文件系统。这就像是在你的房间里安装一个新的柜子。
    • mkfs 命令会清除分区上的所有数据,并设置新的文件系统的参数,这个过程我们通常称之为格式化,如果一个分区上已经有数据,你应该在运行 mkfs 命令之前备份这些数据,因为格式化操作会删除所有的数据

    3. mount 和 umount:这两个命令分别用来挂载和卸载文件系统。挂载文件系统就像是打开柜子的门,你可以看到里面的东西。卸载文件系统就像是关上柜子的门,你看不到里面的东西。

    • 例如,你可以使用 mount /dev/sda1 /mnt 来把 /dev/sda1 这个分区挂载到 /mnt 这个目录。这就像是把柜子的门打开,你可以通过 /mnt 这个目录来访问柜子里的东西。
    • 你也可以使用 umount /mnt 来卸载 /mnt 这个目录。这就像是把柜子的门关上,你不能再通过 /mnt 这个目录来访问柜子里的东西。

    # 5. 挂载的疑问解答

    当你在挂载的目录(也称为挂载点)中写入文件时,这些文件实际上被写入了挂载的分区中。如果你卸载(umount)这个分区,文件不会被删除,它们仍然存储在分区中。

    • 当你将一个分区挂载到某个目录后,该目录就成为了访问分区内容的窗口。然而,这个目录本身并不存储任何数据,所有的文件实际上都存储在分区上。当你卸载这个分区时,挂载点(即目录)会恢复到原来的状态,显示挂载之前该目录中的内容。
    • 所以,卸载分区并不会影响分区中的文件,它们会被永久保存在磁盘上,除非你手动删除它们,或者对分区进行格式化操作。

    如果一个目录在被用作挂载点之前已经包含了一些数据(例如文件或子目录),那么当你把一个文件系统(例如一个分区)挂载到这个目录后,原有的数据将会被隐藏,也就是说你无法访问到这些数据。此时,当你查看这个目录时,你看到的将是挂载的文件系统中的数据,而不是目录原有的数据。

    • 然而,这并不意味着原有的数据被删除或者丢失了。实际上,这些数据仍然存储在磁盘上,只是被挂载的文件系统覆盖了。当你卸载这个文件系统后,原有的数据将会再次出现,你又可以访问到这些数据了。
    • 所以,一般来说,我们会选择一个空的目录作为挂载点,以避免挂载操作覆盖目录中的数据。如果一个目录已经包含了一些数据,你应该在挂载之前将这些数据移动到其他地方,以防止数据被隐藏。

    # 6. 示例:分区挂载

    假设我们有一个新的磁盘 /dev/sdb,我们想在这个磁盘上创建一个新的分区,然后在这个分区上创建一个 ext4 文件系统,最后把这个分区挂载到 /mnt/data 这个目录。以下是具体的步骤:

    1. 查看新磁盘:我们可以使用 fdisk -l 命令来查看新磁盘的信息。

      fdisk -l
      
      1
    2. 创建新分区:我们可以使用 fdisk /dev/sdb 命令来创建一个新的分区。

      fdisk /dev/sdb
      
      1

      在 fdisk 的交互式命令行界面,我们可以输入 n 来创建一个新的分区,然后按照提示完成分区的创建。

      fdisk 命令创建新分区的详细步骤

      当你输入 fdisk /dev/sdb 并回车后,你会进入 fdisk 的交互式命令行界面。在这个界面,你可以输入不同的命令来进行分区操作。以下是创建新分区的步骤:

      1. 输入 n 并回车,开始创建新的分区。
      2. 系统会询问你要创建的是主分区(primary)还是扩展分区(extended),输入 p 创建主分区,或输入 e 创建扩展分区,然后回车。
      3. 接着,系统会询问你新分区的编号。如果是主分区,编号可以是 1 到 4;如果是扩展分区,编号可以是 1 到 16。输入你选择的编号,然后回车。
      4. 系统会询问新分区的起始扇区,你可以直接回车选择默认的起始扇区。
      5. 然后,系统会询问新分区的结束扇区,你可以直接回车选择默认的结束扇区,或者输入 +size 指定分区大小,例如 +2G 创建一个 2GB 的分区。
      6. 最后,输入 w 并回车,将新的分区表写入磁盘。

      这样,你就在 /dev/sdb 磁盘上创建了一个新的分区。

    3. 创建文件系统 / 格式化:我们可以使用 mkfs.ext4 /dev/sdb1 命令来在新分区上创建一个 ext4 文件系统。

      mkfs.ext4 /dev/sdb1
      
      1
    4. 创建挂载目录:挂载分区之前,需要确保挂载点(也就是你打算挂载到的目录)已经存在

      # 这里的 `-p` 选项会让 `mkdir` 命令创建所有需要的父目录。
      mkdir -p /mnt/data
      
      1
      2
    5. 挂载新分区:我们可以使用 mount /dev/sdb1 /mnt/data 命令来把新分区挂载到 /mnt/data 这个目录。

      mount /dev/sdb1 /mnt/data
      
      1
    6. 设置开机自动挂载:为了确保新分区在每次启动时自动挂载,你需要编辑 /etc/fstab 文件来添加相应的挂载条目。/etc/fstab 文件是在 Linux 系统启动时由系统自动读取的,用于定义磁盘驱动器和分区的挂载和使用情况。

      # 编辑 /etc/fstab 文件	
      sudo vim/etc/fstab
      # 在文件的末尾添加一行,指定分区和挂载点
      /dev/sdb1    /mnt/data    ext4    defaults    0    2
      
      1
      2
      3
      4
      • 这里 /dev/sdb1 是分区名称,/mnt/data 是挂载点,ext4 是文件系统类型,defaults 是挂载选项,0 和 2 是用于磁盘检查的优先级设置。
      • 确保在编辑 /etc/fstab 时非常小心,因为错误的配置可能会影响系统的启动。在修改之前,建议备份原始的 /etc/fstab 文件。
    7. 重启确认是否挂载成功:使用 lsblk -f命令 用来确认分区是否已经成功挂载,以及它们挂载的位置。

    • image-20231217032748643

    • 使用lsblk 命令可以帮助你了解你的系统中的磁盘和分区的布局和状态。

    • image-20231217030141414

    编辑此页 (opens new window)
    上次更新: 2024/12/28, 18:32:08
    网络服务操作
    其他常用命令

    ← 网络服务操作 其他常用命令→

    Theme by Vdoing | Copyright © 2019-2025 程序员scholar
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式