硬件设备在Linux系统中的表现

    设备文件

     I/O Ports: I/O设备地址

     一切皆文件:

        open(), read(), write(), close()

     设备类型:

        块设备: block,存取单位“块”,磁盘

        字符设备: char,存取单位“字符”,键盘

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

     设备号码:

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

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

   

硬盘接口类型

并行:

    IDE: 133MB/s

    SCSI: 640MB/s

串口:

        SATA: 6Gbps

        SAS: 6Gbps

        USB: 480MB/s

    rpm: rotations per minute(转速)


设备文件

磁盘设备的设备文件命名: /dev/DEV_FILE

IDE: /dev/hd

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

    不同设备: a-z

    /dev/sda, /dev/sdb, ...

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

    /dev/sda1, /dev/sda5


硬盘物理结构


    硬盘存储术语

     head:磁头

     track:磁道

     cylinder: 柱面

     secotr: 扇区, 512bytes

   

        使用分区空间

         设备识别

         设备分区

         创建文件系统

         标记文件系统

         在/etc/fstab文件中创建条目

         挂载新的文件系统


    磁盘分区

为什么是分区?

优化I/O性能

实现磁盘空间配额限制

提高修复速度

隔离系统和程序

安装多个OS

硬盘分区

       为什么是分区?

        优化I/O性能

        实现磁盘空间配额限制

        提高修复速度

        隔离系统和程序

        安装多个OS


    分区

     两种分区方式: MBR, GPT

     MBR: Master Boot Record, 1982年, 使用32位表示扇区数,分区不超过2T

     如何分区:按柱面

     0磁道0扇区: 512bytes

        446bytes: boot loader

        64bytes:分区表

        16bytes: 标识一个分区

        2bytes: 55AA

      4个主分区; 3主分区+1扩展(N个逻辑分区)


    MBR分区结构


    GPT分区

         GPT:GUID patition table 支持128个分区,使用64位,支

        持8Z(512Byte/block ) 64Z (4096Byte/block)

         使用128位UUID 表示磁盘和分区 GPT分区表自动备份在头

        和尾两份,并有CRC校验位

         UEFI (统一扩展固件接口)硬件支持GPT


        GPT分区结构

        EFI部分又可以分为4个区域: EFI信息区(GPT头)、分区表、 GPT分区、备份区域

    管理分区

         列出块设备

        blkid

         创建分区使用:

            fdisk 创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区

            gdisk 创建GPT分区

            GNU parted 高级分区操作(创建、复制、调整大小等等)

         partprobe-重新设置内存中的内核分区表版本

         fdisk /dev/sdb

         gfisk /dev/sdb

         # fdisk -l [-u] [device...]

         子命令:

         p 分区列表

         t 更改分区类型

         n 创建新分区

         d 删除分区

         w 保存并退出

         q 不保存并退出

        分区工具fdisk和gdisk

    

    同步分区表

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

        # cat /proc/partations

           通知内核重新读取硬盘分区表

            新增分区用

        partx -a -n M:N /dev/DEVICE

        kpartx -a /dev/DEVICE -f: force

    删除分区用

        partx -d -n M:N /dev/DEVICE

        centos6: –nr N-M

         CentOS 5, 7: 使用partprobe

         partprobe [/dev/DEVICE]

    

    parted命令

         parted的操作都是实时生效的,小心使用

         用法: parted [选项]... [设备 [命令 [参数]...]...]

        parted /dev/sdb mklabel gpt|msdos

        parted /dev/sdb print

        parted /dev/sdb mkpart primary 1 200 (默认M)

        parted /dev/sdb rm 1

        parted -l

    

    文件系统

         文件系统是操作系统用于明确存储设备或分区上的文件的方

        法和数据结构;即在存储设备上组织文件的方法。操作系统

        中负责管理和存储文件信息的软件结构称为文件管理系统,

        简称文件系统。

         从系统角度来看,文件系统是对文件存储设备的空间进行组

        织和分配,负责文件存储并对存入的文件进行保护和检索的

        系统。具体地说,它负责为用户建立文件,存入、读出、修

        改、转储文件,控制文件的存取,安全控制,日志,压缩,

        加密等。

    

    文件系统类型

     Linux文件系统: ext2, ext3, ext4, xfs( SGI) , btrfs(

            Oracle) , reiserfs, jfs( AIX) , swap

            swap: 交换分区

        光盘: iso9660

     Windows: fat32, ntfs

     Unix: FFS( fast) , UFS( unix) , JFS2

     网络文件系统: NFS, CIFS

     集群文件系统: GFS2, OCFS2( oracle)

     分布式文件系统: ceph, moosefs, mogilefs, glusterfs,Lustre

     RAW:未经处理或者未经格式化产生的文件系统

    

    文件系统分类

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

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

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

        文件系统的组成部分:

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

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

         Linux的虚拟文件系统: VFS

         查前支持的文件系统: cat /proc/filesystems  

    

    创建文件系统

             mkfs命令:

            (1) # mkfs.FS_TYPE /dev/DEVICE

            ext4

            xfs

            btrfs

            vfat

            (2) # mkfs -t FS_TYPE /dev/DEVICE

            -L 'LABEL': 设定卷标

    

    创建ext文件系统

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

        -t {ext2|ext3|ext4}

        -b {1024|2048|4096}

    &nbs