磁盘管理、文件系统管理

磁盘管理、文件系统管理


磁盘管理

磁盘设备

  • 机械硬盘(非固态)

  • 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

相关推荐

  • 关于VIM编辑器

                                                      &nbsp…

    系统运维 2016-08-11
  • Linux发展史

    简 述 Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,可支持32位和64位硬件。…

    2016-10-14
  • N25第四周总结(lvm)

    lvm 详解 大纲:    1、什么是lvm     2、为什么要使用lvm     3、如何实现lvm     4、lvm各项命令详解   1、什么是lvm:        lmv (Logical Volume Manager…

    Linux干货 2016-12-22
  • N25第三周作业

    一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@centos01 ~]# who | cut -d " " -f1 | uniq -u root qufudcj 二、取出最后…

    Linux干货 2016-12-26
  • Flex Ant自动构建

    1.  Flex SDK Ant        Flex开发者会遇到很多,比如自动构建,在一个有着N多模块,N处源码,构建过程复杂的Flex项目开发中,依赖人力手工构建项目非常不现实(机械重复且枯燥无味的过程,相信哪位开发人员都会避之唯恐不及,而且对于人力是非常大的浪费),而通过使用Ant,我们可以将这些工作…

    Linux干货 2016-03-22
  • 计算机基础及Linux基础概述

    马哥教育网络班23期+第1周课程练习 计算机基础及Linux基础概述 一、计算机组成及其功能 1.1、概述     计算机,computer 我们在中国都称它为电脑,其实我们个人使用的计算机只是计算机家族的一部分,计算机分很多种,小型机,中型机,大型机,工作站,还有PC机,等等,其实我们家庭中使用的只能算是PC机,其实…

    Linux干货 2016-09-15