Linux中磁盘管理与文件系统创建挂在

磁盘管理

Linux中哲学思想:Linux一切皆文件,所有访问磁盘设备就如同访问一个文件一样,因此要想使用需要一个文件接口

如何向设备中输入数据?

    首先将设备在系统上映射成一个文件,在此文件上进行读写操作就相当于对设备进行读写,对程序而言首先是打开一个文件open(),然后执行read()或者write(),最后关闭文件closed()

设备分类

    块设备:Block ,存取单位为块

    字符设备:char ,存取单位为字符

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

设备文件和设备的对应关系:一个设备文件只能被一个设备关联,如果一个设备文件关联两个设备文件,第一个设备的内容将会被第二个设备内容覆盖

设备号码:每个设备在内核集中都是靠设备号进行标识

设备号分类:主设备号:major number 用于标识不同设备

      次设备号:minor numbei 用于标识统一类型下的不同设备

查看设备号:

    19.png

  其中8为主设备号,0、1、2…为次设备号

设备名称:不同的硬盘接口会显示不同的设备名称

    并行:

        IDE :理论传输速度133MB/s

        scsi:传输速度640MB/s

    串口:

        sata:6Gbps

        sas:6Gbps

        usb:480MB/s

硬盘转速:rpm 5400rpm /每分钟转动5400转

    IDE:

        centos5以前在显示名称:/dev/hd

        centos6、7以后设备名称为/dev/sd

    SCSI, SATA, SAS, USB: /dev/sd

        不同设备: a- z

        /dev/sda, /dev/sdb, …

    

        同一设备上的不同分区: 1,2, …

        /dev/sda1, /dev/sda5

    虚拟机磁盘:

        /dev/vd

硬盘结构:

    组成:盘片(双面读写)、轴、马达、磁头、机械臂

    20.png

磁盘存储专业术语

    磁道 track:每个盘片被分成N个同心圆,每个同心圆称为磁道,使用来真正存储数据的

    扇区 sector:每个磁道按512个字节为单位等分,被划分的区域叫做扇区

    柱面 cylinder:每次盘片都是双面读写的的,每个盘片上相同位置都会有一个相同的编号,所谓的相同的编号的磁道称为柱面

    

磁盘分区

    为什么要进行磁盘分区:

    1、优化I/o性能

    2、实现磁盘的配额限制管理

    3、提高修复速度

    4、隔离系统和程序

    5、安装多个操作系统

磁盘分区方式:    

    MBR 和GPT

    

    MBR :master boot record ,使用32表示扇区数,最大不能超过2TB

    

    MBR:存储在0磁道,0扇区中前512字节

        0-446字节:存储boot loader ,引导加载

        446-510:存储分区表,每16字节存贮一个分区表,这也是为什么一个磁盘只能分4个主分区或3个主分区和一个扩展分区的原因

        后2个字节:存储有效信息55aa表示有效

    

    MBR分区图

        21.png

查看MBR内容:

    22.png

为了防止MBR被破坏,系统无法正常启动,需要备份MBR ,备份方法如下

    23.png

恢复MBR dd if=/testdir/Mbr of=/dev/sda bs=1 count=512

    注意:扩展分区中的逻辑分区不能备份,因逻辑分区保存在扩展分区中,并非MBR中

    

GPT分区

    

    GPT:GUID patition table 支持128个分区,使用 64位,支持8Z( 512Byte/block ) 64Z ( 4096Byte/block)

    使用 128位UUID 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位

    UEFI (统一扩展固件接口 )硬件支持GPT

   

    

    uuidgen :create a new UUID value ,每个磁盘在

创建分区命令

    fdisk 

    使用格式

    fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device

      常用选项:-l:列出分区表

           -u:指定分区显示格式,默认是扇区显示 -u=cylinder 则为以柱面显示分区信息

           -c:指定显示是否已dos显示,默认不以dos显示,dos格式要求分区中整个儿柱面必须在一个分区中,否则会提示错误

    fdisk /dev/sda :对硬盘sda进行分区,fdisk是交互式命令,在进行分区时有好多的子命令

         m:列出帮助

        d:删除分区

         n:添加分区,

        p:打印分区信息

        w:保存分区信息退出

        q:不保存退出

        t:转换分区格式

        l:累出分区类型

        

    

 开始分区啦!

     1、fdisk /dev/sdb :注意,当磁盘中已经有扩展分区了,再添加分区不显示扩展分区选项e,只能添加主分区和l(逻辑分区)

  

    24.png

    

    2,选择分区类型l逻辑分区,p主分区,扩展分区

    26.png

    3w:保存退出

    

 

显示系统下的生效的设备(内存中已经识别的设备):

    lsblk

    ll /dev/sd*

    cat /proc/partitions 

    

    有时候增加的分区不能及时加载到内存,需要手动让内核重新读取分区表,以下有三种方法

    1、partx -a /dev/sdb

        -d 从内存中将分区信息删除

        -l:列出分区信息

        partx -a -n|–nr 2:3 只重新加载2和3分区

        partx -d –rn 2:3 从内存中将2 3分区删除

    2、kpart -a /dev/sdb

     3、partrpobe /dev/sdb 不适用于centos6版本

磁盘管管理工具2

    parted

    显示磁盘分区信息:parted /dev/sdb print 

    显示所有磁盘信息:parted -l

    删除第一个分区:parted /dev/sdb rm 1

    创建分区 :part /dev/sdb mkpart primary  1(分区其实位置) 1024(结束位置) 

    改变磁盘分区格式:parted /dev/sdb mklabel gpt|msdos gpt:GPT分区格式 msdos :MBR分区格式

    
    27.png 

 GPT分区工具gdisk

     

   需要先将分区表定义成GPT分区格式

    parted /dev/sdb mklabel gpt ,其余的和fdisk类似

    

               

文件系统

定义:文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构

      称为文件管理系统,简称文件系统。

    

    从系统角度来看,文件系统是对文件存储设备的空间进行组 织和分配,负责文件存储并对存入的文件进行保护和检索的
    系统。具体地说,它负责为用户建立文件,存入、读出、修 改、转储文件,控制文件的存取,安全控制,日志,压缩,

    加密等。

文件系统分类:

    Linux文件系统: ext2, ext3, ext4, xfs( SGI) , btrfs(
    Oracle) , reiserfs, jfs( AIX) , swap
    swap: 交换分区
    光盘: iso9660
    Windows: fat32(优盘中格式在Linux中显示为vfat), ntfs
    Unix: FFS( fast) , UFS( unix) , JFS2
    网络文件系统: NFS, CIFS
    集群文件系统: GFS2, OCFS2( oracle)
    分布式文件系统: ceph, moosefs, mogilefs, glusterfs,Lustre

    RAW:未经处理或者未经格式化产生的文件系统

    Linux系统能实现不同文件系统共存,和一切接文件色的思想是利用了虚拟文件系统(VFS)

查看系统中支持的文件系统:cat /proc/fielsystem

创建文件系统命令三种方法:其实是等价的只是写法不同

    一、 mkfs.file_Type /dev/sdb1

       fiel_Type:种类ext4 ext3 xfs ext2 vfat 等

    二、mkfs -t /dev/sdb

          -t:指定文件类型      

          -L '/mnt/sdb1' 设定卷标,相当于起了个别名

    三、mke2fs: ext系列文件系统专用管理工具

          – t {ext2|ext3|ext4} 指定
          – b {1024|2048|4096}
          – L 'LABEL'
          – j: 相当于 – t ext3
           mkfs.ext3 = mkfs – t ext3 = mke2fs – j = mke2fs – t ext3
          – i #: 为数据空间中每多少个字节创建一个inode;此大
           小不应该小于block的大小
          – N #:为数据空间创建个多少个inode
          – m #: 默认5%,为管理人员预留空间占总空间的百分比
          – O FEATURE[,…]:启用指定特性
          – O ^FEATURE:关闭指定特性

        

使用块设备的三种方法

    1、使用UUID (推荐使用方法,应为uuid固定,并且唯一)2、使用卷标也就是mkfs -L指定的 3、使用设备名称/dev/sdb2

查看块设备信息命令:

    blkid [option] [设备名]

        -U 通过UUID找到指定的设备

        -L通过卷标找到指定的设备

    

_ueditor_page_break_tag__ueditor_page_break_tag_

        Linux中磁盘管理与文件系统创建挂在

        Linux中磁盘管理与文件系统创建挂在

 

管理ext类型设备卷标

    e2lable /dev/sdb2 '/mnt/sdb2'

通过lable(卷标)或者、UUID查找设备

    findfs UUID=uuid号

    findfs LABLE='lable名' 

    

重新设定ext系列文件的属性

    tune2fs 

    

    – l:查看指定文件系统超级块信息; super block
    – L 'LABEL':修改卷标
    – m #:修预留给管理员的空间百分比,有些空间只能管理员使用,普通用户不能使用
    – j: 将ext2升级为ext3
    – O: 文件系统属性启用或禁用 , –O ^has_journal
    – o: 调整文件系统的默认挂载选项, –o ^acl
    – U UUID: 修改UUID号;

    dumpe2fs:

    – h:查看超级块信息 =tune2fs -l

     dumpe2fs  /dec/sdb2 查看分区用分组管理,信息更详细

 块:文件最小存储单位,块大小分类1024 2048 4096 格式化时可以改变

 超级块:用于存储文件系统的控制信息的数据结构。描述文件系统的状态、文件系统类型、大小、区块数、索引节 点数等,存放于磁盘的特定扇区中

    

文件系统修复

    当用tune2fs查看文件系统超级块信息时 filesystem state:记录了文件系统状态,当状态为not clean 时说明文件系统异常

    可用fsck对其进行修复或者常发生于死机或者非正常关机之后挂载为文件系统标记为“ dirty”

    fsck: File System Check
    fsck.FS_TYPE
    fsck – t FS_TYPE
    – a: 自动修复错误
    – r: 交互式修复错误
注意: FS_TYPE一定要与分区上已经文件类型相同;

 e2fsck: ext系列文件专用的检测修复工具

    – y:自动回答为yes

    – f:强制修复

  

挂载

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

        卸载:为解除此关联关系的过程

    注意:挂载的文件一般为空,如果不为空挂载完成后原有的文件会被隐藏  

    mount:通过查看/etc/mtab文件显示当前已挂载的所有设备

   使用格式: 

        mount device   mount_point

        mount /dev/sdb2 /mnt/sdb2

        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,相当于#mount

    – a:自动挂载所有支持自动挂载的设备(定义在了 /etc/fstab文件中,且挂载选项中有auto功能)

    – L 'LABEL': 以卷标指定挂载设备
    -U 'UUID': 以UUID指定要挂载的设备
    – B, — bind: 绑定目录到另一个目录上
查看内核追踪到的已挂载的所有设备:

    cat /proc/mounts :软链接文件,链接到/proc/myself/mounts

    /etc/mtab软链接到/pro/mounts

    

    – o options: (挂载文件系统的选项),多个选项使用逗号分隔
        async:异步模式
        sync:同步模式,内存更改时,同时写磁盘
        atime/noatime:包含目录和文件
        diratime/nodiratime:目录的访问时间戳
        auto/noauto:是否支持自动挂载,是否支持- a选项
        exec/noexec:是否支持将文件系统上运行应用程序
        dev/nodev:是否支持在此文件系统上使用设备文件
        suid/nosuid:不否支持suid和sgid权限
        remount:重新挂载
        ro:只读
        rw: 读写
        user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载
        acl:启用此文件系统上的acl功能,默认centos中自己添加的设备不自动开启此功能

        Defaults:相当于rw, suid, dev, exec, auto, nouser, async

卸载

    卸载之前查看挂载情况

        findmnt /dev/sdb |findmnt

    查看正在访问文件系统的进程,当进程占用时系统是无法卸载文件系统的

        lsof mount_point

        fuser -v mount_point

    终止所有正在访问的文件系统的进程

        fuser -km mount_point

    

    卸载

    umount mount_point

    umount device

将设备考到普通文件

    mknod 文件名  b(设备类型) 要拷贝设备主编号 要拷贝设备的次编号 

    34.png

    

    35.png

        

    

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

(0)
上一篇 2016-08-26 09:11
下一篇 2016-08-26 09:11

相关推荐

  • 第一周的博客作业

    1.计算机的组成以及功能:     cpu:就是中央处理器,运算和判断计算机的数据;     储设器:存储计算机的数据;     主板:链接多的计算机的硬件;     I/O设备:输入,输出设备,,如…

    Linux干货 2017-01-05
  • 高级文件系统的管理

    一、迁移分区 分区 /dev/sda6 注意同步问题  创建分区,把原先家目录下的文件拷贝到新挂载的文件中 mkfs.ext4 /dev/sda6  mkdir /mnt/home mount /dev/sda6 /mnt/home cp -a /home/*  /mnt/home   init 1 切换单用户模式,把…

    Linux干货 2016-11-27
  • 运维必备技能之磁盘管理

    磁盘分区的三个工具 1、fdisk交互式工具         fdisk /dev/sdb进入交互界面         交互式界面的几个常用命令        …

    Linux干货 2017-03-14
  • redis

    redis 简述 redis的数据结构 redis的数据持久化实现 程序与配置文件 redis-cli命令 主从复制原理与架构实现 redis的高可用方案 – sentinel redis分布式系统概述与简介 简述 什么是redis? redis是一个基于nosql技术的kv数据库,支持非常大的并发场景,与memcached不同的是,redis拥…

    Linux干货 2016-08-19
  • vim简单操作

    vim第一讲 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。 h (左移) j (下行) k (上行) l (右移) 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车> 欲退出 Vim 编辑器,请输入 <ESC> :q! <回车> 放弃所有改动。 或者输入 <ESC&gt…

    Linux干货 2017-07-29
  • 编译安装Linux内核

    实验前准备:在https://www.kernel.org/下载内核 这里我们下载的是:linux-4.14.10.tar.xz du -sh /app/linux.tar/ 此命令可查看内核文件大小 编译完成后/lib/modules下会生成4.14.10版的内核 1,tar xvf linux-4.14.10.tar.xz -C /app/解压缩准备好的…

    2018-01-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 11:28

    看完博客会对1磁盘管理有一个概览性的认识,但在逻辑表达的组织上显得略微混乱,如果能再优化下逻辑规划会更让人印象深刻