分區工具fdisk,gdisk,parted

linux中,當我們給系統添加一塊新硬盤時,我們是無法使用的,因爲他還沒有分區和格式化,只有當我們將新硬盤分區並格式化之後,掛載在某個目錄下,才能供我們正常使用,接下來我們要學習三種硬盤分區工具,fdiskgdiskparted,分別是針對於MBR分區格式GPT分區格式,高級分區工具(可以針對於上面兩種進行分區,使用起來也是比較複雜的),關於MBRGPT請參考硬盤結構基礎

fdiskMBR

fdisk

-l /dev/sdX 查看硬盤分區信息

     -c centos6) 打開或禁用dos模式

     -u  (centos6) 切換顯示的單位(扇區/柱面)

     -c (centos7) -c=dos -c=nondos

     -u  (centos7)  -u=cylinders  -u=sectors

 

fdisk /dev/sdX  進行分區

     m 幫助

     n 建立分區

     d 刪除分區

     p 顯示分區信息

     t 轉換分區類型

     a 將指定分區設置/取消 活動分區

     L 查看分區類型

     o 重建分區表

     v 驗證分區表,顯示剩餘沒有被分區劃分的扇區數量

     g 創建GPT格式的分區(centos7)

     q 退出不保存,不保存,所有的修改都不生效

     w 退出並保存

[root@CT6 ~]# fdisk -l /dev/sdb                         

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

Disk /dev/sdb: 536.9 GB, 536870912000 bytes  -------------------------硬盤大小
255 heads, 63 sectors/track, 65270 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  -----------------------------------------未分區磁盤
[root@CT6 ~]# fdisk /dev/sdb   --------------------------磁盤分區

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

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x52ce01ab.
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
   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): 
Command (m for help): n   ------------------------------添加一個分區
Command action
   e   extended
   p   primary partition (1-4)
p      ---------------------------------------------添加主分區
Partition number (1-4): 1  ----------------------------磁盤編號1,即:sdb1
First cylinder (1-65270, default 1): -------------------開始位置,不填寫,默認就行
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-65270, default 65270): +20G -----------填寫大小

Command (m for help): p  --------------------------------查看剛剛的分區

Disk /dev/sdb: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 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: 0x52ce01ab

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2612    20980858+  83  Linux  -----------------創建了一個分區
Command (m for help): l  ------------------查看可用的分區類型

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1

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

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

 

gdisk(GPT)

gdisk

      -l /dev/sdX 查看分區信息

gdisk

      (?|m) 幫助

      n 建立分區

      d 刪除分區

      c 更改分區名字

    I 顯示分區的詳細信息

      p 顯示分區信息

      t轉換分區類型

      a 將指定分區設置/取消 活動分區

      l 查看分區類型

      o 重建分區表

      v 驗證分區表,顯示剩餘沒有被分區劃分的扇區數量

      q 退出不保存,不保存,所有的修改都不生效

      w 退出並保存

gdisk時用來創建GPT分區的,我們可以看到,gdisk和fdisk的開頭是有些不同的。

[root@CT6 ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with corrupt MBR; using GPT and will write new
protective MBR on save.

Command (? for help): 

一個GPT分區

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

Command (? for help): p
Disk /dev/sdb: 1048576000 sectors, 500.0 GiB ----------------磁盤大小,顯示扇區數
Logical sector size: 512 bytes  ---------------------------扇區大小
Disk identifier (GUID): E072194E-C4DA-449B-9CF9-E5171235E6D3 
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1048575966 -------------------第一個有用的扇區在34,最後一個有用的扇區在104857966
Partitions will be aligned on 2048-sector boundaries
Total free space is 1048575933 sectors (500.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help):

更改磁盤的類型

Command (? for help): t  ------------------------------------------更改磁盤類型
Using 1
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'  -------------------------更改爲"Linux LVM"

Command (? for help): p
Disk /dev/sdb: 1048576000 sectors, 500.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): E072194E-C4DA-449B-9CF9-E5171235E6D3
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1048575966
Partitions will be aligned on 2048-sector boundaries
Total free space is 838860733 sectors (400.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       209717247   100.0 GiB   8E00  Linux LVM ------------------------ 改過了

Command (? for help): 

當我們查看磁盤的時候,我們首先要看磁盤是那種分區格式的,如果是MBR分區格式,我們最好使用fdisk –l,要是爲GPT分區格式的硬盤,我們就使用gdisk –l來查看。因爲fdisk查看GPT格式的磁盤最大能看到2T,再多的磁盤分區就無法查看,還會出錯。

 

parted(高級分區工具)

parted命令是由GNU組織開發的一款功能強大的磁盤分區和分區大小調整工具,與fdisk不同,它支持調整分區的大小。作爲一種設計用於Linux的工具,它沒有構建成處理與fdisk關聯的多種分區類型,但是,它可以處理最常見的分區格式,包括:ext2ext3fat16fat32NTFSReiserFSJFSXFSUFSHFS以及Linux交換分區。

 

parted

      -h 顯示幫助信息

      -l 顯示磁盤信息

      -s 腳本模式,不提示用戶

      -v 顯示版本號

[root@CT6 ~]# parted -h 
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run in
interactive mode.

OPTIONs:
  -h, --help                      displays this help message
  -l, --list                      lists partition layout on all block devices
  -m, --machine                   displays machine parseable output
  -s, --script                    never prompts for user intervention
  -v, --version                   displays the version
  -a, --align=[none|cyl|min|opt]  alignment for new partitions

COMMANDs:
  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
  ... ...
[root@CT6 ~]# parted -l 
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1075MB  1074MB  primary   ext4            boot
 2      1075MB  54.8GB  53.7GB  primary   ext4
 3      54.8GB  108GB   53.7GB  primary   ext4
 4      108GB   215GB   106GB   extended
 5      108GB   113GB   4295MB  logical   linux-swap(v1)
 6      113GB   134GB   21.5GB  logical

 

parted /dev/sdX 分區

      mklabel label_type 設置分區格式(MBRGPT

      mkpart part-type [fs-type] start end(單位Mb)設置分區

      print 查看分區信息

      help [command] 查看命令[command]如何使用

      rm num 刪除一個分區

      set num flag status 設置flagbootrootswap)狀態(onoff

      quit 退出

 

開始分區

[root@CT6 ~]# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) 

查看幫助

(parted) help                                                             
  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)          
(parted) help mklabel                                                     
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)

        LABEL-TYPE is one of: aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop --------------可以設置的類型
(parted)                                                                  
(parted) mklabel gpt  ------------------------------設置GPT分區
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

(parted) 
(parted) help mkpart           ----------------------------------查看分區命令如何用                                           
  mkpart PART-TYPE [FS-TYPE] START END     make a partition

        PART-TYPE is one of: primary, logical, extended
        FS-TYPE is one of: ext4, ext3, ext2, fat32, fat16, hfsx, hfs+, hfs, jfs, swsusp,
        linux-swap(v1), linux-swap(v0), ntfs, reiserfs, hp-ufs, sun-ufs, xfs, apfs2, apfs1,
        asfs, amufs5, amufs4, amufs3, amufs2, amufs1, amufs0, amufs, affs7, affs6, affs5,
        affs4, affs3, affs2, affs1, affs0, linux-swap, linux-swap(new), linux-swap(old)
        START and END are disk locations, such as 4GB or 10%.  Negative values count from
        the end of the disk.  For example, -1s specifies exactly the last sector.
        
        'mkpart' makes a partition without creating a new file system on the partition.
        FS-TYPE may be specified to set an appropriate partition ID.
(parted) mkpart primary 0 200G   -------------------------------------------------設置分區
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ignore                                                     
(parted) print                   -----------------------------------------------------查看分區                                         
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End    Size   File system  Name     Flags
 1      17.4kB  200GB  200GB               primary    -------------------------------分區大小

(parted) quit                                                             
Information: You may need to update /etc/fstab. 

這個命令是一個實時生效的命令,當我們分完一個區後,不用結束就可以直接生效,不像fdiskgdisk那樣需要退出後才保存生效。

 

 

lsblk

列出塊設備

lsblk命令用於列出所有可用塊設備的信息,而且還能顯示他們之間的依賴關係,但是它不會列出RAM盤的信息。塊設備有硬盤,閃存盤,cd-ROM等等

如:

     lsblk /dev/sdb

[root@CT6 ~]# lsblk /dev/sda
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0   50G  0 part /app
├─sda4   8:4    0    1K  0 part 
├─sda5   8:5    0    4G  0 part [SWAP]
└─sda6   8:6    0   20G  0 part 

 

查看內核是否已經識別新的分區:

cat/proc/partations

[root@CT6 ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0  209715200 sda
   8        1    1048576 sda1
   8        2   52428800 sda2
   8        3   52428800 sda3
   8        4          1 sda4
   8        5    4194304 sda5
   8        6   20980890 sda6
   8       16  524288000 sdb
   8       17  195312483 sdb1

 

 

我們在原硬盤未使用的空間進行分區後,在物理設備上已經完成了,使用fdisk -l可以查看到,但是內存信息中並沒有新的分區信息,此時我們需要手動更新分區表,在centOS6中使用partx,在5 或者7中可以使用partprobe(這個在6中有BUG

 

partx -a /dev/sda 更新內存中的磁盤分區表信息

partx -d --nr 6 /dev/sda 刪除掉在內存中的已經刪除的第六塊分區的信息

 

剛開始我們就五個分區,無論是內存中的信息,還是物理硬盤

[root@CT6 ~]# lsblk /dev/sda          
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0   50G  0 part /app
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    4G  0 part [SWAP]
[root@CT6 ~]# fdisk -l /dev/sda | grep "^/dev/sda*"
/dev/sda1   *           1         131     1048576   83  Linux
/dev/sda2             131        6658    52428800   83  Linux
/dev/sda3            6658       13185    52428800   83  Linux
/dev/sda4           13185       26109   103808000    5  Extended
/dev/sda5           13186       13708     4194304   82  Linux swap / Solaris

接下來,我們創建一個分區

Command (m for help): n
First cylinder (13185-26109, default 13185): 14000
Last cylinder, +cylinders or +size{K,M,G} (14000-26109, default 26109): +10G

Command (m for help): p

Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 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: 0x0007a903

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         131     1048576   83  Linux
/dev/sda2             131        6658    52428800   83  Linux
/dev/sda3            6658       13185    52428800   83  Linux
/dev/sda4           13185       26109   103808000    5  Extended
/dev/sda5           13186       13708     4194304   82  Linux swap / Solaris
/dev/sda6           14000       15305    10490444+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

我們在分完區以後,如上,顯示的紅色字體,我們剛剛分好的區並沒有被讀入內存當中,也就是說我們fdisk可以讀到,但是lsblk卻無法讀到

[root@CT6 ~]# fdisk -l /dev/sda | grep "^/dev/sda.*"
/dev/sda1   *           1         131     1048576   83  Linux
/dev/sda2             131        6658    52428800   83  Linux
/dev/sda3            6658       13185    52428800   83  Linux
/dev/sda4           13185       26109   103808000    5  Extended
/dev/sda5           13186       13708     4194304   82  Linux swap / Solaris
/dev/sda6           14000       15305    10490444+  83  Linux
[root@CT6 ~]# lsblk /dev/sda
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0   50G  0 part /app
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    4G  0 part [SWAP]

接下來我們更新一下分區信息

[root@CT6 ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5
[root@CT6 ~]# lsblk /dev/sda   
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0   50G  0 part /app
├─sda4   8:4    0    1K  0 part 
├─sda5   8:5    0    4G  0 part [SWAP]
└─sda6   8:6    0   10G  0 part

 

 

發佈了52 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章