%% # 纲要 > 主干纲要、Hint/线索/路标 # Q&A #### 已明确 #### 待明确 > 当下仍存有的疑惑 **❓<font color="#c0504d"> 有什么问题?</font>** # Buffer ## 闪念 > sudden idea ## 候选资料 > Read it later %% # 文件系统挂载相关 #### 查看所有已挂载的文件系统 - `$ mount`:查看所有已挂载的文件系统 - `-t type`: 查看已挂载的、指定类型的文件系统 ```shell # 示例:查看已挂载的ext4文件系统 mount -t ext4 # 将显示: 设备文件名、挂载点、文件系统类型、已挂载设备的访问状态 ``` ![[_attachment/02-开发笔记/11-Linux/Linux 命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-1F557B1CF310543A53F60B1764EFB700.png|697]] #### 临时挂载分区/文件系统 > 注:**`mount` 命令只是临时挂载,不会自动持久化,通过该命令执行的挂载在 Linux 系统重启后就会失效。** - `$ mount [OPTION] device dir` 🔴: - `-t type`:指定磁盘/分区所使用的文件系统 ```shell # 示例: 挂载使用ext4文件系统的硬盘分区`/dev/sda2`到`/mnt` sudo mount -t ext4 /dev/sda2 /mnt sudo mount /dev/sda2 /mnt # 可省略指定文件系统 # 示例:挂载使用fat32文件系统的U盘到 `/media/usb`目录 sudo mount -t vfat /dev/sdb1 /media/usb sudo mount /dev/sdb1 /media/usb # 可省略指定文件系统 ``` #### 自动挂载文件系统(持久化挂载) 在 `/etc/fstab` 文件中添加挂载项 ```shell # 编辑`/etc/fstab` 文件 sudo vim /etc/fstab # 在该文件末尾添加挂载信息: # 挂载设备、挂载点、文件系统类型、挂载选项、控制备份、检查的优先级 # 挂载设备可以是"UUID=..."的形式或者"设备文件名" # 推荐使用UUID, 以提高系统的稳定性。因为UUID在系统重启或添加新硬盘时不会改变,而设备名可能会变化。 /dev/sda1 /mnt/mydisk ext4 0 2 ``` > [!example] > ![[_attachment/02-开发笔记/11-Linux/Linux 命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-6C88640749E9D350578B13293693B41A.png|766]] #### 卸载挂载 `$ umount [option] directory|device ` 🔴:卸载**指定路径上挂载的文件系统**,或卸载**已挂载的指定存储设备** ```shell sudo umount /mnt/mydisk # 按挂载点卸载 sudo umount /dev/sda1 # 按设备卸载 ``` <br><br><br> # 检查和修复文件系统 - `$ fsck [option] device` 文件系统检查 ```shell # 检查并尝试修复`/dev/sda1`上的文件系统 sudo fsck /dev/sda1 ``` 注:**只能对==未挂载的文件系统==执行 fsck 命令**。 - **检查前卸载文件系统**:在使用`fsck` 检查一个文件系统之前,**确保该文件系统没有被挂载**。对已挂载或正在使用的文件系统运行`fsck`可能导致数据损坏。卸载后进行检查,检查完成再重新挂载即可。 - **备份数据**:在执行`fsck`之前,如果可能,最好备份重要数据。 - **选择正确的文件系统类型**:某些情况下,需要指定正确的文件系统类型,如`fsck.ext4`, `fsck.vfat`等。 - **系统启动时的检查**:大多数 Linux 系统在启动时会自动运行`fsck`来检查文件系统的完整性。 <br><br><br> # 存储设备及磁盘空间相关 - `df` **只显示已挂载的分区和文件系统信息,不会显示未格式化、未挂载的设备和文件系统**。 - 要查看所有硬盘和分区的信息,包括**未格式化、未挂载的**,可以使用`lsblk` 或 `sudo fdisk -l` 命令 > [!summary] 命令总结: > > - 查看**所有存储设备**(包括未格式化/未挂载的)的**分区情况**、**设备类型**、**总大小**、**挂载点**,使用`lsblk` ; > - 查看所有存储设备(包括未格式化/未挂载的)及其**分区的详细信息**,例如分区类型(如主分区、扩展分区)、大小、起始和结束扇区等,使用 `sudo fdisk -l` **查看磁盘分区表**。 > - 查看存储设备的**UUID**、**文件系统类型**,使用 `blkid` ; > - 查看所有**已挂载的**文件系统的存储**空间使用情况**,使用`df -h`; <br><br> # 磁盘存储空间占用情况 > [!caution] > > 关于文件大小: > > 在**文件系统**中,存储空间以 "**==固定大小的块(block)==**" 进行分配。 > **文件系统所能分配给文件的最小存储空间**即为 "**一个块的大小**(无论文件实际内容多大,至少也要占一个完整块大小)。 > 根据文件系统的不同,块大小有 512 字节,1KB、2KB 或 4KB 等,其中**典型的Linux 系统采用的块大小为 1KB**。 > > 当文件写入到 "磁盘" 或其他存储介质时,**磁盘存储空间**同样以 "**固定大小的块(称之为分配单元)**"进行分配。 > > "**磁盘的分配单元**" 与 "**文件系统的分配块**" 二者的大小并不一定相等: > 假设 Linux 文件系统的块大小为 1K,而磁盘分配单元为 4K,则一个只有 1 个字符(1 字节)的文件实际要占用 4K 的磁盘空间。 > > ![[_attachment/02-开发笔记/11-Linux/Linux 命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-FF0087C3213B8449ABE96BEB3BDF96D0.png|216]] > > > 下述命令显示的 "**文件大小**" 即是指其 "**==实际占用的磁盘空间==**",因此其大小不会小于**磁盘空间的分配单元大小**(例如 4KB) > <br> #### 查看指定目录下的文件占用的磁盘空间大小 ###### ls 命令 - `$ ls -sh [NAME...]`: 显示**当前目录或指定目录下各个文件所占用的磁盘空间大小**,或**指定文件所占用的磁盘空间大小** ![[02-开发笔记/11-Linux/Linux 命令行/Linux-文件与目录相关命令#^x14wwr]] ###### du 命令 > `du`:disk usage - `$ du [OPTION] [NAME...]`:显示**当前目录或指定目录下各个文件所占用的磁盘空间大小** - `-h`:human-readable,即以 MB、GB 等单位显示大小 - `-s`:只显示 "**总和**" ```shell du # 显示当前目录下所有文件、目录和子目录的磁盘占用情况 du -hs # 显示当前目录已占用的磁盘空间 -s: 汇总 -h: 以M和G为单位; du -hd 1 | sort -hr # 查看当前目录下各子目录的磁盘占用情况, 按占用空间倒序排序 ``` ![[_attachment/02-开发笔记/11-Linux/Linux 命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-08941BA405D886154FDCE99A15FA6ABD.png|231]] <br> #### 查看已挂载文件系统的磁盘存储空间使用情况 ###### df 命令 > df:disk free-space - `$ df [OPTION]... [FILE]...`: 查看 **每个文件系统** 已使用的磁盘空间及剩余可用磁盘空间 - `-h`:human-readable,即以 MB、GB 等单位显示大小 - `-T`:显示文件系统类型 - `-t type`:只显示指定文件系统的磁盘剩余空间 > [!info] > 显示信息如下,包括:**设备文件名、总大小、已使用、可用、使用率、挂载点**。 > > ![[_attachment/02-开发笔记/11-Linux/Linux 命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-0778C4C69953FAACDCCFCDB982E73B8A.png|459]] > <br><br><br> # 查看硬盘和分区信息 #### 查看存储设备的 UUID 及文件系统类型 > 未格式化的存储设备没有 UUID,`blkid` 命令对其可能无输出,或者只显示其设备文件名。 - `$ blkid`:查看所有存储设备的 UUID #### 查看块设备相关信息——blkid `$ blkid` 查看所有块设备的相关信息。 显示信息包括: - **设备名称** - **UUID**(格式化创建文件系统时生成的唯一标识符) - **文件系统类型** - **标签**(如果分区有LABEL) - 分区信息() - 块大小(BLOCK_SIZE) > [!example] > ![image-20231107154943725|894](_attachment/02-开发笔记/11-Linux/Linux%20命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-F98C4B99C6C560382566889380B6D431.png) <br> #### 查看块设备及使用情况——lsblk `$ lsblk` 查看**所有可用的块设备** (list block devices)信息 `$ lsblk /dev/sda1` 查看指定块设备信息 包含信息: - **磁盘设备名称**(如`sda`)及其分区(如`sda1`、`sda2`等) - 每个设备或分区的**挂载点**(MountPoints) - 磁盘和分区的**大小** - **设备类型**(磁盘`disk`、分区`part`、`loop`、逻辑卷`lvm`等) > [!example] > > ![image-20231107130231987|546](_attachment/02-开发笔记/11-Linux/Linux%20命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-75B27A2184BF88ECF83FE0B812EF6468.png) > > [!example] `-f` 参数附带显示磁盘/分区的文件系统类型,空间使用率。 > ![image-20231107144345926|669](_attachment/02-开发笔记/11-Linux/Linux%20命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-FA5598CDF2E1879645975A0E912A5F03.png) <br> #### 查看磁盘分区——fdisk `$ sudo fdisk -l` 查看**磁盘分区表** **只包含磁盘及其分区本身的信息**,不包含文件系统相关的内容。 > [!example] > ![image-20231107130122575|414](_attachment/02-开发笔记/11-Linux/Linux%20命令行/Linux-文件系统与磁盘管理相关命令.assets/IMG-Linux-文件系统与磁盘管理相关命令-FCD5EEF3790CD18E7CC7299A49A28311.png) - 每个磁盘的设备标识符(如`/dev/sda`) - 磁盘总大小 - 磁盘上每个分区的信息,包括分区类型(如主分区、扩展分区)、大小、起始和结束扇区等 ```shell sudo fdisk -l # 列出所有可用磁盘及其分区的详细信息 ``` <br> #### 分区管理 - `$ sudo fdisk /dev/sda` 使用 fdisk 为指定设备创建分区 - `$ sudo gdisk /dev/sda` 使用 gdisk 为指定设备创建分区 - `$ sudo parted` 启用parted分区管理工具,进入交互模式。在交互模式下可执行`print` 、`resizepart`、`mklabel` 、`mkpart` 、`quit`等命令。 <br> #### LVM 逻辑卷管理 - `pvcreate`, `pvdisplay`, `pvremove`:用于管理物理卷。 - `vgcreate`, `vgdisplay`, `vgextend`, `vgreduce`:用于管理卷组。 - `lvcreate`, `lvextend`, `lvreduce`, `lvremove`:用于管理逻辑卷。 ```shell # 创建物理卷PV sudo pvcreate /dev/sdc1 /dev/sdd1 /dev/sde1 # 创建卷组VG: 创建时可指定将多个PV加入VG sudo vgcreate vg00 /dev/sdc1 /dev/sdd1 # 创建逻辑卷LV. 将生成一个设备文件, 例如 sudo lvcreate -L 1g -v vg00 # -L指定逻辑卷大小 # 查看逻辑卷信息 sudo lvdisplay /dev/vg00/lvo10 # 格式化LV SUDO mkfs.ext4 /dev/vg00/lvo10 # 挂载LV: 临时挂载用mount, 持久化挂载则添加到/etc/fstab文件 ``` <br><br><br> # 参考资料 # Footnotes