目录

一、识别文件系统和设备

1.1、分区

1.2、逻辑卷

二、挂载卸载文件系统命令mount、umount、blkid、lsof

2.1、挂载

2.2、卸载

三、检查文件系统命令df、du

四、制作文件链接命令ln

4.1、硬链接

4.2、软连接

五、查找文件命令locate、find


一、识别文件系统和设备

1.1、分区

硬盘和存储设备通常划分为更小的块,称为分区。不同分区可以通过不同的文件系统进行格式化,用于不同的目的。存储设备由一个特殊文件类型表示——块设备。块设备存储在/dev目录中。

不同类型的磁盘驱动器,用不同的字母表示,顺序按照abcd字母序,代表整个驱动器。

  • 检测到SCSI/SATA或USB硬盘驱动器,那么的第一个是/dev/sda,第二个是/dev/sdb,以此类推。
  • 检测到虚拟机中的硬盘驱动器,那么第一个是/dev/vda,第二个是/dev/vdb,以此类推。或者/dev/xvda、/dev/xvdb、……
  • 早期设备有IDE磁盘的,第一个是/dev/hda,第二个是/dev/hdb,以此类推。

分区顺序按照数字序,在一块磁盘/dev/sda的第一个分区是/dev/sda1,第二个分区是/dev/sda2,以此类推。其他类型也是以此类推。

[root@server0 ~]# ll /dev/vd*
brw-rw----. 1 root disk 253,  0 Feb 28 14:13 /dev/vda
brw-rw----. 1 root disk 253,  1 Feb 28 14:13 /dev/vda1
brw-rw----. 1 root disk 253, 16 Feb 28 14:32 /dev/vdb
brw-rw----. 1 root disk 253, 17 Feb 28 14:32 /dev/vdb1

1.2、逻辑卷

另一种磁盘和分区的方式是逻辑卷管理(LVM)。通过LVM,每个块设备都可以做成物理卷,一个或多个物理卷可以汇集为一个卷组。卷组再切片形成逻辑卷,来提供存储空间。逻辑卷与分区相当。对于卷组,/dev目录中有一个名称与该卷组相同的目录。在该目录下,已创建名称与逻辑卷相同的符号链接。例如vg1卷组中lv_data逻辑卷的设备文件是/dev/vg1/lv_data、/dev/vg1/log……。

LVM依赖于设备映射程序(DM)内核驱动程序。以上符号链接/dev/vg1/lv_data指向/dev/dm-number块设备节点。number的分配是连续的,从0开始。每个逻辑卷在/dev/mapper目录中有另外一个符号链接,名称为/dev/mapper/vg1-lv_data、/dev/mapper/vg1-lv_log。

通常,要使用可靠且一致的符号链接名称来访问逻辑卷,可以一致使用/dev/vg1/lv_data、/dev/vg1/log,或者一致使用/dev/mapper/vg1-lv_data、/dev/mapper/vg1-lv_log。不能使用/dev/dm-number名称,因为它每次启动会有不同。

二、挂载卸载文件系统命令mount、umount、blkid、lsof

2.1、挂载

linux有一套以/为根节点的目录树,可以扩展。把新的文件系统添加到现有目录树的过程称为挂载,反之就是卸载,分别用mount和umount命令。文件系统添加到的那个目录,称为挂载点。mount命令需要通过两种方式来指定文件系统:设备文件/dev目录中的块设备文件、文件系统的通用唯一识别符UUID。只要文件系统没有重新创建过,UUID将保持不变。设备文件可能会改变。blkid命令简要列出其中具有文件系统的现有分区和文件系统的UUID。

因此,手动临时挂载可以用设备文件,如果是持久挂载则选择用UUID。

目录树默认存在/mnt目录,可以作为挂载点提供入口点。建议在/mnt下创建子目录,并将该子目录用作挂载点。比如,/dev/cdrom。

[root@server0 ~]# blkid
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"
/dev/vdb1: UUID="27dcfc20-6d6c-48ca-ba4d-9db3b2ff8f6c" TYPE="xfs"[root@server0 ~]# mkdir /mnt/mydata
[root@server0 ~]# mount /dev/vdb1 /mnt/mydata/[root@server0 ~]# mount UUID="27dcfc20-6d6c-48ca-ba4d-9db3b2ff8f6c" /mnt/mydata

USB闪存设备等可移动介质在插入后由图形桌面环境自动挂载。可移动介质的挂载点是/run/media/<user>/<label>。<user>是登录图形环境的用户。<label>是文件系统创建时所取的名称。

2.2、卸载

卸载文件系统,umount命令需要使用挂载点作为参数。

[root@server0 mydata]# umount /mnt/mydata/
umount: /mnt/mydata: target is busy.(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1))
[root@server0 mydata]# lsof /mnt/mydata/
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    1557 root  cwd    DIR 253,17       16  128 /mnt/mydata
lsof    2019 root  cwd    DIR 253,17       16  128 /mnt/mydata
lsof    2020 root  cwd    DIR 253,17       16  128 /mnt/mydata
[root@server0 mydata]# cd
[root@server0 ~]# umount /mnt/mydata/

如果挂载点正在由某一进程访问,将不能卸载,要卸载必须停止访问挂载点。lsof命令列出所给目录中所有打开的文件及访问它们的进程。确定进程以后,等待进程结束或向进程发送SIGTERM、SIGKILL信号等来结束进程。

三、检查文件系统命令df、du

对文件系统挂载点和可用空间大小有个简略了解,可以运行df命令。报告所有已挂载的普通文件系统的总量、已用、可用的磁盘空间大小和百分比。如果要关注某一特定目录使用空间的详细信息,可以使用du命令。两个命令常用选项有-h、-H、-T,输出可读格式。du命令以递归方式显示目录树中所有文件大小,因此注意指定递归深度du -h -d 1或者du -h --max-depth=1。

  • -h,可读格式,单位是KiB、MiB、GiB,进制为2^10
  • -H,可读格式,单位是SI单位,也就是KB、MB、GB(硬盘厂商通常使用的单位),进制为10^3
  • -T,显示文件系统类型
[root@server0 ~]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      xfs        10G  3.1G  7.0G  31% /
devtmpfs       devtmpfs  906M     0  906M   0% /dev
tmpfs          tmpfs     921M   80K  921M   1% /dev/shm
tmpfs          tmpfs     921M   17M  904M   2% /run
tmpfs          tmpfs     921M     0  921M   0% /sys/fs/cgroup[root@server0 ~]# df -HT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      xfs        11G  3.3G  7.5G  31% /
devtmpfs       devtmpfs  950M     0  950M   0% /dev
tmpfs          tmpfs     966M   82k  966M   1% /dev/shm
tmpfs          tmpfs     966M   18M  948M   2% /run
tmpfs          tmpfs     966M     0  966M   0% /sys/fs/cgroup[root@server0 ~]# du /usr -h -d 1
118M    /usr/bin
66M /usr/sbin
459M    /usr/lib
701M    /usr/lib64
1.4G    /usr/share
0   /usr/etc
0   /usr/games
36K /usr/include
35M /usr/libexec
16K /usr/local
0   /usr/src
2.8G    /usr

tmpfs和devtmpfs设备是系统内存中的文件系统,在系统重启后,写入tmpfs或devtmpfs的文件都会消失。

四、制作文件链接命令ln

4.1、硬链接

文件系统中的每一个文件默认具有一个硬链接。为节省空间,可以不复制文件,而创建引用同意文件的硬链接。指向同意文件的所有硬链接具有相同的权限、链接数、用户/组所有权、时间戳以及文件内容。指向同一文件的硬链接需要在相同的文件系统中。硬链接不能指向目录。命令ln可以创建硬链接,需要一个现有文件作为第一个参数,后面跟硬链接。即使原始文件被删除,只要有一个硬链接,该文件内容就依然可用。命令ls -l 在文件权限后、所有者前显示硬链接数量。

[root@server0 ~]# echo "hello file link" > /tmp/file
[root@server0 ~]# ln /tmp/file file

4.2、软连接

在创建硬链接的命令上加上-s选项,创建的就是软链接。软链接不是常规文件,可以看到其类型为"l"。软链接指向的目录可以位于不同的文件系统。软链接可以指向目录。当原始文件被删除后,软链接依然指向该文件,但是目标文件消失了,也就不可用了。

[root@server0 ~]# ln -s ./file file.link
[root@server0 ~]# ll
total 16
-rw-------. 1 root root 8619 May  7  2014 anaconda-ks.cfg
drwxr-xr-x. 3 root root  100 Feb 15 15:12 dst
-rw-r--r--. 1 root root   16 Feb 28 21:30 file
lrwxrwxrwx. 1 root root    6 Feb 28 21:32 file.link -> ./file

五、查找文件命令locate、find

命令行环境下查找文件的命令有locate和find两个。locate命令搜索预先生成的数据库中的文件名或路径,find命令通过爬取整个文件系统来实时搜索文件系统。

locate命令后面跟要搜索的文件名,即使文件或路径仅部分匹配,也会返回结果。locate -i表示不区分文件名的大小写。如果是刚刚创建、更改、删除文件名,那么应该使用updatedb命令更新数据库后再进行搜索。

[root@server0 ~]# locate nginx
/usr/share/augeas/lenses/dist/nginx.aug[root@server0 ~]# echo "hello" > mynginxfile
[root@server0 ~]# locate nginx
/usr/share/augeas/lenses/dist/nginx.aug[root@server0 ~]# updatedb
[root@server0 ~]# locate nginx
/root/mynginxfile
/usr/share/augeas/lenses/dist/nginx.aug

find命令后面跟要搜索的目录,常用选项如下:

  • -name "*.txt" ,文件名双引号括起来,支持模糊查询
  • -i ,文件名不区分大小写
  • -type <f d b l> ,按照文件类型查找,f普通文件,d目录,b块设备文件,l软链接等
  • -size <10k +20M -30G>,按照文件大小查找,大小等于10kb,大于20M,小于30G
  • -amin <120 +200 -150>,按照最后访问时间查找,120分钟前修访问的文件,200分钟以前修访问的文件,150分钟以内修访问的文件
  • -atime n,按照最后访问时间查找,同-amin 按照n*24小时计算时间
  • -cmin <120 +200 -150>,按照最后修改状态时间查找,120分钟前修改过状态的文件,200分钟以前修改过状态的文件,150分钟以内修改过状态的文件
  • -ctime n,按照最后修改状态时间查找,同-cmin 按照n*24小时计算时间
  • -mmin <120 +200 -150>,按照最后修改内容时间查找,120分钟前修改过内容的文件,200分钟以前修改过内容的文件,150分钟以内修改过内容的文件
  • -mtime,按照最后修改内容时间查找,同-mmint 按照n*24小时计算时间
  • -links <+1 -5>,文件硬链接数大于1个,小于5个
  • -user <root>,按照所属用户查找
  • -group <wheel>,按照所属组查找
  • -uid <1001>,按照所属用户id查找
  • -guid <1001>,按照所属用户组id查找
  • -exec,往下看↓

find还有一个强大的功能,就是对找到的文件进行统一的后续操作。需要-exec <cmd> '{}' \,'{}'表示找到的文件。

# 在/backup目录下找到以wordpress开头的普通文件,最后修改时间6天以前
# 然后全部删掉
find /backup -name wordpress* -type f -mtime +6 -exec rm '{}' \;

Linux12-文件系统基础相关推荐

  1. Linux文件系统基础

    Linux文件系统基础 文件系统概述 Linux文件系统的特点 Linux文件系统的组成 Linux文件系统类型 EXT文件系统 其他文件系统 文件和目录的基本概念 文件 目录 路径 文件系统概述 操 ...

  2. 计算机操作系统学习笔记——文件管理之文件系统基础

    文件系统基础 一.基本概念 1.文件的定义 2.数据项 1)基本数据项 2)组合数据项 3.记录 4.文件 4.1.文件的属性 5.文件类型 5.1.按用途分类 1)系统文件 2)用户文件 3)库文件 ...

  3. 文件系统调用和Linux文件系统基础

    文件系统调用和Linux文件系统基础 keywords fdisk.LBA.CHS.MBR.super struct.directory.file.inode.inode table.block.fi ...

  4. Linux操作系统文件系统基础知识详解

    标签:基础知识操作系统根目录Linux程序 一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Li ...

  5. linux文件系统基础知识

    这两天看了一本fedora 6的实践教程,下面是有关linux文件系统知识的学习笔记: 1.linux文件系统分配策略:     块分配( block allocation ) 和 扩展分配  ( e ...

  6. ext3文件系统基础

    摘要: block size: 是文件系统最小的单位,Ext2/Ext3/Ext4 的区块大小可以是 1024.2048 或 4096 字节. (Compaq Alpha 可 以使用 8192 字节区 ...

  7. unix/linux文件系统基础知识

    1.linux文件系统分配策略: 块分配( block allocation ) 和 扩展分配 ( extent allocation ) 块分配:磁盘上的文件块根据需要分配给文件,避免了存储空间的浪 ...

  8. 文件系统_文件系统基础总结

    1 相关概念 文件系统的管理功能,是通过把它所管理的程序和数据组织成一系列文件的方法来实现的.文件是指具有文件名的若干相关元素的集合.元素通常是记录,而记录又是一组有意义的数据项的集合.因此,基于文件 ...

  9. Linux文件系统基础之inode和dentry

    inode和dentry在VFS和实体的文件系统(ext2.ext3等)中都是比较重要的概念.首先看一下虚拟文件系统的标准定义:虚拟文件系统(英语:Virtual file system,缩写为VFS ...

  10. Linux 文件系统基础

    1.FHS的概念 FHS的全称Filesystem Hierarchy Standard(文件系统层次化标准),基本上所有的Linux版本的系统都采用这种文件组织方式.它的主要作用是定义了系统中每个目 ...

最新文章

  1. Doctor NiGONiGO’s multi-core CPU(最小费用最大流模板)
  2. 上传Jar到本地Maven仓库
  3. web前端技术分享Electron之Renderer Process API
  4. 短语密码_使用密码短语以提高安全性
  5. 解决nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
  6. 念整数 mooc翁恺
  7. wpf menuitem 点击控件元素_一招教你如何在WPF界面开发时自定义外观,快来Get
  8. sphinx mysql实时搜素_【原创】sphinx实时索引的配置及实际应用、实例
  9. 单源最短路(spfa+Dijkstra)附数据
  10. python身份证验证系统_用python制作全国身份证号验证及查询系统
  11. 在VFP里玩SQL查询
  12. 牛顿雕像和墓地上镌刻着的两句话
  13. 记录开发内容demo-java支付宝提现
  14. Zoomit的简单使用
  15. 无线路由器如何建立ftp服务器,利用无线路由器建立FTP服务器
  16. 游戏3D建模入门,有哪些建模软件可以选择?
  17. mavlink协议从入门到放弃(二)
  18. PPT怎么用100张照片做照片墙?
  19. 强制清理CDN(DNS)缓存方法
  20. 高并发下的缓存问题及布隆过滤器

热门文章

  1. String创建对象的个数 StringBuffer
  2. 微信小程序之上传附件
  3. 5 OC 中的三种对象
  4. 利用Injection插件加快Xcode编译速度
  5. vim常用命令总结 (转)
  6. ubuntu如何修改字符集编码
  7. Shell 函数、数组与正则表达式
  8. 提前了解客户背景很有必要
  9. 用createrepo配置Yum本地源
  10. 磁盘加密软件TrueCrypt知识大全(二)之创建文件型加密卷