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

相关推荐

  • Nginx/httpd 代理两个Tomcat

    Nginx 前端代理服务器172.16.71.1 从ftp下载Nginx 安装 vim /etc/nginx/nginx.confhttp {…# 添加以下内容upstream tcsrvs {         server 172.16.71.4:8080;        …

    Linux干货 2017-02-12
  • CentOS程序包管理

    对于Linux系统而言,其能执行的程序为二进制格式,而对于程序开发者而言,直接利用二进制开发程序是不太现实的,所以一般都是利用高级语言来进行软件开发,其程序也即称为源代码;那么我们在对一个程序进行安装、升级、卸载、 查询、校验等操作时,需要对每个源代码进行编译成为二进制程序,那么显然是不太现实的。所以在各Linux发行版中一般都带有程序包管理器。 所谓程序包…

    Linux干货 2016-08-25
  • yum软件管理使用详解

    yum介绍 yum客户端的使用 配置文件项作说明: 案例repo配置文件。 创建yum源命令(yum-config-manager) yum list相关命令 yum安装 yum更新和升级 yum查找和显示 yum删除程序 查看仓库 实战演练本地yum仓库(光盘) YUM内置变量 创建YUM仓库(http) yum介绍 yum命令是在Fedora和RedHa…

    Linux干货 2016-09-06
  • TCP/IP五层模型

    1、简述osi七层模型和TCP/IP五层模型 网络的七层模型是由OSI和CITT一起制定的开放系统互连参考模型: TCP/IP 五层模型可以分为:应用层,传输层,网络层,数据链路层,物理层。 2、简述ip route家族命令 语法:ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT={link ,addr,rout…

    2018-01-05
  • Linux Shell(脚本)编程入门

    为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建…

    Linux干货 2017-08-05
  • 浅谈DNS基本原理以及实现方法(一)

     DNS(Domain Name System,域名系统),是目前互联网上最不可或缺的服务器之一,我们在互联网从访问一个网站,到发送一封电子邮件,再到定位域中的域控制器,无时无刻不再使用着DNS为我们提供的服务,那为什么我们会需要这样一个服务那?带着这样一个疑问让我们先来认识一下什么是DNS吧  DNS最核心的工作就是域名解析,也就是把计…

    Linux干货 2015-12-15