首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
257 阅读
2
麒麟KylinV10离线下载安装包及安装
199 阅读
3
iStoreOS上使用WireGuard
165 阅读
4
麒麟v10系统openssh升级OpenSSH_10.0p2-OpenSSL 3.4.2
62 阅读
5
UNRAID增加和缩小虚拟机虚拟磁盘大小
54 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
登录
Search
标签搜索
nginx
数据库
unraid
PVE
麒麟
dockerfile
同步
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
奥黛丽·逐爱者
累计撰写
128
篇文章
累计收到
21
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
页面
Linux常用
docker常用
关于
搜索到
32
篇与
转载微信公众号文章
的结果
2025-08-30
实战系列一:用 Podman + WireGuard 打造你的下一代轻量级 VPN(UI 可视化管理)
大家好,我是一名从一线打拼出来的老运维,十多年折腾在系统维护、故障抢修、上线发布、运维管理一线,踩过不少坑,也总结了不少实战经验。如果你喜欢这类技术文章,欢迎关注 + 转发支持!大家如果有问题,也可以问问我的智能助手,有可能在以往的文章找到答案哦:有问必答助手在日常运维或个人网络环境搭建中,VPN 是一个绕不开的话题。它不仅能帮你安全访问内网,还能实现多机互联和加密通信。 传统方案很多,比如 OpenVPN、IPSec 等,但近几年一颗新星正在迅速崛起 —— WireGuard。而在容器化浪潮中,我们也有了更轻量、更安全的选择 —— Podman。本篇就是这个实战系列的第一篇:利用 Podman + Podman-Compose 部署 WireGuard 和 WireGuard-UI,快速打造一个可视化 VPN 服务。1️⃣ Podman 和 WireGuard 简介Podman Podman 是一个轻量级容器引擎,号称 “Docker 的无守护进程替代品”。它最大的亮点是 无 root 模式,同时支持 OCI 标准镜像,安全性更高。对运维工程师来说,Podman 的命令几乎完全兼容 Docker,学习成本很低。WireGuard WireGuard 是 Linux 内核中的新一代 VPN 协议,号称“快到飞起的 VPN”。它只有 4000 行左右代码,相比 OpenVPN、IPSec 的十几万行代码更简单、更安全。它采用最先进的加密算法(如 ChaCha20、Curve25519),性能表现极佳,已经成为很多企业和开发者的首选。WireGuard-UI WireGuard 本身配置比较“硬核”,但 WireGuard-UI 提供了 Web 界面,让你可以方便地管理客户端、查看配置二维码,极大降低了使用门槛。2️⃣ 安装 Podman 与 Podman-Compose首先在你的 Linux 服务器上安装 Podman。这里以 CentOS / RHEL 系为例(Ubuntu 也类似):# 更新系统sudo yum -y update# 安装 podmansudo yum -y install podman# 验证版本podman --version# 安装 podman-composepip3 install podman-compose验证安装是否成功:podman-compose version示例如下:[root@ip-172-31-6-116 bin]# pip3 install podman-composeCollecting podman-compose Downloading podman_compose-1.5.0-py3-none-any.whl (47 kB) |████████████████████████████████| 47 kB 388 kB/s Collecting python-dotenv Downloading python_dotenv-1.1.1-py3-none-any.whl (20 kB)Requirement already satisfied: pyyaml in /usr/lib64/python3.9/site-packages (from podman-compose) (5.4.1)Installing collected packages: python-dotenv, podman-composeSuccessfully installed podman-compose-1.5.0 python-dotenv-1.1.1[root@ip-172-31-6-116 bin]# podman-compose versionpodman-compose version 1.5.0podman version 5.5.23️⃣ 使用 Podman-Compose 部署 WireGuard + WireGuard-UI我们用 docker-compose.yml 格式的文件,Podman 可以直接兼容。3.1 创建工作目录mkdir -p ~/wireguard-vpn && cd ~/wireguard-vpn3.2 编写 docker-compose.yml创建 docker-compose.yml,podman-compose 是为了兼容 docker-compose 的生态,所以文件依然是docker-compose.yml:注意:服务端要开放51820/UDP(WireGuard)和5000/TCP UI管理端口version: "3.8"services:wireguard: image:linuxserver/wireguard:latest container_name:wireguard cap_add: -NET_ADMIN -SYS_MODULE environment: -PUID=1000 -PGID=1000 -TZ=Asia/Shanghai -SERVERURL=your.vpn.server.ip -SERVERPORT=51820 -PEERS=5 -PEERDNS=1.1.1.1 -INTERNAL_SUBNET=10.13.13.0 volumes: -./config:/config -/lib/modules:/lib/modules ports: -51820:51820/udp sysctls: -net.ipv4.conf.all.src_valid_mark=1 restart:unless-stoppedwireguard-ui: image:ngoduykhanh/wireguard-ui:latest container_name:wireguard-ui depends_on: -wireguard ports: -5000:5000 volumes: -./config:/data restart: unless-stopped3.3 启动服务执行:podman-compose up -d确认容器运行:podman ps4️⃣ 打开 WireGuard-UI 界面浏览器访问:http://服务器IP:5000进入 UI 界面,你可以:创建和管理客户端配置自动生成二维码,方便手机扫描接入一键导出配置文件这样,一个 Podman 驱动的 WireGuard VPN Server 就搭建完成了!5️⃣ 总结在这篇 实战系列一 中,我们完成了:认识 Podman 与 WireGuard安装 Podman + Podman-Compose使用 compose 管理 WireGuard 与 UI成功打开 Web 界面管理客户端下一篇,我们将深入讲解 WireGuard 配置优化、密钥管理、客户端接入 等实战内容,让你的 VPN 更安全、更高效。END重点提醒因为有你们的关注和反馈,分享才更有意义 ❤️。👉 有需要的朋友可以加我 微信:jack_2013L,记得备注暗号【007】,就能入群和更多小伙伴一起交流~💬 你在日常工作中有没有遇到相同的问题?欢迎在评论区留言,我会挑选一些有意思的留言在下篇文章里展开。✨ 如果觉得内容对你有帮助,别忘了 关注 + 转发,这样你就不会错过后续的实战分享啦!
2025年08月30日
5 阅读
0 评论
0 点赞
2025-08-06
编写 Dockerfile:从入门到精通
引言Dockerfile 是容器化技术的核心组成部分,它能让开发者和 DevOps 工程师将应用程序及其所有依赖项打包成轻量级、可移植的容器。本指南将全面讲解 Dockerfile,从基础概念到高级技巧,最终使您掌握编写高效、安全且适合生产环境的 Dockerfile 所需的技能。1. 什么是 Dockerfile?Dockerfile 是一个纯文本文件,包含一系列用于构建 Docker 镜像的指令。Dockerfile 中的每一行都代表镜像构建过程中的一个步骤。创建的镜像是一个轻量级、可移植且自给自足的环境,包含运行应用程序所需的一切,包括库、依赖项和应用程序代码本身。Dockerfile 的关键组件:基础镜像: 你的 Docker 镜像构建起点。例如,如果你正在构建一个 Python 应用程序,可能会选择 python:3.9 作为基础镜像。应用程序代码与依赖项: 将代码添加到镜像中,并安装依赖项以确保应用程序能正确运行。命令与配置项: 执行命令、设置环境变量以及暴露端口的相关指令。为什么 Dockerfile 很重要?一个 Dockerfile:标准化应用程序的构建和部署方式。确保在不同环境(开发、测试、生产)中的一致性。使应用程序具有可移植性且更易于管理。2. 为什么要学习 Dockerfile?Dockerfile 是容器化的基础,也是 DevOps 工程师的关键技能。以下是学习 Dockerfile 的必要性:1. 跨环境可移植性通过 Dockerfile,您可以一次构建镜像,随处运行。这解决了"在我机器上能运行"的难题。2. 简化的 CI/CD 管道在 Jenkins、GitHub Actions 或 Azure DevOps 等 CI/CD 管道中使用 Dockerfile,实现应用程序构建、测试和部署的自动化。3. 基础设施版本控制如同代码一样,Dockerfile 也可以进行版本控制。基础设施的变更可以被追踪,必要时还能回滚。4. 增强的协作能力团队可以共享 Dockerfile 来确保所有人都在相同的环境中工作。这简化了新开发者或贡献者的上手流程。5. 资源效率与传统虚拟机相比,通过优化 Dockerfile 创建的 Docker 镜像更加轻量化,资源消耗更低。示例:假设一个运行在 Node.js 上的 web 应用。使用 Dockerfile 可以将应用与其所需的 Node.js 特定版本打包在一起,无需开发者在本地安装 Node.js,从而确保所有环境的一致性。3. Dockerfile 基础掌握 Dockerfile 的基础知识对于编写高效实用的文件至关重要。让我们一起来探索这些基础要素。3.1 Dockerfile 语法Dockerfile 包含简单的指令,其中每个指令执行特定的操作。其语法通常为:INSTRUCTION arguments例如:FROM ubuntu:20.04COPY . /appRUN apt-get update && apt-get install -y python3CMD ["python3", "/app/app.py"]关键要点:像 FROM、COPY、RUN 和 CMD 这样的指令是区分大小写的,必须用大写字母书写。每条指令都会在 Docker 镜像中创建一个新的层 。3.2 常用指令让我们分解一些最常用的指令:FROM FROM python:3.9指定构建的基础镜像。示例:Dockerfile 必须从 FROM 指令开始,多阶段构建除外。COPY COPY requirements.txt /app/将文件或目录从主机系统复制到容器中。示例:RUN RUN apt-get update && apt-get install -y curl在构建过程中执行命令。常用于安装软件包。示例:CMD CMD ["python3", "app.py"]指定容器启动时运行的默认命令。示例:WORKDIR WORKDIR /usr/src/app设置容器内部的工作目录。示例:EXPOSE EXPOSE 8080记录容器监听的端口。示例:4. 中级 Dockerfile 概念掌握基础知识后,就可以开始使用 Dockerfile 的高级功能来优化和增强构建过程。4.1 构建多阶段 Dockerfile多阶段构建允许您通过分离构建和运行时环境来创建精简的生产镜像。阶段 1(构建器): 安装依赖项、编译代码并构建应用程序。阶段 2(生产环境): 仅从构建阶段复制必要的文件。示例:# Stage 1: Build the applicationFROM node:16 AS builderWORKDIR /appCOPY package.json .RUN npm installCOPY . .RUN npm run build# Stage 2: Run the applicationFROM nginx:alpineCOPY --from=builder /app/build /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]优势:更小的生产环境镜像。将构建工具排除在运行时环境之外,提升安全性。4.2 使用环境变量环境变量使 Dockerfile 更具灵活性和可复用性。示例:ENV APP_ENV=productionCMD ["node", "server.js", "--env", "$APP_ENV"]使用 ENV 来定义变量。使用 docker run -e 在运行时覆盖变量: docker run -e APP_ENV=development myapp4.3 添加健康检查HEALTHCHECK 指令定义了检查容器健康状态的命令。示例:HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhost:8080/health || exit 1作用: 确保容器内的应用程序按预期运行。自动重启: 如果健康检查失败,Docker 可以重启容器。5. Dockerfile 高级技巧高级技巧可以帮助你创建经过优化、安全且可用于生产环境的镜像。5.1 优化镜像大小使用更小体积的基础镜像 FROM python:3.9-alpine用最小化镜像替代默认镜像,例如 alpine最小化层数 RUN apt-get update && apt-get install -y curl && apt-get clean合并命令以减少层数:5.2 使用构建参数构建参数(ARG)允许在构建期间动态配置镜像。示例:ARG APP_VERSION=1.0RUN echo "Building version $APP_VERSION"在构建时传递值:docker build --build-arg APP_VERSION=2.0 .5.3 实施安全最佳实践避免使用 root 用户: 创建并使用非 root 用户以增强安全性。 RUN adduser --disabled-password appuser USER appuser使用可信的基础镜像: 坚持使用官方或经过验证的镜像,以降低漏洞风险。 FROM nginx:stable扫描镜像漏洞: 使用 Trivy 或 Snyk 等工具扫描镜像: trivy image myimage6. Dockerfile 调试与故障排除在使用 Dockerfile 时,镜像构建或运行时遇到错误是很常见的情况。掌握有效的调试和故障排除技巧可以节省时间并快速定位问题。调试 Dockerfile 的步骤增量构建镜像 docker build --target builder -t debug-image .使用 --target 标志来构建多阶段 Dockerfile 中的特定阶段。这可以帮助你隔离构建过程中不同阶段出现的问题。检查中间层 docker history <image_id>使用 docker history 查看镜像层并识别不必要的命令或问题:使用 RUN 进行调试 RUN echo "File exists:" && ls /path/to/file在 RUN 指令中添加调试命令。例如,添加 echo 语句可以帮助验证文件路径或配置:日志文件 docker logs <container_id>容器内运行的服务产生的日志文件或输出可以帮助发现运行时错误。使用 docker logs 命令:检查构建上下文确保不会将不必要的文件发送到构建上下文,这可能导致构建时间增加并引发意外问题。使用 .dockerignore 文件来过滤文件。常见错误及修复方法错误:文件未找到原因: 使用 COPY 或 ADD 命令复制的文件在指定路径中不存在。解决方法: 检查文件路径并使用 WORKDIR 设置正确的目录。错误:依赖项未安装原因: 缺少依赖项或安装命令不正确。解决方法: 安装软件前使用 RUN 更新包列表(apt-get update)。权限错误原因: 以错误的用户身份运行进程或访问文件。解决方案: 使用 USER 指令切换到非 root 用户。7. 编写 Dockerfile 的最佳实践要创建简洁、高效且安全的 Dockerfile,请遵循这些行业公认的最佳实践:1. 固定镜像版本避免使用 latest 标签作为基础镜像,因为当新版本发布时可能导致环境不一致问题。 FROM python:3.9-alpine2. 优化分层合并指令以减少层数。每个 RUN 指令都会创建新层,最小化层数有助于优化镜像体积。 RUN apt-get update && apt-get install -y curl && apt-get clean3. 使用 .dockerignore 文件通过创建 .dockerignore 文件来防止不必要的文件(例如 .git、日志或大型数据集)被包含在构建上下文中: node_modules *.log .git4. 保持镜像轻量使用最小化的基础镜像(如 alpine 或特定语言的 slim 版本)来减小镜像体积。 FROM node:16-alpine5. 添加元数据使用 LABEL 指令为镜像添加元数据,例如版本、作者和描述: LABEL maintainer="yourname@example.com" LABEL version="1.0"6. 使用非 root 用户以 root 身份运行容器存在安全风险。应创建并切换至非 root 用户: RUN adduser --disabled-password appuser USER appuser7. 清理临时文件安装完成后移除临时文件以减少镜像大小: RUN apt-get install -y curl && rm -rf /var/lib/apt/lists/*8. 常见错误避免如果编写不当,Dockerfile 会很快变得低效且不安全。以下是一些常见错误及规避方法:1. 使用大型基础镜像问题: 使用大型基础镜像会增加构建时间和磁盘占用。解决方案: 使用轻量级基础镜像,例如 alpine 或语言镜像的精简版。 FROM python:3.9-alpine2. 未能利用多阶段构建问题: 在最终镜像中包含构建工具会不必要的增加镜像体积。解决方案: 使用多阶段构建,仅将必要文件复制到生产镜像中。 FROM golang:1.16 AS builder WORKDIR /app COPY . . RUN go build -o app FROM alpine:latest COPY --from=builder /app/app /app CMD ["/app"]3. 硬编码敏感信息问题: 在 Dockerfile 中存储敏感数据(如 API 密钥或密码)存在安全风险。解决方案: 使用环境变量或密钥管理工具: ENV DB_PASSWORD=${DB_PASSWORD}4. 安装后未清理问题: 残留的缓存文件或安装包会导致镜像臃肿。解决方案: 在同一条 RUN 指令中清理安装残留: RUN apt-get install -y curl && rm -rf /var/lib/apt/lists/*5. 未对 Dockerfile 添加说明问题: 缺少注释使得他人难以理解特定命令的用途。解决方案: 添加有意义的注释来解释命令: # Set working directory WORKDIR /usr/src/app9. 结论Dockerfile 是构建高效安全容器的基石。通过掌握 Dockerfile 语法、理解最佳实践并避开常见陷阱,您能简化应用程序容器化流程,实现跨环境的一致部署。关键要点:从最小化基础镜像开始,以减小体积并提升性能。利用多阶段构建来生成生产级镜像。始终测试与调试你的 Dockerfile 以确保可靠性。实施安全最佳实践 ,例如使用非 root 用户和密钥管理。使用 .dockerignore 排除不必要的文件,优化构建上下文。Todo:为你的项目尝试编写基础和多阶段的 Dockerfile。应用最佳实践并将调试技术集成到你的工作流程中。与团队分享你的 Dockerfile 以促进协作和反馈。遵循这份全面指南,你将不仅能构建稳健的 Dockerfile,还能提升作为 DevOps 专业人员的技能,从而为高效的 CI/CD 工作流和可扩展系统做出贡献。
2025年08月06日
12 阅读
0 评论
0 点赞
2025-08-05
Docker 安装 Oracle 11G
镜像docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/akaiot/oracle_11g:latestdocker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/akaiot/oracle_11g:latest docker.io/akaiot/oracle_11g:latest创建并启动容器mkdir -p /home/oracle/app/oracle11g/oradata# 容器内端口默认1521,且通过 -p 参数修改不成功,所以只能修改外部的端口docker run -itd --name oracle11g --restart=always -p 1523:1521 -v /home/oracle/app/oracle11g/oradata:/home/oracle/app/oracle11g/oradata docker.io/akaiot/oracle_11g:latest查看日志docker logs -f --tail 100 oracle11g/home/oracle/app/oracle/product/11.2.0/dbhome_2Processing Database instance "helowin": log file /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.logFixed Size 2213776 bytesVariable Size 402655344 bytesDatabase Buffers 1174405120 bytesRedo Buffers 24137728 bytesDatabase mounted.Database opened.SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart: Database instance "helowin" warm started.tail: unrecognized file system type 0x794c7630 for `/home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log'. Reverting to polling.登录到容器内docker exec -it oracle11g bash配置环境变量su rootPassword: helowinvi /etc/profileexport ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2export ORACLE_SID=helowinexport PATH=$ORACLE_HOME/bin:$PATHsource /etc/profilevi /home/oracle/.bashrcexport ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2export ORACLE_SID=helowinexport PATH=$ORACLE_HOME/bin:$PATHsource /home/oracle/.bashrc登录# 必须要切到 oracle 用户su oraclesqlplus / as sysdba查询数据库状态SELECT status FROM v$instance;STATUS------------OPEN连接验证• SID 和 Service Name 均为 helowin• 用密码密码: sys/oracle修改密码alter user system identified by test123;alter user sys identified by test123;异常记录ORA-00205: error in identifying control file, check alert log for more info异常原因:运行容器是指定的目录为 /home/oracle/app/oracle/oradata ,该目录是容器内安装Oracle自带的目录,换一个别的新建目录即可删除 Docker 容器docker stop oracle11gdocker rm oracle11g相关阅读• Docker 安装 Oracle 12C 🧐 分享、点赞、在看,给个3连击呗!👇
2025年08月05日
14 阅读
0 评论
0 点赞
2025-08-05
项目实践:使用Rsync和Crontab实现每天凌晨2点将远程服务器文件自动同步到本地服务器进行异地备份
本文将介绍如何通过rsync命令结合crontab定时任务,实现从远程SMB共享目录到本地目录的自动化文件同步。这种方案特别适合需要定期备份远程文件或保持两地文件一致性的场景。1.环境说明远程服务器:SMB共享目录位于/data/myshare/本地服务器:备份目录为/data/mybackup同步时间:每天凌晨2点SSH端口:假设远程服务器使用非标准SSH端口(如2222)2.实现步骤2.1创建同步脚本首先,我们需要创建一个bash脚本来自动执行同步任务。在本地服务器上创建/usr/local/bin/sync_backup.sh文件:#!/bin/bash# 远程服务器信息REMOTE_USER="username" # 替换为实际用户名REMOTE_HOST="remote.example.com" # 替换为实际主机名或IPSSH_PORT="2222" # 替换为实际SSH端口REMOTE_DIR="/data/myshare/" # 远程SMB共享目录LOCAL_DIR="/data/mybackup" # 本地备份目录# Rsync命令rsync -avz -e "ssh -p $SSH_PORT" --delete --progress $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR $LOCAL_DIR# 记录同步日志echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync completed from $REMOTE_HOST:$REMOTE_DIR to $LOCAL_DIR" >> /var/log/rsync_backup.log脚本说明:-avz:归档模式(a),显示详细输出(v),使用压缩传输(z)-e "ssh -p $SSH_PORT":指定非标准SSH端口--delete:删除本地目录中不存在于远程目录的文件--progress:显示传输进度最后一行将同步操作记录到日志文件中2.2设置脚本权限运行以下命令使脚本可执行:sudo chmod +x /usr/local/bin/sync_backup.sh2.3配置SSH免密登录为了避免每次同步都需要输入密码,可以设置SSH密钥认证:ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 username@remote.example.com2.4创建crontab定时任务使用crontab -e命令编辑当前用户的crontab:0 2 * * * /usr/local/bin/sync_backup.sh这表示每天凌晨2点执行同步脚本。2.5验证配置可以手动运行脚本测试是否正常工作:/usr/local/bin/sync_backup.sh检查/var/log/rsync_backup.log查看同步结果。3.高级配置选项带宽限制:如果同步过程占用过多带宽,可以添加--bwlimit=KBPS参数限制传输速率。排除特定文件:使用--exclude参数排除不需要同步的文件或目录。邮件通知:可以在脚本中添加邮件发送功能,通知同步结果。错误处理:增强脚本的错误处理能力。修正后的脚本如下:#!/bin/bash# 远程服务器信息REMOTE_USER="username" # 替换为实际用户名REMOTE_HOST="remote.example.com" # 替换为实际主机名或IPSSH_PORT="2222" # 替换为实际SSH端口REMOTE_DIR="/data/myshare/" # 远程SMB共享目录LOCAL_DIR="/data/mybackup" # 本地备份目录# 执行rsync并捕获退出状态rsync -avz -e "ssh -p $SSH_PORT" --delete --progress $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR $LOCAL_DIR# 检查rsync执行结果if [ $? -eq 0 ]; then echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync completed successfully" >> /var/log/rsync_backup.logelse echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync failed with error code $?" >> /var/log/rsync_backup.log # 可以在这里添加发送错误通知的代码fi4.总结通过结合rsync和crontab,我们建立了一个可靠、自动化的文件同步系统。这种方案具有以下优点:自动化运行:无需人工干预,定时自动执行高效同步:rsync只传输变化的文件部分,节省带宽和时间灵活性:支持非标准SSH端口和各种同步选项可追溯性:日志记录每次同步操作此方案适用于各种文件备份和同步场景,特别是需要定期将远程文件同步到本地的备份需求。
2025年08月05日
21 阅读
0 评论
0 点赞
2025-07-24
Linux指南(十三):磁盘
磁盘是什么01磁盘是计算机中用于长期存储数据的硬件设备,属于外存的一种,其存储的数据在断电后不会丢失。常见的磁盘类型包括机械硬盘(HDD,通过磁头读写磁性盘片存储数据)、固态硬盘(SSD,基于闪存芯片存储数据,速度更快)、U盘、移动硬盘等。在Linux系统中,磁盘被抽象为设备文件(如/dev/sda、/dev/nvme0n1),系统通过这些文件与磁盘交互,实现数据的读写和管理。磁盘常见操作02磁盘操作围绕“让磁盘可被系统使用”和“管理存储资源”展开,核心流程包括:识别磁盘:确认系统中存在的磁盘设备,了解其容量、类型等信息。分区:将物理磁盘划分为多个独立的逻辑区域(分区),便于数据分类管理(如区分系统文件和用户数据),避免数据混乱。格式化:对分区进行处理,使其支持特定的文件系统(如ext4、XFS),文件系统是管理文件存储结构的规则,决定了数据如何组织和访问。挂载:将格式化后的分区关联到Linux目录树的某个目录(挂载点),使系统能通过该目录访问分区内的文件。查看与维护:监控磁盘使用情况(如剩余空间、文件占用),检查并修复磁盘错误,确保存储稳定。磁盘常见命令03识别磁盘设备:lsblk:列出系统中所有磁盘及分区的信息,包括设备名称、大小、挂载点等,直观展示磁盘与分区的关系。fdisk -l:显示磁盘的详细信息,包括磁盘大小、分区表类型(MBR/GPT)、分区数量及每个分区的大小、类型等。分区操作:fdisk [设备名]:用于MBR分区表的磁盘分区(支持容量较小的磁盘),可创建、删除、调整分区,需进入交互模式操作(如fdisk /dev/sda)。parted [设备名]:支持GPT分区表(适用于大容量磁盘),可处理超过2TB的磁盘,支持分区大小动态调整(如parted /dev/sdb)。格式化分区:mkfs.xxx [分区名]:将分区格式化为指定文件系统,xxx为文件系统类型,如mkfs.ext4 /dev/sda1(格式化为ext4)、mkfs.xfs /dev/sdb1(格式化为XFS)。挂载与卸载:mount [分区名] [挂载点]:将分区挂载到指定目录,如mount /dev/sda1 /mnt/data。umount [挂载点/分区名]:卸载已挂载的分区,如umount /mnt/data或umount /dev/sda1。mount -a:根据/etc/fstab文件中的配置,自动挂载所有未挂载的分区(常用于系统启动时自动挂载)。查看磁盘使用情况:df -h:以人类可读的单位(如GB、MB)显示所有挂载点的磁盘空间使用情况,包括总容量、已用、可用空间及使用率。du -sh [目录/文件]:查看指定目录或文件的磁盘占用大小,-s表示汇总结果,-h为人类可读单位(如du -sh /home)。磁盘检查与修复:fsck [分区名]:检查并修复文件系统错误,需在分区未挂载时使用,如fsck.ext4 /dev/sda1(针对ext4文件系统)。badblocks [分区名]:检测分区中的坏块(无法正常存储数据的区域),如badblocks -v /dev/sda1(-v显示详细过程)。推荐:宝藏网站推荐:一个系统学习编程的网站Linux指南(一):Linux内核与Linux系统Linux指南(二):Linux命令行与图形用户界面Linux指南(七):目录介绍、目录的特性与功能、常见目录Linux指南(九):用户目录、主目录Linux指南(十):文件、一切皆文件Linux命令(四):系统管理命令介绍
2025年07月24日
4 阅读
0 评论
0 点赞
1
2
3
...
7