如何对Linux进行本地的存储管理

📅 2026/7/6 14:25:46
如何对Linux进行本地的存储管理
一.磁盘1.1.磁盘的介绍磁盘的基本概念磁盘是一种用于存储数据的物理设备通常分为机械硬盘HDD和固态硬盘SSD两大类。HDD通过磁性盘片和读写头存储数据而SSD使用闪存芯片无机械部件速度更快但成本较高。磁盘的工作原理HDD数据存储在旋转的磁性盘片上通过机械臂上的读写头访问。访问时间受盘片转速如5400 RPM、7200 RPM和寻道时间影响。SSD基于NAND闪存通过电子信号读写数据无机械延迟随机访问速度显著高于HDD。磁盘的性能指标容量以GB或TB为单位表示存储空间大小。速度HDD转速RPM和缓存大小影响性能。SSD读写速度如500MB/s以上和IOPS每秒输入输出操作数。接口类型SATA、NVMePCIe等影响数据传输速率。磁盘的维护与管理碎片整理HDD定期整理可提升性能但对SSD无效且可能损害寿命。TRIMSSD启用TRIM命令可优化SSD性能并延长寿命。健康监测使用工具如CrystalDiskInfo检查SMART状态预警潜在故障。磁盘的常见问题与解决方案速度变慢HDD清理碎片或检查坏道。SSD确保TRIM启用避免过度写入。数据丢失立即停止使用并尝试恢复工具如Recuva。噪音或发热检查散热或备份数据以防硬件故障。磁盘的未来发展趋势QLC SSD更高存储密度成本更低但写入寿命较短。NVMe普及PCIe 4.0/5.0接口进一步提升速度如7GB/s以上。HAMR技术HDD热辅助磁记录技术突破HDD容量限制。1.2.磁盘结构图1.盘片Platter盘片是圆形的硬质合金或玻璃基板表面涂有磁性材料。数据通过磁化盘片表面的微小区域来存储。多个盘片通常堆叠在同一个主轴上由马达驱动高速旋转转速可达7200 RPM甚至更高。盘片数量直接影响磁盘的总容量。2.磁头Read/Write Head每个盘片对应两个磁头上下表面各一个固定在悬臂上。磁头通过磁盘旋转产生的气垫悬浮在盘片表面上方约$3 \sim 10, \text{nm}$处远小于头发直径。通电时磁头通过电磁感应改变局部磁场方向写入或检测磁场变化读取。3.磁道、扇区与柱面磁道Track盘片表面的一组同心圆环数据沿圆周存储。半径不同的磁道存储密度相同因此外圈磁道物理长度更长。扇区Sector磁道被等分为若干弧段通常512字节或4K字节是磁盘的最小读写单元。跨扇区读取需满足1.3.MBR分区和GPT分区主引导记录 (MBR)定义与发展MBRMaster Boot Record是一种较为传统的磁盘分区方案。它最早应用在IBM的个人计算机中。它直接在磁盘的最开始存储了分区表和启动引导代码。结构特点引导代码位于磁盘的第一个扇区512字节的前446字节用于加载操作系统。分区表占据引导扇区其后64字节每个分区条目分配16字节因此只能容纳最多4个主分区纪录或者3个主分区加1个扩展分区。签名值末尾2字节用来标识磁盘的有效性。地址限制它使用32位的分区边界地址存储方式寻址空间最多为$2^{32}$个逻辑块地址LBA。若每个LBA大小为512字节则其最大可管理的硬盘容量为 $$2^{32} \times 512 \text{ 字节} 2^{32} \times 2^{-9} \text{ TiB} \approx 2\text{ TiB}$$引导支持系统 通常兼容较为古老的BIOS启动模式。可靠性 分区表中没有备份机制因此当引导扇区受损会导致整个磁盘分区表丢失。GUID 分区表 (GPT)定义与标准GPTGUID Partition Table是一种新型的标准被制定为UEFI固件系统规范的一部分。它代表了现代磁盘分区发展方向。数据结构特点完整性保护在磁盘头部LBA 0仍保留一个安全MBR目的是防止传统设备误识别全GPT磁盘为未分区磁盘。主表位置实效分区表存储在LBA 1其后紧跟的是分区描述项通常从LBA 2起。分区描述每个分区描述项分配128字节即理论上可以管理极多的分区实际系统如 Windows 通常最多允许128个。冗余备份在磁盘尾部存储有完整的备份分区头和表项显著增强了容错能力。地址支持能力使用64位的存储表示分区边界能管理的最大容量理论上为 $$2^{64} \times 512 \text{ 字节} \approx 9.4 \text{ ZB泽字节} \quad (\text{即 } 1\text{ ZB}2^{70}\text{ 字节})$$ 远超现有硬盘容量需求。硬件与固件支持 主要是为配合现代UEFI引导方式设计。设计健壮性 利用循环冗余校验码CRC32检查和关键数据结构具有良好的冗余特性。二.在虚拟机中添加硬盘在顶部任务栏选择虚拟机选择设置在设置中选择添加选择添加硬盘之后我们可以选择硬盘类型1. IDEIntegrated Drive Electronics兼容性老式并行接口PATA使用40/80针排线缺点最大传输速率133MB/s线缆易受干扰2. SCSISmall Computer System Interface定位企业级标准支持热插拔性能理论速率640MB/sUltra-640但实际受限于生态成本协议执行SCSI命令集支持多设备链式连接3. SATASerial ATA革命性串行总线替代并行7针细线抗干扰兼容性机械硬盘主力接口4. NVMeNon-Volatile Memory Express颠覆设计PCIe总线直连CPU绕过SATA控制器性能本质{吞吐量} \propto \text{PCIe通道数}协议优化64K命令队列深度SATA仅32场景M.2物理接口常见高端SSD标配然后选择创建新虚拟磁盘然后按需求分配内存大小即可这样我们就成功在虚拟机上创建了我们的硬盘三.用指令对磁盘进行管理3.1.对磁盘使用情况查询的命令#lsblk //列出块设备List Block Devices的 Linux 命令用于查看系统中的磁盘、分区、逻辑卷等存储设备信息。它以树状结构显示设备的层级关系帮助用户快速了解存储配置。-f显示文件系统类型如ext4、ntfs-l以列表形式展示非树状-o指定输出的字段如NAME,SIZE,FSTYPE,MOUNTPOINT-d仅显示物理磁盘不显示分区3.2划分磁盘分区#fdisk //fdiskformat disk是一款在类 Unix 操作系统如 Linux中使用的命令行磁盘分区工具。它的主要功能是创建、查看、管理或修改磁盘的分区表 (partition table)。p:打印分区表 (print)- 显示当前磁盘的分区情况包括分区号、起始扇区、结束扇区、分区大小、分区类型ID和类型名称。n:创建新分区 (new)- 按照提示指定分区类型主分区primary或扩展分区extended/逻辑分区logical、起始扇区、结束扇区或分区大小。d:删除分区 (delete)- 删除指定的分区先选择分区号。t:改变分区类型 (type)- 更改指定分区的类型ID例如将Linux分区类型改为Linux swap。w:写入更改并退出 (write)- 将对分区表的修改永久写入磁盘然后退出。执行此操作前务必确认!q:放弃更改并退出 (quit)- 放弃所有未写入的更改并退出。m:显示帮助信息 (help)- 列出所有可用命令的简要说明。l:列出已知分区类型 (list)- 显示不同分区类型ID如83对应Linux,82对应Linux swap的列表。v:验证分区表 (verify)- 检查分区表的有效性。g:创建新的空 GPT 分区表 (gpt)- 较新版本清除现有分区结构创建一个新的GPT分区表。o:创建新的空 DOS 分区表 (dos/mbr)- 清除现有分区结构创建一个新的MS-DOSMBR分区表。剩下的操作就在此不再演示3.3.MBR格式分区使用指令#fdisk /dev/sde这里你前面创建的时候你有什么磁盘就用那个磁盘这样我们就成功在磁盘sde中创建了主分区1然后我们刷新激活一下分区3.4.GPT式分区#dd if/dev/zero of/dev/sde bs1M count1 //这里我们先用这条命令还原掉我们之前对磁盘的命令这样一个以GPT形式的分区就划分好了3.5.gdisk#gdisk //gdisk 是一个用于管理 GUID分区表GUID Partition Table, GPT的命令行工具在 Linux 和 Unix-like 系统上广泛使用。它提供了高效的分区操作能力允许用户创建、编辑和删除 GPT分区。GPT是一种现代分区表格式相比于传统的 MBRMaster Boot Record它支持更大的磁盘容量超过2TB和更多的分区数量最高128个并能提供更好的数据保护机制。o创建新的GPT分区表。n添加一个新分区。d删除一个分区。p打印当前分区表信息。w写入更改到磁盘。q退出而不保存更改。四.在新建分区制作文件系统我们先使用# lsblk -f命令查看信息对该磁盘分区进行格式化创建文件系统五.对设备进行挂载和卸载5.1.挂载mount命令用于将文件系统挂载到 Linux 目录树中的指定挂载点。其基本语法为mount [选项] [设备名] [挂载点]挂载时可以指定多种参数来调整挂载行为以下是一些常用且重要的参数1. 指定文件系统类型 (-t)使用-t选项明确指定要挂载的文件系统类型。如果未指定mount会尝试自动检测。# 将 /dev/sdb1 以 ext4 文件系统类型挂载到 /mnt/data mount -t ext4 /dev/sdb1 /mnt/data 挂载 NFS 共享 mount -t nfs 192.168.1.100:/shared /mnt/nfs常见文件系统类型ext4,xfs,btrfs,ntfs,vfat,nfs,cifs(SMB),iso9660(光盘)。2. 指定挂载选项 (-o)-o选项用于指定一个或多个以逗号分隔的挂载选项这些选项控制文件系统的访问和行为。# 以只读方式挂载 mount -o ro /dev/sdb1 /mnt/backup 指定多个选项读写、不执行、异步 mount -o rw,noexec,async /dev/sdb1 /mnt/data常用挂载选项rw/ro: 读写 / 只读。noexec/exec: 禁止 / 允许执行该文件系统上的二进制文件。nosuid: 忽略 SUID 和 SGID 权限位。nodev: 不解释该文件系统上的字符或块特殊设备。async/sync: 异步 / 同步写入。atime/noatime/relatime: 控制访问时间 (atime) 的更新策略。noatime可提升性能。defaults: 使用默认选项rw, suid, dev, exec, auto, nouser, async。user: 允许普通用户挂载。nofail: 即使设备不存在系统启动时也不报错。3. 重新挂载已挂载的文件系统 (-o remount)用于更改已挂载文件系统的选项而无需先卸载。# 将已挂载的 /mnt/data 重新挂载为只读 mount -o remount,ro /mnt/data4. 绑定挂载 (--bind)将一个目录挂载到另一个目录使两个目录内容相同。# 将 /home/user 绑定到 /mnt/user mount --bind /home/user /mnt/user5. 查看已挂载信息使用不带参数的mount命令或查看/proc/mounts、/etc/mtab文件。# 查看所有挂载点 mount 查看特定设备的挂载信息 mount | grep /dev/sdb1正常创建目录并挂载不明白的可以看我之前的博客我们查看一下挂载信息5.2.卸载#umount /dev/sde1可以看到卸载完成5.3如何永久挂载/etc/rc.d/rc.local 这个文件是开机启动脚本可以把mount命令写入此脚本中此脚本在开机过程中执行很晚/etc/fstab 设备挂载策略文件在开机加载内核后就会被读取六.删除此设备#vim /etc/fstab#在此文件中删除要删除设备的信息#fdisk /dev/sde七.swap分区7.1.查看swap分区#swapon -s7.2.建立swap分区建立 Swap 分区是 Linux 系统中扩展虚拟内存、防止内存不足导致系统崩溃的重要操作。以下是详细的建立步骤步骤一准备分区使用fdisk或gdisk工具创建一个新的分区例如/dev/sdb1。在分区工具中将分区类型更改为Linux swap在fdisk中使用t命令然后选择分区号输入类型代码82。在gdisk中使用t命令然后选择分区号输入类型代码8200。写入更改并退出分区工具fdisk用wgdisk用w。步骤二格式化分区为 Swap使用mkswap命令将分区格式化为 Swap 文件系统# 将 /dev/sdb1 格式化为 Swap sudo mkswap /dev/sdb1执行后系统会显示类似 “Setting up swapspace version 1, size X GiB” 的提示。步骤三启用 Swap 分区使用swapon命令启用新创建的 Swap 分区# 启用 Swap 分区 sudo swapon /dev/sdb1启用后可以使用swapon -s或free -h命令验证 Swap 是否已激活。步骤四设置开机自动挂载永久生效编辑/etc/fstab文件添加以下行# 在 /etc/fstab 末尾添加 /dev/sdb1 none swap defaults 0 0保存文件后下次系统启动时会自动启用该 Swap 分区。步骤五验证 Swap 状态使用以下命令检查 Swap 是否正常工作# 查看 Swap 使用情况 free -h 查看详细的 Swap 分区信息 swapon --show 查看系统内存和 Swap 摘要 cat /proc/swaps注意事项Swap 分区的大小通常建议为物理内存的 1-2 倍但具体取决于系统用途和内存大小。如果使用文件作为 SwapSwap file步骤类似但需要先创建文件并设置权限。在生产环境中建议在系统负载较低时进行 Swap 分区操作。八.df命令df 命令的参数dfdisk filesystem命令用于显示文件系统的磁盘空间使用情况。以下是常用的参数及其功能-h, --human-readable以易读的格式如 KB、MB、GB显示磁盘空间。-a, --all显示所有文件系统包括虚拟文件系统如proc、sysfs。-i, --inodes显示 inode 使用情况而非磁盘空间。-T, --print-type显示文件系统类型如 ext4、xfs、tmpfs。--total在输出末尾添加一行总计信息。-x, --exclude-typeTYPE排除指定类型的文件系统。-t, --typeTYPE仅显示指定类型的文件系统。-l, --local仅显示本地文件系统排除网络文件系统。九.du命令#dudu 命令的常用参数dudisk usage命令用于查看文件和目录的磁盘使用情况。以下是一些常用参数及其用途显示当前目录及其子目录的总磁盘使用情况du -h-h参数以人类可读的格式如 KB、MB、GB显示大小。仅显示当前目录的总大小du -sh-s参数仅显示总计不列出子目录的详细占用情况。显示指定目录的总大小du -sh /path/to/directory可以结合-s和-h参数查看特定目录的总大小。按文件大小排序输出du -h /path/to/directory | sort -h通过管道将du输出传递给sort -h按大小排序显示。排除特定文件或目录du -h --exclude*.log--exclude参数可以跳过符合特定模式的文件或目录。显示文件的磁盘使用情况du -ah-a参数显示所有文件和目录的磁盘使用情况包括单个文件。限制递归深度du -h --max-depth1--max-depth参数限制递归的目录深度例如1表示仅显示当前目录的直接子目录。以千字节KB、兆字节MB或吉字节GB为单位显示du -kKBdu -mMBdu -gGB分别以不同单位显示磁盘使用情况但-h通常更直观。统计所有文件的总大小du -ch-c参数在最后输出所有文件的总计大小。结合 find 命令统计特定文件类型的大小find /path -type f -name *.log -exec du -ch {} | grep total查找特定类型的文件并计算其总大小。十.软硬连接软链接Symbolic Link软链接是一种特殊的文件类型它类似于Windows中的快捷方式。软链接指向另一个文件或目录的路径而不是直接存储数据。软链接可以跨越文件系统甚至可以指向不存在的目标。硬链接Hard Link硬链接是文件系统中同一个文件的多个目录条目。所有硬链接指向同一个inode索引节点即它们实际上是同一个文件的不同名称。硬链接不能跨越文件系统也不能指向目录。十一.在系统中查看文件find命令是Unix/Linux系统中用于查找文件和目录的工具它能递归搜索指定目录下的文件并根据用户提供的条件进行过滤。以下以纯文字形式逐步描述其用法确保结构清晰、真实可靠。1.命令的基本语法find命令的一般格式是首先指定搜索起始路径然后添加一系列的选项和表达式来设置查找条件。例如find /起始路径 -name 文件名表示从/起始路径开始搜索所有名称匹配的文件。2.常见选项和表达式按名称查找使用-name选项后跟文件名模式支持通配符*和?。比如可以输入命令查找所有名称以.txt结尾的文件find /目录 -name *.txt。按类型查找使用-type选项指定文件类型例如-type f表示只查找文件-type d表示只查找目录。按大小查找使用-size选项后跟大小条件如10M表示大于10MB。按时间查找使用-mtime修改时间或-atime访问时间选项例如-mtime -7表示修改时间在7天以内。执行动作使用-exec选项在找到的文件上执行命令例如-exec grep 关键字 {} \;在找到的文件中搜索文字内容。3.实际应用场景举例场景1查找指定文件如果你想在/home目录下找所有名为report.docx的文件你可以写命令find /home -name report.docx。场景2结合多个条件搜索/var/log中大于1GB的日志文件find /var/log -type f -size 1G同时只查找修改超过30天的文件find /var/log -type f -mtime 30。场景3批量处理找到所有空目录后删除它们find /目录 -type d -empty -exec rmdir {} \;。这在清理系统时很有用。4.重要注意事项如果搜索路径中包含空格或特殊字符用引号包裹文件名模式如-name *.jpg。使用-print选项可输出结果列表但默认已启用所以不是必须的。在执行-exec时末尾的{} \;是必须的格式{}表示找到的文件名\;结束命令。find命令功能强大但需小心条件设置以免误操作。在实际使用中可通过查看系统手册了解更深入的选项如man find命令获取帮助。十二.逻辑卷管理12.1制作逻辑卷输入l列出所有选项12.2lvm相关设备查看命令1. 查看物理卷Physical Volumes, PVpvs显示物理卷的简要信息包括 PV 名称、VG卷组归属、大小等。pvdisplay显示物理卷的详细信息如 PV UUID、设备路径、空间使用情况等。2. 查看卷组Volume Groups, VGvgs显示卷组的简要信息包括 VG 名称、包含的 PV 数量、LV逻辑卷数量、总大小等。vgdisplay显示卷组的详细信息如 VG UUID、支持的 LV 最大数量、空间分配策略等。3. 查看逻辑卷Logical Volumes, LVlvs显示逻辑卷的简要信息包括 LV 名称、所属 VG 名称、大小、挂载点等。lvdisplay显示逻辑卷的详细信息如 LV UUID、块设备路径、读写属性等。4. 查看逻辑卷对应的块设备路径lsblk列出所有块设备及其层级关系如物理磁盘 → 物理卷 → 逻辑卷。lvs -o path直接输出 LV 对应的块设备路径如/dev/vg_name/lv_name。lvdisplay | grep LV Path通过筛选命令获取 LV 的设备路径。5. 其他辅助命令vgs -o pv_name显示卷组及其关联的物理卷名称。lvs -o devices显示逻辑卷及其关联的物理卷设备路径。pvscan/vgscan/lvscan分别扫描系统中所有的物理卷、卷组和逻辑卷常用作初始化检查。总结层级关系物理卷PV→ 卷组VG→ 逻辑卷LV。常用命令组合先通过pvs/vgs/lvs查看概要再通过pvdisplay/vgdisplay/lvdisplay查看详细信息。路径映射逻辑卷的访问路径通常为/dev/mapper/vg_name-lv_name或/dev/vg_name/lv_name。