Linux 磁盘管理

命令 df,命令 du 详解及内存单位转换

一, 内存单位转换

Byte 字节的意思

B 是一个电脑存储的基本单位 (字节);
1 个英文字符是 1 个字节, 也就是 1B;
1 个汉字为 2 个字符,也就是 2B;

1024B=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB

二, 命令 df

  1. 命令语法
    df [选项] [参数]

  2. 命令描述
    df 命令用于显示已挂载磁盘的总容量,使用容量,剩余容量等,可以不加任何参数,默认显示单位为 KB

  3. 命令选项
    -h:使用合适的单位显示
    -i:查看 inodes 使用情况
    -k:以 KB 为单位显示
    -m:以 MB 为单位显示

#####df 命令示例

  • 默认情况以 K 为单位显示
[root@localhost ~]# df
文件系统               1K-块    已用     可用 已用% 挂载点
/dev/mapper/cl-root 18655232 1164384 17490848    7% /
devtmpfs              493156       0   493156    0% /dev
tmpfs                 504196       0   504196    0% /dev/shm
tmpfs                 504196    6868   497328    2% /run
tmpfs                 504196       0   504196    0% /sys/fs/cgroup
/dev/sda1             201380  119360    82020   60% /boot
tmpfs                 100840       0   100840    0% /run/user/0
  • 选项 -h,以合适的单位显示,例如 GB
[root@localhost ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root   18G  1.2G   17G    7% /
devtmpfs             482M     0  482M    0% /dev
tmpfs                493M     0  493M    0% /dev/shm
tmpfs                493M  6.8M  486M    2% /run
tmpfs                493M     0  493M    0% /sys/fs/cgroup
/dev/sda1            197M  117M   81M   60% /boot
tmpfs                99M     0   99M    0% /run/user/0
  • 选项 -i, 查看 inodes 使用情况,如使用到 100%,即使磁盘空间有富余,也会提示磁盘空间已满。
[root@localhost ~]# df -i
文件系统              Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/cl-root 9332736   28208 9304528       1% /
devtmpfs             123289     389  122900       1% /dev
tmpfs                126049       1  126048       1% /dev/shm
tmpfs                126049     474  125575       1% /run
tmpfs                126049      16  126033       1% /sys/fs/cgroup
/dev/sda1            102400     330  102070       1% /boot
tmpfs                126049       1  126048       1% /run/user/0
  • 选项 -k,-m, 分别表示以 KB 和 MB 为单位显示
[root@localhost ~]# df -k |grep -v tmpfs
文件系统               1K-块    已用     可用 已用% 挂载点
/dev/mapper/cl-root 18655232 1164232 17491000    7% /
/dev/sda1             201380  119360    82020   60% /boot
[root@localhost ~]# df -m |grep -v tmpfs
文件系统            1M-块  已用  可用 已用% 挂载点
/dev/mapper/cl-root 18218  1137 17082    7% /
/dev/sda1             197   117    81   60% /boot

##### 上述示例说明

  • 第一列 为分区的名字;
  • 第二列 为该分区的总容量;
  • 第三列 为使用容量;
  • 第四列 为剩余容量;
  • 第五列 为使用容量的百分比;
  • 第六列 为挂载点;

三,du 命令

  1. 命令语法
    du [选项] [参数]

  2. 命令描述
    du 命令用来查看某个目录或文件所占空间大小。默认显示单位 KB。

  3. 命令选项
    -a:=all,显示全部文件与目录的大小
    -b:以 byte(B) 为单位显示内容
    -k:以 KB 为单位显示内容
    -m:以 MB 为单位显示内容
    -h:系统自动调节单位显示内容
    -c:最后加总
    -s:只列出总和

#####du 命令示例
- 显示目录或者文件所占空间


[root@localhost test]# du
608 ./test6 
308 ./test4 
4 ./scf/lib 
4 ./scf/service/deploy/product 
4 ./scf/service/deploy/info 
12 ./scf/service/deploy 
16 ./scf/service 
4 ./scf/doc 
4 ./scf/bin 
32 ./scf 
8 ./test3 
1288 .


说明: 只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的 1288 为当前目录的总大小

  • 只显示总和的大小
[root@localhost test]# du -s 
1288 . 

[root@localhost test]# du -s scf 
32 scf 

[root@localhost test]# cd .. 
[root@localhost soft]# du -s test 1288 test

  • 选项 -sh,用于查看一个指定目录或文件的大小
[root@localhost ~]# du -sh /root   //使用du命令查看 /root 目录
56K	/root
[root@localhost ~]# du -sh /etc/passwd   //使用du命令查看passwd文件
4.0K	/etc/passwd
[root@localhost ~]# ls -lh /etc/passwd   //使用ls命令查看passwd文件
-rw-r--r--. 1 root root 1.3K 10月 31 09:18 /etc/passwd

说明: 这里用 ls 和 du 分别查看 passwd 文件的使用大小,du 命令显示的 4KB(默认情况下, 不到 4KB 以 4KB 显示,因为一个块是 4KB,可用 sb 属性查看真实大小),而 ls 命令显示的是 1.3KB(真实大小)。

  • 选项 -sb,用于查看一个指定目录或文件的真实大小
[root@localhost ~]# du -sb /etc/passwd
1254	/etc/passwd


Linux 系统增加虚拟磁盘,命令 fdisk 磁盘分区及划分分区详解

### 磁盘的分区

#### 一, 增加虚拟磁盘
步骤如下

  • 在当前的虚拟机选项卡点击鼠标右键,选择 "设置";
  • 此时会弹出 "虚拟机设置" 对话框。在左侧选中 "磁盘",然后点击下方的 "添加" 按钮;
  • "选择磁盘类型" 这里保持默认不用更改任何指标,直接点击 "下一步" 按钮;
  • "选择磁盘" 对话框里也保持默认,直接点击 "下一步" 按钮;
  • "指定磁盘容量" 这里需要修改一下,设定 "最大磁盘大小" 为 10GB(自由分配大小),然后选择 "将虚拟机磁盘存储为单个文件" 单选按钮;
  • 继续点击 "下一步" 按钮,然后点击 "完成" 按钮,最终完成添加新的虚拟机磁盘。虽然磁盘已经添加了,但系统暂时还不能被识别,需要重启一下系统才可以;

### 二, 命令 fdisk
1. 命令语法
fdisk [-l] [设备名称]

  1. 命令描述
    fdisk 用来对小于 2T 的磁盘进行分区,如果大于 2T 需用 parted 工具

  2. 命令选项
    -l 后面不加设备名称,会列出系统中所有的磁盘设备以及分区表;加上设备名称,会列出设备的分区表。

###### 命令示例 < 注: 只截取重要命令代码 >
- 重启过后,使用 fdisk 命令查看磁盘

[root@localhost ~]# fdisk -l

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区    //刚才增加并分配的10个GB磁盘,一般名称为/dev/sdb
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
   设备 Boot      Start         End      Blocks   Id  System    

三, 划分分区

< 注: 只截取重要命令代码 >

  • 使用 fdisk 命令, 进入磁盘进行划分分区,并使用 p 打印当前磁盘分区情况
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x6d2ecb0c 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m            //m表示查看帮助命令
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   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 partitions system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
   
命令(输入 m 获取帮助):p       //打印当前磁盘分区情况

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6d2ecb0c

 设备 Boot      Start         End      Blocks   Id  System

说明: 可以看出当前没有任何分区 。在 fdisk 分区中常用的选项: n 表示建立一个新的分区; w 表示保存; q 表示退出 ;d 表示删除一个分区;p 表示打印当前磁盘的分区情况;

  • 新建分区 使用 n
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)   //主分区
   e   extended        //扩展分区

说明: 可创建 4 个主分区,如果想创建更多分区需要使用扩展分区,扩展分区 + 主分区数目最多为 4 个;使用 fdisk 只能划分小于 2TB 分区;
如果想多划分多个分区,可以划分 3 个主分区,1 个扩展分区,然后在扩展分区里,在划分逻辑分区。

  • 划分第一个主分区,并查看分区情况
Select (default p): p
分区号 (1-4,默认 1):1        //划分第一个分区
起始 扇区 (2048-20971519,默认为 2048):   //定义分区大小默认是1028开始(直接回车即可)
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+2G  //为第一个主分区划分2G空间
分区 1 已设置为 Linux 类型,大小设为 2 GiB    

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x60b3292f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux

  • 划分第二个主分区
命令(输入 m 获取帮助):n       
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (4196352-20971519,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-20971519,默认为 20971519):+2G 
分区 2 已设置为 Linux 类型,大小设为 2 GiB

注意: 省略划分下两个分区,当划分 4 个分区的时候,系统会提醒你不能再继续划分分区了,这时候我们删除一个分区如下

  • 删除分区
命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):4  //删除第四个分区
分区 4 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x60b3292f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux  //可以看出剩下了三个分区,第四个被删除了。

  • 划分一个扩展分区,为 4GB, 并查看分区情况
命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e  //选项e 代表 扩展分区
已选择分区 4
起始 扇区 (10487808-20971519,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-20971519,默认为 20971519):+4G
分区 4 已设置为 Extended 类型,大小设为 4 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x60b3292f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    18876415     4194304    5  Extended

注意 :这时候已经有三个主分区,一个逻辑分区,当我们在想分区的时候,只能添加逻辑分区了

  • 添加逻辑分区, 并查看分区情况
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (10489856-18876415,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-18876415,默认为 18876415):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x60b3292f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    18876415     4194304    5  Extended 
/dev/sdb5        10489856    12587007     1048576   83  Linux  //刚刚添加的逻辑分区

注意: 省略添加第 6 个逻辑分区。。。。
这时候有三个主分区,一个扩展分区,和两个逻辑分区

  • 删除第一个主分区 1, 并查看分区情况
命令(输入 m 获取帮助):d
分区号 (1-6,默认 6):1
分区 1 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x60b3292f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    18876415     4194304    5  Extended
/dev/sdb5        10489856    12587007     1048576   83  Linux
/dev/sdb6        12589056    14686207     1048576   83  Linux

说明: 可以看出第一个主分区已经被删除了。

  • 删除一个逻辑分区 5, 并查看分区情况
命令(输入 m 获取帮助):d
分区号 (2-6,默认 6):5
分区 5 已删除

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x60b3292f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    18876415     4194304    5  Extended
/dev/sdb5        12589056    14686207     1048576   83  Linux

注意 :我们已经把逻辑分区 5 删除了,但是上面可以看出 仍然存在一个 sdb5,这里的 sdb5 和刚才被删除的逻辑分区 5 是不一样的,也就是说当你删除一个逻辑分区的时候,这个逻辑分区号不会留空的,原来的 sdb6,变成了 sdb5。这时候如果我们 q 的话,会退出,并不保存以上的操作。如果 w 的话就是保存,在这里我们选择 q。

  • 重新进入分区,并查看当前分区情况
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xd361f0a3 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):p     

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd361f0a3

   设备 Boot      Start         End      Blocks   Id  System

说明: 可以看出,当我们 q 退出之后,重新进入分区时,分区情况没有保存,恢复了默认状态,这时候我们重新分区如下

  • 给一个扩展分区划分三个 GB,并查看分区情况
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): e
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+3G       
分区 1 已设置为 Extended 类型,大小设为 3 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd361f0a3

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728    5  Extended

  • 增加一个主分区,分区号为 3,并查看分区情况
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): p  
分区号 (2-4,默认 2):3
起始 扇区 (6293504-20971519,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-20971519,默认为 20971519):+1G
分区 3 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd361f0a3

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728    5  Extended
/dev/sdb3         6293504     8390655     1048576   83  Linux

  • 划分一个逻辑分区,并查看分区情况
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (4096-6293503,默认为 4096):
将使用默认值 4096
Last 扇区, +扇区 or +size{K,M,G} (4096-6293503,默认为 6293503):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd361f0a3

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728    5  Extended
/dev/sdb3         6293504     8390655     1048576   83  Linux
/dev/sdb5            4096     2101247     1048576   83  Linux

说明: 可以看出,我们划分的逻辑分区号是从 5 开始的。也就是说前四个分区号是留给主分区或扩展分区的,逻辑分区从号 5 开始,当删除其中一个逻辑分区时,它的上一个逻辑分区会顶替它的逻辑分区号,往前面排序。

  • 这时候 q 退出,重新进入分区,给主分区分 5GB,并 w 保存退出, 并查看分区情况
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x14b00984 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x14b00984

   设备 Boot      Start         End      Blocks   Id  System
   
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。


[root@localhost ~]# fdisk -l

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区     //我自己的磁盘sdb
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x14b00984

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux    //可以看出刚才创建的主分区已经保存了

  • 删除 sdb1 这个主分区,并 w 保存退出, 并查看分区情况
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):d   
已选择分区 1
分区 1 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x14b00984

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

磁盘分区注意事项总结

  • 当我们在创建磁盘分区的时候,有三种分区可选,扩展分区(e),主分区(p),逻辑分区(l)。
  • 我们最多只能创建 4 个分区(4 个中不包括逻辑分区),如果想创建多个分区,可以是 3 个主分区和 1 个扩展分区组合。然后在扩展分区中,创建逻辑分区(可以创建无限个逻辑分区)。
    需要注意的是,扩展分区相当于一个空壳子,是不可以格式化的(不可以使用),只有它的子分区才可以格式化。
  • 在 fdisk 中划分分区的时候,使用 d 选项可以删除你想要删除的那个分区,需要注意的是,当扩展分区中有子分区(逻辑分区)的时候,删除扩展分区会连同子分区一起删除,所以当我们在删除分区的时候,一定要谨慎,谨慎,谨慎!!!


Linux 系统 parted 分区 GPT 格式

一,parted 工具常用功能

  1. 命令语法
    parted(选项)(参数)

  2. 命令描述
    parted 命令,是由 GNU 组织开发的一款功能强大的磁盘分区和分区大小调整工具。

  3. 命令选项
    -h:显示帮助信息;
    -i:交互式模式;
    -v:显示版本号。

  4. 命令参数
    设备:指定要分区的硬盘所对应的设备文件;
    命令:要执行的 parted 命令。

parted 命令可以划分单个分区大于 2T 的 GPT 格式的分区,也可以划分普通的 MBR 分区,fdisk 命令对于大于 2T 的分区无法划分,所以用 fdisk 无法看到 parted 划分的 GPT 格式的分区。
Parted 命令分为两种模式:命令行模式和交互模式
1. 命令行模式: parted [option] device [command] , 该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用。
2. 交互模式:parted [option] device 类似于使用 fdisk /dev/xxx
MBR:MBR 分区表 (即主引导记录) 大家都很熟悉。所支持的最大卷:2T,而且对分区有限制:最多 4 个主分区或 3 个主分区加一个扩展分区
GPT: GPT(即 GUID 分区表)。是源自 EFI 标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与 MBR 分区方式相比,具有如下优点。突破 MBR 4 个主分区限制,每个磁盘最多支持 128 个分区。支持大于 2T 的分区,最大卷可达 18EB。

当在命令行输入 parted 后,进入 parted 命令的交互模式。输入 help 会显示帮助信息。下面就简单介绍一下常用的功能

  1. check 简单检查文件系统。建议用其他命令检查文件系统,比如 fsck

  2. help 显示帮助信息

  3. mklabel 创建分区表, 即是使用 msdos(MBR)还是使用 gpt,或者是其他方式分区表

  4. mkfs 创建文件系统。该命令不支持 ext3 格式,因此建议不使用,最好是用 parted 分好区,然后退出 parted 交互模式,用其他命令进行分区,比如:mkfs.ext3

  5. mkpart 创建新分区。 格式:mkpart PART-TYPE [FS-TYPE] START END PART-TYPE 类型主要有 primary(主分区), extended(扩展分区), logical(逻辑区). 扩展分区和逻辑分区只对 msdos。
    fs-type 文件系统类型,主要有 fs32,NTFS,ext2,ext3 等 start end 分区的起始和结束位置。

  6. mkpartfs 建立分区及其文件系统。目前还不支持 ext3 文件系统,因此不建议使用该功能。最后是分好区后,退出 parted,然后用其他命令建立文件系统。

  7. print 输出分区信息。该功能有 3 个选项, free 显示该盘的所有信息,并显示磁盘剩余空间 number 显示指定的分区的信息 all 显示所有磁盘信息

  8. resize 调整指定的分区的大小。目前对 ext3 格式支持不是很好,所以不建议使用该功能。

  9. rescue 恢复不小心删除的分区。如果不小心用 parted 的 rm 命令删除了一个分区,那么可以通过 rescue 功能进行恢复。恢复时需要给出分区的起始和结束的位置。然后 parted 就会在给定的范围内去寻找,并提示恢复分区。

  10. rm 删除分区。命令格式 rm number 。如:rm 3 就是将编号为 3 的分区删除

  11. select 选择设备。当输入 parted 命令后直接回车进入交互模式是,如果有多块硬盘,需要用 select 选择要操作的硬盘。如:select /dev/sdb

  12. set 设置标记。更改指定分区编号的标志。标志通常有如下几种:boot hidden raid lvm 等。 boot 为引导分区,hidden 为隐藏分区,raid 软 raid,lvm 为逻辑分区。 如:set 3 boot on 设置分区号 3
    为启动分区

注:以上内容为 parted 常用的功能,由于该工具目前对 ext3 支持得不是很好,因此有些功能无法应用,比如 move(移动分区)和 resize 等。

### 二,parted 分区功能事例
- 用命令模式 为 /dev/sdb 创建 gpt 类型文件分区表, 并分 500G 分区。然后为该分区创建 ext3 文件系统。并将该分区挂载在 /test 文件夹下。

# parted  /dev/sdb  mklabel    // 创建分区表
# parted  /dev/sdb  mkpart  ext3  0  500000   // 创建500G分区/dev/sdb1
# mkfs.ext3  /dev/sdb1      // 将分区/dev/sdb1格式化成ext3格式文件系统
# mount  /dev/sdb1 /test   // 将/dev/sdb1 挂载在/test下

如果让系统自动挂载 /dev/sdb1 需手工编辑 /etc/fstab 文件。并在文件末尾添加如下内容:
/dev/sdb1 /test ext3 defaults 0 0

  • 创建大小为 4G 的交互分区。由于已经创建了 500G 的 /dev/sdb1 , 因此再创建的分区为 /dev/sdb2
# parted /dev/sdb mkpart swap 500000 504000   //创建4G分区/dev/sdb2
# mkswap  /dev/sdb2   // 将/dev/sdb2创建为交换分区
# swapon /dev/sdb2   // 激活/dev/sdb2

如果让系统自动挂载 /dev/sdb2 这个交换分区,需手工编辑 /etc/fstab 文件。并在文件末尾添加如下内容:
/dev/sdb2 swap swap defaults 0 0

  • 恢复被误删除的分区 (也可以参考 testdisk 命令)。由于 parted 直接写磁盘,因此一旦不小心删除了某一分区,建议立即用 rescue 恢复。下面通过事例来理解恢复过程。
# parted /dev/sdb mkpart ext3 504000 514000 // 创建10G分区/dev/sdb3
# mkfs.ext3 /dev/sdb3    //将/dev/sdb3格式化成ext3文件系统。
# parted /dev/sdb rm 3    //删除/dev/sdb3
# parted /dev/sdb rescue 504000 514000    // 依照屏幕提示,输入yes即可恢复被误删除分区