zoukankan      html  css  js  c++  java
  • Linux学习之四——磁盘与文件系统管理

    一、一些基本定义

    1. superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
    2. inode:记录档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的block 号码;
    3. block:实际记录档案的内容,若档案太大时,会占用多个 block 。

    二、Linux支持的文件系统

    1. 查看Linux 支持的文件系统有哪些:

    ls -l /lib/modules/$(uname -r)/kernel/fs

    2. 查看系统目前已加载到内存中支持的文件系统:

    cat /proc/filesystems

    Linux VFS (Virtual Filesystem Switch)来帮我们管理怎么去访问不同的文件系统

    三、Ext2文件系统介绍

    1. block的特点

    1) block 的大小与数量在格式化完就不能够再改动了(除非重新格式化),一般为1K,2K或4K,其大小决定了最大单一档案的大小和最大文件系统总容量;

    Block 大小           1KB     2KB  4KB

    最大单一档案限制 16GB 256GB  2TB

    最大文件系统总容量 2TB    8TB 16TB
    2) 每个 block 内最多只能够放置一个档案的数据;
    3) 如果档案大于 block 的大小,则一个档案会占用多个 block 数量;
    4) 若档案小于block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。

    2. inode的特点

    1) 每个 inode 大小均固定为 128 bytes;
    2) 每个档案都仅会占用一个 inode 而已;
    3) 文件系统能够建立的档案数量与 inode 的数量有关;
    4) 系统读档案时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合才能够开始实际读 block 的内容。

    5) inode 记录 block 号码的区域定义为12个直接,一个间接, 一个双间接与一个三间接记录区。

    四、文件系统的相关操作

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

    df [-ahikHTm] [目录或文件名]

    选项与参数:

    -a :列出所有的文件系统,包括系统特有的/proc 等文件系统;

    -k :以 KBytes 的容量显示各文件系统;

    -m :以 MBytes 的容量显示各文件系统;

    -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

    -H :以 M=1000K 取代 M=1024K 的进位方式;

    -T :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;

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

    2. du:评估文件系统的磁盘使用量

    du [-ahskm] 档案或目录名称

    选项与参数:

    -a :列出所有的档案与目录容量,因为默认仅统计目录底下的档案量而已。

    -h :以人们较易读的容量格式 (G/M) 显示;

    -s :列出总量而已,而不列出每个各别的目录占用容量;

    -S :不包括子目录下的总计。du 默认会将所有档案的大小均列出,因此假设你在 /etc 底下使用 du 时, 所有的档案大小,包括 /etc 底下的次目录容量也会被计算一次。然后最终的容量 (/etc) 也会加总一次, 所以,如果想要列出某目录下的全部数据, 也可以加上 -S 的选顷,减少次目录的加总喔!

    -k :以 KBytes 列出容量显示;

    -m :以 MBytes 列出容量显示;

    3. ln建立档案链接

    ln [-sf] 来源文件 目标文件

    选项与参数:

    -s :如果不加任何参数就进行连结,那就是hard link,至于 -s 就是symbolic link

    -f :如果 目标文件 存在时,就主动的将目标文件直接移除后再建立!

    新建目录时link数量一般为2,而上层目录的 link 数则会增加 1,比如/tmp/test有/tmp/test与/tmp/test/.两个link,而对上层目录来说,增加了link/tmp/test/..

    4. fdisk 磁盘分区(分区2TB以上用parted)

    fdisk -l查看当前磁盘分区信息

    fdisk 磁盘: 进入磁盘分区管理系统

    5. mkfs 磁盘格式化

    mkfs [-t 文件系统格式] 装置文件名

    选项与参数:

    -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

    6. mke2fs 更细化的磁盘格式化

    选项与参数:

    -b :可以设定每个 block 的大小,目前支持 1024, 2048, 4096 bytes 三种;

    -i : inode的大小

    -c :检查磁盘错误,仅下达一次 -c 时,会进行快速读写测试; 如果下达两次 -c -c 的话,会测试读写(read-write),会很慢~

    -L :后面可以接标头名称 (Label)

    -j :本来 mke2fs 是 EXT2 ,加上 -j 后,会加入 journal 而成为 EXT3。

    7. fsck 来检验文件系统是否出错

    8. badblocks 检查硬盘或软盘扇区有没有坏轨

    9. mount,unmount磁盘挂载与卸除

    注意:

    1) 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
    2) 单一目录不应该重复挂载多个文件系统;
    3) 要作为挂载点的目录,理论上应该都是空目录。如果非空,则挂载后原有的文件将被隐藏起来。

    10. mknod 修改文件系统的信息,如主要装置代码,次要装置代码等

    11. e2label 修改文件系统标头

    12. tune2fs 修改文件系统为ext2,ext3,ext4等

    13. hdparm 硬盘为IDE接口时设置一些参数

    14. 可以用mkswap来将大文件建立为swap文件,并用swapon, swapoff 开启或关闭swap file来实现虚拟内存。

    小技巧,可以用dd if=/dev/zero of=/tmp/swap bs=1M count=128来建立大文件。

  • 相关阅读:
    前端部分框架
    Postman
    java intellij 写控制台程序 窗口程序
    postgresql 连接数
    CPU制造工艺 级选来决定cpu等级
    CPU 材料学才是最顶级的学科
    关于asp.net和iis的进程/线程问题,假如网站有1000个人访问,会产生多少个进程/线程啊
    io会消耗cpu吗?
    数据密集型 和 cpu密集型 event loop
    Javascript是一个事件驱动语言
  • 原文地址:https://www.cnblogs.com/studynote/p/4796891.html
Copyright © 2011-2022 走看看