磁盘管理、文件系统管理

磁盘管理、文件系统管理


磁盘管理

磁盘设备

  • 机械硬盘(非固态)

  • I/O Ports —– I/O 设备地址

  • 块设备:Block 存取单位“块”;(磁盘)

  • 字符设备:char 存取单位“字符”;(键盘)

设备文件:关联一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信;

– 设备号码:

  • 主设备号 major number;标识设备类型

  • 次设备号 minor number;标识同一类设备中的不同设备

Linux系统硬件设备文件储存在/dev目录下

blob.png

– 硬盘接口:

  • 并行{IDE、SCSI}

  • 串口{SATA、SAS、USB}

/dev目录下的硬盘名称一般是/sd*(*代表[a-z]);不同分区之间用数字区分,例如:/sda1、/sda2、/sda3….

– 机械硬盘

  • track:磁道

  • cylinder:柱面

  • secotr:扇区 (512byte)
    0扇区(mbr)512byte中 446byte是boot loader;
    64byte是分区表(所以最多4个分区);
    2byte是4个16进制数值(55AA表示前55个已经使用);

扩展:分区是按照柱面划分的,mbr只能识别2T以下的单块硬盘,超过2T需要使用GPT

磁盘分区

-分区工具:fdisk

  • fdisk:

      fdisk -l [-u] [device...]  { -l:显示磁盘信息;}
      fdisk内置命令:
                 p  -查看磁盘信息;
                 m -打开帮助信息;
                 n -新创建一个分区;
                 d -删除分区;
                 w -保存退出;
                 q -放弃保存退出;
                 l -列出分区ID
                 t -修改ID

分好区以后,内核中不一定能识别到分区,内核没有识别到分区的话无法进行格式化、文件系统等操作;

  • 解决

    查看内核有无识别到分区: cat /etc/partations
    让内核重新扫描识别分区:partx -a /dev/DEVICE
                               -n M:N
                         kpartx -a /dev/DEVICE
                               -f: force
         ------------以上是centos 6-7 使用-----------------
    CentOS 5: 使用:partprobe [/dev/DEVICE]

文件系统管理

  • Linux文件系统:ext2、ext3、ext4、xfs、btrfs、reiserfs、jfs、swap
    swap:交换分区;用磁盘空间当内存来使用(虚拟内存)

  • 扩展:

    光盘: iso9660;
    windows: fat32、ntfs
    网络文件系统:NFS、CIFS
    集群文件系统:GF32、OCFS2
    分布式文件系统:ceph、moosefs、mgilefs、Glusterfs、Lustre

-日志文件系统

  • 日志型文件系统是一种特殊类型的文件系统,它记录一个被称为日志的追踪文件。日志可以让系统能够修复在异常终止时出现的不一致情况。它通过追踪之前提交到主文件系统的更改。在计算机非正常关机的情况下,任何数据丢失都可被重建。因此,这种文件系统不太可能遭受破坏,并且可以使文件系统快速恢复工作。

  • 日志型文件系统:ext3、ext4、xfs…..

  • 非日志型文件系统:ext2、vfat

-文件系统的组成

  • 内核中的模块:ext4、xfs、vfat

  • 用户空间的管理工具:mkfs.ext4、mkfs.xfs、mkfs.vfat

扩展:Linux的虚拟文件系统叫VFS

-创建文件系统

  • 查看当前系统上所支持的文件系统类型: cat /proc/filesystems

  • 显示分区属性:blkid [DEVICE]

  • mkfs

     (1) # mkfs.FS_TYPE /dev/DEVICE
                ext4
                xfs
                btrfs
                vfat
      (2) # mkfs -t FS_TYPE /dev/DEVICE

            -L 'LABEL': 设定卷标
            
      备注: mkfs.FS_TYPE /dev/DEVICE = mkfa -t FS_TYPE /dev/DEVICE
                例子: mkfs.ext4 /dev/sdb1 = mkfa -t ext4 /dev/sdb1
  • mke2fs

           mke2fs:ext系列文件系统专用管理工具
                -t:设置类型 {ext2|ext3|ext4}                
                -b: 设置块大小{1024|2048|4096}  不自己设置默认大小是4096                
                -L 'LABEL':设定卷标                
                -j: 相当于 -t ext3                
                -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小;                
                -N #:为数据空间创建个多少个inode;                
                -m #: 为管理人员预留的空间占据的百分比;                
                -O FEATURE[,...]:启用指定特性                  
                -O ^FEATURE:关闭指定特性   
                               
         备注:mke2fs -t ext_TYPE = mkfs.ext_TYPE /dev/DEVICE = mkfa -t ext_TYPE /dev/DEVICE
                例子: mke2fs -t ext4 /dev/sdb1 = mkfs.ext4 /dev/sdb1 = mkfa -t ext4 /dev/sdb1
  • mkswap

        mkswap:创建交换分区
            mkswap [options] device
                -L 'LABEL':卷标
            注意:调整其分区的ID为82;
  • e2label

        e2label:管理ext系列文件系统的LABEL
            # e2label DEVICE [LABEL]
  • tune2fs

        tune2fs:重新设定ext系列文件系统可调整参数的值
            -l:查看指定文件系统超级块信息;super block            
            -L 'LABEL':修改卷标            
            -m #:修预留给管理员的空间百分比            
            -j: 将ext2升级为ext3            
            -O: 文件系统属性启用或禁用            
            -o: 调整文件系统的默认挂载选项            
            -U UUID: 修改UUID号;
  • dumpe2fs

        dumpe2fs [DEVICE] 查看超级块的详细信息
            -h:查看超级块信息

-文件系统检测

  • fsck

        fsck: File System CheCk
            fsck.FS_TYPE
            fsck -t FS_TYPE
                -a: 自动修复错误                -r: 交互式修复错误
                Note: FS_TYPE一定要与分区上已经文件类型相同;
  • e2fsck

        e2fsck:ext系列文件专用的检测修复工具
            -y:自动回答为yes; 
            -f:强制修复;

-文件系统挂载

  • 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;

  • 解除此关联关系的过程称之为卸载;

    把设备关联挂载点:Mount Point
        mount

    卸载时:可使用设备,也可以使用挂载点
        umount

注意:挂载点下原有文件在挂载完成后会被临时隐藏;

  • 挂载方法:mount DEVICE MOUNT_POINT

        mount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备
        mount [-fnrsvw] [-t vfstype] [-o options] device dir
            device:指明要挂载的设备;
                (1) 设备文件:例如/dev/sda5
                (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'
                (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
                (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs            
                
                dir:挂载点
                事先存在;建议使用空目录;
                进程正在使用中的设备无法被卸载;

常用命令选项:
                -t vsftype:指定要挂载的设备上的文件系统类型;
                -r: readonly,只读挂载;
                -w: read and write, 读写挂载;
                -n: 不更新/etc/mtab; 
                -a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
                -L 'LABEL': 以卷标指定挂载设备;
                -U 'UUID': 以UUID指定要挂载的设备;
                -B, --bind: 绑定目录到另一个目录上;

            注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts

            -o options:(挂载文件系统的选项)                
            async:异步模式;                
            sync:同步模式;                
            atime/noatime:包含目录和文件;                
            diratime/nodiratime:目录的访问时间戳                
            auto/noauto:是否支持自动挂载                
            exec/noexec:是否支持将文件系统上应用程序运行为进程                
            dev/nodev:是否支持在此文件系统上使用设备文件;                
            suid/nosuid:                
            remount:重新挂载                
            ro:                
            rw:                
            user/nouser:是否允许普通用户挂载此设备                
            acl:启用此文件系统上的acl功能

                注意:上述选项可多个同时使用,彼此使用逗号分隔;
                      默认挂载选项:defaults
                            rw, suid, dev, exec, auto, nouser, and async
  • 卸载命令:

        # umount DEVICE
        #umount MOUNT_POINT

        查看正在访问指定文件系统的进程:            
        # fuser -v MOUNT_POINT

        终止所有在正访问指定的文件系统的进程:            
        # fuser -km MOUNT_POINT
  • 挂载交换分区:

        启用:swapon
            swapon [OPTION]... [DEVICE]
                -a:激活所有的交换分区;
                -p PRIORITY:指定优先级;
        禁用:swapoff [OPTION]... [DEVICE]
  • 内存空间使用状态:

        free [OPTION]
            -m: 以MB为单位            
            -g: 以GB为单位
  • 文件系统空间占用等信息的查看工具:

        df: 
            -h: human-readable            
            -i:inodes instead of blocks            
            -P: 以Posix兼容的格式输出;
  • 查看某目录总体空间占用状态:

        du:
            du [OPTION]... DIR
                -h: human-readable                
                -s: summary
  • 文件挂载的配置文件:/etc/fstab

每行定义一个要挂载的文件系统;

        要挂载的设备或伪文件系统    挂载点     文件系统类型      挂载选项    转储频率    自检次序

            要挂载的设备或伪文件系统:
                设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)

            挂载选项:
                defaults

            转储频率:                
            0:不做备份                
            1:每天转储                
            2:每隔一天转储

            自检次序:                
            0:不自检                
            1:首先自检;一般只有rootfs才用1;

命令总结:fdisk, partx, mkfs, mkswap, mke2fs, tune2fs, blkid, dumpe2fs, e2label, fsck, e2fsck,
mount, umount, free, df, du, swapon, swapoff, fuser

文件系统上的其它概念:

-Inode: Index Node, 索引节点

文件名是源数据但是inode不包含文件名
  • 地址指针:地址指针储存的大小决定块的大小

  • 直接指针:

  • 间接指针:

  • 三级指针:

    inode bitmap:对位标识每个inode空闲与否的状态信息;

– 链接文件:

  • 硬链接:

            不能够对目录进行;
            不能跨分区进行;
            指向同一个inode的多个不同路径;创建文件的硬链接即为为inode创建新的引用路径,因此会增加其引用计数;
  • 符号链接(软链接):

            可以对目录进行;
            可以跨分区;
            指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;        
            ln [-sv] SRC DEST
                -s:symbolic link(符号链接)
                -v: verbose
  • 文件管理操作对文件的影响:

        文件删除:把inode引用次数降低为0,对应的位图标记为空闲
        文件复制:数据的读取、写入
        文件移动:不同分区之间移动就是把数据读取出来复制一份写入目标,然后删除源文件;
             同分区内改变路径 inode不变;

原创文章,作者:N21_志建,如若转载,请注明出处:http://www.178linux.com/24711

(1)
N21_志建N21_志建
上一篇 2016-07-22
下一篇 2016-07-22

相关推荐

  • rpm及yum

    库文件 查看二进制程序所依赖的库文件: ldd /PATH/TO/BINARY_FILE [root@localhost ~]# ldd /bin/bash 管理及查看本机装载的库文件: ldconfig /sbin/ldconfig -p:  显示本机已经缓存的所有可用库文件 名及文件路径映射关系 配置文件:/etc/ld.so.conf, /e…

    Linux干货 2016-08-29
  • 用户和组管理类命令详解

    用户和组管理类命令详解 组管理 groupadd 功能描述:创建一个新组 命令格式: groupadd [选项] GROUP 选项: -g GID 表示指定GID,默认情况下使用的是最小的未使用过的GID -r 表示创建一个系统组 groupmod 功能描述:修改组属性 命令格式:groupmod [选项] GROUP 选项: -g GID 表示修改GID …

    Linux干货 2017-07-16
  • 姗姗来迟的第三周作业

    一,列出当前系统上所有已经登录的用户的用户名,注意,同一个用户登录多次只显示一次即可 w -h | cut -d" " -f1 | uniq who |cut -d" " -f1|uniq 二,取出最…

    Linux干货 2016-11-21
  • 文本处理三剑客之awk

    一、知识整理 1、awk报告生成器,格式化文本输出 发明人:a.k.a. Aho,Kernighan,weinberger awk程序通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块三部分组成。program通常是放在单引号或双引号中。 基本用法:awk [] ‘program’ var=value fiel… pr…

    Linux干货 2016-09-26
  • grep是个什么鬼

    正则表达式   一个正则表达式是一个描述了一个字符串集合的模式。正则表达式的构造类似于算术表达式,使用各种各样的操作符来将更小的表达式连在一起。 Grep能理解两种不同版本的正则表达式语法:“basic”和“extended”。在GNU grep中,两种语法可以实现的功能是没有区别的。在其他实现中,基本(basic)正则表达式表达能力要弱一点。下面…

    Linux干货 2017-04-17
  • 用户和权限管理

    一、用户 Linux中用户是资源获取的标识符,资源分配,文件系统安全权限模型的核心要素之一。密码则是用户认证的凭证,用户信息和密码信息都存放在相应的文本文件中,密码信息在存放的过程用了一定的加密算法进行加密。   1.加密算法: 资源分派:    Authentication:认证(确认身份,也有可能好几个人一个身份) &nbs…

    Linux干货 2016-08-05