Linux 核心运维实战:从 YUM 仓库部署到进程/文件系统全掌控
·
Linux 核心运维实战:从 YUM 仓库部署到进程 / 文件系统全掌控
一、使用 Nginx 服务器部署 YUM 仓库
1.源码安装 Nginx
#安装依赖
[root@server ~ 11:42:34]# yum -y install gcc make pcre-devel zlib-devel
#下载Nginx源码包
[root@server ~ 11:43:13]# yum install -y wget
[root@server ~ 11:44:10]# wget https://nginx.org/download/nginx-1.24.0.tar.gz
#解压源码包
[root@server ~ 11:44:35]# tar -xf nginx-1.24.0.tar.gz
#配置安装路径(所有nginx相关文件存放在/usr/local/nginx)
[root@server ~ 11:44:45]# cd nginx-1.24.0/
[root@server nginx-1.24.0 11:45:06]# ./configure --prefix=/usr/local/nginx
#编译并安装
[root@server nginx-1.24.0 11:45:51]# make && make install
[root@server nginx-1.24.0 11:46:02]# ls /usr/local/nginx/
conf html logs sbin
#配置环境变量(临时+永久)
[root@server nginx-1.24.0 11:46:54]# export PATH=$PATH:/usr/local/nginx/sbin/
[root@server nginx-1.24.0 11:47:04]# echo 'export PATH=$PATH:/usr/local/nginx/sbin/' >> ~/.bashrc
2.配置Nginx 系统服务
#复制sshd服务模板修改为nginx服务
[root@server ~ 11:47:40]# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/nginx.service
[root@server ~ 11:47:50]# vim /etc/systemd/system/nginx.service
#修改后的 nginx.service 内容:
[Unit]
Description=Nginx server daemon
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
[Install]
WantedBy=multi-user.target
#重新加载服务配置,设置开机自启并立即启动
[root@server ~ 12:27:19]# systemctl daemon-reload
[root@server ~ 12:27:43]# systemctl enable nginx.service --now
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /etc/systemd/system/nginx.service.
3.配置 Nginx 允许查看文件清单
[root@server ~ 12:27:54]# vim /usr/local/nginx/conf/nginx.conf
......
http {
# 添加如下记录,其他保持不变
autoindex on; # 开启文件目录列表显示
......
[root@server ~ 12:28:35]# systemctl restart nginx
4.发布 YUM 软件仓库
#重启nginx确保配置生效
[root@server ~ 12:28:35]# systemctl restart nginx
#创建仓库目录结构
[root@server ~ 12:29:00]# cd /usr/local/nginx/html/
[root@server html 12:29:31]# mkdir -p centos7/Packages
[root@server html 12:29:41]# cd centos7/Packages
#下载rpm包到仓库目录(仅下载不安装)
[root@server Packages 12:29:55]# yum install -y httpd nginx --downloadonly --downloaddir=.
#安装createrepo工具并生成仓库元数据
[root@server Packages 12:30:23]# cd ..
[root@server centos7 12:30:52]# yum install -y createrepo
[root@server centos7 12:31:22]# createrepo .
Spawning worker 0 with 2 pkgs
Spawning worker 1 with 2 pkgs
Spawning worker 2 with 1 pkgs
Spawning worker 3 with 1 pkgs
Spawning worker 4 with 1 pkgs
Spawning worker 5 with 1 pkgs
Spawning worker 6 with 1 pkgs
Spawning worker 7 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
5.配置 YUM 客户端
#备份原有repo文件
[root@client ~ 12:27:19]# cd /etc/yum.repos.d/
[root@client yum.repos.d 12:31:51]# mkdir bakcup
[root@client yum.repos.d 12:31:59]# mv *repo bakcup
[root@client yum.repos.d 12:32:09]# ls
bakcup
#创建自定义repo文件
[root@client yum.repos.d 12:32:12]# vim centos7.repo
[centos7]
name=centos7 test
baseurl=http://10.1.8.10/centos7
enabled=1
gpgcheck=0
#测试仓库可用性(安装httpd验证)
[root@client yum.repos.d 12:32:42]# yum install -y httpd
[root@client yum.repos.d 12:33:07]# systemctl enable httpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
#查看仓库列表
[root@client yum.repos.d 12:33:29]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
源标识 源名称 状态
centos7 centos7 test 10
repolist: 10
二、Linux 计划任务管理
1. 一次性计划任务(at)
(1)安装并启用 atd 服务
#安装at工具
[root@server ~ 16:27:43]# yum install at
#启动并确认atd服务状态
[root@server ~ 16:30:02]# systemctl start atd
[root@server ~ 16:30:41]# systemctl status atd
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since 二 2026-05-19 16:30:41 CST; 1s ago
Main PID: 1394 (atd)
CGroup: /system.slice/atd.service
└─1394 /usr/sbin/atd -f
5月 19 16:30:41 server.liu.cloud systemd[1]: Started Job spooling tools.
(2)at 命令基础用法
语法:at <timespec>(从标准输入读取命令,按 Ctrl+D 结束)
#示例1:5分钟后执行单条命令
[root@server ~ 16:30:43]# at now +5 minutes
at> echo hello world > /tmp/hello.log
at> <EOT># 按Ctrl+D自动出现
job 1 at Tue May 19 16:36:00 2026
#示例2:从脚本读取命令执行
[root@server ~ 16:31:48]# vim myscript.sh
#!/bin/bash
date >> /tmp/myscript.log
echo hello myscript >> /tmp/myscript.log
#5分钟后执行脚本
[root@server ~ 16:32:49]# at now +5 minutes < myscript.sh
job 2 at Tue May 19 16:38:00 2026
#100分钟后执行脚本(-f指定脚本文件)
[root@server ~ 16:33:21]# at now +100 minutes -f myscript.sh
job 3 at Tue May 19 18:13:00 2026
(3)at 任务管理常用命令
#查看任务队列(at -l 等价于 atq)
[root@server ~ 16:33:38]# at -l
1 Tue May 19 16:36:00 2026 a root
2 Tue May 19 16:38:00 2026 a root
3 Tue May 19 18:13:00 2026 a root
[root@server ~ 16:34:00]# atq
1 Tue May 19 16:36:00 2026 a root
2 Tue May 19 16:38:00 2026 a root
3 Tue May 19 18:13:00 2026 a root
#指定队列(a-z,优先级从高到低)
[root@server ~ 16:34:04]# at -q b now +5 minutes < myscript.sh
job 4 at Tue May 19 16:39:00 2026
[root@server ~ 16:34:34]# atq
1 Tue May 19 16:36:00 2026 a root
2 Tue May 19 16:38:00 2026 a root
3 Tue May 19 18:13:00 2026 a root
4 Tue May 19 16:39:00 2026 b root
#查看指定队列任务
[root@server ~ 16:34:42]# at -l -q b
4 Tue May 19 16:39:00 2026 b root
#时间到达后检测
[root@server ~ 16:34:59]# atq
2 Tue May 19 16:38:00 2026 a root
3 Tue May 19 18:13:00 2026 a root
4 Tue May 19 16:39:00 2026 b root
[root@server ~ 16:36:03]# cat /tmp/hello.log
hello world
[root@server ~ 16:37:24]# cat /tmp/myscript.log
2026年 05月 19日 星期二 16:38:00 CST
hello myscript
#查看任务详细内容
[root@server ~ 16:38:01]# at -c 3
......
${SHELL:-/bin/sh} << 'marcinDELIMITER2e0f0105'
#!/bin/bash
date >> /tmp/myscript.log
echo hello myscript >> /tmp/myscript.log
marcinDELIMITER2e0f0105
#删除任务(at -d/-r 等价于 atrm)
[root@server ~ 16:38:47]# atrm 3
[root@server ~ 16:40:08]# atq # 任务3已被删除
2. 周期性计划任务(crontab)
(1)crond 服务基础
Linux 系统中 cron 由 crond 后台进程、crontab 命令和配置文件组成,用户通过 crontab 管理周期性任务;若任务未重定向 stdout/stderr,输出会通过邮件发送给任务所有者。
(2)crontab 命令核心用法
#查看当前用户的周期性任务
[liu@server ~ 16:40:50]$ crontab -l
no crontab for liu
#编辑周期性任务
[liu@server ~ 16:41:01]$ export EDITOR=vim
[liu@server ~ 16:41:49]$ crontab -e
*/2 2,6-23 * * * date >> /tmp/date.log
#再次查看确认
[liu@server ~ 16:43:33]$ crontab -l
*/2 2,6-23 * * * date >> /tmp/date.log
#监控日志
[liu@server ~ 16:43:43]$ tail -f /tmp/date.log
2026年 05月 19日 星期二 16:44:01 CST
2026年 05月 19日 星期二 16:46:01 CST
......
#删除所有周期性任务
[liu@server ~ 16:47:18]$ crontab -r
[liu@server ~ 16:47:28]$ crontab -l
no crontab for liu
#root管理其他用户任务
#编辑liu用户的任务
[root@server ~ 16:48:35]# crontab -u liu -e
0 9 2 2 * /usr/local/bin/yearly_backup
0 9 * * 1-5 mutt -s "Checking in" boss@example.com % Hi boss, just checking in.
#删除liu用户的任务
[root@server ~ 16:49:35]# crontab -u liu -r
#查看liu用户的任务
[root@server ~ 16:50:06]# crontab -u liu -l
no crontab for liu
#从文件导入任务
[liu@server ~ 16:50:55]$ vim mycron
0 9 2 2 * /usr/local/bin/yearly_backup
0 9 * * 1-5 mutt -s "Checking in" boss@example.com % Hi boss, just checking in.
#覆盖当前所有任务
[liu@server ~ 16:51:13]$ crontab mycron
#验证导入结果
[liu@server ~ 16:51:35]$ crontab -l
0 9 2 2 * /usr/local/bin/yearly_backup
0 9 * * 1-5 mutt -s "Checking in" boss@example.com % Hi boss, just checking in.
(3)crontab 时间格式说明
| 字段 | 取值范围 | 说明 |
|---|---|---|
| 分钟 | 0-59 | 表示每分钟,/5 表示每 5 分钟 |
| 小时 | 0-23 | 2,6-23 表示 2 点、6-23 点 |
| 日期 | 1-31 | |
| 月份 | 1-12 / Jan-Dec | |
| 星期 | 0-7(0/7 = 周日)/ Sun-Sat | |
| 命令 | 任意可执行命令 / 脚本 |
(4)系统级周期性任务
#/etc/crontab(多了"用户"字段)
[root@server ~ 16:50:10]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
#/etc/cron.d目录
[root@server ~ 16:52:31]# ls /etc/cron.d
0hourly
[root@server ~ 16:53:05]# cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
# /etc/anacrontab(确保关机后任务补执行)
[root@server ~ 16:53:46]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45 # 随机延迟(分钟)
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22 # 任务仅在3-22点执行
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
三、Linux 进程调度管理
1.进程调度器分类
| 调度器类型 | 适用场景 | 核心策略 | 优先级特点 |
|---|---|---|---|
| 实时调度器 | 核心业务进程 | SCHED_RR(轮询)、SCHED_FIFO(先入先出) | 优先级 1-99,高于非实时 |
| 非实时调度器 | 普通业务进程 | SCHED_NORMAL、SCHED_BATCH、SCHED_IDLE | nice 值(-20~19)控制优先级 |
2.非实时进程优先级管理(nice/renice)
(1)查看 nice 值
#ps命令查看指定进程nice值
[liu@server ~ 16:51:40]$ ps -o nice,cmd $(pgrep systemd)
NI CMD
0 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
0 /usr/lib/systemd/systemd-journald
0 /usr/lib/systemd/systemd-udevd
0 /usr/lib/systemd/systemd-logind
#验证子进程继承父进程nice值(默认0)
[liu@server ~ 17:00:09]$ md5sum /dev/zero &
[1] 1517
[liu@server ~ 17:01:01]$ ps -o pid,nice,command $$ 1517
PID NI COMMAND
1440 0 -bash
1517 0 md5sum /dev/zero
#$$ 代表当前终端中运行的 shell 程序 PID
(2)nice 命令
#示例1:nice值默认是10
[liu@server ~ 17:02:14]$ nice md5sum /dev/zero &
[2] 1520
[liu@server ~ 17:03:11]$ ps -o pid,nice,command
PID NI COMMAND
1440 0 -bash
1517 0 md5sum /dev/zero
1520 10 md5sum /dev/zero
1521 0 ps -o pid,nice,command
#示例2:普通用户只能设置正数nice值
#设置一个负数优先级
[liu@server ~ 17:03:42]$ nice -n -2 md5sum /dev/zero &
[3] 1522
[liu@server ~ 17:04:25]$ nice: 无法设置优先级: 权限不够
[liu@server ~ 17:04:39]$ ps -o pid,nice,command 1522
PID NI COMMAND
1522 0 md5sum /dev/zero
#设置一个正数优先级
[liu@server ~ 17:04:59]$ nice -n 2 md5sum /dev/zero &
[4] 1524
[liu@server ~ 17:05:46]$ ps -o pid,nice,command 1524
PID NI COMMAND
1524 2 md5sum /dev/zero
(3)renice 命令
#示例1:调整进程nice值(普通用户只能升高,不能降低)
[liu@server ~ 17:06:59]$ renice -n 2 1524
1524 (进程 ID) 旧优先级为 2,新优先级为 2
[liu@server ~ 17:08:02]$ ps -o pid,nice,command 1524
PID NI COMMAND
1524 2 md5sum /dev/zero
[liu@server ~ 17:08:19]$ renice -n -2 1524
renice: 设置 1524 的优先级失败(进程 ID): 权限不够
[liu@server ~ 17:08:52]$ ps -o pid,nice,command 1524
PID NI COMMAND
1524 2 md5sum /dev/zero
#示例2:root用户可任意调整
[root@server ~ 17:10:22]# renice -n -2 1524
1524 (进程 ID) 旧优先级为 2,新优先级为 -2
[root@server ~ 17:10:33]# renice -n -2 1517
1517 (进程 ID) 旧优先级为 0,新优先级为 -2
[root@server ~ 17:11:38]# ps -o pid,nice,command 1517 1524
PID NI COMMAND
1517 -2 md5sum /dev/zero
1524 -2 md5sum /dev/zero
#终止测试进程
[liu@server ~ 17:09:53]$ pkill md5sum
[1] 已终止 md5sum /dev/zero
[2] 已终止 nice md5sum /dev/zero
[3]- 已终止 nice -n -2 md5sum /dev/zero
[4]+ 已终止 nice -n 2 md5sum /dev/zero
3.实时进程优先级管理(chrt)
#查看调度器优先级范围
[root@server ~ 17:16:14]# chrt -m
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0
SCHED_DEADLINE min/max priority : 0/0
#示例1:以SCHED_RR策略、优先级5启动进程
[root@server ~ 17:16:17]# chrt -r 5 md5sum /dev/zero &
[1] 1541
[root@server ~ 17:16:46]# ps -o pid,cls,rtprio,command 1541
PID CLS RTPRIO COMMAND
1541 RR 5 md5sum /dev/zero
#示例2:修改进程调度策略和优先级(RR→FIFO,优先级5→10)
[root@server ~ 17:17:12]# chrt -f --pid 10 1541
[root@server ~ 17:17:48]# ps -o pid,cls,rtprio,command 1541
PID CLS RTPRIO COMMAND
1541 FF 10 md5sum /dev/zero
#示例3:切换为非实时调度策略
[root@server ~ 17:18:07]# chrt -o --pid 0 1541
[root@server ~ 17:18:50]# ps -o pid,cls,rtprio,command 1541
PID CLS RTPRIO COMMAND
1541 TS - md5sum /dev/zero
四、Linux 文件系统基本管理
1. 识别文件系统和设备
(1)Linux 块设备命名规则
| 接口类型 | 设备命名示例 | 分区命名示例 |
|---|---|---|
| SATA/SAS/USB/SCSI | /dev/sda、/dev/sdb | /dev/sda1、/dev/sdb2 |
| virtio-blk(虚拟机) | /dev/vda、/dev/vdb | /dev/vda1、/dev/vdb2 |
| NVMe SSD | /dev/nvme0n1、/dev/nvme1n1 | /dev/nvme0n1p1、/dev/nvme1n1p2 |
| SD/MMC/eMMC | /dev/mmcblk0、/dev/mmcblk1 | /dev/mmcblk0p1、/dev/mmcblk1p2 |
(2)查看设备和文件系统的核心命令
#1. lsblk:查看块设备布局
[root@server ~ 17:20:23]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 145.1G 0 lvm /home
sr0 11:0 1 4.4G 0 rom
#2. df:查看文件系统使用情况
[root@server ~ 17:20:26]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 2000992 0 2000992 0% /dev
tmpfs 2013056 0 2013056 0% /dev/shm
tmpfs 2013056 8712 2004344 1% /run
tmpfs 2013056 0 2013056 0% /sys/fs/cgroup
/dev/mapper/centos-root 52403200 1634488 50768712 4% /
/dev/sda1 1038336 142252 896084 14% /boot
/dev/mapper/centos-home 152092100 33012 152059088 1% /home
tmpfs 402612 0 402612 0% /run/user/0
tmpfs 402612 0 402612 0% /run/user/1000
#-h选项,友好显示单位,单位进制是1024。
#-T选项,显示文件系统类型。
[root@server ~ 17:20:49]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.6M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 1.6G 49G 4% /
/dev/sda1 xfs 1014M 139M 876M 14% /boot
/dev/mapper/centos-home xfs 146G 33M 146G 1% /home
tmpfs tmpfs 394M 0 394M 0% /run/user/0
tmpfs tmpfs 394M 0 394M 0% /run/user/1000
#-H选项,单位进制是1000。
[root@server ~ 17:21:29]# df -H
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.1G 0 2.1G 0% /dev
tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs 2.1G 9.0M 2.1G 1% /run
tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/mapper/centos-root 54G 1.7G 52G 4% /
/dev/sda1 1.1G 146M 918M 14% /boot
/dev/mapper/centos-home 156G 34M 156G 1% /home
tmpfs 413M 0 413M 0% /run/user/0
tmpfs 413M 0 413M 0% /run/user/1000
#查看单个文件系统
[root@server ~ 17:22:05]# df -hT /boot
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda1 xfs 1014M 139M 876M 14% /boot
#查看文件或目录存储在哪个设备
[root@server ~ 17:22:51]# df /tmp
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 52403200 1634488 50768712 4% /
#3. du:查看目录/文件占用空间
[root@server ~ 17:23:57]# du /boot
0 /boot/efi/EFI/centos
0 /boot/efi/EFI
0 /boot/efi
2400 /boot/grub2/i386-pc
3176 /boot/grub2/locale
2504 /boot/grub2/fonts
8096 /boot/grub2
4 /boot/grub
109036 /boot
#只查看/boot目录占用空间
[root@server ~ 17:24:04]# du -s /boot
109036 /boot
#-h 选项human方式显示size
[root@server ~ 17:24:54]# du -sh /boot
107M /boot
#实战:查找根目录大文件
#环境准备,创建一个大小为4GB的文件:使用 0 填充该文件
[root@server ~ 17:25:19]# dd if=/dev/zero of=/usr/share/doc/dhclient-4.2.5/bigfile-4G bs=1M count=4096
记录了4096+0 的读入
记录了4096+0 的写出
4294967296字节(4.3 GB)已复制,12.9277 秒,332 MB/秒
#逐层排查大目录
[root@server ~ 17:26:32]# du -sk /* |sort -n
......
23904 /etc
109036 /boot
332236 /var
5423436 /usr
[root@server ~ 17:27:15]# du -sk /usr/* |sort -n
......
131840 /usr/lib64
711328 /usr/lib
4460036 /usr/share
[root@server ~ 17:27:59]# du -sk /usr/share/* |sort -n
......
25204 /usr/share/vim
88680 /usr/share/locale
4227156 /usr/share/doc
[root@server ~ 17:28:49]# du -sk /usr/share/doc/* |sort -n
......
1060 /usr/share/doc/pam-1.1.8
1216 /usr/share/doc/postfix-2.10.1
4194316 /usr/share/doc/dhclient-4.2.5
[root@server ~ 17:30:55]# du -sk /usr/share/doc/dhclient-4.2.5/* |sort -n
4 /usr/share/doc/dhclient-4.2.5/dhclient6.conf.example
4 /usr/share/doc/dhclient-4.2.5/dhclient.conf.example
4 /usr/share/doc/dhclient-4.2.5/README.dhclient.d
4194304 /usr/share/doc/dhclient-4.2.5/bigfile-4G
#快速查找大文件(>100M)
[root@server ~ 17:31:00]# find / -size +100M 2>/dev/null
/proc/kcore
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/usr/lib/locale/locale-archive
/usr/share/doc/dhclient-4.2.5/bigfile-4G
2. 挂载和卸载文件系统
(1)环境准备
#确认新磁盘(以/dev/sdb为例)
[root@server ~ 18:28:57]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 100G 0 disk
#格式化为XFS文件系统
[root@server ~ 18:29:55]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=6553600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=12800, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
(2)挂载文件系统
#创建挂载点
[root@server ~ 18:30:39]# mkdir /data
#显示系统中所有文件系统
[root@server ~ 18:30:46]# blkid
/dev/sda1: UUID="76a15a7b-afd2-4286-b1ae-b79a479c5cb6" TYPE="xfs"
/dev/sda2: UUID="VkJXaz-Xa7y-YE0T-Co23-4qGD-iAU8-BnQa2G" TYPE="LVM2_member"
/dev/sr0: UUID="2022-07-26-15-09-17-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sdb: UUID="41bc87db-7e3e-4e26-b082-8fd52b442b62" TYPE="xfs"
/dev/mapper/centos-root: UUID="c9a4b24f-b30d-4f20-8a20-3c5f434c923f" TYPE="xfs"
/dev/mapper/centos-swap: UUID="a2b2e56b-a1ad-423f-9ca8-f57642398534" TYPE="swap"
/dev/mapper/centos-home: UUID="4079583d-8630-469b-b2be-4363a291e7cb" TYPE="xfs"
#显示系统中特定文件系统
[root@server ~ 18:30:53]# blkid /dev/sdb
/dev/sdb: UUID="41bc87db-7e3e-4e26-b082-8fd52b442b62" TYPE="xfs"
#方式1:通过设备名挂载
[root@server ~ 18:31:48]# mount /dev/sdb /data
#方式2:通过UUID挂载
[root@server ~ 18:33:46]# mount UUID="41bc87db-7e3e-4e26-b082-8fd52b442b62" /data
#验证
[root@server ~ 18:34:17]# df -h /data
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb 100G 33M 100G 1% /data
#创建文件测试
[root@server ~ 18:34:41]# touch /data/file-{00..09}
[root@server ~ 18:35:05]# ls /data
file-00 file-01 file-02 file-03 file-04 file-05 file-06 file-07 file-08 file-09
#查看所有挂载详情
[root@server ~ 18:35:11]# mount
......
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
/dev/mapper/centos-home on /home type xfs (rw,relatime,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=402616k,mode=700)
/dev/sdb on /data type xfs (rw,relatime,attr2,inode64,noquota)
#括号中属性,是文件系统当前支持的功能。
[root@server ~ 18:37:17]# mount |grep ^/dev
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
/dev/mapper/centos-home on /home type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdb on /data type xfs (rw,relatime,attr2,inode64,noquota)
(3)卸载文件系统
#方式1:通过设备名卸载
[root@server ~ 18:37:26]# umount /dev/sdb
#方式2:通过挂载点卸载
[root@server ~ 18:38:21]# umount /data
#验证卸载结果
[root@server ~ 18:38:38]# df -h /data
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 5.6G 45G 12% /
(4)卸载失败处理
#复现挂载点忙场景
[root@server ~ 18:39:42]# mount /dev/sdb /data
[root@server ~ 18:39:48]# cd /data
[root@server data 18:39:54]# ls
file-00 file-01 file-02 file-03 file-04 file-05 file-06 file-07 file-08 file-09
#提示挂载点正在忙碌
[root@server data 18:39:57]# umount /dev/sdb
umount: /data:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
#1. lsof查找占用进程
[root@server ~ 18:41:11]# yum install -y lsof
[root@server ~ 18:41:41]# lsof /data
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1333 root cwd DIR 8,16 156 64 /data
#2. fuser查找占用进程
[root@server ~ 18:43:02]# yum install -y psmisc
[root@server ~ 18:43:15]# fuser -m /data
/data: 1333c
#3. 解决:退出挂载点目录后卸载
[root@server data 18:40:33]# cd
[root@server ~ 18:45:07]# umount /data
更多推荐




所有评论(0)