Linux磁盘管理与文件系统

一、相关名词理解

1、设备类型

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

    字符(character):线性访问,数据交换单位为字符

设备文件:FHS(LSB)文件系统层级标准

    /dev/

       设备文件关联设备驱动程序

       设备号:

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

           minor:次设备号  区分同类设备不同个体


mknod:

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

      -m,   指定其权限

[root@localhost ~]# mknod 5dev b 400 400 -m 755


设备文件的文件名(ICANN):

     磁盘设备文件:

          IDE接口(ATA):并行,133MB/s

          两个IDE控制器:每个控制器可通过线缆介入两块磁盘,一主一从

          SCSI接口:并行,640MB/s 工业级别

          SATA接口:串行,6Gpbs

          USB接口:串行,5Gpbs

          SAS接口:串行,

          /dev/sd[a-z][#]

磁道:stack

扇区:sectors

柱面:

分区:

寻道时间:平均寻道时间


2、链接文件:访问同一个文件数据不同路径

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

 创建方法:cp -l SRC DEST

        ln SRC DEST

    特性:

       1、目录不支持硬链接

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

       3、硬链接文件与原文件是指向同一个Inode,创建硬链接文件会增加Inode的引用计数,

软链接(符号链接):链接文件是一个完全独立的新文件,但其指向了原文件的访问路径

 创建方法:ln -s SRC DEST

    特性:

    1、符号链接文件与原文件是两个独立文件

        2、目录可以创建符号链接

        3、可以跨文件系统

        4、删除链接不影响原文件,但删除原文件,符号指向的文件路径不复存在,因此,此时链接文件将变成失效的链接,

        5、其大小并非真正原文件大小,而是指向的原文件的文件路径字符串所包含的字节数


二、硬盘分区格式化

注意:硬盘分区格式和分区文件格式

MBR:0磁道0扇区,主引导扇区(master boot record),512B


    分为三个部分:

          446bytes:bootloader,操作系统加载器

          64bytes:16bytes标记一个分区

          2bytes:55AA 当前MBR信息是否有效的标记 

GPT:GPT和parted使用详解


分区标识方式:

     主分区 1-4

     扩展分区

     逻辑分区:5+

三、挂载一个硬盘的步骤

fdisk命令

①、      1、-l 查看所有显示已识别的磁盘设备

               fdisk -l /dev/[hs]d[a-z][1-9]

      2、管理分区

②、 硬盘分区    fdisk /dev/[hs]d[a-z]

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

              常用命令:

                   p:显示现有分区表

                   n:创建新分区

                   d:删除现有分区

                   t:修改分区ID

                   l:查看支持哪些分区ID

                   w:保存退出       注意:这里需要注意如果磁盘没有任何分区,没有使用内核能自动重新读取分区表识别分区,并同步到磁盘。如果是已有分区的磁盘则会有警告信息提示,不能识别,不能进行下一步格式化,要重启后才可以。之前一直是在虚拟机上操作的,没注意到这个问题

                   q:不保存退出

                   m:显示帮助信息

               查看内核是否已经识别新建分区

                  cat /proc/partitions

                   fdisk -l 命令能看到然并卵,格式化时就找不到

③、           通知内核强制重新读取分区表:

                 CentOS 5: partprobe /dev/Device  

                 CentOS 6: partx -a /dev/sd[a-z]               

                          或 kpartx -af /dev/sd[a-z]     注意:成功读取分区,可能需要命令重复执行2次或以上


磁盘格式化: 创建文件系统                                        

    文件系统

       元数据:每个索引项称一个Inode,(inode table)

       根在内核中:其需要被关联至根文件系统,即rootfs

       目录会保存它一级子目录的文件名和指向的indoe信息(编号)

       例: /var/log/messages  访问一个文件的过程

         根的inode-->根目录对应的磁盘块-->var对应的inode编号-->查inode table,找到编号对应的Inode-->var目录的磁盘块-->logs的Inode编号-->查inode table,找到编号对应的inode-->找到Logs目录的磁盘块-->找到messages文件名对应的INODE编号-->查inode table,找到编号对应的inode-->找到messages磁盘块


dentry:缓存

位图索引

块组

超级块

磁盘块

inode


VFS: 

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

    光驱:iso9600

    网络文件系统:nfs,cifs

    集群文件系统:gfs2,ocfs2

    分布式文件系统:ceph

    windows文件系统:ntfs,vfat

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

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

    交换文件系统:swap

日志型文件系统:加速文件检测并修复的过程。ext3,ext4,xfs

非日志型文件系统:ext2


文件系统管理工具:

    创建文件系统:mkfs.ext4   fsck.xfs

    查看文件属性:dumpe2fs   ture2fs

   检测文件系统:fsck.ext3  fsck.ext4   fsck.xfs

创建文件系统(格式化):

    mkfs.FSTYPE /dev/DEVICE   查看文件系统: blkid [/dev/DEVICE]

    mkfs -t FSTYPE /dev/DEVICE

UUID:全局惟一标识符


  

④、ext系列文件系统:mke2fs  格式化

    mke2fs [OPTION]... /dev/DEVICE

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

        -b {1024|2048|4096},指明块的大小 

        -L NAMENAME   指定卷标名(盘符)

        -j 相当于-t ext3

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

      -N #:直接指明给此文件系统创建多少个inode

      -m #:指明预留空间的百分比,默认为5

      -O FEATURE [,...]: 默认开启特性 是调用 tune2fs命令

      -0 FEATURE ^[...] :默认不开启特性


e2label     #不影响分区中的数据

        查看:e2label /dev/DEVICE

     设定卷标:e2label /dev/DEVICE LABELNAME

tune2fs:查看或修改ext系列文件系统的某些属性               #不影响分区中的数据

       tune2fs -l 查看超级块分区的信息

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

        -j:ext2-->ext3

        -L LABELNAME:修改卷标

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

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

       -O(大写):文件系统属性的启动或关闭

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

       dumpe2fs [-h] /dev/DEVICE   -h 表示只显示超级块的信息


2、文件系统检测:

     因进程意外终止或系统崩溃等原因导致写入操作非正常终止时,可能会导致文件损坏,此时,应修复文件系统.要先卸载

fsck: fsck -t FSTYPE=fsck.FSTYPE

      -a 自动修复所有错误

      -r 交互式修复错误,默认就有

      -f 强制检测 

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

e2fsck:

    -y:对所有问题自动恢复为yes

     -f:即使文件系统处于clean状态也要强制进行检测   mkfs -t vfat /dev/DEVICE


SWAP文件系统

free 查看系统内存使用状况

       -h,-m,-g

disk /dev/DEVICE t命令调整ID为82

创建交换分区文件系统:

mkswap命令

mkswap [OPTION] /deV/DEVICE

       -L LABLENAME

swapon:启用交换分区

       swapon [option] [DEVICE]

                -a:激活所有的交换分区

                -p PRIORITY:设定其优先级

swapoff:禁用交换分区


文件系统等空间占用信息查看工具:

df: 查看分区情况

df [OPTION] [挂载点或DEVICE]

-a  显示所有的文件系统信息,包括特殊文件系统,如/proc 

-h  使用习惯单位显示容量,如KB,MB,GB等  

-i  inode数量

-p  以Posix兼容的格式输出

-T 显示文件系统类型    

du:

du [OPTION] [FILENAME]

    -a 显示每个子文件的磁盘占用量,默认是只统计子目录

    -h 使用。。。

    -s 只统计总占用量,而不列出子目录和子文件的大小

du命令和df命令的区别

df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)

du是面向文件的,指挥计算文件或目录占用的空间


注意:在Linux系统上,所有的文件系统必须通过根文件系统的某个分支来访问

   根文件系统:根关联到的分区

   其余所有的其它文件系统如果想要被访问,都只能够通过“关联”至根文件系统上的某个目录来实现,这种操作即所谓的“挂载”也即mount 卸载 umount

挂载点:即用作为另一个文件系统的访问入口的目录

     必须事先存在,应该使用别的进程未使用的目录

⑤、mount:

mount [OPTIONS]... [-t FSTYPE] [-o OPTION] DEVICE MOUNT_POINT

mount:通过读取/etc/mtab文件来显示当前系统所以已经存在的挂在设备

  命令选项:

       -r: 只读挂载

       -w: 读写挂载,默认就是以读写挂载的

       -t FSTYPE:被挂载的设备上的文件系统类型,可省略,此时mount会自动使用blkid命令来判断之:

       -L:以卷标的方式指定要挂载的设备,此时DEVICE可省   moun -L "LABLENAME" /DEVCIE

       -U:UUID 以UUID的方式指定要挂载的设备,此时DEVICE可省  mount -U "UUID" /DEVICE

       -a: 自动挂载所有的支持自动挂载的设备(/etc/fstab文件中定义的支持自动挂载的设备)

       -n: 默认情况下,设备挂载与否的改变结果会保存于/etc/mtab中一份,-n选项用于变动时不更新此文件:  可以用cat /proc/mounts查看

       -B:绑定目录至另一个目录上

  -o OPTION 挂载选项:

         async:异步写入

         sync:同步写入即使用同步I/O,

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

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

         auto/noauto:设备是否支持Mount命令使用-a选项时自动挂载

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

         exec/noexec:是否允许执行此文件系统上的程序文件

         suid/nosuid:是否支持此设备上的文件上使用SUID权限

         remount:重新挂载

mount -o remount,acl /dev/sdb1

          ro:只读

          rw:读写

          loop:用来把一个文件当成硬盘分区挂接上系统

           iocharset:指定访问文件系统所用字符集

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

          所有挂载选项均未指明时,其默认为:

          rw,suid,dev,exec,auto,nouser,async,and relatime


   umount DEVICE 或 umount MOUNT_POINT

挂载点挂载之前的文件在挂载后会被隐藏,卸载后还会存在,设备卸载前保存的文件,卸载后也会保存,再此挂载就可以访问


fuser

查看正在访问指定挂载点的进程:fuser -v MOUNT_POINT

终止所有正在访问指定挂载点的进程:fuser -km MOUNT_POINT


⑥、/etc/fstab

文件系统相关挂载配置文件

每行定义一个文件系统

要挂载的设备或伪文件系统   挂载点  文件系统类型  挂载选项 转储频率(备份频率)  自检次序

设备文件,                                                    0  不转储         0 不自检

LABEL=                                                        1  每天转储       1 首先自检“/”

UUID=                                                         2  每隔一天转储   2 

伪文件系统名称


     

你可能感兴趣的:(linux)