码迷,mamicode.com
首页 > 其他好文 > 详细

磁盘及文件系统管理详解

时间:2017-11-19 18:47:07      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:zl

磁盘管理:


机械式硬盘:

    U盘、光盘、软盘、硬盘、磁带 

MBR:主引导记录(512byte),不属于任何分区

    446byte:BootLoader,程序

    64byte:每16byte标识一个分区(最多只能创建四个主分区,主+扩展<=4,扩展分区只能有一个)

    2byte:Magic Number,标记MBR是否有效


RPM:转/每分钟

iNode条目:存储的是inode号,文件的属主属组(Owner/Group)、扩展属性、权限(Mode)、大小(Size)、时间戳(Timestamps)等各种跟文件数据没有关系的信息,以及直接/间接/多级间接磁盘块指针;但是没有文件名

目录:路径映射表

新建文件:找到空iNode以分配iNode节点,找到磁盘块以填充数据内容

删除文件:清空iNode节点内容,存储块标记为未使用,但数据未删除

剪切文件:修改iNode节点的存放路径(同一分区)

复制文件:创建新文件并填充数据内容

跨分区剪切文件:新分区建立文件→从老分区复制文件→老分区删除文件

inode Bitmap(iNode位图):标识iNode

block Bitmap(块位图):位图是为了加快索引

Super Block(超级块):存储的内容--------有多少块组、每个块组中有多少块、块大小、空闲/引用磁盘块、空闲/引用iNode;可有多个备份

GDT(块组描述符表Group Description Table):保存的内容---------当前分区上每个块的块组名,每个块组起始磁盘号、结束块的编号;需备份

Boot Block:任何一个分区的第一个块,预留出来,不能存数据

inode Table(iNode表):存放目录文件与inode号的对应关系


Boot BlockBlock Group 0Block Group 1          ...Block Group n

           /                   \

         /                      \

Super BlockGDTBlock Bitmapinode Bitmapinode TableData Blocks



链接文件

    硬链接:直接指向同一个iNode的具有不同路径的两个文件

        1.只能对文件创建,不能应用于目录

        2.不能跨文件系统

        3.创建硬链接会增加文件被链接的次数(ls -l)

    软链接(符号链接):链接文件中保存的内容是被链接文件的绝对路径,权限取决于实际被链接文件

        1.可应用于目录

        2.可以跨文件系统

        3.不会增加被链接文件的链接次数

        4.其大小为指定的路径所包含的字符个数

    # ln [-s -v] SRC DEST


# du FILE    (显示目录下每个文件及目录本身的大小)

    -s:显示目录的大小

    -h:单位换算

# df    (显示磁盘分区使用情况)

    -i:iNode使用情况

    -P:磁盘块使用情况

    -h:换算为合适的单位


设备文件

    块设备:以块为单位,随机访问的设备-----硬盘

    字符设备:以字符为单位的线性设备-----键盘

# ll /dev/sda1:(没有大小)

    brw-rw----. 1 root disk      8,   1 Nov 16 08:57 sda1

    8主设备号:标识设备类型

    1次设备号:标识同一类型中不同设备

创建设备文件:(设备文件需与真实硬件相关联才能正常使用)

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

        -m MODE:指定权限

        TYPE:b(块设备)、c(字符设备)

硬盘设备的设备文件名:

    IDE、ATA:/dev/hd[a-d](第一个IDE口:主/dev/hda+从/dev/hdb,第一个主分区/dev/hda1)

    SATA/SCSI/USB:/dev/sd[a-p]

    软驱:/dev/fd[0-1]

    打印机:/dev/lp[0-15]

    光驱:/dev/cdrom    鼠标:/dev/mouse    磁带机:/dev/st0或/dev/ht0(IDE设备)

        a、b、c...来区别同一种类型下的不同设备

        逻辑分区可以有多个(从5开始),扩展分区只能有一个,主分区最多可以有四个

查看当前系统识别了几块硬盘:

    # fdisk -l [/dev/DEVICENAME]    (列出当前系统上的所有[指定]磁盘及其磁盘分区

管理磁盘分区:

    低级格式化:创建磁道

    高级格式化:创建文件系统(利用VFS使得Linux可以支持多种文件系统,作翻译官)

        # mkfs.文件类型名称 硬盘分区名称(mkfs -t ext2 = mkfs.ext2)

            文件类型名称:cramfs,ext2/3/4,fat,msdos,xfs,btrfs,minix,vfat            

              ext3(journal file system日志文件系统):能加快文件系统的修复速度

                分区:数据区、元数据区、日志区

        专门管理ext系列文件:

            # mke2fs

                -j:创建ext3类型文件系统

                -b BLOCK_SIZE:指定块大小,默认为4096,可用取值为1024、2048或4096

                -L LABEL:指定分区卷标

                -m #:指定预留给超级用户的块数百分比

                -i #:用于指定为多少字节的空间创建一个inode,默认为8192;这里给出的数值应为块大小的2^n倍

                -N #:指定iNode个数

                -F:强制创建文件系统

                -E:用户指定额外的文件系统属性

    # blkid 硬盘分区名称    (显示uuid值全局唯一标识符、卷标label和type等相关属性属性,)

    # e2label    (用于查看或定义卷标)

        # e2label 设备文件 卷标    (设定卷标)

    # tune2fs    (调整文件系统的相关属性)

        -j:不损害原有数据,将ext2升级为ext3

        -L LABEL:设定或修改卷标

        -m #:调整预留百分比

        -r #:指定预留块数

        -o:设定默认挂载选项

        -c #:指定挂载次数达到#次之后进行自检,0或-1代表关闭此功能

        -i #:每挂载使用多少天后进行自检,0或-1代表关闭此功能

        -l:显示超级块之后的信息

    # dumpe2fs    (显示文件系统相关信息)

        -h:只显示超级块信息

    # fsck    (检查并修复Linux文件系统)

        -t FSTYPE:指定文件系统类型

        -a:自动修复(不询问)

    # e2fsck    (专用于修复ext2/3文件系统)

        -f:强制检查

        -p:自动修复

    # fdisk /dev/sda    (交互式命令)

        p:显示当前硬件的分区

        n:创建新分区

        d:删除一个分区

        w:保存退出

        q:不保存退出

        t:修改分区类型

        l:显示所支持的所有类型

    # cat /proc/partitions    (判断内核是否读到了新建的分区表信息)

    # partprobe [/dev/sda]   (通知内核重读[指定]分区表)


挂载:将新的文件系统关联至当前根文件系统

卸载:将某文件系统与当前根文件系统的关联关系予以移除

挂载:mount

    # mount    (显示当前系统已经挂载的设备及挂载点)

    # mount [options] [-o options] 设备 挂载点

        -a:表示挂载/etc/fstab文件中定义的所有文件系统

        -n:默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件,使用-n选项意味着挂载设备时,不把信息写入此文件

        -t FSTYPE:指定正在挂载设备上的文件系统的类型,不使用此选项时,mount会调用blkid命令获取对应文件系统的类型

        -r:只读挂载,挂载光盘时常用此选项

        -w:读写挂载

        -o:指定额外的挂载选项,也即指定文件系统启用的属性

            remount:重新挂载

            loop:挂载本地回环设备(可用于挂载镜像)

            ro:只读挂载

            rw:读写挂载

        设备:

            设备文件:/dev/sda5

            卷标:LABEL=" "

            UUID:UUID=" "

        挂载点:目录

            要求:

                此目录没有被其他进程使用

                目录得事先存在

                目录中的原有文件将会暂时隐藏

    挂载完成后,要通过挂载点访问对应文件系统上的文件。如光盘镜像不能直接被访问,经过挂载之后可以在挂载点中查看其包含内容       

卸载:umount

    # umount 设备/挂载点

        卸载注意事项:挂载的设备没有进程使用

    # fuser    (验证进程正在使用的文件或套接字文件)

        -v:查看某文件上正在运行的进程

        -k:

        -m:

            # fuser -km MOUNT_POINT    (终止正在访问此挂载点的所有进程)


swap分区(交换分区):必须是一个独立的分区

    # free    (查看分区使用情况)

        buffers:缓冲(大→缓冲区→小)

        cached:缓存(小→缓存区→大)

    创建交换分区:

        fdisk命令中,t调整分区类型为82

        # mkswap /dev/sda#

            -L LABEL

    挂载交换分区:

        # swapon /dev/sda#    (启用交换分区)

            -a:启用所有的定义在/etc/fstab文件中的交换设备

        # swapoff /dev/sda#    (关闭交换分区)


回环设备:

    loopback:使用软件来模拟实现硬件

        创建一个镜像文件,120G


创建文件的方式模拟存储空间:

dd命令:直接复制底层数据流

    if=input_file:指定数据来源

    of=output_file:指定数据存储目标

   bs=#:设置每个块的大小

    count=#:设置要拷贝块的个数

    conv=ucase:将字母从小写转换成大写

    conv=lcase:将字母从大写转换为小写

    seek=#:创建数据文件时,跳过的空间大小


文件系统的配置文件/etc/fstab:

    OS在初始化时,会自动挂载此文件中定义的每个文件系统

    内容:

      要挂载的设备    挂载点    文件系统类型    挂载选项    转储频率    文件系统检测次序

        转储频率:跟文件系统备份相关,用于定义多久对此文件系统做一次完全备份,0:不备份,1:每天备份,2:每两天一次备份.... 

        文件系统检测次序:只有/为1,其他文件系统可为2,0表示不检查


文件管理---------压缩、解压缩

压缩格式:gz,bz2,xz,zip,z

压缩算法:算法不同,压缩比也会不同

    compress:FILENAME.z

    uncompress:

    gzip:.gz(只能压缩文件,不能压缩目录)

        # gzip /PATH/TO/SOMEFILE    (压缩完成后会删除原文件)

            -d:解压缩

            -#:1-9,指定压缩比,默认是6

        # gunzip /PATH/TO/SOMEFILE.gz    (解压完成后会删除原文件)

        # zcat /PATH/TO/SOMEFILE.gz    (不解压的情况,查看文本文件的内容)

    bzip2:.bz2,比gzip有更大压缩比的压缩工具,使用格式近似(只能压缩文件,不能压缩目录)

        # bzip2 /PATH/TO/SOMEFIE    (压缩完成后会删除原文件)

            -d:解压缩

            -#:1-9,指定压缩比,默认是6

            -k:压缩时保留原文件

        # bunzip2 /PATH/TO/SOMEFILE.bz2    (解压完成后会删除原文件)

        # bzcat /PATH/TO/SOMEFILE.bz2    (不解压的情况,查看文本文件的内容)

    xz:.xz,有更大的压缩比(只能压缩文件,不能压缩目录)

        # xz /PATH/TO/SOMEFILE    (压缩完成后会删除原文件)

            -d:解压缩

            -#:1-9,指定压缩比,默认是6

            -k:压缩时保留原文件

        # unxz /PATH/TO/SOMEFILE.bz2    (解压完成后会删除原文件)

        # xzcat /PATH/TO/SOMEFILE.bz2    (不解压的情况,查看文本文件的内容)

    zip:既归档又压缩的工具

        # zip FILENAME.zip FILE1 FILE2 ...    (压缩后不删除原文件)

        # unzip FILENAME.zip

        archive:归档,归档本身并不意味着压缩

    tar:归档工具(只归档不压缩)

        # tar 

            -c:创建归档文件

            -x:展开归档文件

            -f FILE.tar:操作归档文件名

            -t:不展开归档,直接查看归档了哪些文件

            -z:用Gzip压缩或解压

            -j:用bzip2压缩或解压

            -J:用xz压缩或解压

            -v:显示压缩或解压的过程

            -p:保留原始的权限与属性

            -P:使用绝对路径来压缩

            -C:指定解压到的目录

            --xattrs:归档时,保留文件的扩展属性

    cpio:归档工具

磁盘及文件系统管理详解

标签:zl

原文地址:http://zjing1027.blog.51cto.com/13395854/1983299

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!