磁盘管理、文件系统管理

磁盘管理、文件系统管理


磁盘管理

磁盘设备

  • 机械硬盘(非固态)

  • 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

相关推荐

  • 第一周作业

    一:计算机的组成和功能 主要分为五个部分:控制器、运算器、存储器、输入、输出 CPU :包含控制器和运算器、寄存器、缓存 存储器:内存,RAM(Random Access Memory) 输入:下指令,提供数据等 输出:输出数据加工的结果     微型计算机系统组成:      …

    Linux干货 2016-12-06
  • rsync+inotify实现数据实时同步备份

    定时备份和实时备份        说到备份,无疑于定时备份和实时同步备份。定时备份可以通过脚本或者Crontab来实现,而实时同步备份可以通过某些接口监控文件的各种变化情况来实现的(比如内核接口inotify);通过对比可以发现对数据信息要求高的环境使用实时同步备份可以更好更有利的保护数据的安全性。 软件介绍之rsyn…

    Linux干货 2015-02-28
  • FHS文件系统共能介绍

    FHS文件系统共能介绍   FHS,即File Hierarchy Standard,文件层级标准。多数Linux系统下的文件管理采用此种文件组织形式,它定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。   这中组织是一种倒树状结构,所有的文件与目录都是由根目录”/”开始,然后…

    Linux干货 2016-10-18
  • linux开机启动流程

    linux开机启动流程:   一、BIOS 加电自检 当你按电源开关开机时,电脑会首先去启动BIOS(基本输入输出系统),BIOS一般是集成在主板上的. BIOS 的工作 1.检测连接硬件,比如显卡,内存,磁盘等等,检测的目的是以后把这些设备信息提供给操作系统 2.寻找启动磁盘,每一种BIOS都会有开机启动菜…

    Linux干货 2016-09-19
  • 分布式文件系统之MogileFS

    MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发。Danga团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。目前使用MogileFS 的公司非常多,如日本排名先前的几个互联公司及国内的yupoo(又拍)、digg、豆瓣、1号店、大众点评、搜狗和…

    Linux干货 2017-06-16
  • vim常用小结

    移动光标类命令h :光标左移一个字符l :光标右移一个字符space:光标右移一个字符Backspace:光标左移一个字符k或Ctrl+p:光标上移一行j或Ctrl+n :光标下移一行Enter :光标下移一行w或W :光标右移一个字至字首b或B :光标左移一个字至字首e或E :光标右移一个字至字尾) :光标移至句尾( :光标移至句首}:光标移至段落最后一个…

    Linux干货 2017-04-11