• 一天一个 Linux 命令(26):fdisk 命令


    一、简介

    Linux里的fdisk(英文全称:"Partition table manipulator for Linux")是一个创建和维护磁盘分区表的命令,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。进行硬盘分区从实质上说就是对硬盘的一种格式化, 用一个形象的比喻,分区就好比在一张白纸上画一个大方框,而格式化好比在方框里打上格子。

    二、格式说明

    fdisk [options]
    fdisk [参数]
    
    Usage:
     fdisk [options] <disk>    change partition table
     fdisk [options] -l <disk> list partition table(s)
     fdisk -s <partition>      give partition size(s) in blocks
    
    Options:
     -b <size>             sector size (512, 1024, 2048 or 4096)
     -c[=<mode>]           compatible mode: 'dos' or 'nondos' (default)
     -h                    print this help text
     -u[=<unit>]           display units: 'cylinders' or 'sectors' (default)
     -v                    print program version
     -C <number>           specify the number of cylinders
     -H <number>           specify the number of heads
     -S <number>           specify the number of sectors per track
    

    三、选项说明

    -b	指定每个硬盘分区的大小,可用数值为512, 1024, 2048 or 4096
    -c  兼容模式:'dos'或'nondos'(默认)
    -h  显示帮助信息
    -u	搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址
    -v	显示版本信息
    -l	列出指定的外围设备的分区表状况
    -s	将指定的分区大小输出到标准输出上,以块(block)为单位
    -C  [cyls]:指定硬盘的柱面数(number of cylinders);
    -H  [heads]:指定硬盘的磁头数(number of heads),当然不是物理数值,而是作用于分区表。合理取值是255和16
    -S  [sects]:指定每个磁道的扇区数,当然不是物理数值,而是用于分区表。一个合理的数值是63
    

    块(block)与扇区(sector)的区别。 扇区是对硬盘而言,扇区是硬盘的最小存储单位,块是对文件系统而言,块是文件系统最小存取单位。一般而言,一个扇区大小为512B,一个块大小为4KB,一个block是由连续的8个sector组成。

    理解上面选项的含义,需了解磁盘的物理组成结构与相关概念,例如sector、cylinder、head等组成部件的具体含义,可参见硬盘的存储原理和内部架构 。

    四、命令功能

    创建和维护磁盘分区表

    五、常见用法

    5.1 显示当前分区情况

    # fdisk -l
    
    Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000d64b4
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048   104857566    52427759+  83  Linux
    
    # fdisk -lu
    
    Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000d64b4
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048   104857566    52427759+  83  Linux
    
    #参数说明
    Device:分区名称;
    Boot:是否是活动分区。活动分区只能是主分区,一个硬盘只能有一个活动的主分区;一个硬盘的主分区与扩展分区总和不能超过4个。硬盘分区遵循着“主分区→扩展分区→逻辑分区”的次序原则,而删除分区则与之相反。
     主分区:一个硬盘可以划分多个主分区,但没必要划分那么多,一个足矣。
     扩展分区:主分区之外的硬盘空间就是扩展分区,
     逻辑分区:是对扩展分区再行划分得到的。
    Start:分区柱面的开始下标;
    End:分区柱面的结束下标;
    Blocks:该分区的块数量。
    Id:各种分区的文件系统不同,如有ntfs分区,fat32分区,ext3分区,swap分区等。每一种文件系统都有一个代号,对应这里的Id。常见的文件系统ID有:
     f:FAT32 Extend,只限于扩展分区。
     86:NTFS。
     7:HPFS/NTFS
     b:FAT32。
     83:Linux Ext2。
     82:Linux 交换区。
    System:文件系统名称。
    

    5.2 显示指定设备的分区

    # fdisk -l /dev/vdb
    
    Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0xeecbd2e1
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vdb1            2048   209715199   104856576   83  Linux
    [root@iz8vb6yk5a7gzhaw7901zkz ~]# 
    

    5.3 对指定设备创建分区和文件系统并挂载,使磁盘变为可用

    5.3.1 创建一个分区

    1.运行以下命令对数据盘进行分区。
    fdisk -u /dev/vdb
    2.输入p查看数据盘的分区情况。
      本示例中,数据盘没有分区。
    3.输入n创建一个新分区。
    4.输入p选择分区类型为主分区。
      说明 创建一个单分区数据盘可以只创建主分区。如果要创建四个以上分区,您应该至少选择一次e(extended),创 建至少一个扩展分区。
    5.输入分区编号,按回车键。
      本示例中,仅创建一个分区,直接按回车键,采用默认值1。
    6.输入第一个可用的扇区编号,按回车键。
      本示例中,直接按回车键,采用默认值2048。
    7.输入最后一个扇区编号,按回车键。
      本示例中,仅创建一个分区,直接按回车键,采用默认值。
    8.输入p查看该数据盘的规划分区情况。
    9.输入w开始分区,并在完成分区后退出。
    

    结果如下所示:

     

    5.3.2 查看新分区信息

    fdisk -lu /dev/vdb
    

    运行结果如下所示,如果出现/dev/vdb1的相关信息,表示新分区已创建完成。

     

    5.3.3 为分区创建文件系统

    在新分区上创建一个文件系统。以下命令介绍如何创建ext4和xfs文件系统,您可以根据实际需求,创建对应的文件系统。

    • 运行以下命令,创建一个ext4文件系统。

      mkfs -t ext4 /dev/vdb1
      
    • 运行以下命令,创建一个xfs文件系统。

      mkfs -t xfs /dev/vdb1
      

    本示例中,创建一个ext4文件系统。

     

    5.3.4 配置/etc/fstab文件并挂载分区

    在/etc/fstab中写入新分区信息,启动开机自动挂载分区。

    注意: 建议您在/etc/fstab中使用全局唯一标识符UUID来引用新分区。由于释放云盘等操作可能会导致其他云盘的设备名变动,如果在/etc/fstab中直接使用设备名,当设备名变动时可能影响您的存储数据。

    1.运行以下命令,备份/etc/fstab文件。
    cp /etc/fstab /etc/fstab.bak
    
    2.在/etc/fstab里写入新分区信息。
    如果是root用户,可以运行以下命令直接修改/etc/fstab文件。如果是普通用户,可以手动修改/etc/fstab文件
    echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab
    
    其中:
    /dev/vdb1:已创建好文件系统的数据盘分区,您需要根据实际情况修改对应的分区名称。
    /mnt:挂载(mount)的目录节点,您需要根据实际情况修改。
    ext4:分区的文件系统类型,您需要根据创建的文件系统类型修改。
    
    注意:
    说明 Ubuntu 12.04系统不支持barrier,需要运行echo '`blkid /dev/vdb1 | awk '{print $3}' | sed 's/\"//g'` /mnt ext4 barrier=0 0 0' >> /etc/fstab命令。
    
    3.查看/etc/fstab中的新分区信息。
    cat /etc/fstab
    

    结果如下所示,如果出现新建文件系统的信息,表示文件系统挂载成功

     
    4.挂载/etc/fstab配置的文件系统
    mount -a
    5.检查挂载结果。
    df -h
    

    结果如下所示,如果出现新建文件系统的信息,表示文件系统挂载成功。

     

     

  • 相关阅读:
    Netty学习笔记四:NIO实现群聊
    Netty学习三:NIO
    Netty学习二:IO模型 BIO
    Netty学习一:netty是什么
    idea远程debug
    filter,interceptor,controllerAdvice,aspect,controller执行顺序
    springboot使用多个@RestControllerAdvice时的拦截顺序
    记一次RestControllerAdvice无法拦截Filter内抛出异常
    SpringBoot声明式事务的简单运用
    mybatis plus 和PageHelper依赖冲突
  • 原文地址:https://www.cnblogs.com/joshua317/p/15407969.html
Copyright © 2020-2023  润新知