Linux视频学习笔记(十二)--文件系统管理

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011099093/article/details/85926883

声明:本系列文章是博主根据 “兄弟连新版Linux视频教程”做的笔记和视频截图,只为学习和教学使用,不适用任何商业用途。

PS:文章基于Linux版本CentOS6.9,如果对Linux感兴趣,建议去看《细说Linux》,沈超老师和李明老师的教学风格我很喜欢:)

 

第九章 文件系统管理

视频9.1 回顾分区和文件系统

在设备文件名/dev/sda1中,sd代表sata或scsi(四嘎斯)硬盘接口,a代表第一块硬盘,1代表第一个分区;

hd代表ide硬盘接口

 

当主分区不足三个时,扩展分区里的逻辑分区 的 设备文件名有所变化:

注意:

1、2、3、4四个分区号只能给主分区或扩展分区使用,而不能给扩展分区中的逻辑分区使用;

 

 

在CentOS6以后,开始使用ext4文件系统:

9.2 文件系统常用命令

视频9.2.1 常用命令df、du、fsck、dumpe2fs

 

 

du命令用于统计目录大小,一般不用来统计文件大小,直接用ll –h就可以查看文件大小;

注意:

        ll –h 命令查看目录大小时发现不符合该目录真实大小:

因为ls或ll只统计该目录下一级目录和文件的大小;

 

使用du –h查看该目录下所有文件的大小及总目录的大小,习惯上使用du –sh只查看总目录大小:

 

发现:根目录下使用df查看1.4G,du查看(其实统计时包括了/home和/boot目录)1.3G,

这是由于df命令查看时会包含该分区下被进程或删除文件占用的空间

 

 

dumpe2fs命令用于展示超级块(分区)的信息,可以查看分区的格式化的块(block)的大小:

这里我们可以看到:

        /dev/sda1分区(超级块)中,他的

挂载点:/boot,

UUID(唯一标识符),

划分的块的个数:Block count,

i节点个数:Inode count,

每个块的大小:Block size:1024(b)=1kb

 

再看/dev/sda5超级块:

由于dumpe2fs展示信息过多,可以使用more命令展示:

dumpe2fs  /dev/sda5|more

可以看到默认挂载选项:Default mount options:user_xattr acl

分块大小:Block size:4096(b)=4kb

而且基本上根分区的分块大小都是4k

视频9.2.2 挂载命令

把设备文件名(如/dev/sda5)和盘符(挂载点(如/boot))联系起来的过程叫挂载

 

  1. 查询与自动挂载

 

使用mount命令查看当前系统中已经挂载了哪些分区:

proc、sysfs系统内存使用的挂载点,tmpfs临时挂载点

 

分区时系统开机时自动挂载,但是光盘、U盘、硬盘不是自动挂载,所以就要依靠/etc/fstab文件设置自动挂载,使用mount –a命令根据/etc/fstab文件自动挂载;

 

  1. 挂载命令格式与选项

 

使用mount –t 文件系统 –L 卷标名 –o 特殊选项 设备文件名 挂载点 命令时,

注意:

当挂载的是分区硬盘时,-t 文件系统为ext4,当挂载的是光驱,文件系统为iso9660

 

-o 特殊选项

 

对于特殊选项中的exec/noexec参数,进行以下测试:

编写一个最简单的shell脚本hello.sh:

注意:

#!/bin/bash 为bash脚本必须的开头声明

echo “abc” 打印一段话

 

赋予sh文件执行权限,使用 ./命令执行:

 

再看exec/noexce 参数:

 

测试:

重新挂载/home分区,撤销执行权限,复制hello.sh文件到/home/下:

 

执行hello.sh文件:

 

可以发现,即使是root用户在具有755权限的情况下也无法执行.sh文件,恢复/home/的执行权限:

视频9.2.3 挂载光盘与U盘

1.挂载光盘

Linux中默认mnt用来挂在u盘,media用来挂载光盘,但是实际可以根据需要设置;

  1. 首先创建一个光盘的挂载点(可以理解为盘符,类似Windows中的d盘e盘等)

mkdir /mnt/cdrom/

  1. 将光盘放入光驱:(虚拟机 - 设置 - CD/DVD)

勾选‘已连接’(否则就像没有给光驱接通电源),选则一个iso文件

 

  1. 将光盘放入光驱后,进行挂载
  1. 使用默认的光盘文件系统进行挂载:

mount –t iso9660 /dev/cdrom /mnt/cdrom

  1. 直接将设备文件名与挂载点进行挂载:

mount /dev/sr0 /mnt/cdrom

        其实进入/dev/cdrom路径查看,发现他是sr0的一个软链接:

       

  1. 挂载

发现报错:

第一个错误表名光盘是只读光盘,这是正常报错;

第二个错误说明之前可能已经给/dev/sr0挂载了其他挂载点,需要先取消挂载,再进行新的挂载:

 

进入/mnt/cdrom/下发现没有文件了,此时再次进行挂载(注意不能在挂载点卸载,否则会报错)

再次进入/mnt/cdrom/下,发现与.iso文件中的文件一样,说明挂载成功:

 

2.卸载

 

3.挂载U盘

注意:

  1. U盘的设备文件名与光盘不同,如果Linux中只有一块硬盘,设备文件名为sda,则U盘分配的设备文件名为sdb,若Linux中有两块硬盘,则U盘分配的设备文件名则为sdc,所以U盘的设备文件名会自动检测的,使用fdisk –l 命令可以查看U盘的设备文件名
  2. 在挂载U盘时不能使用xshell等远程连接工具,只能使用虚拟机本身
  3. 必须要把鼠标点进虚拟机,此时插入U盘,才会在Linux中被识别

 

使用fdisk –l命令查看U盘设备文件名(此时可以使用远程连接工具):

 

发现U盘的信息:/dev/sdb ,容量为4026MB,设备文件名:/dev/sdb1;

使用mount –t vfat /dev/sdb1 /mnt/usb/ 命令挂载U盘

1.根据U盘的文件系统不同选择不同的文件系统进行挂载

        如果是fat16分区,Linux中识别为fat文件系统;

        如果是fat32分区,Linux中识别为vfat文件系统;

但是实际操错中无论fat,还是vfat挂载U盘时都报错:

(待解决)

注意:

由于Linux默认不支持NTFS格式的文件系统

而直接挂载U盘会提示:未知的文件系统类型“ntfs”,所以挂载失败;

 

解决方法:看下一个视频内容

视频9.2.4 支持NTFS文件系统

与Windows系统相比:

Windows系统需要手动安装硬件驱动;

Linux系统把大多数常见硬件的驱动都已经装载到Linux内核中,这点优于Windows系统;

 

但是,类似: ①NTFS文件系统等 ②一些在Linux内核之后出现的硬件 ,Linux中没有对应的驱动;

 

解决方法:

        第一种,因为Linux内核没有编译NTFS的驱动,可以重新编译一遍Linux的内核,把NTFS的驱动编译进来;

        第二种,应用第三方软件,如NTFS-3G插件;

 

1.下载NTFS-3G插件

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

 

2.安装NTFS-3G

安装步骤:

1.解压NTFS插件包:tar –zxvf ntfs-3g_ntfsprogs-2017.3.23

 

2.进入解压后的压缩包,里面有安装说明,直接安装 ./configure && make && make install

 

3.再次使用mount –t ntfs-3g /dev/sdb1 /mnt/usb/ 命令挂载U盘,查看挂载点(盘符),已经看到U盘中的内容;

 

注意:

        安装ntfs-3g需要gcc等支持,如果没有安装gcc会报错,需要重新安装,安装方法见本文:

  1. 视频6.3.3 RPM包管理-yum在线管理-光盘yum源
  2. 也可以使用远程网络yum源,但是比较慢

然后使用yum –y install gcc命令安装

3.使用NTFS-3G文件系统

使用fdisk –l 查看设备文件名,发现插入的硬盘有3个分区,其中一个是扩展分区:

W95 Ext’d(LBA),所以可以使用的只有另外两个分区:

 

9.3 fidisk分区

视频9.3.1 fdisk命令分区过程

1.添加新硬盘

  1. 先把虚拟机断电,选择 虚拟机-设置:

 

选择 添加-硬盘-SCSI ,接下来基本都是直接 ‘下一步’:

       

 

        在选择 磁盘容量时,由于是练习,而且我的电脑只剩40G,这里就选择5G容量,其实虚拟机只有在用到时才会真正占用容量

      

 

        添加完成之后,可以看到硬件中已经多了一块硬盘:

 

        确定,开机,查看硬盘是否正常挂载:

 

fdisk –l命令可以看到硬盘有多少个磁头(255 heads),多少个扇区(63 sectors/track),每个扇区有多少个柱面(2610 cylinders),

Partition 1 does not end on cylinder boundary.说明这个分区没有把硬盘使用完,即还可以再次分区。

Linux通过Id可以识别分区到底是什么分区:

        83是普通分区,82是交换分区,5是扩展分区;

2.查看新硬盘

 

3.使用fidsk命令给新添加的硬盘分区

 

  1. 使用fdisk /dev/sdb 进入分区选项;

  1. 根据上表中的fdisk交互命令进行操作:

输入l查看文件系统类型:

可以看到5是扩展分区,82是交换分区,83是主分区

 

        输入p查看当前分区列表:

       

 

  1.  

        输入n进行分区,

选择p(主分区),

选择分区号(1),

起始柱面(直接回车,默认从1开始)

终止柱面(不熟悉柱面大小,可使用自定义分配,使用+号:分配2G空间)

 

  1.  

        继续添加分区:

        输入n,

选择e(扩展分区),

输入分区号(2),

柱面起点终点直接回车使用默认(分配剩余所有柱面)

   

 

  1.  

        添加完扩展分区,可以在扩展分区中添加逻辑分区了:

        输入n,

选择l(逻辑分区),

默认起点终点柱面,

输入p查看当前分区情况,:

 

       

  1.  

最后,别忘记输入w保存退出:

 

  1. 使用partprobe命令重新读取表信息(一般保存后最好执行)

注意:

        如果文件的分区正在被使用,这时w保存会提示重启Linux才能进行下一步,但是如果不想重启,可以使用partprobe命令强制重新读取分区表信息;

 

        但是在使用partprobe这条命令时,报错not found:

        网上搜了下原因,是没有安装对应了rpm包,找对应的rpm包步骤:

        首先这条报错是由于我的Linux系统是最小化安装,许多命令没有安装;

        接下来,在公司的服务器上使用which partprobe命令寻找此命令的安装路径;

                 /sbin/partprobe

        紧接着,使用rpm –qf /sbin/partprobe 命令查找命令所在的rpm包:

                 parted-2.1-25 .el6.x86_64

       接下来使用yum –y install parted 安装parted包:

        安装成功,最上面一行的警告是正常的,下面三行报错有关/dev/sr0,即我安装的光盘,执行报错,可能是由于我之前挂载了光盘,导致光盘无法读取;

 

4.partprobe重新读取分区表信息

 

5.mkfs –t ext4 /dev/sdb1格式化分区

注意:

        不能格式化扩展分区(扩展分区只是为了容纳多个逻辑分区)

可以使用fdisk -l 查看当前分区,在使用mkfs –t ext4 设备文件名 命令格式化对应分区;

 

根据展示的分区系统,格式化/dev/sdb1和/dev/sdb5:

 

6.建立挂载点并挂载(临时挂载,下次重启需重新挂载)

 

 

使用mountdf –h 命令查看当前挂载情况:

视频9.3.2 自动挂载与fstab文件修复

  1. /etc/fstab文件

 

只有当目录为挂载点(为分区的目录)才会有lost+found目录

mount命令查看当前设备文件名挂载情况:

 

  1. 分区自动挂载

  1. 在对/etc/fstab文件中添加自动挂载信息时,第一个参数可使用UUID,也可使用设备文件名, UUID可在dumpe2fs –h /dev/sdb1 命令中查看:

 

  1. vim /etc/fstab修改自动挂载文件:

 

注意:

        /etc/fstab 是重要的系统启动文件,如果内容出错,会导致系统启动报错,让系统崩溃;

 

  1. 为了避免以上情况出现,可以先执行mount –a命令:

如果配置不正确会报错,这样就可避免配置不正确导致的系统重启崩溃;

 

  1. /etc/fstab文件修复

    1. 如果真的在写入/etc/fstab文件时出错了,比如,/dev/sdb1时少写了个1:

 

执行mount –a会发现:

 

    1. 如果忘记执行mount –a命令,而直接rebot执行了重启命令:

启动报错,可以看到fsck.ext4:Bad magic number in super-block while trying to open /dev/sdb,

然后看到最后系统给出的解决方案:

  1. Give root password for maintenance(给出root密码)
  2. or type Control-D to continue(或者Control+D重新启动)

 

    1. 我们输入root密码:

发现居然能进入系统,这说明:这个报错是可以被修复的:

 

    1. 查看/etc/fstab文件权限,修改/etc/fstab文件内容:

发现文件此时为只读的,即使是root用户也无法编辑。

 

    1. 重新挂载根分区,赋予读写权限:mount –o remount default,rw /

发现可以修改/etc/fstab文件内容了

 

    1. 再次重启rebot:

可以正常启动,说明已经正常自动挂载/etc/fstab文件的配置

 

使用mount命令查看挂载情况:

dev/sdb1已经正常挂载

 

    1. 注意:这种修复方式不是万能的

只针对/etc/fstab文件内容错误的情况进行修复,而且:

当根分区的配置出错时,连之前的报错信息都无法看到,系统将直接崩溃!

视频9.4 分配swap交换分区

当使用时发现swap空间不够大,可以根据要添加使用空间;

 

1.free命令查看swap分区使用

 

使用free或者其他命令可查看swap分区的使用情况,使用free –m可将大小以M单位展示:

 

上面说明有996M的内存,1499M的swap交换空间

 

2.新建swap分区

接下来给swap分区增加分配空间:

  1. 使用fdisk /dev/sdb将新增加的硬盘中分出一部分到swap分区:

之前把扩展分区全都分出去了,现在需要删除原来的逻辑分区后,重新添加两个逻辑分区:一个用作主分区文件类型,一个用作swap交换分区类型

 

  1. 发现新增的逻辑分区系统类型还是主分区类型,使用t命令修改为swap类型:

 

  1. p查看分区情况,w保存

 

4)partprobe重新读取分区表信息

报错信息与新增加的swap分区无关。

之前删除重新添加的逻辑分区/dev/sdb5需要格式化:mkfs –t ext4 /dev/sdb5

 

3.格式化swap分区mkswap /dev/sdb6

swap分区格式化命令与主分区格式化命令有所不同:mkswap 设备文件名

 

格式化出错,可能由于分区被占用,重启Linux再次 尝试,格式化成功:

 

4.加入swap分区

使用free –m命令查看swap分区信息:

 

执行swapon /dev/sdb6命令后,查询swap分区信息:

发现swap分区增加了512M,大小跟新建的swap分区相同:

 

如果不想添加,可使用swapoff 设备文件名取消加入的swap分区。

 

同样的使用命令方式添加的swap分区在Linux系统重启后将消失,需要重新挂载。

 

5.swap分区开机自动挂载

 

vi /etc/fstab文件中新加入一行,格式与上面swap分区格式保持一致,最后0 0表示不需要dump备份和fsck监测。

 

mount –a自动挂载,检查是否出错:

 

展开阅读全文

没有更多推荐了,返回首页