zoukankan      html  css  js  c++  java
  • 磁盘分区

    主分区、扩展分区、逻辑分区的关系

    在Linux系统下(其他操作系统也有类似的规定),磁盘的分区大致可以分为三类,分别为主分区、扩展分区和逻辑分区等等。

    Linux系统管理员在部署系统时,必须要对这三个分区进行一个合理的规划,否则的话会浪费宝贵的硬盘空间。

    通常情况下,一个硬盘中最多能够分割四个主分区。因为硬盘中分区表的大小只有64Bytes,而分割一个分区就需要利用16Bytes空间来存储这个分区的相关信息。

    由于这个分区表大小的限制,硬盘之能够分给为四个主分区。如果此时一块硬盘有120个G,而管理员划分了4个主分区,每个主分区的空间为20个G。

    那么总共才用去了80G的空间。这块硬盘剩余的40G空间就将无法使用。这显然浪费了硬盘的空间。

    为了突破这最多四个主分区的限制,Linux系统引入了扩展分区的概念。即管理员可以把其中一个主分区设置为扩展分区(注意只能够使用一个扩展分区)来进行扩充。

    而在扩展分区下,又可以建立多个逻辑分区。也就是说,扩展分区是无法直接使用的,必须在细分成逻辑分区才可以用来存储数据。

    通常情况下,逻辑分区的起始位置及结束位置记录在每个逻辑分区的第一个扇区,这也叫做扩展分区表。

    在扩展分区下,系统管理员可以根据实际情况建立多个逻辑分区,将一个扩展分区划割成多个区域来使用。

     

    MBR分区

    MBR:Master Boot Record, MBR磁盘分区是一种使用最为广泛的分区结构,它应用于Windows系统平台,Linux系统平台和基于X86的UNIX等系统平台。

    实现原理

    使用位于磁盘的0号扇区(一扇区等于512字节),来表示整个磁盘的整体分区情况,整个0号扇区简称为MBR扇区。

    从硬件角度讲,MBR分区是按柱面进行的,也就是说,磁盘上的同一柱面只能归于一个分区。但是,在CentOS 6.8上,同一柱面上的不同扇区可以属于不同分区。

    MBR扇区组成

    MBR扇区由引导代码、MBR分区表、MBR结束标志3部分构成,一共占用512个字节。

    其中引导代码占用446个字节,MBR分区占用64个字节,MBR结束标志占用2个字节,MBR扇区一共占用512个字节。

    引导代码:占MBR分区的前446字节,负责整个系统的启动。如果引导代码被破坏,系统将无法启动

    MBR分区:占引导代码后面的64个字节,是整个硬盘的分区表。每个分区使用的字节为16个,所以这确定了MBR分区方式最多只有4个主分区(包含扩展分区在内)。

    MBR结束标志:占用最后2个字节,一直为"55AA".

    分区规则

    1.一块磁盘上主分区和扩展分区的个数总和不能超过4个

    2.一块磁盘上最多只能有1个扩展分区

    3.扩展分区中可以创建逻辑分区,个数限制视磁盘类型而定

    查看fdisk的帮助信息

    Command (m for help): m                      
    
    Command action
    
     
    
       d   delete a partition            删除一个分区
    
       m   print this menu               显示帮助菜单
    
       n   add a new partition           创建一个分区
    
       p   print the partition table     显示分区表
    
       q   quit without saving changes   退出不保存
    
       w   write table to disk and exit  保存并退出
    添加一块100M的硬盘并把它永久挂载到/mnt上,写出详细的操作步骤
    答:
    #1)分区
    [root@oldboyedu01-nb ~]# fdisk /dev/sdb
    Command (m for help): p
    Disk /dev/sdb: 106 MB, 106954752 bytes
    64 heads, 32 sectors/track, 102 cylinders
    Units = cylinders of 2048 * 512 = 1048576 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
     Device Boot      Start         End      Blocks   Id  System
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-102, default 1): 
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-102, default 102): 
    Using default value 102
    
    Command (m for help): p
    
    Disk /dev/sdb: 106 MB, 106954752 bytes
    64 heads, 32 sectors/track, 102 cylinders
    Units = cylinders of 2048 * 512 = 1048576 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         102      104432   83  Linux
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    #2)通知系统/dev/sdb硬盘的磁盘分区表变化了
    partprobe /dev/sdb
    #3格式化创建文件系统
    [root@oldboyedu01-nb ~]# #make filesystem
    [root@oldboyedu01-nb ~]# mkfs.ext4 /dev/sdb1 
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    25896 inodes, 103424 blocks
    5171 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=67371008
    13 block groups
    8192 blocks per group, 8192 fragments per group
    1992 inodes per group
    Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729
    
    Writing inode tables: done                            
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 36 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    
    #4.关闭磁盘分区的自动检查
    [root@oldboyedu01-nb ~]# tune2fs -c 0 -i 0 /dev/sdb1
    tune2fs 1.41.12 (17-May-2010)
    Setting maximal mount count to -1
    Setting interval between checks to 0 seconds
    
    #-c 0 count   关闭每挂载多少次进行磁盘检查的功能
    #-i 0 interval 关闭每个180天进行磁盘检查功能
    
    #5.进行磁盘分区挂载
    [root@oldboyedu01-nb ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3       8.8G  8.8G     0 100% /
    tmpfs           1.9G     0  1.9G   0% /dev/shm
    /dev/sda1       190M   40M  141M  22% /boot
    [root@oldboyedu01-nb ~]# 
    [root@oldboyedu01-nb ~]# mount /dev/sdb1 /mnt/ 
    
    [root@oldboyedu01-nb ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3       8.8G  8.8G     0 100% /
    tmpfs           1.9G     0  1.9G   0% /dev/shm
    /dev/sda1       190M   40M  141M  22% /boot
    /dev/sdb1        94M  1.6M   88M   2% /mnt
    
    #6.进行永久挂载(如何在开机的时候自动挂载)
    ###方法 1./etc/rc.local 
    /bin/mount /dev/sdb1 /mnt/ 
    ###方法 2./etc/fstab 
    UUID=6b8ba13d-2833-49be-8206-deb002d2d523 /          ext4    defaults        1 1
    UUID=e01d5cbd-b233-44b9-832d-15225cc4d8ff /boot      ext4    defaults        1 2
    UUID=7c5f5672-9c30-444c-a273-1350c6a06130 swap       swap    defaults        0 0
    #/dev/sdb1               /mnt                    ext4    defaults        0 0
    
    [root@oldboyedu01-nb ~]# umount /mnt 
    [root@oldboyedu01-nb ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3       8.8G  8.8G     0 100% /
    tmpfs           1.9G     0  1.9G   0% /dev/shm
    /dev/sda1       190M   40M  141M  22% /boot

    GPT分区表介绍

    GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,它的推出是和UEFI BIOS相辅相成的,

    鉴于MBR的磁盘容量和分区数量已经不能满足硬件发展的需求,GPT首要的任务就是突破了2.2T分区的限制,最大支持18EB的分区。

    而在分区数量上,GPT会为每一个分区分配一个全局唯一的标识符,理论上GPT支持无限个磁盘分区,不过在Windows系统上由于系统的限制,最多只能支持128个磁盘分区,基本可以满足所有用户的存储需求。在每一个分区上,这个标识符是一个随机生成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。

    而在安全性方面,GPT分区表也进行了全方位改进。在早期的MBR磁盘上,分区和启动信息是保存在一起的。如果这部分数据被覆盖或破坏,事情就麻烦了。相对的,GPT在整个磁盘上保存多个这部分信息的副本,因此它更为健壮,并可以恢复被破坏的这部分信息。GPT还为这些信息保存了循环冗余校验码(CRC)以保证其完整和正确——如果数据被破坏,GPT会发觉这些破坏,并从磁盘上的其他地方进行恢复。

    小结:所以对于新平台用户(Intel 6系以后/AMD 900系列以后和A系列)来说,都强烈推荐使用GPT分区表格式,目前包括Windows Vista、7、8、8.1、10已经都支持读取和使用GPT分区表。而对于使用Windows 8、8.1、10的用户,换用GPT后开机启动速度也可以进一步得到显著提升。

    parted

    p[rint] 显示磁盘分区表信息
    mklabel 创建磁盘分区表
    gpt
    msdos(mbr)
    mkpart 创建分区
    rm 删除分区
    q 退出不保存

    创建分区表

    root@znix ~]# parted /dev/sdc
    
    GNU Parted 2.1
    
    Using /dev/sdc
    
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    
    (parted) mklabel gpt   #创建GPT分区表                                                  
    
    (parted) p                                                                
    
    Model: VMware, VMware Virtual S (scsi)
    
    Disk /dev/sdc: 107MB
    
    Sector size (logical/physical): 512B/512B
    
    Partition Table: gpt
    
     
    
    Number  Start  End  Size  File system  Name  Flags

    mkpart 可以使用的PART-TYPE类型

    (parted) help mkpart                                                     
    
      mkpart PART-TYPE [FS-TYPE] START END     make a partition
    
        PART-TYPE is one of: primary, logical, extended
    
                            主分区 ,逻辑分区 ,扩展分区

    对磁盘进行分区

    (parted) mkpart primary 0 10
    
    Warning: The resulting partition is not properly aligned for best performance.
    
            提示分区没有对齐,这个错误无视即可。
    
    Ignore/Cancel? I       忽略/取消                                                  
    
    (parted) p                                                               
    
    Model: VMware, VMware Virtual S (scsi)
    
    Disk /dev/sdc: 107MB
    
    Sector size (logical/physical): 512B/512B
    
    Partition Table: gpt
    
     
    
    Number  Start   End     Size    File system  Name     Flags
    
     1      17.4kB  10.0MB  9983kB               primary

    再创建一个分区

    (parted) mkpart primary 10 20
    
    (parted) p                                                               
    
    Model: VMware, VMware Virtual S (scsi)
    
    Disk /dev/sdc: 107MB
    
    Sector size (logical/physical): 512B/512B
    
    Partition Table: gpt
    
     
    
    Number  Start   End     Size    File system  Name     Flags
    
     1      17.4kB  10.0MB  9983kB               primary
    
     2      10.5MB  19.9MB  9437kB               primary

    注意:parted 创建分区实时生效,比较危险。

    使用parted命令非交互式创建分区

    [root@znix ~]# parted /dev/sdc mkpart primary 50 100
    
    Information: You may need to update /etc/fstab.                          
    
     
    
    [root@znix ~]# parted /dev/sdc print #显示磁盘的格式
    
    Model: VMware, VMware Virtual S (scsi)
    
    Disk /dev/sdc: 107MB
    
    Sector size (logical/physical): 512B/512B
    
    Partition Table: gpt
    
     
    
    Number  Start   End     Size    File system  Name     Flags
    
     1      17.4kB  50.0MB  50.0MB               primary
    
     2      50.3MB  99.6MB  49.3MB               primary
  • 相关阅读:
    用小百合学python
    驱动对象 设备对象 设备栈 乱杂谈
    [转]很经典的http协议详解
    利用VMWare和WinDbg调试驱动程序
    GCC基础
    史上最著名的10个思想实验 (转)
    windows XP下驱动开发环境设置(DDK+VC6.0)
    守护进程
    驱动SYS开发总结
    ASP.NET学习笔记1
  • 原文地址:https://www.cnblogs.com/mustark/p/10407866.html
Copyright © 2011-2022 走看看