Linux磁盘和文件系统管理

  1. 磁盘相关概念

    1. 设备类型:

      1. 块设备(block):存取单位为块,典型设备磁盘

      2. 字符设备(char):存取单位为字符,典型设备为键盘

    2. 设备文件:

      1. 关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信。

      2. 如果存在两个相同型号设备,使用两个设备文件,但可能还会关联到同一个驱动程序

      3. 设备文件只有元数据即属性,没有数据内容,属于特殊文件类型

      4. 设备号码:

        主设备号:major number, 标识设备类型

        次设备号:minor number, 标识同一类型下的不同设备

    3. 硬盘

            1. 组成部分

               track:磁道

               cylinder: 柱面

               secotr: 扇区(512bytes)

               如何分区:按柱面

            2. MBR: Master Boot Record,即硬盘的主引导记录(无法识别2T以后的分区)0磁道0扇区:512bytes。

               446bytes: boot loader引导加载器,是一个程序

               64bytes:分区表

               16bytes: 标识一个分区

               2bytes: 55AA(分区有效标识)

               4个主分区;

               3主分区+1扩展(分区表的展指向)(N个逻辑分区,在Linux从5开始编号)

            3. 硬盘接口类型:

                并行:

                    IDE:“Integrated Drive Electronics”电子集成驱动器,把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器,133MB/s

                    SCIS:“Small Computer System Interface”(小型计算机系统接口),640MB/s

                串口:

                    SATA:(Serial ATA)叫串口硬盘,6Gbps

                    SAS:(Serial Attached SCSI)即串行连接SCSI,6Gbps

            4. 磁盘设备的命名标准:

                IDE: /dev/hd(centos5使用)

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

                                 不同设备:a-z

                                 /dev/sda, /dev/sdb, …

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

                                 /dev/sda1, /dev/sda5


  2. 磁盘分区管理

    1. fdisk命令介绍

      1. 概念:用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣,对于一块硬盘来讲,最多只能管理15分区。

      2. 命令语法及主要选项

        1. fdisk [-OPTION] [device…]

                   -l:列出指定的外围设备的分区表状况;

                   -u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;

        fdisk的子命令的管理功能,如下图所示

                      blob.png

                            其中常用命令是:

                            p: print, 显示已有分区;

                            n: new, 创建

                            d: delete, 删除

                            w: write, 写入磁盘并退出

                            q: quit, 放弃更新并退出

                            m: 获取帮助

                            l: 列表所分区id

                            t: 调整分区id                

    1. fdisk的分区功能详解

      1. 创建主分区(最后使用w保存退出)如下图所示:

        blob.png

      2. 创建逻辑分区(最后使用w保存退出),如下图所示:

        blob.png

      3. 使得分区生效

        1. 使用命令:partx -a /dev/DEVICE或者kpartx -a /dev/DEVICE(note:CentOS 5: 使用partprobe),如下图所示: 

        blob.png

        1. 查看是否生效:

          使用命令cat /proc/partitions,如下图所示:

        blob.png]

  3. 文件系统相关概念

    1. Linux文件系统类型

      1. Minix:Minix是Linux支持的第1个文件系统,该文件系统对用户的限制很多,性能很低。其最大缺点是最大只支持64MB的硬盘分区,现在该文件系统类型已无人使用了。

      2. ext2:是Linux使用的,性能很好的文件系统,用于固定文件系统和可活动文件系统。它是作为ext文件系统的扩展而设计的。ext2在Linux所支持的文件系统中,提供最好的性能(在速度和CPU使用方面),简短的说,ext2是Linux的主要文件系统。

      3. ext3:是对ext2增加日志功能后的扩展。是RHEL5中默认使用的文件系统类型。它向前、向后兼容ext2,意为ext2不用丢失数据和格式化就可以转换为ext3,ext3也可以转换为ext2 而不用丢失数据(只要重新安装该分区就行了),强烈推荐使用这种文件系统。 

      4. ext4(centos6):为第4代扩展文件系统,是RHEL6中默认使用的文件系统类型,属于典型的日志型文件系统。其特点是保持有磁盘存取记录的日志数据,便于恢复,性能和稳定性更加出色。 

      5. btrfs(centos7):由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件系统大小。

      6. reiserfs:仍然在完善的带日志文件系统,特别适合小文件的文件系统 

      7. jfs:仍然在完善的带日志文件系统,特别适合小文件的文件系统 

      8. swap:swap文件系统用于Linux的交换分区。在Linux中,使用整个交换分区来提供虚拟内存,其分区大小一般应是系统物理内存的2倍,在安装Linux操作系统时,就应创建交换分区, 它是Linux正常运行所必需的,其类型必须是swap,交换分区由操作系统自行管理。 

      9. 光盘:iso9660:这是一种针对ISO9660标准的CD-ROM文件系统,允许用户在PC、Mac和其他主要计算机平台上读取CD-ROM文件。几乎所有带有CD-ROM的计算机都可以从ISO9660文件系统读取文件。

    2. 其他系统文件系统类型

      1. Windows:fat32, ntfs

      2. Unix: FFS, UFS, JFS2

      3. 网络文件系统:NFS, CIFS

      4. 集群文件系统:GFS2, OCFS2

      5. 分布式文件系统:ceph,                                       

      6. moosefs, mogilefs, GlusterFS, Lustre

    3. 文件系统的组成部分

                内核中的模块:ext4,xfs,vfat

                用户空间的管理工具:mkfs.ext,mkfs.xfs,mkfs.vfat

                Linux的虚拟文件系统:VFS

      note:根据其是否支持"journal"功能:                             

              日志型文件系统: ext3, ext4, xfs, …                    

              非日志型文件系统: ext2, vfat


  4. 文件系统管理

    1. 使用mkfs命令创建文件系统(创建文件系统的过程既是格式化分区)

      1. mkfs.FS_TYPE /dev/DEVICE (文件系统类型有 ext4,xfs,btrfs,vfat),如下图所示:

        blob.png

      2. mkfs -t FS_TYPE /dev/DEVICE,如下图所示:

        blob.png

    2. 使用mke2fs创建文件系统(ext系列文件系统专用管理工具)

      1. 相关选项

        • -t {ext2|ext3|ext4}:选择文件系统类型

        • -b {1024|2048|4096}:指明块大小

        • -L 'LABEL':指定卷标

        • -j: 相当于 -t ext3

        • -i #: 为数据空间中每多少个字节创建一个inode(此大小不应该小于block的大小)

        • -N #:为数据空间创建个多少个inode

        • -m #: 为管理人员预留的空间占据的百分比

        • -O FEATURE[,…]:启用指定特性

        •  -O ^FEATURE:关闭指定特性

      2. 使用事例

        blob.png

    3. 创建交换分区

      1. 调整目标分区的id

        blob.png

      2. 使用命令mkswap创建交换分区

        mkswap [options] device

               -L 'LABEL'

        blob.png

    4. 其他工具

      1. blkid:块设备属性信息查看

        blkid [OPTION]… [DEVICE]

              -U UUID: 根据指定的UUID来查找对应的设备

              -L LABEL:根据指定的LABEL来查找对应的设备

        blob.png

      2. e2label:管理ext系列文件系统的LABEL

        e2label DEVICE [LABEL] (可以查看和设定label)

        blob.png

      3. tune2fs:重新设定ext系列文件系统可调整参数的值 

        tune2fs [OPTION]… [DEVICE]

                -l:查看指定文件系统超级块信息;super block

                 -L 'LABEL':修改卷标

                 -m #:修预留给管理员的空间百分比

                 -j: 将ext2升级为ext3

                 -O: 文件系统属性启用或禁用 ^

                 -o: 调整文件系统的默认挂载选项 ^

                 -U UUID: 修改UUID号;

        blob.png

      4. dumpe2fs:查看ext系列文件系统的全局信息

        dumpe2fs device

        -h:查看超级块信息

      5. fsck:文件系统检查命令(Note: FS_TYPE一定要与分区上已经文件类型相同)

        fsck.FS_TYPE /dev/DEVICE

        fsck -t FS_TYPE /dev/DEVICE

            -a: 自动修复错误(存在风险)

            -r: 交互式修复错误

        blob.png

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

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

(0)
mouse015110mouse015110
上一篇 2016-06-09
下一篇 2016-06-09

相关推荐

  • 文本处理三剑客之Sed(行编辑器)

    sed(流编辑器,行编辑器)     是一种流编辑器,一次处理一行内容,处理时把当前处理的行存储在临时缓存中,成为“模式空间”,接着用sed命令处理缓冲区的内容,处理完毕后吧缓冲区内容输出到屏幕接着处理下一行。这样不断重复到末尾。文件内容并没有改变。除非使用重定向输出才会改变内容。 sed:行编辑器(全屏编辑器:vi)   &n…

    Linux干货 2016-08-15
  • shell脚本之函数相关

       本节主要是作业和select 与case的相关 一、作业 1、斐波那契数列又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-…

    Linux干货 2016-08-22
  • Linux概述

    计算机组成概述 计算机组成原理 如上图计算机的组成结构,CPU运行速度远远高于内存,而内存运行速度又远远高于I/O;由于三者运行速度巨大差异,如果系统仅运行一个任务(单任务系统),那么将有大量的CPU空闲时间等待缓慢的I/O及内存的读取。为提高CPU的使用效率,于是便产生了多任务系统系统的需求。 多任务系统 多任务实现的基础,我们知道计算机处理任务主要靠CP…

    Linux干货 2016-12-02
  • 初识 vi/vim文本编辑器

    我们操作文件,终究离不开编辑文件,对文件内容的编辑,Linux系统下,我们通常使用VI/VIM来编辑文件。VI是每个Linux都会自带的文本编辑器,VIM是VI的增强版,现在的最新版都已自带,但是可能有些发行版本没有自带,可以使用sudo apt-get install vim命令安装vim。 可以使用vi或者vim命令直接进入新的文本文件,或者vim 文件…

    Linux干货 2017-07-29
  • find 的使用及练习

    find是个使用频率比较高的命令。常常用它在系统特定目录下,查找具有某种特征【名字类型属主权限等】的文件。find命令的格式: find  [-path ..] -options [-print -exec -ok] path:要查找的目录路径。 ~ 表示$HOME目录 . 表示当前目录 / 表示根目录 -print :表示将结果输出到标准输出-e…

    Linux干货 2017-06-11