datetime:2022-01-08 14:34:00
author:nzb

Linux的文件系统管理

分区和系统文件

分区类型

  • 对于硬盘分区形式是MBR的

    • 分区图

    • 一:

    • 二:

      • 规定了:1、2、3、4只能分配给主分区(主分区最多4个),所以逻辑分区从5开始

    • 主分区:总共最多只能分4个

    • 扩展分区: 包含逻辑分区

      • 只能有一个

      • 也算作主分区的一种

      • 主分区+扩展分区<=4个

      • 不能存储数据和格式化

      • 必须再分成逻辑分区才能使用

        • 如果是IDE硬盘,Linux最多支持59个逻辑分区

        • 如果是SCSI硬盘,Linux最多支持11个逻辑分区

  • 对于GPT分区形式而言,没有上述限制

文件系统

  • Linux的文件系统可分为

    • ext2:是ext文件系统的升级版本,最大支持16TB的分区和最大2TB的文件(1TB=1024G=1024*1024KB)

    • ext3:是ext2文件系统的升级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性,最大支持16TB的分区和最大2TB的文件(1TB=1024G=1024*1024KB)

    • ext4:是ext3文件系统的升级版本,ext4在性能、伸缩性和可靠性方面进行了大量改进。

      • 向下兼容EXT3

      • 最大1EB文件文件系统和16TB文件(1EB=1024PB=1024*1024TB)

      • 无限数量子目录

      • Extents连续数据块概念

      • 多块分配

      • 延迟分配

      • 持久预分配

      • 快速FSCK

      • 日志校验

      • 无日志模式

      • 在线碎片整理

      • inode增强

      • 默认弃用barrier等,默认CentOS 6.3的默认文件系统

    • swap:

    • vfat:

  • Windows文件系统为:FAT16、FAT32、FAT64和NTFS。而格式化的目的就是写入文件系统

文件系统常用命令

df命令,du命令,fsck命令,dumpe2fs命令

  • df

    df [选项]

    • df -a: 显示所有分区

    • df -h:人性化显示。(一般用来统计系统空间大小)

  • du

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

    • du -a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量

    • du -h :人性化显示

    • du -s:弥补ls命令的不足,可以统计文件夹包括里面的内容的大小而不是单单文件夹的大小。(一般用来统计文件大小),避免服务器高运载下使用

  • df和du的区别

    • du只是面向文件的,只会计算文件或目录占用的空间;

    • df是从文件系统角度考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除但是程序并没有释放空间),

    • 所以df看到的才是真正的可以使用的空间

  • fsck

    文件系统修复命令,不需要自己手动执行:fsck [选项] 分区设备文件名 系统会自动执行,除非需要手动去执行,否则不用管

    • fsck -a 分区设备文件名:不用显示用户提示,自动修复文件系统

    • fsck -y 分区设备文件名:自动修复,和-a作用一致,不过有些文件系统只支持-y

  • dumpe2fs

    显示磁盘状态:dumpe2fs 分区设备文件名 显示ext2、ext3、ext4文件系统的超级块和块组信息

挂载命令

将设备文件名和绑定到盘符(挂载点)上,Windows是自动,Linux默认是手动分配

  • mount -l:查询异已挂载的设备,加-l会显示卷标名

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

  • mount

    挂载命令格式:mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点

    • -t:文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统

    • -L:卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载

    • -o:特殊选项:可以制度挂载的额外选项

      没特殊需求不需要加特殊选项

挂载光盘和U盘

  • Linux中的分区时开机自动挂载,但是光盘和U盘时手动挂载,系统准备了/mnt/和/media/来挂载

    /mnt:挂载U盘 /media:挂载光盘

  • 挂载光盘步骤

    sr0和cdrom都可以作为设备文件名

    • 建立挂载点:mkdir /mnt/cdrom/

    • 挂载:mount -t iso9660 /dev/cdrom /mnt/cdrom/或者mount /dev/sr0 /mnt/cdrom

      • 设备文件名:/dev/cdrom和/dev/sr0是固定的

    • 去挂载点访问:cd /mnt/cdrom/

    • 在拿走光盘之前需要先卸载光盘:umount 设备文件名或挂载点

  • 挂载U盘步骤

    U盘的设备文件名是自动识别的,用fdisk -l查看

    • 建立挂载点:mkdir /mnt/usb/

    • 挂载:mount -t vfat /dev/sdb1 /mnt/usb/

      /dev/sdb1:fdisk -l 查看的

    • 去挂载点访问:cd /mnt/usb/

    • 在拔U盘之前需要先卸载光盘:umount 设备文件名或挂载点

  • 注意:

    • 挂载U盘只能用本机或者虚拟机,不能用远程工具

    • Linux默认是不支持NTFS文件系统的外设的,U盘只能FAT格式的

Linux如何支持NTFS文件系统

  • Linux系统的内核中已经把市面上常见的驱动包括了,所以安装系统后一般不需要安装驱动,Linux会自动匹配识别,如果Linux默认没有把一个文件系统的驱动加载进来,我们就需要手动去安装驱动。

  • 几种让Linux支持NTFS文件系统的方法:

    • 内核重新编译

    • 第三方的插件:ntfs-3g

  • 内核编译太麻烦,太高端,一般选择“ntfs-3g插件”来实现

  • 安装步骤:

    • 解压:tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz

    • 进入解压目录:cd ntfs-3g_ntfsprogs-2013.1.13

    • 编译前准备:./configure

    • 编译:make

    • 编译安装:make install

    • 挂载NTFS分区的硬盘:mount -t ntfs-3g 设备文件名 挂载点

fdisk分区

fdisk命令分区过程

  • 虚拟机添加新硬盘,并用fdisk -l查询新硬盘是否被识别

  • 若已识别新硬盘/dev/sdb/,就开始为新硬盘分区

    • 进入fdisk交互模式:fdisk /dev/sdb/

  • partprobe

    分完区后必须执行这个命令,重新读取分区表信息

  • 然后格式化分区

    • mkfs -t ext4 /dev/sdb1

    • mkfs -t ext4 /dev/sdb5

  • 最后创建挂载点并挂载

    • mkdir /disk1

    • mkdir /disk5

    • mount /dev/sdb1 /disk1/

    • mount /dev/sdb1 /disk5/

  • fdisk -l:查看,两个分区挂载完毕

分区自动挂载和/etc/fstab文件修复

  • 上面的mount命令挂载只能临时生效,每次重启都要手动挂载硬盘,要想永久生效,就要修改/etc/fstab配置文件的内容。

  • 添加了挂载信息后,执行mount -a,依据配置文件/etc/fstab中的内容,自动挂载

  • 万一/etc/fstab文件写错了,会导致系统崩溃

  • /etc/fstab文件修复

    • 出错后按提示进入root操作界面,发现/etc/fstab文件是只读

    • 执行:mount -o remount,rw / 就可以修改/etc/fstab文件了,就可以修复了。

分配swap分区

  • free

    查看内存与swap分区使用状况

  • 新建swap分区

    • fdisk /dev/sdb

      进入分区交互模式

      • 记得修改分区ID号为82

        使用t修改分区ID号

      • l:查看分区类型

      • partprobe

      • mkswap /dev/sdb6 格式化

      • swapon /dev/sdb6 加入swap分区

      • swapoff /dev/sdb6 取消swap分区
    • swap分区开机自动挂载

results matching ""

    No results matching ""