当前位置: 首页 > news >正文

Orange的运维学习日记--25.Linux文件系统基本管理

Orange的运维学习日记–25.Linux文件系统基本管理

在这里插入图片描述

识别文件系统和设备

在 Linux 中,存储设备通过块设备文件提供访问。块设备文件存放在 /dev 目录下,操作系统自动创建。挂载前需先格式化设备

常见块设备接口及命名

  • SATA/SAS/USB/SCSI:/dev/sda/dev/sdb
  • virtio-blk(虚拟机):/dev/vda/dev/vdb
  • NVMe SSD:/dev/nvme0n1/dev/nvme1n1
  • SD/MMC/eMMC:/dev/mmcblk0/dev/mmcblk1

通常会将物理设备划分为多个分区,例如 /dev/sda1/dev/sda2/dev/nvme0n1p1,并为每个分区选择不同文件系统或用途

文件系统是操作系统在存储设备或分区上组织和管理文件的方式。要让文件系统的内容可访问,需将其挂载到一个空目录(挂载点)下

查看设备和文件系统

lsblk

查看所有块设备及挂载情况

lsblk

示例输出

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0    20G  0 disk 
sr0          11:0    1  13.2G  0 rom  
nvme0n1     259:0    0   200G  0 disk 
├─nvme0n1p1 259:1    0     1G  0 part /boot
└─nvme0n1p2 259:2    0   199G  0 part ├─rl-root 253:0    0    70G  0 lvm  /├─rl-swap 253:1    0   3.9G  0 lvm  [SWAP]└─rl-home 253:2    0 125.1G  0 lvm  /home

各字段说明

  • NAME:设备名称或分区
  • SIZE:设备容量
  • TYPE:disk、part、lvm、rom 等类型
  • MOUNTPOINT:挂载点
  • RM:是否可移动设备(1 是可移动)

df

查看已挂载文件系统使用情况

df -hT

示例输出

文件系统            类型      容量  已用  可用 已用% 挂载点
devtmpfs            devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs               tmpfs     1.9G   17M  1.9G    1% /run
/dev/mapper/rl-root xfs        70G  6.5G   64G   10% /
/dev/sr0            iso9660    14G   14G     0  100% /dvd
/dev/nvme0n1p1      xfs      1014M  202M  813M   20% /boot
/dev/mapper/rl-home xfs       126G  925M  125G    1% /home

常用选项

  • -h:以人类可读方式显示
  • -T:显示文件系统类型
  • -H:使用 1000 为单位基数

du

查看目录或文件磁盘使用情况

du -sh /boot

示例输出

140M    /boot

常用用法

  • du /boot:显示所有子目录大小
  • du -s /boot:只显示总计
  • du -h:以可读单位显示

查找大文件案例

在根文件系统中生成一个 4 GB 测试文件

dd if=/dev/zero of=/usr/share/doc/dhclient-4.2.5/bigfile-4G bs=1M count=4096

使用 du 配合 sort 依次定位大目录和大文件

du -sk /*   | sort -n
du -sk /usr/* | sort -n
du -sk /usr/share/* | sort -n
du -sk /usr/share/doc/* | sort -n

使用 find 查找系统中超过 100 MB 的文件

find / -size +100M 2>/dev/null

挂载和卸载文件系统

环境准备

添加新的磁盘设备 /dev/sdb 并格式化为 XFS 文件系统

lsblk /dev/sdbmkfs.xfs /dev/sdb

挂载文件系统

mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint

挂载示例

mkdir /datablkid /dev/sdbmount /dev/sdb /data

验证挂载

df -h /datatouch /data/file-{00..09}
ls /data

查看所有挂载

mount | grep '^/dev'

卸载文件系统

umount device|mountpoint

示例

umount /datadf -h /data

卸载失败处理

当卸载时报 “target is busy” 时,需要定位并终止占用进程

lsof
lsof /data
fuser
fuser -m /data
fuser -k -m /data

终止后重新卸载

cd /
umount /data

不同文件系统挂载案例

NTFS

yum install -y epel-release
yum install -y ntfs-3gmkdir /mnt/ntfs
mount -t ntfs-3g /dev/sdc1 /mnt/ntfs

exFAT

yum install -y git pkg-config fuse-devel gcc make autoconf automakegit clone https://github.com/relan/exfat.git
cd exfat
autoreconf --install
./configure
make && make installmount.exfat-fuse /dev/sdc1 /mnt/exfat

基于 ISO 的本地 yum 仓库

mkdir /dvd
mount /dev/sr0 /dvdmkdir /etc/yum.repos.d/old
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/oldcat << 'EOF' > /etc/yum.repos.d/dvd.repo
[BaseOS]
name=BaseOS from DVD
baseurl=file:///dvd/BaseOS
enable=1
gpgcheck=0[AppStream]
name=AppStream from DVD
baseurl=file:///dvd/AppStream
enable=1
gpgcheck=0
EOFyum repolist
yum makecache
yum install -y httpd

查找系统中文件

locate

依赖 mlocate 数据库,需定期执行 updatedb 更新

updatedblocate [OPTION][PATTERN]

常用选项

  • -b:只匹配文件名
  • -i:忽略大小写
  • -c:输出结果数量
  • -r:正则匹配

示例

locate httpd.confupdatedb
locate -i PASSWD
locate -b -c PASSWD
locate -r 'http.*conf'

find

在实时文件系统中遍历查找,需读取和执行权限

find [path] [expression] [action]

按文件名

  • -name:区分大小写
  • -iname:忽略大小写
find /etc -name passwd
find /etc -iname passwd

按类型

  • -type b:块设备
  • -type c:字符设备
  • -type d:目录
  • -type f:普通文件
  • -type l:符号链接
  • -type p:FIFO
  • -type s:套接字

按属主或属组

  • -user/-uid
  • -group/-gid
  • -nouser-nogroup
find / -user laoma
find / -nouser -o -nogroup

按权限

  • -perm mode
  • -perm -mode
  • -perm /mode
  • -readable-writable-executable
find . -perm 764 -ls
find / -perm -4000
find / -perm /7000

按大小

单位:ckMG

find / -size 10M
find / -size +10G
find / -size -10k

按时间

  • 分钟:-amin-cmin-mmin
  • 天:-atime-ctime-mtime
  • 新旧:-newer file
find / -amin -10

按硬链接和 inode

  • -links n
  • -inum n
find / -links +3
find / -inum 67160130

组合表达式

  • 与:expr1 expr2expr1 -a expr2
  • 或:expr1 -o expr2
  • 非:! expr
find / ! -size -200M 2>/dev/null

执行动作

  • -delete
  • -ls
  • -exec command \;
  • -exec command {} \;
find / -name PASSWD -delete
find /etc -name passwd -exec echo found {} \;
inks n`
- `-inum n````bash
find / -links +3
find / -inum 67160130

组合表达式

  • 与:expr1 expr2expr1 -a expr2
  • 或:expr1 -o expr2
  • 非:! expr
find / ! -size -200M 2>/dev/null

执行动作

  • -delete
  • -ls
  • -exec command \;
  • -exec command {} \;
find / -name PASSWD -delete
find /etc -name passwd -exec echo found {} \;
http://www.dtcms.com/a/311968.html

相关文章:

  • 使用xshell连接远程腾讯云服务器,报错:Xshell Socket error Event: 32 Error: 10053
  • 智能图书馆管理系统开发实战系列(五):前后端集成 - koffi调用与接口设计
  • 用resmon搜索某文件被未知程序占用而无法删除
  • 第15届蓝桥杯Python青少组_省赛_中/高级组2024年8月真题
  • Java,八股,cv,算法——双非研0四修之路day23
  • SpringBoot 信用卡检测、OpenAI gym、OCR结合、DICOM图形处理、知识图谱、农业害虫识别实战
  • 博客|基于Springboot的个人博客系统设计与实现(源码+数据库+文档)
  • 占道经营识别漏检率↓76%:陌讯动态场景适配算法实战解析
  • 区分「尊重」和「顺从」
  • FastAPI入门:响应模型
  • 如何分析Linux内存性能问题
  • Windows字体simsum.ttf的安装与Python路径设置指南
  • junit中@InjectMocks作用详解
  • wgd v1.1.2 安装与使用-生信工具056
  • Java 字符串常量池 +反射,枚举和lambda表达式
  • 【数据结构】栈的顺序存储(整型栈、字符栈)
  • Postman四种请求教程
  • unsloth - LLM超级轻量级微调框架
  • ollama 多实例部署
  • 语音识别数据集
  • 【ROS2】ROS2节点Node机制与常用命令行
  • Autosar Nm-网管报文PNC停发后无法休眠问题排查
  • 决策树算法:三大核心流程解析
  • Agents-SDK智能体开发[4]之集成MCP入门
  • Qt 槽函数被执行多次,并且使用Qt::UniqueConnection无效【已解决】
  • Python编程基础与实践:Python文件处理入门
  • 智能手表:MPU6050和水平仪,动态表情包
  • 第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2023年1月15日真题
  • Qemu-NUC980(二):时钟clock代码添加
  • 驾驶场景玩手机识别:陌讯行为特征融合算法误检率↓76% 实战解析