磁盘管理、文件系统管理

磁盘管理、文件系统管理


磁盘管理

磁盘设备

  • 机械硬盘(非固态)

  • 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 10:07
下一篇 2016-07-22 10:07

相关推荐

  • CA证书服务搭建与申请

    服务端根CA创建证书 进入固定目录,创建所需要的文件 cd /etc/pki/CA/ touch /etc/pki/CA/index.txt 生成证书索引数据库文件 echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号 生成秘钥 (umask 066;openssl genrsa -out /etc/pki/CA/pri…

    2017-09-11
  • SSH协议详解

    OpenSSH 一、 前言 使用SSH可以在本地主机和远程服务器之间进行加密地传输数据,实现数据的安全。而OpenSSH是SSH协议的免费开源实现,它采用安全、加密的网络连接工具代替了telnet、ftp等古老明文传输工具。 SSH(Secure Shell)是建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登陆会话和其他网络服务提供安全性…

    Linux干货 2016-12-16
  • 初识Linux—-小练习

    1、怎样更改命令提示符的颜色?     步骤一:通过 echo $PS1 命令显示当前提示符格式;     步骤二:通过cat /etc/DIR_COLORS 命令,查询需要颜色的编号;     步骤三:打开.bashrc文件,命令为nano  .bashrc,进入后添加,如图: &nbs…

    2017-02-18
  • Centos7下安装httpd源码包

    今天小编来跟大家做个练习,就是如何在Centos7下安装httpd源码包. 一:下载httpd最新版本的源码包 [root@localhost ~]# rpm -qa |grep httpd //查询系统上是否已安装httpd包 httpd-tools-2.4.6-45.el7.centos.4.x86_64 httpd-2.4.6-45.el7.cento…

    2017-08-19
  • 网络路由以及配置

               路由表的构成    目标网络的网络ID   Netmask 接口:到达目标网络的路由器出口  网关gateway: 1.如果目标网络和路由器直连,网关IP=接口的IP  2.如果目标网络和路由器非直连,下一个路由器临近…

    Linux干货 2017-07-02
  • linux文本处理三剑客—grep

      cat:concatenate 文本文件查看工具 cat [option] filename… -n:给显示出来的文本行加上编号 -b:非空行编号 -V:显示 ^ -E:显示行结束符$ -T:显示制表符 -A:显示所有控制符-A=-VET -s:压缩连续…

    系统运维 2016-08-05