存储管理与LVM逻辑卷管理:从入门到实战
硬盘类型与选择机械硬盘HDD和固态硬盘SSD在特性上存在显著差异。HDD采用磁头读写旋转盘片的方式具有容量大、价格低的优势但速度较慢且抗震性差。SSD基于闪存芯片读写速度快、抗震性好但价格较高且有写入寿命限制。生产环境中建议将SSD用于操作系统和数据库等对IO性能要求高的场景HDD则适合冷数据存储和备份。设备命名规范Linux系统对不同接口类型的存储设备采用标准化的命名方式SATA/SCSI/SAS设备/dev/sd[a-z]如/dev/sdaVirtIO虚拟化设备/dev/vd[a-z]如/dev/vdaNVMe设备/dev/nvme[控制器编号]n[命名空间]如/dev/nvme0n1NVMe分区/dev/nvme[控制器编号]n[命名空间]p[分区号]如/dev/nvme0n1p1查看当前系统存储设备lsblk fdisk -l ls -l /dev/sd*分区表对比MBR和GPT是两种主流分区表格式MBR最大支持2TB磁盘最多4个主分区无备份和校验机制GPT支持超大容量8ZB最多128个分区具有分区表备份和CRC校验新部署系统建议使用GPT分区表特别是在使用UEFI固件的环境中。分区管理partedparted工具支持交互式和非交互式操作适用于MBR和GPT分区表。创建GPT分区parted /dev/sdb mklabel gpt parted /dev/sdb mkpart primary xfs 2048s 10GB parted /dev/sdb mkpart primary xfs 10GB 20GB查看分区信息parted /dev/sdb print lsblk blkid文件系统管理常见文件系统特性对比XFSRHEL默认文件系统支持大容量和在线扩容EXT4通用文件系统支持在线缩容exFAT适合跨平台数据交换格式化分区mkfs.xfs /dev/sdb1 mkfs.ext4 /dev/sdb2 xfs_info /dev/sdb1挂载配置临时挂载mkdir /mnt/data mount /dev/sdb1 /mnt/data umount /mnt/data永久挂载/etc/fstabUUID0cc51738-f869-4864-b861-6d5449f6a4bc /mnt/data xfs defaults 0 0 mount -aLVM管理创建物理卷、卷组和逻辑卷pvcreate /dev/sdb1 vgcreate vg_data /dev/sdb1 lvcreate -n lv_data -L 10G vg_data mkfs.xfs /dev/vg_data/lv_data扩展逻辑卷lvextend -L 5G /dev/vg_data/lv_data xfs_growfs /mnt/data存储管理最佳实践生产环境建议使用UUID而非设备名进行挂载关键数据目录应单独分区如/var、/home定期监控存储空间使用情况对于数据库应用考虑使用noatime挂载选项提升性能四、挂载文件系统4.1 临时挂载mount命令# 创建挂载点 mkdir -p /mnt/data /mnt/logs # 临时挂载 mount /dev/sdb1 /mnt/data mount /dev/sdb2 /mnt/logs # 带选项挂载只读 禁止执行 mount -o ro,noexec /dev/sdb1 /mnt/data # 在线重新挂载切换为读写 mount -o remount,rw /mnt/data # 查看挂载情况 df -Th | grep sdb mount | grep sdb # 卸载 umount /mnt/data umount /mnt/logs4.2 永久挂载/etc/fstab/etc/fstab文件的标准格式设备 挂载点 文件系统 选项 dump pass字段详细说明设备建议使用UUID或LABEL标识设备名如/dev/sdb1可能随系统启动顺序变化挂载点必须存在的目录路径文件系统xfs/ext4/swap等实际文件系统类型选项defaultsrw,suid,dev,exec,auto,nouser,async的组合简写dump备份工具dump的标记位0表示忽略passfsck检查顺序根分区应为1其他分区为20表示不检查配置示例# 获取设备UUID和LABEL blkid /dev/sdb1 # 编辑fstab文件 vim /etc/fstab # 添加以下内容使用UUID UUID0cc51738-f869-4864-b861-6d5449f6a4bc /mnt/data xfs defaults 0 0 LABELlogs_disk /mnt/logs ext4 noexec 0 0 # 测试fstab配置 mount -a # 查看结果 df -hT4.3 高级挂载选项常用挂载选项组合defaults等价于rw,suid,dev,exec,auto,nouser,asyncnoatime禁止记录访问时间提升IO性能nodiratime禁止目录访问时间记录nobarrier禁用写入屏障仅用于带电池的RAID控制器_netdev网络设备挂载时等待网络就绪生产环境建议配置UUIDxxx /data xfs rw,noatime,nodiratime,allocsize8m,inode64 0 04.4 处理挂载错误常见问题解决方法# 当出现target is busy错误时 lsof D /mnt/data # 查看占用进程 fuser -vm /mnt/data # 替代方案 # 修复文件系统错误卸载状态下 xfs_repair /dev/sdb1 fsck.ext4 -p /dev/sdb2 # 强制卸载危险操作 umount -l /mnt/data # 延迟卸载 umount -f /mnt/data # 强制卸载存储管理与LVM逻辑卷管理基础LVMLogical Volume Manager是Linux系统中用于管理磁盘存储的高级工具允许动态调整卷大小、快照备份等操作。核心概念物理卷PV物理磁盘或分区通过pvcreate初始化为LVM物理卷。卷组VG由多个物理卷组成的存储池通过vgcreate创建。逻辑卷LV从卷组中划分的逻辑存储单元通过lvcreate创建并挂载使用。LVM实战步骤初始化物理卷pvcreate /dev/sdX # 将磁盘或分区初始化为物理卷创建卷组vgcreate vg_name /dev/sdX # 使用物理卷创建卷组划分逻辑卷lvcreate -L 10G -n lv_name vg_name # 从卷组分配10G空间创建逻辑卷格式化并挂载mkfs.ext4 /dev/vg_name/lv_name # 格式化逻辑卷 mkdir /mnt/lv_mount mount /dev/vg_name/lv_name /mnt/lv_mount # 挂载到目录扩展逻辑卷动态扩容lvextend -L 5G /dev/vg_name/lv_name # 增加5G空间 resize2fs /dev/vg_name/lv_name # 调整文件系统大小ext4文件权限配置要点权限基础用户/组/其他通过chmod设置读r4、写w2、执行x1权限。特殊权限SUID4、SGID2、Sticky Bit1。常用命令chmod 755 /path/to/dir # 设置目录权限为rwxr-xr-x chown user:group /path/file # 修改文件所有者和组ACL高级权限setfacl -m u:user:rwx /path # 为用户添加ACL权限 getfacl /path # 查看ACL规则实战场景示例场景1动态扩展存储新增磁盘/dev/sdb并初始化为物理卷。将其加入现有卷组vg_data。扩展逻辑卷lv_home并在线调整文件系统。场景2批量修改权限find /var/www -type d -exec chmod 755 {} \; # 目录权限批量设置 find /var/www -type f -exec chmod 644 {} \; # 文件权限批量设置通过LVM和权限管理的结合可实现灵活的资源分配与安全控制适应不同业务需求。#!/bin/bash # 项目目录权限配置实战脚本 # 作者Linux权限教程 # 功能创建项目组和用户配置项目目录权限验证权限继承 echo 项目目录权限配置实战 echo 1. 创建组和用户带密码设置 echo 1. 创建项目组和用户... groupadd -f project_team # 创建项目组 useradd -m -s /bin/bash -g project_team dev_user1 # 创建开发用户1 useradd -m -s /bin/bash -g project_team dev_user2 # 创建开发用户2 useradd -m -s /bin/bash test_user # 创建测试用户不在项目组 设置用户密码生产环境应使用更安全的方式 echo dev_user1:Password123 | chpasswd echo dev_user2:Password123 | chpasswd echo test_user:Password123 | chpasswd echo ✓ 组和用户创建完成 echo 2. 创建项目目录并设置权限 echo 2. 创建项目目录并设置权限... PROJECT_DIR/opt/my_project mkdir -p $PROJECT_DIR 设置目录所有者为root所属组为project_team chown root:project_team $PROJECT_DIR 设置目录权限所有者rwx组rwx其他人无权限770 chmod 770 $PROJECT_DIR 设置SGID位使目录下新建文件自动继承组权限 chmod gs $PROJECT_DIR echo 项目目录: $PROJECT_DIR echo 权限设置: $(ls -ld $PROJECT_DIR) echo ✓ 项目目录权限配置完成 echo 3. 创建测试文件验证权限继承 echo 3. 创建测试文件验证权限继承... 切换到dev_user1创建文件 sudo -u dev_user1 touch $PROJECT_DIR/file_by_dev1.txt sudo -u dev_user1 echo 这是dev_user1创建的文件 $PROJECT_DIR/file_by_dev1.txt 切换到dev_user2创建文件 sudo -u dev_user2 touch $PROJECT_DIR/file_by_dev2.txt sudo -u dev_user2 echo 这是dev_user2创建的文件 $PROJECT_DIR/file_by_dev2.txt echo 创建的文件列表 ls -l $PROJECT_DIR/ echo ✓ 测试文件创建完成 echo 4. 权限验证步骤 echo 4. 权限验证测试... echo echo 测试1: dev_user1 读取自己创建的文件 sudo -u dev_user1 cat $PROJECT_DIR/file_by_dev1.txt if [ $? -eq 0 ]; then echo ✓ dev_user1 可以读取自己的文件 else echo ✗ dev_user1 无法读取自己的文件 fi echo echo 测试2: dev_user1 读取 dev_user2 创建的文件 sudo -u dev_user1 cat $PROJECT_DIR/file_by_dev2.txt if [ $? -eq 0 ]; then echo ✓ dev_user1 可以读取组内成员的文件SGID生效 else echo ✗ dev_user1 无法读取组内成员的文件 fi echo echo 测试3: dev_user2 修改 dev_user1 创建的文件 sudo -u dev_user2 echo 追加内容 by dev_user2 $PROJECT_DIR/file_by_dev1.txt if [ $? -eq 0 ]; then echo ✓ dev_user2 可以修改组内成员的文件 else echo ✗ dev_user2 无法修改组内成员的文件 fi echo echo 测试4: test_user非项目组成员尝试读取文件 sudo -u test_user cat $PROJECT_DIR/file_by_dev1.txt 2/dev/null if [ $? -eq 0 ]; then echo ✗ test_user 可以读取文件权限配置有问题 else echo ✓ test_user 无法读取文件权限正确 fi echo echo 测试5: test_user 尝试删除文件 sudo -u test_user rm $PROJECT_DIR/file_by_dev1.txt 2/dev/null if [ $? -eq 0 ]; then echo ✗ test_user 可以删除文件权限配置有问题 else echo ✓ test_user 无法删除文件权限正确 fi echo echo 测试6: 验证SGID位是否生效 NEW_FILE$PROJECT_DIR/test_sgid.txt sudo -u dev_user1 touch $NEW_FILE FILE_GROUP$(ls -l $NEW_FILE | awk {print $4}) if [ $FILE_GROUP project_team ]; then echo ✓ SGID生效新文件自动继承目录所属组(project_team) else echo ✗ SGID未生效新文件所属组为 $FILE_GROUP fi echo 清理可选 echo 5. 清理测试环境... read -p 是否清理测试用户和目录(y/n): -n 1 -r echo if [[ $REPLY ~ ^[Yy]$ ]]; then userdel -r dev_user1 userdel -r dev_user2 userdel -r test_user groupdel project_team rm -rf $PROJECT_DIR echo ✓ 测试环境已清理 else echo 测试环境保留可手动检查 echo 项目目录: $PROJECT_DIR echo 测试用户: dev_user1, dev_user2, test_user echo 项目组: project_team fi echo echo 脚本执行完成 echo 总结通过本脚本可以验证 echo 1. 组内成员可以互相读写文件 echo 2. 非组用户无法访问项目目录 echo 3. SGID确保新文件自动继承组权限 echo 4. 权限继承和边界测试完整脚本使用说明以 root 用户身份运行此脚本sudo bash project_permission_setup.sh脚本会创建项目组project_team和三个测试用户创建项目目录/opt/my_project并设置权限为 770 SGID自动执行6个权限验证测试验证组内协作和外部隔离最后提供清理选项避免留下测试数据关键点说明SGID权限目录设置gs后任何用户在该目录创建的文件都会自动继承目录的所属组权限770所有者(root)和组(project_team)有完全权限其他用户无任何权限权限验证脚本自动用不同用户身份测试读、写、删除操作验证权限配置是否正确生产环境建议实际使用时应使用更安全的密码设置方式并考虑使用 ACL 进行更细粒度的权限控制十、总结Linux 权限模型强大而灵活掌握chmod、chown、特殊权限、umask和 ACL 这些核心工具就能从容应对绝大多数生产环境权限配置需求。建议在虚拟机或容器中多动手实验加深理解。

相关新闻

MMPedestron环境安装

MMPedestron环境安装

1、安装python3.7环境并激活 conda create -n mmpedestron python3.7 conda activate mmpedestron2 、安装pytorch、cuda conda install pytorch1.10.1 torchvision0.11.2 torchaudio0.10.1 cudatoolkit11.3 -c pytorch3 、安装openmim和mmcv pip install openmim -i https://m…

2026/10/15 7:54:06 阅读更多 →
C# Winform 使用SunnyUI包 不同分辨率、百分比缩放解决方案

C# Winform 使用SunnyUI包 不同分辨率、百分比缩放解决方案

1、窗体属性更改 2、设置app.manifest文件的dpiAware 右键项目-》新建文件 更改清单文件如下 <application xmlns"urn:schemas-microsoft-com:asm.v3"><windowsSettings><dpiAware xmlns"http://schemas.microsoft.com/SMI/2005/WindowsSettin…

2026/10/15 22:12:00 阅读更多 →
一文终结Arduino ESP32系列开发板下载失败问题

一文终结Arduino ESP32系列开发板下载失败问题

1. 在IDE内搜索esp32&#xff0c;我下载的是3.0.7 2.下载过程中&#xff0c;会遇到下载缓慢、下载失败的问题&#xff0c;别想着加速和配置IDE代理。根据报错一个个去release地址下载。下载完一次重新点一次安装&#xff0c;根据新的报错中的"https:github...."&…

2026/10/15 22:28:58 阅读更多 →

最新新闻

论文关键词选几条、谁排在前面,拆成8个环节逐项定条数和次序

论文关键词选几条、谁排在前面,拆成8个环节逐项定条数和次序

关键词填几行、放置次序如何安排&#xff0c;直接关系到后来者能否通过数据库检索到这篇论文。根据知学术AIPaperGPT整理的写作支持经验&#xff0c;条数有区间可依、次序有依据可循&#xff0c;两者都能按步骤判断。下文按8个环节依次展开&#xff0c;逐项给出可对照的条数与次…

2026/10/17 2:46:39 阅读更多 →
降AI率不越合规线的三步做法,先划边界、再动刀、后复核

降AI率不越合规线的三步做法,先划边界、再动刀、后复核

降AI率本身不违规&#xff0c;越界的是动作&#xff1a;为了让机器痕迹消失去编数据、造引用、把研究设计一并交出去。把 AI 率压下来的同时不踩线&#xff0c;靠的不是更聪明的工具&#xff0c;而是动作顺序。下面按划边界、动刀、复核三段展开&#xff0c;每段都点明能做与不…

2026/10/17 2:46:39 阅读更多 →
手把手讲解:论文研究局限写在哪、写几条?5 步定下归属位置与条目数量

手把手讲解:论文研究局限写在哪、写几条?5 步定下归属位置与条目数量

研究局限不是走形式的收尾套话&#xff0c;它在讨论章里有固定的归属层级&#xff0c;条目数量也与篇幅和稿约挂钩。下面把"放在哪、列几条、怎么写"拆成 5 个可执行动作&#xff0c;并说明知学术AIPaperGPT在学术语言表达与深度改写上的支撑点。工具准备&#xff1a…

2026/10/17 2:46:39 阅读更多 →
五类高尔夫硬件的地图集成:各自的坑在哪里

五类高尔夫硬件的地图集成:各自的坑在哪里

给高尔夫测距仪加球场地图&#xff0c;和给球包车加&#xff0c;是两件完全不同的事。前者的瓶颈在刷新率&#xff0c;后者在批量授权。同一份单洞 100KB 的高尔夫地图数据&#xff0c;落到五类硬件上&#xff0c;会踩五种不同的坑。这篇不列功能清单&#xff0c;只把每一类终端…

2026/10/17 2:46:39 阅读更多 →
伺服电机(2)

伺服电机(2)

伺服电动机硬件接线&#xff1a;注意&#xff1a;伺服有自己的调试软件&#xff0c;备注:外接再生电阻&#xff0c;主要是用于垂直轴&#xff0c;停止时由于重力作用下降&#xff0c;要加再生电阻&#xff0c;如果不加&#xff0c;会过电压报警。外置再生电阻的作用&#xff0c…

2026/10/17 2:46:39 阅读更多 →
商业 API 实现「换人跳舞视频」详细方案

商业 API 实现「换人跳舞视频」详细方案

商业 API 实现「换人跳舞视频」详细方案目标&#xff1a;输入「一段别人的跳舞视频&#xff08;动作来源&#xff09;」「一张目标人物图&#xff08;外观来源&#xff09;」&#xff0c;输出「目标人物跳同一支舞的视频」。 路线 A 的核心是用已托管的 Motion Control / 动作模…

2026/10/17 2:45:39 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介&#xff1a;《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南&#xff0c;重点围绕V3与R1两款模型的能力差异与适用场景展开&#xff0c;帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件&#xff0c;压缩包大小约311KB&#xff0c;篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介&#xff1a;这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档&#xff0c;共收录两百余条可直接套用的润色指令&#xff0c;涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度&#xff0c;并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介&#xff1a;本资源是一份基于OpenCV的本科课程设计完整报告&#xff0c;面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生&#xff0c;解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →