zoukankan      html  css  js  c++  java
  • 8 Linux磁盘使用及文件系统介绍

    Linux磁盘及文件系统管理

    CPU,Memory(RAM),I/O

    I/O:disks,Ehtercard

      disks:持久存储数据

        接口类型:

          IDE(ata):并口,数据交换速率:133MB/s

          SCSI:并口,UItrascsi320,320MB/s,UItraSCSI640,640MB/s

          SATA:串口,6gbps

          SAS:串口,6gbps

          USB:串口,480MB/s

          并口:同一线缆可以接多块设备

            IDE:两个,主,从

            SCIS:

              宽带:16

              窄带:8-1

          串口:同一线缆只可以接一个设备

          iops:IO per second

        硬盘:机械硬盘,固态硬盘

          机械磁盘:

            track:磁道

            sector:扇区,512bytes(字节)

            cylinder:柱面

              分区划分基于柱面:

            平均寻到时间:

             5400rpm,7200rpm,10000rpm,15000rpm

      Linux的哲学思想:一切皆文件

        设备类型:

          块(block)设备:随机访问,数据交换单位是“块”

          字符(character)设备:线性访问,数据交换单位是“字符”

        设备文件:FHS

          /dev

            设备文件:关联至设备的驱动程序;设备的访问入口

            设备号:

              major:主设备号,区分设备类型;用于标明设备所需要的驱动程序

              minor:次设备号,区分同种类型下的不同的设备;是特定设备的访问入口

             

              mknod命令:mknod - make block or character special files-创建块或字符特殊文件 

              mknod  [OPTION]...  NAME  TYPE  [MAJOR MINOR]

              选项:

              -m MODE:创建后的设备文件的访问权限

              

        设备文件名:ICANN(互联网名称地址分配机构)

        磁盘:

          IDE:/dev/hd[a-z]

            例如:/dev/hda,/dev/hdb

          SCSI,SATA,USB,SAS:/dev/sd[a-z]

          分区:

            /dev/sda #:

              /dev/sda1,...

          注意:Centos 6 和7统统将硬盘设备文件标识为/dev/sd[a-z]#

          引用设备的方式:

            设备文件名:

            卷标

            UUID

        磁盘分区:MBR,GRT

          MRR:0 sector

            Master Boot Record

              分为三个部分:

                446bytes:BootLoader,程序,引导启动操作系统的程序

                64bytes:文件系统分区表,每16bytes标识一个分区,一共只能有4个分区

                    4主分区

                    3主1扩展:

                      n逻辑分区G            

                2bytes:MBR区域的有效性标识;55AA表示有效,否则无效

            主分区和扩展分区的标识:1-4

            逻辑分区:5+

        课外作业:GPT

    fdisk命令:

      1.查看磁盘的分区信息:

      fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况

      2.管理分区

      fdisk devlce

      fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有操作均在内

      存中完成,没有直接同步到磁盘,知道使用w命令保存至磁盘上

      常用命令:

        n:创建新分区

        d:删除指定的已有分区

        t:修改分区类型

        l:查看所有已知ID

        w:保存并退出

        q:不保存并退出

        m:查看帮助信息

        p:显示现有分区信息

      注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别

        查看:cat /proc/partitions

        通知内核强制重读磁盘分区表:

          Centos 5:partprobe [device]

          Centos 6,7:partx,kpartx

            partx -a [device]

            kpartx -af [device]

        分区创建工具:parted,sfdisk

    创建文件系统:

      格式化:低级格式化(分区之前进行,划分磁道)、高级格式化(分区之后对分区进行,创建文件系统)

        元数据区,数据区

          元数据区:

            文件元数据:inode(index node)

              大小,权限,属主属组,时间戳,数据块指针

            链接文件:存储数据针的空间当中存储的是真实文件的访问路径

            设备文件:存放数据针的空间当中存储的是设备号(major,minor)

          bitmap index:位图索引

      VFS:Virtual file System

        Linux的文件系统:ext2,ext3,ext4,xfs,relserfs,btrfs

        光盘:iso9660

        网络文件系统:nfs,cifs

        集群文件系统:gfs2,ocfs2

        内核级分布式文件系统:ceph

        windows的文件系统:vfat,ntfs

        伪文件系统:proc,sysfs,tmpfs,hugepagefs

        Unix的文件系统:UFS,FFS,JFS

        交换文件系统:swap

        用户空间的分布式文件系统:mogilefs,moosefs,glusterfs

      

      文件系统管理工具:

        创建文件系统工具:

          mkfs

            mkfs.ext2(无日志功能),mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.vfat,...

        检测及修复文件系统的工具

          fsck

            fsck.ext2,fsck.ext3,...

        查看其属性的工具

          dumpe2fs,tune2fs

        调整文件系统特性

          tune2fs

      链接文件:访问同一个文件不同路径;

        硬链接:指向同一个inode多个文件路径

          特性:

            1.目录不支持硬链接

            2.硬链接不能跨文件系统

            3.创建硬链接会增加inode引用计数

          创建:

            ln src link_file

        软链接(符号链接):指向一个文件路径的另一个文件路径

          特性:

            1.符号链接与文件是两人各自独立的文件,各有自己的inode;对原文件创建符号链接不会增加引用

              计数

            2.支持对目录创建符号链接,可以跨文件系统

            3.删除符号链接文件不影响原文件,但删除原文件,符号指定的路径即不存在,此时会变成无效链

               接

            注意:符号链接文件的大小是其指向的文件的路径字符串的字节数

          创建:

            ln -s src link_file

            -v:verbose

    回顾:磁盘、磁盘分区、文件系统

      centos 6.7:/dev/sd[a-z]#

      管理分区:fdisk,parted,sfdisk

      创建文件系统:

      Linux文件系统类型:ext2,ext3,ext4,xfs,relserfs,ios9660,swap

      文件系统的组织结构中的术语:

        block groups,block,inode table,inode

    磁盘和文件系统管理

      

    文件系统管理工具:

        创建文件系统工具:

          mkfs

            mkfs.ext2(无日志功能),mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.vfat,...

        检测及修复文件系统的工具

          fsck

            fsck.ext2,fsck.ext3,...

        查看其属性的工具

          dumpe2fs,tune2fs

        调整文件系统特性

          tune2fs

      内核及文件系统的组成部分:

        文件系统驱动:由内核提供

        文件系统管理工具:由用户空间的应用程序提供

      ext系列创建文件系统的工具:

        mkfs.ext2,mkfs.ext3,...

        mkfs -t ext2 = mkfs.ext2

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

        mke2fs [options] device

          -t {ext2 | ext3 | ext4}:指明要创建的文件系统类型

            mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4

          -b:{1024 | 2048 | 4096}:指明文件系统的块大小;

          -L LABEL:指明卷标

          -j:创建有日志功能的文件系统ext3;

            mke2fs -j = mke2fs -t etx3 = mkfs.ext3 = mkfs -t ext3

          -i #:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个inode

          -N #:直接指明要给此文件系统创建的inode的数量

          -m #:指定预留的空间,百分比数值。

          -o [^]FEATURE:以指定的特性创建目标文件系统,加^表示关闭此特性,不加表示开启此特

          性

      e2label命令:卷标的查看与设定

        查看:e2label device

        设定:e2label device LABEL

      tune2fs命令:查看或修改ext系列文件系统的某些属性

        adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems

        注意:块大小创建后不可修改

        tune2fs [OPTIONS] device

          -l:查看超级块的内容

          修改指定文件系统的属性:

            -j:ext2 --> ext3

            -L LABEL:修改卷标

            -m #:调整预留空间百分比

            -O [^]FEATHER:开启或关闭某种特性

            -o [^]mount_options:开启或关闭某种默认挂载选项

              acl

              ^acl

            

      dumpe2fs命令:显示ext系列文件系统的属性信息

          dumpe2fs [-h] device

       

      用于实现文件系统检测的工具

        因进程意外终止或系统崩溃等原因导致写入操作费正常终止时,可能会造成文件损坏,此时,应该检测并修

        复文件系统;建议,离线进行

        ext系列文件系统的专用工具:

          e2fsck命令:check a Linux ext2/ext3/ext4 file system

            e2fsck [OPTIONS] device

              -y:对所有问题自动回答为yes

              -f:即使文件系统处于clean状态,也要强制进行检测

          fsck命令:check and repair a Linux file system

            -t fstype:指明文件系统类型

              fsck -t ext4 = fsck.ext4

            -a:无须交互而自动修复所有错误

            -r:交互式修复

      

      

     CentOS 6如何使用xfs文件系统:

          #yum install xfsprogs

      创建:mkfs.xfs

      检测:fsck.xfs

      blkid命令:

        blkid device

        blkid -L LABEL:根据指定的LABEL定位设备

        blkid -u UUID:根据UUID定位设备

    swap文件系统:

      Linux上的交换分区必须使用独立的文件系统

        且文件系统的system ID必须为82

      创建swap设备:mkswap命令

        mkswap [OPTIONS] device

          -L LABEL:指明卷标

          -f:强制

    windows无法识别Linux的文件系统;因此存储设备需要在两种系统之间交叉使用时,应该使用Windows和Linux同时支

    持的文件系统:fat32(vfat)

      #mkfs.vfat device

    文件系统的使用:

      首先要“挂载”:mount命令和umount命令

      

      根文件系统之外的其他文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操

      作即为“挂载”;此目录即为“挂载点”

        挂载点:mount_point,用于作为另一个文件系统的访问入口

          特性:

            1.事先存在

            2.应该使用未被或不会被其它进程使用到的目录

            3.挂载点下原有的文件将会被隐藏

      mount命令:

        mount [-fnrsvw] [-t vfstype] [-o options] device dir

        命令选项:

          -r:readonly,只读挂载

          -w:read and write,读写挂载,默认就是读写挂载

          -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性

          

          -t vfstype:指明要挂载的设备上的文件系统的类型,多数情况下可省略,此时mount会通过blkid来判断

          要挂载的设备的文件系统类型

          -L LABEL:挂载时以卷标的方式指明设备

            mount -L LABEL dir

          -U UUID:挂载时以UUID的方式指明设备

            mount -U UUID dir

      -o options:挂载选项

        sync/async:同步/异步操作

        atime/noatime:文件或目录在被访问时是否更新其访问时间戳

        diratime/nodiratime:目录在访问时是否更新其访问时间戳

        remount:重新挂载

        acl:支持使用facl功能

          # mount -o acl device dir

          #tune2fs -o acl device

        ro:只读

        rw:读写

        dev/nodev:此设备上是否允许创建设备文件

        exec/noexec:是否允许运行此设备上的程序文件

        auto/noauto:

        user/nouser:是否允许普通用户挂载此文件系统

        suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效

        defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and

        relatime.

      一个使用技巧:

        可以实现将目录绑定至另一个目录上,作为其临时访问入口

          mount --bind 原目录 目标目录

      查看当前系统所有已挂载的设备

      # mount

      # cat /etc/mtab

      # cat /proc/mounts

    挂载光盘设备:

      mount -r /dev/cdrom mount_point

      光盘的设备文件:/dev/cdrom,/dev/dvd

    挂载U盘:

      事先识别U盘的设备文件;

    挂载本地的回环设备:

      mount -o loop /PATH/TO/SOME_LOOP_FILE  mount_point

    umount命令:

        umount devoce | dirname

        注意:正在被进程访问到的挂载点无法被卸载

          查看被哪个或哪些进程所占用:

            # lsof mount_point

            # fuser -v mount_point

            终止所有正在访问某挂载点的进程:

              # fuser -km mount_point

    交换分区的启用和禁用:

        创建交换分区的命令:mkswap

        启用:swapon

          swapon [OPTION] [DEVICE]

          -a:定义在/etc/fstab文件中的所有swap设备

        禁用:swapoff

        使用文件创建swap分区:

          dd if=/dev/zero of=/etc/swapfile bs=1M count=100

          mkswap /etc/swapfile

          swapon /etc/swapfile

          如果需要开启自动启动swap分区则需要在/etc/fstab文件中加上挂载

          /etc/swapfile swap swap defaults 0 0

          注意:在/tmp目录下挂载不上

    设定除根文件系统以外的其它文件系统能够开机时自动挂载:/etc/fstab文件

      每行定义一个要挂载的文件系统及相关属性:

        6个字段:

          1.要挂载的设备

            设备文件

            LABEL

            UUID

            伪文件系统:如sysfs,proc,tmpfs等

          2.挂载点

            swap类型的设备的挂载点为swap

          3.文件系统类型

          4.挂载选项

            defaults:默认挂载选项

            如果要同时指明多个挂载选项,彼此间以逗号分隔即可

              defaults,acl,noatime,noexec

          5.转储频率

            0:从不备份

            1:每天备份

            2:每隔一天备份

          6.自检次序

            0:不自检

            1:首先自检,通常只能是根文件系统可用1

            2:次级自检

            3:

            ...

    mount -a:可自动挂载定义在/etc/fstab文件中的所支持自动挂载的设备

    两个命令:df和du

      df命令:

       df [OPTION]... [FILE]... 

        -l:仅显示本地文件系统的相关信息

        -h:human-readable,单位换算

        -i:显示inode的使用状态而非blocks

      du命令:

        du [OPTION]... [FILE]...

          -s:sumary

          -h:human-readable

    练习:

      1.创建一个10G的分区,并格式化为ext4文件系统;

        (1)block大小为2048,预留空间为2%,卷标为MYDATA

        (2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳

        (3)可开机自动挂载  

      2.创建一个大小为1G的swap分区,并启动之

      

    删除文件:将此文件指向的所有data blcok标记为未使用状态;将此文件的inode标记为未使用

    复制和移动文件:

      复制:新建文件

      移动文件:

        在同一文件系统:改变的仅是其路径

        在不同文件系统:复制数据至目标文件,并删除原文件

    符号链接:

      权限:lrwxrwxrwx 

    硬链接:指向同一个inode

      

  • 相关阅读:
    【scala语言入门】二、匿名函数
    【scala语言入门】 一、apply与unapply
    关于timeOut超时后是否会回滚的思考
    [算法]-插入排序
    【oenCV系列】 写视频
    【Opencv系列】
    Factory Method模式精解(C++版本)
    Template Method模式精解(C++版本)
    Adapter模式精解(C++版本)
    迭代器模式精解(C++版本)
  • 原文地址:https://www.cnblogs.com/self-discipline-xxc/p/10325100.html
Copyright © 2011-2022 走看看