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

519 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 
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐