Linux磁盘与文件系统管理

1.Linux的Ext2文件系统(inode)

在整体规划当中,文件系统最前面有一个启动扇区,可以安装引导装载程序。

若每个block大小为1k,则引导装载程序和super block各占一个block。若每个block大小为2k或4k则两者在同一个block中。

date block(数据块)

用来放置文件内容的地方,在Ext2文件系统中支持的大小有1KB,2KB及4KB三种而已。

  原则上,block的大小与数量再格式化完就不能再改变了(除非重新格式化);

  每个block中最多放置一个文件的内容;

  承上,如果文件大于一个block的大小,则一个文件会占用多个block;

  承上,如果一个文件小于一个block的大小,则多余的部分就不能再使用了,(磁盘空间会浪费);

平时所说的碎片整理的原因即是文件写入的block太过离散,文件的读取性变得很差,而碎片整理则是将同一个文件所属的block汇合在一起。

inodetable(inode表格)

  inode记录的基本数据有:

        该文件的访问模式(r/w/x);

        该文件的所有者与组(owner/group)

        该文件的大小;

        该文件创建或状态改变的时间(ctime);

        最近一次的读取时间(atime);

        最近修改的时间(mtime);

        定义文件特性的标志(flag),如SetUID等;

        该文件真正内容的指向(pointer);

      其他特性:

         一个inode仅有12个指向,当不足以存储文件信息时,将自动申请一个block继续存储;

         每个inode的大小均固定为128bytes;

         每个文件都会仅占用一个inode而已;

         承上,因此文件系统能够创建文件的数量与inode的数量有关;

         系统读取文件时需要先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能够开始实际读取block内容。

  Superblock(超级块)

       记录的主要内容:

         block与inode的总量;

         未使用与已使用的inode/block数量;

         block/inode的大小(1K,2K,4K\ 128bytes);

         文件系统的挂载时间,最近一次写入数据的时间,最近一次检查磁盘的时间等文件系统的相关信息;

         一个validbit数值,若此文件系统已被挂载,则该值为0,否则为1。

         查看文件系统的相关信息:dumpe2fs

2.文件系统的简单操作

    磁盘与目录的容量:df,du

        df:列出文件系统的整体磁盘使用量;

        du:评估文件系统的磁盘使用量(常用于评估目录所占容量)。

        df -h:以人们易阅读的GB,MB,KB等格式自行显示。

        df -i:不显示硬盘容量而以inode的数量来显示;

        du -s:只列出总量。(与df不同,在文件系统内查找所有文件数据)

    连接文件:ln

        hard link(硬连接或实际连接):新建一个文件,与原文件共用一个inode,因此这两个文件除了文件名之外其他相关信息完全相同。(ln)

        symbolic link(符号连接,即windows的快捷方式):新建一个文件,文件内容为原文件的“文件名”。(ln -s)

3.磁盘的分区,格式化,检验与挂载:

     磁盘分区:(磁盘小于2T时使用fdisk即可,若大于,则可用使用parted程序)fdisk +文件系统名(用df查看)

                d 删除一个分区 n新增一个分区  p 在屏幕上显示分区表  q 不保存,离开fdisk程序  w 保存并离开fdisk

     磁盘格式化:mkfs -t 文件系统格式 设备文件名

     磁盘检验:fsck,badblocks

        fsck -t 文件系统 [-ACay]设备名称(root权限且文件系统有问题时才使用这个命令,正常状况下使用可能造成对系统的危害)

        badblocks [-swv] 设备名称 (检查硬盘扇区有没有坏轨,因为用mke2fs -c格式化时处理磁盘表明的读取测试,所以不常用)

     磁盘挂载与卸载

        单一文件系统不应该被重复挂载在不同的挂载点中;

        单一目录不应该重复挂载多个文件系统;

        作为挂载点的目录理论上应该是空目录(若非空,原文件将被隐藏,但卸载后会恢复)

mount -a 将按照配置文件/etc/fstab的数据把所有未挂载的磁盘都挂载上来。

mount -l   单纯输入mount会显示目前挂载的信息,加上-l可增列label名称          

mount -t   与mkfs的参数类似,可以加上文件系统的种类来指定欲挂载的类型.

        重新挂载根目录与不特定目录

                整个目录树中根目录最为重要,因此根目录是不能被卸载的,那么当要改变挂载参数或根目录出现“只读”状态时,如何重新挂载呢?最简单的就是重新启动了,但也可以用mount -o remount,rw,auto/(重新挂载并加入rw和auto参数)

        将一个目录挂载到另一个目录

                mkdir /mnt/home

                mount --bind /home /mnt/home

                即进入/mnt/home就是进入/home

             umount(将设备文件卸载)

                umount [-fn] 设备文件名或挂载点

                  -f:强制卸载,可用在类似网络文件系统(NFS)无法读取到的情况下;

                  -n:不更新/etc/mtab的情况下。

    磁盘参数修改

 mknod

创建设备文件

mknod 设备文件名 [bcp] [Major] [Minor]

                       b:设置设备名称成为一个外部存储设备文件,例如硬盘等;

                       c: 设置设备名称成为一个外部输入设备文件,例如鼠标/键盘等;

                       p:设置设备名称成为一个FIFO文件。

                Linux下的所有设备都以文件来代表,那么那个文件如何代表该设备呢?就是通过文件的major和minor数值来代替。

                 常见的硬盘文件名/dev/sda与/dev/had设备代码如下:

磁盘文件名

Major

Minor

/dev/hda

3

0~63

/dev/hdb

3

64~127

/dev/sda

8

0~15

/dev/sdb

8

16~31

          e2label

                 当格式化完毕后想要修改卷标则使用该命令。

                 使用卷标进行相关操作是有什么优缺点呢?

                 优点:无论磁盘文件名怎么改变,无论你将硬盘插在哪个IDE/SATA接口。由于系统是通过Label,所以磁盘插在那个接口将不会有影响。

                 缺点:如果插了两块磁盘,刚好两块磁盘的Label有重复的,那么系统可能会无法判断哪个磁盘分区才是正确的。

               e2label 设备名称 新的Label名称(可用dumpe2fs查看当前目录系统的状态)

                tune2fs [-jlL]

                 -l:类似dumpe2fs-h的功能,将super block内的数据读出来

                 -j:将ext2的文件系统转换为ext3文件系统

                 -L:类似tune2fs的功能,可以修改文件系统的卷标

4.设置开机挂载

  开机挂载/etc/fstab和/etc/mtab

    根目录必须挂载,且一定要优先于其他mount point被挂载进来

    其他挂载点必须为已新建的目录,可以任意指定,但一定要遵守必需的系统目录架构原则

    所有挂载点在同一时间内只能挂载一次

    所有分区在同一时间内只能挂载一次

    如若进行卸载,你必须先将工作目录移到挂载点(及其子目录)以外

 若要将/dev/sda6每次开机都自动挂载到/mnt/sda6,该如何进行?

  (1)nano/etc/fstab

    将 /dev/sda6 /mnt/sda6ext3 defaults 1 2写入fstab

/*

第五个数据,即1,表示每天进行dump备份操作,,若不需要则写0.

  第六个数据,即2,表示以fsck检验扇区,若不需要则写0,1表示需要较早检验

*/

(2)检测/dev/sda6是否已被挂载,若挂载过,则必须先卸载

(3)测试写入的/etc/fstab有没有语法错误

   mount -a

   df

最终看到/dev/sda6被挂载起来的信息才是成功了

/etc/fstab是开机时的配置文件,实际文件系统的挂载是记录到/etc/mtab和/proc/mounts这两个文件夹当中。

特殊设备loop挂载(镜像文件不了刻录就挂载使用)

  挂载光盘/DVD镜像文件

    mount -o loop 镜像文件名称 挂载点

  使用ll 挂载点即可查看镜像文件的内容

新建大文件以制作loop设备文件

  制作出一个大文件,将其格式化后挂载,它便类似于一个额外的分区,使用这种方法可以解决分区不良的情况。

   dd if=/dev/zero of=/home/loopdev bs=1M count=512

512+0 records in<==读入512条数据

512+0 records out<==输出512条数据

命令中 if 是input file,输入文件。/dev/zero是一个会一直输出0的设备

       of是output file,将一堆0写入后面接的文件中

       bs是每个block 的大小,就像文件系统那样的block

       count是总共几个bs的意思

     mkfs -t ext3/home/loopdev(格式化)

      mount -o loop/home/loopdev /media/cdrom/(挂载)

       内存交换空间(swap)的构建       (内存较大的计算机基本上用不到swap,大多用于服务器或工作站)

           1.使用物理分区构建swap

               分区:先使用fdisk在磁盘中分出一个分区给系统作为swap。(退出后需要partprobe,重新加载分区表)

               格式化:利用新建swap格式的“mkswap 设备文件名”就能够格式化该分区成为swap格式。

               使用:最后将该分区启动,方法为“swapon设备文件名”

               查看:最终通过free这个命令来查看一下内存的使用情况

          2.使用文件构建swap

               使用dd命令新增一个文件,用mkswap 将文件格式化为swap,使用swapon启动。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值