一:先理解清楚几个基础概念

硬盘初始化

  硬盘刚买回来的时候是没有进行过初始化的,现在初始化的时候可以选择 MBR硬盘分区格式或者GPT 硬盘分区格式

注意:硬盘分区格式和分区文件格式

1、什么是分区?
    分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个独立的磁盘使用。

分区表是一个硬盘分区的索引,分区的信息都会写进分区表。
2、为什么要有多个分区?

  • 防止数据丢失:如果系统只有一个分区,那么这个分区损坏,用户将会丢失所的有数据。

  • 增加磁盘空间使用效率:可以用不同的区块大小来格式化分区,如果有很多1K的文件,而硬盘分区区块大小为4K,那么每存储一个文件将会浪费3K空间。这时我们需要取这些文件大小的平均值进行区块大小的划分。

  • 数据激增到极限不会引起系统挂起:将用户数据和系统数据分开,可以避免用户数据填满整个硬盘,引起的系挂起。


 MBR:全称为Master Boot Record,即硬盘的主引导记录

广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言;

  在硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。

它由三个部分组成,主引导程序硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA

  主引导扇区MBR是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它,但可以通过命令来修改和重写,例如 fdisk/mbr;

 扇区中的主引导程序用来引导操作系统告诉主机硬件从那里加载操作系统引导文件

 扇区中的分区表DPT部分只有64字节,由于每个分区信息需要16个字节,所以对于采用MBR型分区结构的硬盘(其磁盘卷标类型为MS-DOS),最多只能识别4个主要分区。所以对于一个采用此种分区结构的硬盘来说,想要得到4个以上的主要分区是不可能的。这里就需要引出扩展分区了。扩展分区也是主分区(Primary partition)的一种,但它与主分区的不同在于理论上可以划分为无数个逻辑分区,每一个逻辑分区都有一个和MBR结构类似的扩展引导记录(EBR)
在MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有一个并且不能保存数据也不能格式化,只能再细划分为逻辑分区才可以使用
在Linux系统中,硬盘分区命名为sda1-sda4或者hda1-hda4(其中a表示硬盘编号可能是a、b、c等等)。在MBR硬盘中,分区号1-4是主分区(或者扩展分区),逻辑分区号只能从5开始。

传统的硬盘采用MBR分区格式,使用LBA寻址,这种寻址机制是32位的,因此最大能够支持2^32232次方)个扇区,而每个扇区的数据量是512字节,于是2^32 x 512,就得出了最大支持容量,这个数值按硬盘厂商的计算方式(1000进位制)来说,大约就是2.199TB.3TB硬盘明显已经超越了这个数值,于是多出来的那部分容量就会无法寻址,于是也就无法使用。所以在MBR分区表中,一个分区最大的容量为2T,且每个分区的起始柱面必须在这个disk的前2T内。你有一个3T的硬盘,根据要求你至少要把它划分为2个分区,且最后一个分区的起始扇区要位于硬盘的前2T空间内。如果硬盘太大则必须改用GPT

MBR GPT FDISK PARTED 详解_mbr gpt bios uefi mfMBR GPT FDISK PARTED 详解_mbr gpt bios uefi mf_02

GPT:全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。它是EFI(可扩展固件接口标准)的一部分,用来替代BIOS中的主引导记录分区表。但因为MBR分区表不支持容量大于2.2TB(2.2 × 1012字节)的分区,所以也有一些BIOS系统为了支持大容量硬盘而用GPT分区表取代MBR分区表
在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。

可以看到,在GTP磁盘的第一个数据块中同样有一个与MBR(主引导记录)类似的标记,叫做PMBR。PMBR的作用是,当使用不支持GPT的分区工具时,整个硬盘将显示为一个受保护的分区,以防止分区表及硬盘数据遭到破坏。UEFI并不从PMBR中获取GPT磁盘的分区信息,它有自己的分区表,即GPT分区表。

GPT的分区信息是在分区中,而不象MBR一样在主引导扇区,为保护GPT不受MBR类磁盘管理软件的危害,GPT在主引导扇区建立了一个保护分区(Protective MBR)的MBR分区表(此分区并不必要),这种分区的类型标识为0xEE,这个保护分区的大小在Windows下为128MB,Mac OS X下为200MB,在Window磁盘管理器里名为GPT保护分区,可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。

另外,为了保护分区表,GPT的分区信息在每个分区的头部和尾部各保存了一份,以便分区表丢失以后进行恢复。

对于基于x86/64的Windows想要从GPT磁盘启动,主板的芯片组必须支持UEFI(这是强制性的,但是如果仅把GPT用作数据盘则无此限制),例如Win8/Win8.1原生支持从UEFI引导的GPT分区表上启动,大多数预装Win8系统的电脑也逐渐采用了GPT分区表。至于如何判断主板芯片组是否支持UEFI,一般可以查阅主板说明书或者厂商的网址,也可以通过查看BIOS设置里面是否有UEFI字样。

GPT的分区方案之所以比MBR更先进,是因为在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。在Windows中,微软设定GPT磁盘最大分区数量为128个。另外,GPT分区方案中逻辑块地址(LBA)采用64位二进制数表示,可以计算一下2^64是一个多么庞大的数据,以我们的需求来讲完全有理由认为这个大小约等于无限。除此之外,GPT分区方案在硬盘的末端还有一个备份分区表,保证了分区信息不容易丢失。

BIOS:"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制

EFI:可扩展固件接口(英文名Extensible Firmware Interface 或EFI)是一种个人电脑系统规格,用来定义操作系统与系统韧体之间的软件界面,为替代BIOS的升级方案。可扩展固件接口负责加电自检(POST)、连系操作系统以及提供连接操作系统与硬件的接口。
EFI最初由英特尔开发,现时由UEFI论坛来推广与发展。
UEFI:是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织,贡献者有Intel,Microsoft,AMI,等几个大厂,属于open source,目前版本为2.1。

小结:超过2T的分区用MBR硬盘分区格式就会识别不全,只有使用GPT的方式才可以,但是GPT如果用原来的BIOS是无法引导装系统,需要主板支持EFI。现在的主板大多都支持UEFI并且兼容传统BIOS方式(legacy boot)启动,可以通过BIOS选项来设置。所以用么用“BIOS (legacy boot)+MBR或者UEFI+GPT不能混搭使用会报错。

注意:CentOS6.4版本后都同时支持BIOS和UEFI两种方式启动

分区文件格式: FAT32 NTFS EXT4 XFS

二 使用fdisk、parted(大容量硬盘)进行分区

如果使用fdisk对大于2T的磁盘分区,虽然可以分区,但仅识别2T的分区,所以分区大小超过2T的话,就使用Parted工具来实现对GPT磁盘进行分区操作。

fdisk (分区大小2T以下)

 1、列出当前磁盘情况

[root@localhost ~]# fdisk -l                 #列出所有磁盘设备信息

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007101d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1530    12288000   83  Linux
/dev/sda2   *        1530        2550     8192000   83  Linux
/dev/sda3            2550        3315     6144000   83  Linux
/dev/sda4            3315        5222    15318016    5  Extended
/dev/sda5            3315        3576     2097152   82  Linux swap / Solaris
/dev/sda6            3577        5222    13218816   83  Linux

Disk /dev/sdb: 1099.5 GB, 1099511627776 bytes
255 heads, 63 sectors/track, 133674 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdc: 3221.2 GB, 3221225472000 bytes
255 heads, 63 sectors/track, 391625 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

2、使用fdisk进行分区

[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x70b95207.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): m
Command action
   a   toggle a bootable flag   
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition                         #删除分区
   l   list known partition types                 #列出已知的文件系统类型
   m   print this menu                            #帮助菜单
   n   add a new partition                        #新建分区
   o   create a new empty DOS partition table     #
   p   print the partition table                  #显示分区列表
   q   quit without saving changes                #不保存退出
   s   create a new empty Sun disklabel           
   t   change a partition's system id             #改变一个分区的系统ID
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit               #保存退出
   x   extra functionality (experts only)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-133674, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-133674, default 133674): 
Using default value 133674

Command (m for help): p                              #

Disk /dev/sdb: 1099.5 GB, 1099511627776 bytes
255 heads, 63 sectors/track, 133674 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x70b95207

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      133674  1073736373+  83  Linux

Command (m for help): w                              # 保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

3、使用工具partprobe让kernel读取分区信息 

[root@localhost ~]# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.

4、格式化

[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
67108864 inodes, 268434093 blocks
13421704 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
8192 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

5 挂载

[root@localhost ~]# mkdir /test
[root@localhost ~]# mount /dev/sdb1 /test
[root@localhost ~]# df -hT 
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda2      ext4   7.7G  362M  7.0G   5% /
tmpfs          tmpfs  491M     0  491M   0% /dev/shm
/dev/sda1      ext4    12G  158M   11G   2% /home
/dev/sda6      ext4    13G  600M   12G   5% /usr
/dev/sda3      ext4   5.8G  524M  5.0G  10% /var
/dev/sdb1      ext4  1008G  200M  957G   1% /test

6 添加开机自动挂载

[root@localhost ~]# cat fstab
cat: fstab: No such file or directory

[root@localhost ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Jun  8 18:39:48 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=3ca94f19-885f-4ceb-a358-e517936c29f5 /                       ext4    defaults        1 1
UUID=dbfbfa8d-65ca-48eb-9bb1-59fa3e929de6 /home                   ext4    defaults        1 2
UUID=5098319e-c317-441a-8997-dc2f8cf84dfb /usr                    ext4    defaults        1 2
UUID=a6e82449-fe6d-44cd-995f-7b6e27849b64 /var                    ext4    defaults        1 2
UUID=6e9b5627-b72d-4dcf-9d4b-5d42fc0f6bd4 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@localhost ~]# ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx. 1 root root 10 Jun 19 08:41 3ca94f19-885f-4ceb-a358-e517936c29f5 -> ../../sda2
lrwxrwxrwx. 1 root root 10 Jun 19 08:41 5098319e-c317-441a-8997-dc2f8cf84dfb -> ../../sda6
lrwxrwxrwx. 1 root root 10 Jun 19 09:20 527dc3ad-2438-4988-a346-362d6d5f9baa -> ../../sdb1
lrwxrwxrwx. 1 root root 10 Jun 19 08:41 6e9b5627-b72d-4dcf-9d4b-5d42fc0f6bd4 -> ../../sda5
lrwxrwxrwx. 1 root root 10 Jun 19 08:41 a6e82449-fe6d-44cd-995f-7b6e27849b64 -> ../../sda3
lrwxrwxrwx. 1 root root 10 Jun 19 08:41 dbfbfa8d-65ca-48eb-9bb1-59fa3e929de6 -> ../../sda1

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="527dc3ad-2438-4988-a346-362d6d5f9baa" TYPE="ext4"

[root@localhost ~]# echo 'UUID=527dc3ad-2438-4988-a346-362d6d5f9baa  /test  ext4  defaults  1 2' >> /etc/fstab 
[root@localhost ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Jun  8 18:39:48 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=3ca94f19-885f-4ceb-a358-e517936c29f5 /                       ext4    defaults        1 1
UUID=dbfbfa8d-65ca-48eb-9bb1-59fa3e929de6 /home                   ext4    defaults        1 2
UUID=5098319e-c317-441a-8997-dc2f8cf84dfb /usr                    ext4    defaults        1 2
UUID=a6e82449-fe6d-44cd-995f-7b6e27849b64 /var                    ext4    defaults        1 2
UUID=6e9b5627-b72d-4dcf-9d4b-5d42fc0f6bd4 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
UUID=527dc3ad-2438-4988-a346-362d6d5f9baa  /test  ext4  defaults  1 2
[root@localhost ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /home type ext4 (rw)
/dev/sda6 on /usr type ext4 (rw)
/dev/sda3 on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /test type ext4 (rw)

[root@localhost ~]# ls /test  
lost+found

parted

1、列出当前磁盘情况

[root@localhost ~]# fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007101d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1530    12288000   83  Linux
/dev/sda2   *        1530        2550     8192000   83  Linux
/dev/sda3            2550        3315     6144000   83  Linux
/dev/sda4            3315        5222    15318016    5  Extended
/dev/sda5            3315        3576     2097152   82  Linux swap / Solaris
/dev/sda6            3577        5222    13218816   83  Linux

Disk /dev/sdb: 1099.5 GB, 1099511627776 bytes
255 heads, 63 sectors/track, 133674 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x70b95207

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      133674  1073736373+  83  Linux

WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdc: 3221.2 GB, 3221225472000 bytes
255 heads, 63 sectors/track, 391625 cylinders
Units = cylinders of 16065 * 512 = 8225280 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

2、使用parted进行分区

[root@localhost ~]# parted /dev/sdc
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) h                                                                
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partition NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or
        a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resize NUMBER START END                  resize partition NUMBER and its file system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
(parted) p                                                                
Warning: /dev/sdc contains GPT signatures, indicating that it has a GPT table.  However, it does not have a valid fake msdos
partition table, as it should.  Perhaps it was corrupted -- possibly by a program that doesn't understand GPT partition tables.
Or perhaps you deleted the GPT table, and are now using an msdos partition table.  Is this a GPT partition table?
Yes/No? y                                                                 
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags
(parted) mklabel gpt                                                      
Warning: Partition(s) on /dev/sdc are being used.                         
Ignore/Cancel? i^C                                                        
(parted) ^C                                                               
(parted) mklabel                                                          
New disk label type? ^C                                                   
Error: Expecting a disk label type.                                       
(parted) mklabel gpt
Warning: Partition(s) on /dev/sdc are being used.                         
Ignore/Cancel? ignore                                                     
Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? y                                                                 
Warning: /dev/sdc contains GPT signatures, indicating that it has a GPT table.  However, it does not have a valid fake msdos
partition table, as it should.  Perhaps it was corrupted -- possibly by a program that doesn't understand GPT partition tables.
Or perhaps you deleted the GPT table, and are now using an msdos partition table.  Is this a GPT partition table?
Yes/No? y                                                                 
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdc (Device or resource busy).  As a result, it may
not reflect all of your changes until after reboot.
(parted) mkpart                                                           
Partition name?  []?                                                      
File system type?  [ext2]? ext4                                           
Start? 0                                                                  
End? -1                                                                   
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ignore                                                     
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdc (Device or resource busy).  As a result, it may
not reflect all of your changes until after reboot.
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  3221GB  3221GB
(parted) q

MBR GPT FDISK PARTED 详解_mbr gpt bios uefi mf_03

3、使用工具partprobe让kernel读取分区信息 

[root@localhost ~]# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.

4、格式化

[root@localhost ~]# mkfs.ext4 /etc/sdc1
mke2fs 1.41.12 (17-May-2010)
Could not stat /etc/sdc1 --- No such file or directory

The device apparently does not exist; did you specify it correctly?
[root@localhost ~]# mkfs.ext4 /dev/sdc1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608000 inodes, 786431751 blocks
39321587 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
24000 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848, 512000000, 550731776, 644972544

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

5 挂载

[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sdc1 /data
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       7.7G  362M  7.0G   5% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1        12G  158M   11G   2% /home
/dev/sda6        13G  600M   12G   5% /usr
/dev/sda3       5.8G  522M  5.0G  10% /var
/dev/sdb1      1008G  200M  957G   1% /test
/dev/sdc1       2.9T  200M  2.8T   1% /data

6 添加开机自动挂载

[root@localhost ~]# blkid
/dev/sdb1: UUID="527dc3ad-2438-4988-a346-362d6d5f9baa" TYPE="ext4" 
/dev/sda1: UUID="dbfbfa8d-65ca-48eb-9bb1-59fa3e929de6" TYPE="ext4" 
/dev/sda2: UUID="3ca94f19-885f-4ceb-a358-e517936c29f5" TYPE="ext4" 
/dev/sda3: UUID="a6e82449-fe6d-44cd-995f-7b6e27849b64" TYPE="ext4" 
/dev/sda5: UUID="6e9b5627-b72d-4dcf-9d4b-5d42fc0f6bd4" TYPE="swap" 
/dev/sda6: UUID="5098319e-c317-441a-8997-dc2f8cf84dfb" TYPE="ext4" 
/dev/sdc1: UUID="948fa238-f8f6-419d-9159-953b7f8ff7a3" TYPE="ext4" 
[root@localhost ~]# echo -n /etc/fstab 
/etc/fstab[root@localhost ~]# cat  -n /etc/fstab 
     1
     2  #
     3  # /etc/fstab
     4  # Created by anaconda on Mon Jun  8 18:39:48 2015
     5  #
     6  # Accessible filesystems, by reference, are maintained under '/dev/disk'
     7  # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
     8  #
     9  UUID=3ca94f19-885f-4ceb-a358-e517936c29f5 /                       ext4    defaults        1 1
    10  UUID=dbfbfa8d-65ca-48eb-9bb1-59fa3e929de6 /home                   ext4    defaults        1 2
    11  UUID=5098319e-c317-441a-8997-dc2f8cf84dfb /usr                    ext4    defaults        1 2
    12  UUID=a6e82449-fe6d-44cd-995f-7b6e27849b64 /var                    ext4    defaults        1 2
    13  UUID=6e9b5627-b72d-4dcf-9d4b-5d42fc0f6bd4 swap                    swap    defaults        0 0
    14  tmpfs                   /dev/shm                tmpfs   defaults        0 0
    15  devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    16  sysfs                   /sys                    sysfs   defaults        0 0
    17  proc                    /proc                   proc    defaults        0 0
    18  UUID=527dc3ad-2438-4988-a346-362d6d5f9baa  /test  ext4  defaults  1 2
[root@localhost ~]# echo 'UUID="948fa238-f8f6-419d-9159-953b7f8ff7a3" /data ext4  defaults 1 2' >> /etc/fstab 
[root@localhost ~]# mount -a
[root@localhost ~]# ^C
[root@localhost ~]# ^C
[root@localhost ~]# ^C
[root@localhost ~]# fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007101d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1530    12288000   83  Linux
/dev/sda2   *        1530        2550     8192000   83  Linux
/dev/sda3            2550        3315     6144000   83  Linux
/dev/sda4            3315        5222    15318016    5  Extended
/dev/sda5            3315        3576     2097152   82  Linux swap / Solaris
/dev/sda6            3577        5222    13218816   83  Linux

Disk /dev/sdb: 1099.5 GB, 1099511627776 bytes
255 heads, 63 sectors/track, 133674 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x70b95207

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      133674  1073736373+  83  Linux

WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdc: 3221.2 GB, 3221225472000 bytes
255 heads, 63 sectors/track, 391625 cylinders
Units = cylinders of 16065 * 512 = 8225280 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/sdc1               1      267350  2147483647+  ee  GPT
[root@localhost ~]#

三 parted详解

  一、         parted的用途及说明

  • 概括使用说明:

parted用于对磁盘(或RAID磁盘)进行分区及管理,与fdisk分区工具相比,支持2TB以上的磁盘分区,并且允许调整分区的大小。

  • GNU手册说明:

parted是一个用于硬盘分区或调整分区大小的工具。使用它你可以创建、清除、调整、移动和复制ext2、ext3、linux-swap、FAT、FAT32和reiserfs分区;也能创建、调整和移动苹果系统的HFS分区;还能检测jfs、ntfs、ufs和xfs分区。该工具常用于为新安装的操作系统创建空间,重新分配硬盘使用情况,在将数据拷贝到新硬盘的时候也常常使用。

二、         parted的使用方法及步骤

1、对磁盘进行分区

(1)命令行方式

# parted /dev/sdb mklabel gpt mkpart 1 ext3 1 5T

MBR GPT FDISK PARTED 详解_mbr gpt bios uefi mf_04

MBR GPT FDISK PARTED 详解_mbr gpt bios uefi mf_05

MBR GPT FDISK PARTED 详解_mbr gpt bios uefi mf_06

  
   假设/dev/sdb大小为7T的存储设备 
   parted /dev/sdb 
   print 查看分区的情况,找到起始位置 
   例如: 
   Disk geometry for /dev/sdb 0.000-7766701.367 megabytes 
   Minor    Start       End     Filesystem  Name                  Flags 
   1          0.017 7766701.351 
   设置分区类型为gpt 
   mklabel gpt 
   进行分区 
   mkpart primary 0 7766701.367 
   primary指分区类型为主分区, 
   后面两个数字0和7766701.367分别对应print命令所得到的start,end位置 
   完成后用quit命令退出即可 
2 使用Parted

2.1 关于分区

很不幸,对磁盘分区是十分复杂的。因为各个操作系统对磁盘操作的差异,所以你需要考虑许多因素。因此你最好对这方面的知识有一个充分的了解。

2.2 使用 GNU Parted

GNU Parted有两种运行模式:命令行模式和交互模式。你必须用一下的这种方式来运行 GNU Parted

# parted device

device就是你想要编辑的硬盘设备名称。如果你是一个比较懒的人,省略了这个参数,不要紧, GNU Parted会尝试猜测一下你想要操作的设备。在命令行模式下,你需要将parted的命令一个接一个地输入到一行中。

 

而在交互模式下,每次只能输入一条parted命令。一旦你按回车键确认,命令就马上执行,对磁盘的更改就立刻生效。例如:

(parted) resize 1 52.0005Mb 104.5Mb

(parted) mkfs 2 fat16

在不被混淆的前提下,你可以对命令进行缩写。例如,你可以用p代替print。若软件被翻译成了你的本国语言,那么你甚至可以用本国语言来输入命令,而不单是英语。不过,这也许会造成混乱,所以还是建议使用英语输入命令。注意, GNU Parted对大小写不敏感。

 

对 于表示分区位置的数字可以使用整数和小数。而数字后面的字母就表示了你所使用的单位。关于 GNU Parted的单位的介绍请参考第2.4.17 节[Unit]。如果没有指明数字的单位,那么就会采用默认值。若数字为负数,那么就表示从磁盘的末尾开始计算。如“-1s”就表示硬盘最后一个扇区,就 是硬盘的最末尾处。对于你所给出的位置,parted会稍作计算使之合理。例如,当你使用GB作为单位时,分区位置的误差不会超过+-500M。当然,你 可以使用代表扇区的单位s来指定精确的位置。

 

对于一条命令,如果你没有给出一个参数,那么 GNU Parted会再次向你提问,例如:

(parted) resize 1

Start? 0Gb

End? 40Gb

 

当 你的某些操作具有一定的危险性时,Parted 会警告你,除非是那些本来就是很危险的操作(想rm,mklabel和mkfs)。例如当你想将一个分区过分地缩小,缩小后的空间不足以存放该分区现有的 数据,那么Parted 就会自动给出一个安全的分区缩小的方案,以免丢失数据。如果这个Parted 给出的缩小结果和你给出的相差太大,那么Parted 会询问你是否愿意继续。因为不同的分区系统都有复杂的限制,因此Parted 所实际的更改会和你给出的数字有一些微小的出入(例如,你要Parted 为你建立一个10.4MB的分区,但你得到的分区最终只有10.325MB)。如果误差太大,Parted 同样会让你确认一下是否继续。

 

2.3 命令行模式的选项

当你调用命令行模式时,Parted的语法是这样的:

# parted [option] device [command [argument]]

有几个选项可以供你使用。对于其他涉及分区细节的Parted命令,请参见下一节。选项以一个横杠开头,而Parted命令前则没有这个横杠。

 

选项:

‘-h’

‘--help’ 显示帮助信息

‘-i’

‘--interactive’

进入交互模式

‘-v’

‘--version’

显示软件的版本号

 

2.4 Parted 交互模式下的命令

GNU Parted 提供以下命令:

2.4.1 check(检查)

格式:check number 

检查编号中所指定的文件系统是否有什么错误.。

例:

(parted) check 1

检查分区1上的文件系统.

 

2.4.2 cp(复制)

格式:cp [from-device] from-number to-number 

将分区 from-number上的文件系统完整地复制到分区to-number 中。分区to-number 上的数据会被全部删除。你可以再指定一个来源硬盘的设备名称 from-device来指定来源分区所在的硬盘。

该命令支持以下文件系统:

* ext2, ext3 (所提供的目标分区必须比源分区要大)

* fat16, fat32

* linux-swap (相当于再目标分区执行mkswap 命令)

* reiserfs (如果安装了libreiserfs库)

例:

(parted) cp /dev/hdb 2 3

将/dev/hdb上的第二个分区的内容复制到第三个分区上。

 

2.4.3 help(帮助)

格式:help [command] 

输出一个命令的帮助信息

例:

(parted) help resize

输出rezize 命令的帮助信息。

 

2.4.4 mklabel(建立分区表)

格式:mklabel label-type 

建 立一个 label-type 类型的磁盘分区表。新的分区表不会有任何分区。这个命令通常不会破坏你的数据,但是它有可能让你的数据变得不可读。这是你就需要用到rescue 命令来恢复分区。关于rescue 命令的用法请参见后文。Parted 能在各种分区表上工作。

label-type 必须是一下这些类型:

* bsd

* loop (raw disk access)

* gpt

* mac

* msdos

* pc98

* sun

例:

(parted) mklabel msdos

建立一个MS-DOS格式的分区表。这对于PC而言是一个非常常见的操作。

 

2.4.5 mkfs(建立文件系统)

格式:mkfs number fs-type 

在指定的分区上建立指定的文件系统。这个命令会破坏该分区上的所有数据。

该命令支持以下文件系统:

* ext2

* fat16, fat32

* linux-swap

* reiserfs (如果安装了libreiserfs库)

例:

(parted) mkfs 2 fat32

在第二个分区上建立FAT32格式的文件系统。

 

2.4.6 mkpart(建立新分区)

格式:mkpart part-type [fs-type] start end 

建 立一个新的分区。若要建立非扩展分区,就最好用fs-type来指定文件系统。start和end是新分区开始和结束的具体位置。part-type是以 下类型之一: primary(主分区), extended(扩展分区), logical(逻辑分区). 扩展分区和逻辑分区只对msdos 和dvh分区表有效。

fs-type必须是以下文件系统:

* ext2

* fat16, fat32

* hfs, hfs+, hfsx

* linux-swap

* NTFS

* reiserfs

* ufs

例:

(parted) mkpart logical 0.0 692.1

建立一个包含ext2文件系统的逻辑分区,其位置是从磁盘的开始位置(0.0)到692.1M之间 。

 

2.4.7 mkpartfs(建立分区及其文件系统)

格式:mkpartfs part-type fs-type start end 

建 立一个新的分区,并在上面建立文件系统。与mkpart相似,分区的位置处于begin和end之间,默认的单位是MB.。请勿使用这个命令来恢复一个被 删除了的分区(应使用mkpart)。part-type是以下类型之一: primary(主分区), extended(扩展分区), logical(逻辑分区). 扩展分区和逻辑分区只对msdos 和dvh分区表有效。 fs-type必须是以下文件系统:

* ext2

* fat16, fat32

* linux-swap

* reiserfs (如果安装了libreiserfs库)

例:

(parted) mkpartfs logical ext2 440 670

建立一个a包含ex2格式文件系统的逻辑分区。其开始位置是440 MB,结束位置是670MB。

 

2.4.8 move(移动)

格式:move number start end 

该 命令能将选定的分区在硬盘中移动。start 可以指定一个新的分区的起始位置。不过,你不能将一个分区移到另一个分区上。也就是说,你只能在空闲的地方中移动分区。如果你想改变分区的大小,那么你所 需要的命令是resize 。另外,虽然分区被移动了,但它的分区编号是不会改变的。

该命令支持以下文件系统:

* ext2, ext3 (所提供的目标分区必须比源分区要大)

* fat16, fat32

* linux-swap

* reiserfs (如果安装了libreiserfs库)

例:

(parted) move 2 150M 500M

将编号为2的分区移动到硬盘中150M至500M的位置。

 

 

2.4.9 name (命名)

格式:name number name 

为编号所指定的分区命名(只支持GPT, Mac, MIPS 和PC98 格式的分区)。名字可以用引号括起来。

例:

(parted) name 2 ’Secret Documents’

将第2个分区命名为 ’Secret Documents’。

 

2.4.10 print (输出信息)

格式:print [number] 

输出parted正在操作的硬盘的分区表的信息,或者是某一个具体分区的信息。

例:

(parted) print

Disk geometry for /dev/hda: 0.000-2445.679 megabytes

Disk label type: msdos

Minor Start End Type Filesystem Flags

1 0.031 945.000 primary fat32 boot, lba

2 945.000 2358.562 primary ext2

3 2358.562 2445.187 primary linux-swap

(parted) print 1

Minor: 1

Flags: boot, lba

File System: fat32

Size: 945.000Mb (0%)

Minimum size: 84.361Mb (0%)

Maximum size: 2445.679Mb (100%)

 

2.4.11 quit (退出)

格式:quit 

退出Parted.

只有当Parted退出后,Linux内核才会知道磁盘的设置已经被改变了。但是实际上只要你一执行一条命令,更改马上就会写入磁盘。不过,磁盘缓存有可能延缓写入的操作。

 

2.4.12 rescue (恢复)

格式:rescue start end 

如果你不小心用Parted的rm命令删除了一个分区,那么这个命令可以帮你恢复。你需要给出所误删的分区的大概的开始和结束的位置。Parted 就会在你给出的磁盘区域内去寻找,如果找到这个分区,那么Parted 就会询问你是否重新建立这个分区。

例:

(parted) print

Disk geometry for /dev/hdc: 0.000-8063.507 megabytes

Disk label type: msdos

Minor Start End Type Filesystem Flags

1 0.031 8056.032 primary ext3

(parted) rm

Partition number? 1

(parted) print

Disk geometry for /dev/hdc: 0.000-8063.507 megabytes

Disk label type: msdos

Minor Start End Type Filesystem Flags

糟糕了!我们不小心删除了这个ext3分区。不怕,Parted可以将它起死回生。

(parted) rescue

Start? 0

End? 8056

Information: A ext3 primary partition was found at 0.031MB ->

8056.030MB. Do you want to add it to the partition table?

Yes/No/Cancel? y

(parted) print

Disk geometry for /dev/hdc: 0.000-8063.507 megabytes

Disk label type: msdos

Minor Start End Type Filesystem Flags

1 0.031 8056.032 primary ext3

呵呵。这就恢复了。

 

2.4.13 resize (调整大小)

格式:resize number start end 

将编号所指定的分区调整大小。分区的开始位置和结束位置由start和end决定。resize不会改变分区的编号。注意,如果更改扩展分区的大小,那么你必须保证新的分区大小能够容纳里面的逻辑分区。另外,在调整大小前你无须对分区进行碎片整理。

该命令支持以下文件系统:

* ext2, ext3 – 限制:新的分区开始位置必须和原来的开始位置相同。也就是说,你只能向后扩展分区的大小。

* fat16, fat32

* hfs, hfs+, hfsx – 限制:新的分区开始位置必须和原来的开始位置相同。而且新的end必须小于原来的end。也就是说,你只能够缩小分区。

* linux-swap

* reiserfs (如果安装了libreiserfs库)

例:

(parted) resize 3 200M 850M

改变编号为3的分区的大小。其新的位置是200MB至 850MB 之间。

 

2.4.14 rm (删除分区)

格式:rm number 

将 编号所指定的分区删除。如果你误删了某个分区,那么你还可以用mkpart来挽救它(而不是用mkpartds)。注意,如果你使用的是MSDOS格式的 分区表,那么假如你删除了一个逻辑分区,那么该分区后面的逻辑分区的编号都会相应地向前改变。例如,你删除了编号为6的逻辑分区,那么后面的7、8号逻辑 分区的编号将会改变,分别变成6、7号逻辑分区。若在Linux下。这意味着你可能要改变/etc/fstab文件。

例:

(parted) rm 3

将编号为3的分区删除。

 

2.4.15 select (选择设备)

格式:select device 

选择Parted将要编辑的磁盘设备。这个磁盘设备可以是一个Linux硬盘设备,一个软盘、一个软RAID磁盘阵或者是LVM逻辑卷。

例:

(parted) select /dev/hdb

选择/dev/hdb作为Parted所要编辑的设备。

 

2.4.16 set (设置标记)

格式:set number flag state 

更改编号所指定的分区的标记。哪些标记可用是由你的分区表决定的。标记有两种状态,要么是on(生效),要么是off(失效)。

‘boot’    (用于Mac, MS-DOS, PC98分区表) - 如果你想从某个分区引导,那么你应该将这个分区的boot标记设置为on。对于MS-DOS分区表,一个硬盘上只能有一个分区是可引导的。如果你将 LILO装到某个分区上,那么这个分区一定是可引导的(也就是说你应该将安装了LILO的分区的boot标记设为on)。对于PC98分区表,所有 ext3分区都必须是设置为可引导的。(Parted会对此强行操作)

 

‘lba’ (用于MS-DOS分区表)-这个标记可以告诉MS DOS、MS Windows 9x和 MS Windows ME等系统使用LBA(Logic Block Addressing)模式。

 

‘root’ (用于Mac分区表) - 如果某分区是Linux系统的根分区,那么就要对该分区启用这个标记。

 

‘swap’  (用于Mac分区表) - 如果某分区是Linux系统的交换分区,那么就要对该分区启用这个标记。

 

‘hidden’ (用于MS-DOS, PC98分区表) - 启用这个标记能使一个分区‘隐藏’起来。(仅对微软的操作系统有效)

 

‘raid’ (用于MS-DOS分区表)-启用这个标记能够告诉Linux系统这是一个软RAID磁盘阵。

 

‘LVM’(用于MS-DOS分区表)-启用这个标记能够告诉Linux系统这是一个LVM逻辑。

 

使用print命令能够将所有能用的标记显示出来。

例:

(parted) set 1 boot on

将编号为1的分区的boot标记设定为on(生效)

 

2.4.17 unit (设置单位)

格式:unit unit 

为Parted选择一个表示磁盘大小的单位。之后,凡是关于磁盘的位置(如分区的开始位置等等)的数字都是使用这个单位,你就可以不用给出单位后缀。(如:如果你选择了MB作为单位,那么512就代表512MB,你就不用额外打多个MB之类的东西)你可以使用下列单位:

 

‘s’ :扇区 (通常一个扇区的大小是512个字节)

‘B’ byte

‘kB’ kilobyte (1000 bytes)

‘MB’ megabyte (1000000 bytes)

‘GB’ gigabyte (1000000000 bytes)

‘TB’ terabyte (1000000000000 bytes)

‘%’ 表示占整个磁盘设备的百分之多少(显而易见,这个数字必须在0和100之间)

‘cyl’ 柱面(这个具体的位置和BIOS的CHS地址有关)

‘chs’ 柱面(cylinders),磁头(heads),扇区(sectors)的地址(这个具体的位置和BIOS的CHS地址有关)

‘compact’ 这是一个比较奇怪的单位。输入时是使用MB作为单位,输出时的单位有可能不同,但是它确保输出时的单位能使用户一眼就看得出来磁盘的大小的,而不用心里默 默地进行复杂的换算。(例如。它会使用1GB而不是使用1024MB,使用2MB而不是2048KB)

 

一般来说,Parted只会 使用默认的单位进行输出,除非输入的时候你没有给出数字的后缀。你可以在输入的数字后面加上一个单位来代替默认的单位(单位和数字之间是没有空格的)。不 过若你使用CHS地址作为单位时,你就不需要给定后缀。使用chs地址的格式是:“柱面:磁头:扇区”。对你所给出的数字地址,Parted可能进行一些 调整。例如,当你使用GB作为单位时,分区位置可能会有+-500M的误差。不过Parted总会尽量地使误差尽量地小。当然,你可以使用单位s(也就是 扇区)来指定一个精确的位置。若无法做到精确,Parted会让你给出一个最接近的解决方案。另外,若你给出的数字为负数,那么就表示从磁盘的末尾开始计 算。如“-1s”就表示硬盘最后一个扇区,就是硬盘的最末尾处。

例:

(parted) unit compact

(parted) print

Disk geometry for /dev/hda: 0kB - 123GB

Disk label type: msdos

Number Start End Size Type File system Flags

1           32kB 1078MB 1077MB primary reiserfs boot

2           1078MB 2155MB 1078MB primary linux-swap

3           2155MB 123GB 121GB extended

5           2155MB 7452MB 5297MB logical reiserfs

(parted) unit chs print

Disk geometry for /dev/hda: 0,0,0 - 14946,225,62

BIOS cylinder,head,sector geometry: 14946,255,63. Each cylinder

is 8225kB.

Disk label type: msdos

Number Start End Type File system Flags

1           0,1,0 130,254,62 primary reiserfs boot

2           131,0,0 261,254,62 primary linux-swap

3           262,0,0 14945,254,62 extended

5           262,2,0 905,254,62 logical reiserfs

(parted) unit mb print

Disk geometry for /dev/hda: 0MB - 122942MB

Disk label type: msdos

Number Start End Size Type File system Flags

1           0MB 1078MB 1077MB primary reiserfs boot

2           1078MB 2155MB 1078MB primary linux-swap

3           2155MB 122935MB 120780MB extended

5           2155MB 7452MB 5297MB logical reiserfs