Linux学习(七)文件系统管理

2021/12/17 7:19:38

本文主要是介绍Linux学习(七)文件系统管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

      • 1 回顾分区和文件系统
      • 2 文件系统常用命令
        • 2.1 df命令、du命令、fsck命令、dump2fs命令
        • 2.2 挂载命令
        • 2.3 挂载光盘与U盘
        • 2.4 支持NTFS文件系统
      • 3 fdisk分区
        • 3.1 fdisk命令分区过程
        • 3.2 分区自动挂载与fstab文件修复
      • 4 分配swap分区

1 回顾分区和文件系统

1)分区类型

  • 主分区:总共最多只能分四个
  • 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
  • 逻辑分区:逻辑分区是再扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘,Linux最多支持11个逻辑分区。

2)分区表示方法

示例1:3个主分区

请添加图片描述

分区设备文件名
主分区1/dev/sda1
主分区2/dev/sda2
主分区3/dev/sda3
扩展分区/dev/sda4
逻辑分区1/dev/sda5
逻辑分区2/dev/sda6
逻辑分区3/dev/sda7

示例2:1个主分区

请添加图片描述

分区设备文件名
主分区1/dev/sda1
扩展分区/dev/sda2
逻辑分区1/dev/sda5
逻辑分区2/dev/sda6
逻辑分区3/dev/sda7

2)文件系统

  • ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2文件系统。1993年发布,最大支持16TB的分区和最大2TB的文件(1TB=1024GB=1024*1024KB)。
  • ext3:ext3文件系统是ext2文件系统的升级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件。
  • ext4:它是ext3文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。EXT4的变化可以说是翻天覆地的,比如向下兼容EXT3、最大1EB文件系统的16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。是CentOS 6.3的默认文件系统(1EB=1024PB=1024*1024TB)。

2 文件系统常用命令

2.1 df命令、du命令、fsck命令、dump2fs命令

1)文件系统查看命令df

$ df [选项] [挂载点]

选项:

  • -a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs
  • -h 使用习惯单位显示容量,如KB,MB或GB等
  • -T 显示文件系统类型
  • -m 以MB为单位显示容量
  • -k 以KB为单位显示容量。默认就是以KB为单位

补充:df命令显示分区的占用情况

2)统计目录或文件大小

$ du [选项] 文件或目录名

选项:

  • -a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
  • -h 使用习惯单位显示磁盘占用量,如KB,MB或GB等
  • -s 统计总占用量,而不列出子目录和子文件的占用量

du命令和df命令的区别:

  • df 命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间),所以du命令比df命令看到的文件大小要小。
  • du 命令是面向文件的,只会计算文件或目录占用的空间。

补充:

  • ls如果查看的是目录只会统计该目录下一级子目录和子文件的文件名占用空间的大小,而不会统计子目录和子文件中的文件内容大小。
  • 这个时候如果想要统计目录大小就必须要使用du命令,du [目录名],查看目录下所有子目录和子文件的大小,以及该目录的总大小。
  • 一般我们只需要查看目录的总大小,这个时候我们只需要加-s即可。
  • du命令比df命令看到的文件大小要小,是因为df查看的内容除了文件之外还包括被命令和程序占用的空间,所以真正占用的空间应该是df。
  • 用du看文件大小更准确,用df看剩余空间大小更准确。

注意:df命令比较耗费资源,系统高负载情况下不要执行。

3)文件系统修复命令sfck

$ fsck [选项] 分区设备文件名

选项:

  • -a 不用显示用户提示,自动修复文件系统
  • -y 自动修复。和-a作用一致,不过有些文件系统只支持-y

补充:fsck命令系统会执行,不需要手动执行

注意:fsck有可能会将系统搞崩溃所以一般不要使用

4)显示磁盘状态命令

$ dumpe2fs 分区设备文件名

补充:

  • 分区是将大柜子分成小柜子,格式化是将小柜子分成数据块,dumpe2fs [分区]就可以查看到分区的数据块大小,默认是4KB

2.2 挂载命令

  • linux中每一个硬件都有一个设备文件名,光盘也是,系统上的每一个分区都会有一个挂载点,也叫盘符,将设备文件名和盘符连接起来的过程就叫挂载,区别于windows的自动挂载,linux需要手动进行挂载。
  • /proc /sys是内存挂载点

1)查询与自动挂载

$ mount 【-l】
# 查询系统中已经挂载的设备,-l会显示卷标名称

$ mount -a
# 依据配置文件/etc/fstab的内容,自动挂载

2)挂载命令格式

$ mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点

选项:

  • -t [文件系统] 加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660 等文件系统
  • -L [卷标名] 挂载指定卷标的分区,而不是安装设备文件名挂载
  • -o [特殊选项] 可以指定挂载的额外选项

请添加图片描述

示例:

$ mount -o remount,noexec /home
# 重新挂载/boot分区,并使用noexec权限
$ cd /home
$ vim hello.sh
$ chmod 755 hello.sh
$ ./hello.sh
$ mount -o remount,exec /home
# 记得改回来啊,要不会影响系统启动的

补充:

  • 可执行文件不能执行,并不一定权限导致的,虽然提示"权限不足",有可能是分区当中设置了该路径下不可执行可执行文件,可以移到别的分区执行试试。

2.3 挂载光盘与U盘

1)挂载光盘

$ mkdir /mnt/cdrom/
# 建立挂载点

$ mount -t iso9600 /dev/cdrom /mnt/cdrom/
# 挂载光盘

$ mount /dev/sr0 /mnt/cdrom/
# -t iso9600是默认设置,可以省略

补充:

  • linux系统默认给我们准备了两个目录用来挂载,/media 和 /mnt,/media用来挂载光盘,/media用来挂载U盘。

2)取消挂载命令

$ umount 设备文件名或挂载点# 举个栗子$ umount /mnt/cdrom

3)挂载U盘

$ fdisk -l# 查看U盘设备文件名$ mount -t vfat /dev/sdb1 /mnt/usb/# 挂载U盘

注意:Linux默认是不支持NTF文件系统的。

补充:

  • 使用虚拟机挂载u盘的时候需要注意,鼠标要点到虚拟机里面才会连到linux上,否则连接是外面的windows。
  • fdisk -l只能查看哪些分区可以正常使用,不能查看是否被挂载,查看是否被挂载应该是用mount命令或df命令查看。
  • 使用命令进行的挂载,一旦重启挂载就会消失。
  • 要想永久生效,只有写入文件。

注意:扩展分区不能格式化。

2.4 支持NTFS文件系统

1)下载NTFS-3G插件

http://www.tuxera.com/community/ntfs-3g/download/

2)安装NTFS-3G

$ tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz# 解压$ cd ntfs-3g_ntfsprogs-2013.1.13# 进入解压目录$ ./configure# 编译器准备。没有指定安装目录,安装到默认位置中$ make# 编译$ make install# 编译安装

3)使用

$ mount -t ntfs-3g 分区设备文件名 挂载点

3 fdisk分区

3.1 fdisk命令分区过程

1)添加新硬盘

请添加图片描述

2)查看新硬盘

$ fdisk -l

3)使用fdisk命令分区

$ fdisk /dev/sdb

请添加图片描述

4)重新读取分区表信息

$ partprobe

5)格式化分区

$ mkfs -t ext4 /dev/sdb1

6)建立挂载点并挂载

$ mkdir /disk1$ mount /dev/sdb1 /disk1/

3.2 分区自动挂载与fstab文件修复

1)/etc/fstab文件

  • 第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)
  • 第二字段:挂载点
  • 第三字段:文件系统名称
  • 第四字段:挂在参数
  • 第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
  • 第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的与优先级比2高

补充:

  • 分区的UUID只要不删除分区就不会改变。

注意:

  • 万一/etc/fstab文件写错了,会直接导致系统崩溃,启动失败,需要使用mount -a命令对文件进行检查。

2)分区自动挂载

$ vim /etc/fstab...省略部分输出.../dev/sdb5    /disk5    ext4  defaults    1 2

3)/etc/fstab文件修复

$ mount -o remount,rw /

4 分配swap分区

1)新建swap分区

$ fdisk /dev/sdb# 别啊忘记把分区ID改为82

2)格式化

$ mkswap /dev/sdb1

3)加入swap分区

$ swapon /dev/sdb1# 加入swap分区$ swapoff /dev/sdb1# 取消swap分区

4)swap分区开机自动挂载

$ vim /etc/fstab/dev/sdb1   swap   swap   defaults  0 0

5)free命令

$ free# 查看内存与swap分区使用情况
  • cache(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程。
  • buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程。


这篇关于Linux学习(七)文件系统管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程