关于fdisk和parted命令对磁盘分区


因条件有限,该文档未在大容量存储上(如TB级)进行测试

fdisk分区

sdb这块盘是本次的测试盘

[root@test1 ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 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: 0x000a3d1e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    10225663     4063232   82  Linux swap / Solaris
/dev/sda3        10225664   209715199    99744768   83  Linux

Disk /dev/sdb: 42.9 GB, 42949672960 bytes, 83886080 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: 0x000e1d6d

   Device Boot      Start         End      Blocks   Id  System
[root@test1 ~]# 


# 开始分区
[root@test1 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n                            ====> 输入n,new的简写
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):                                ====> 直接回车,即创建主分区类型
Using default response p
Partition number (1-4, default 1):                 ====> 直接回车,即创建第一个主分区
First sector (2048-83886079, default 2048):        ====> 直接回车,即第一个扇区的起始位置
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): +10G         ====> 输入要创建的分区大小,即扇区结束位置(以G为单位)
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p                            ====> 输入p查看分区,print的简写

Disk /dev/sdb: 42.9 GB, 42949672960 bytes, 83886080 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: 0x000e1d6d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux           ====> 这里已经创建好了第一个分区

Command (m for help): w                     ====> 保存分区,write的简写
The partition table has been altered!

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


================================ 超过2T的分区 ===============================
[root@rocky4 ~]# parted /dev/nvme0n2
(parted) mklabel gpt
Warning: The existing disk label on /dev/nvme0n2 will be destroyed and all data on this disk will be lost.
Do you want to continue?
Yes/No? y          # 输入y
(parted) mkpart    # 分区                                                 
Partition name?  []? nvme0n2p1     # 分区名
File system type?  [ext2]? ext4    # 分区格式
Start? 0           # 分区起始位置                                                        
End? 4T            # 分区结束位置
Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
Ignore/Cancel? c    # 按c结束,因为生成的分区未正确对齐
(parted) mkpart     # 从头再来分区 
Partition name?  []? nvme0n2p1       # 分区名                                       
File system type?  [ext2]? ext4      # 分区格式
Start? 2048s                         # 上面报的是2048s所以从这里开始                                          
End? 3.2T                            # 结束是3.2T的位置
(parted) p                                                                 
Model: VMware Virtual NVMe Disk (nvme)
Disk /dev/nvme0n2: 8796GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name       Flags
 1      1049kB  3200GB  3200GB  ext4         nvme0n2p1


[root@rocky4 ~]# mkfs.ext4  /dev/nvme0n2p1

============================================================================



# 对新创建的分区进行格式化
[root@test1 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 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

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





# 挂载
[root@test1 ~]# mkdir /ioio
[root@test1 ~]# mount /dev/sdb1 /ioio/

parted分区

1、接着fdisk分区的继续
2、parted命令的所有操作为实时的,这点和fdisk不同,切记这一点

# 导读
parted>mklabel gpt             将MBR磁盘格式化为GPT
parted>mkpart primary 0 100    划分一个起始位置为0大小为100M的主分区
parted>mkpart primary 100 200  划分一个起始位置为100M大小为100M的主分区
parted>mkpart primary 0TB -1     # -1代表的是最后的位置
=============================



[root@test1 ~]# parted /dev/sdb              ====> 这里是整块盘,不是某个分区
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                    ====> 查看现有分区                            
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  10.7GB  10.7GB  primary  ext4                   

(parted) unit s                                ====> 设置磁盘的计量单位为磁柱                           
(parted) p                                     ====> 再来查看现有分区                          
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 83886080s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End        Size       Type     File system  Flags
 1      2048s  20973567s  20971520s  primary  ext4                 ====> Start列的单位已经更换,  注意End列 !!!

(parted) mkpart                                                    ====> 新增分区        
Partition type?  primary/extended? p                               ====> 新增一个主分区      
File system type?  [ext2]? ext4                                    ====> 分区类型为ext4       
Start? 20973568                                                    ====> 在上面End列的基础上加1
End? 41947136                                                      ====> 2个Start相加,即再创建个10G的分区

(parted) p                                                         ====> 再来查看下分区       
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 83886080s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start      End        Size       Type     File system  Flags
 1      2048s      20973567s  20971520s  primary  ext4
 2      20973568s  41947136s  20973569s  primary  ext4              ====> 按Number来看,这是第二个分区

# 再创建一个分区
(parted) mkpart
Partition type?  primary/extended? p                                      
File system type?  [ext2]? ext4                                           
Start? 41947137                                                           
End? 62920703                                                             
Warning: The resulting partition is not properly aligned for best performance.    
Ignore/Cancel? I             # 该提示可忽略,故选I                                               
(parted) p                                                                
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 83886080s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start      End        Size       Type     File system  Flags
 1      2048s      20973567s  20971520s  primary  ext4
 2      20973568s  41947136s  20973569s  primary  ext4
 3      41947137s  62920703s  20973567s  primary

(parted) q                                                          ====> 退出
Information: You may need to update /etc/fstab.                     ====> 注意这条信息


==================== 参考 ======================
# 对齐分区有两个方法,
方法一,使用百分比来表示要分区的的空间大小,到100%的时候自然是对齐的
(parted) mkpart primary 0% 100%

方法二,如果是使用容量来进行空间大小的话,那么 -1 这个值代表的是最后的位置
(parted) mkpart primary 0TB -1
或者
(parted) mkpart primary 21.5G 30G
===============================================


# 查看挂载情况
[root@test1 ~]# df -h                                                     
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  9.0M  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda3        94G   14G   76G  16% /
/dev/sda1       976M  112M  798M  13% /boot
tmpfs           379M     0  379M   0% /run/user/0
/dev/sdb1       9.8G   37M  9.2G   1% /ioio                         ====> 这里挂载的还在


# 挂载使用parted创建的分区
[root@test1 ~]# mkdir /koko
[root@test1 ~]# mount /dev/sdb2 /koko
[root@test1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  9.0M  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda3        94G   14G   76G  16% /
/dev/sda1       976M  112M  798M  13% /boot
tmpfs           379M     0  379M   0% /run/user/0
/dev/sdb1       9.8G   37M  9.2G   1% /ioio
/dev/sdb2       9.8G   37M  9.2G   1% /koko           ====> 这里挂载上了



# 检验
[root@test1 ~]# umount /ioio
[root@test1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
....
    ....
/dev/sdb2       9.8G   37M  9.2G   1% /koko             ====> 已经没了/ioio目录
[root@test1 ~]# mount /dev/sdb1 /ioio                   ====> 再挂载上
[root@test1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
....
    ....
/dev/sdb2       9.8G   37M  9.2G   1% /koko
/dev/sdb1       9.8G   37M  9.2G   1% /ioio             ====> 回来了


[root@test1 ~]# umount /koko
[root@test1 ~]# df -h
....
    ....
/dev/sdb1       9.8G   37M  9.2G   1% /ioio
[root@test1 ~]# mount /dev/sdb2 /koko
[root@test1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
....
    ....
/dev/sdb1       9.8G   37M  9.2G   1% /ioio
/dev/sdb2       9.8G   37M  9.2G   1% /koko

自动挂载

# 获取磁盘的UUID
[root@test1 ~]# blkid 
/dev/sda3: UUID="7fb8a7de-e6ed-4a24-bc92-f8e695699bd2" TYPE="ext4" 
/dev/sda1: UUID="fca55c24-ff34-4e3d-965c-a2838ddab9e2" TYPE="ext4" 
/dev/sda2: UUID="162dcd14-3b38-49a7-8c06-d30bd9300556" TYPE="swap" 
/dev/sdb1: UUID="44dd35d8-ca91-4003-b63d-9f09f9f10bba" TYPE="ext4"       ====> 对应/ioio
/dev/sdb2: UUID="54bda13d-47e6-4298-98aa-bcf04551f6dc" TYPE="ext4"       ====> 对应/koko
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 




[root@test1 ~]# vim /etc/fstab
UUID=44dd35d8-ca91-4003-b63d-9f09f9f10bba   /ioio   ext4    defaults        0 0   
UUID=54bda13d-47e6-4298-98aa-bcf04551f6dc   /koko   ext4    defaults        0 0

================ 参数释义 ================
第一列,UUID相当于硬盘分区的"身份证号码",通过这个号码识别硬盘
第二列 挂载点
第三列 文件系统的格式
第四列 默认参数配置,所有选项全部使用默认配置,包括rw、suid、dev、exec、auto、nouser、async,一般用户没有特殊需求用defaults就行
第五列 是否备份,1:备份,0:不备份,默认1即可
第六列 是开机fsck工具自检,0:不检,1:开机时检测,2:开机后检测,只有根分区默认开机自检,其他分区默认2,有点像360优化开机选项,不然的话拖慢了开机速度



# 第四列释义
auto 和 noauto: 这是控制设备是否自动挂载的选项。auto是默认选择的选项,这样设备会在启动或者你使用mount -a命令时按照fstab的内容自动挂载。使用noauto选项时你就只能明确地通过手工来挂载设备

user 和 nouser:这是一个非常有用的选项,user选项允许普通用户也能挂载设备,而nouser则只允许root用户挂载。nouser是默认选项,这也让很多新手头疼的东西,因为他们发现没有办法正常挂载光驱,Windows分区等。如果你作为普通身份用户遇到类似问题,或者别的其他问题就请把 user属性增加到fstab中。

exec 和 noexec: exec允许你执行对应分区中的可执行二进制程序,同理noexec的作用刚好相反。如果你拥有一个分区,分区上有一些可执行程序,而恰好你又不愿意或者不能在你的系统中执行他们,就可以使用noexec属性。这种情况多发生于挂载Windows分区时。exec是默认选项

ro: 以只读来挂载文件系统

rw: 以可读可写的属性来挂载系统

sync 和 async:对于该文件系统的输入输出应该以什么方式完成。sync的意思就是同步完成,通俗点讲,就是当你拷贝一个东西到设备或者分区中时,所有的写入变化将在你输入cp命令后立即生效,这个东西应该立马就开始往设备或者分区里面拷贝了。而如果是async,也就是输入输出异步完成的话,当你拷贝一个东西到设备或者分区中时,可能在你敲击cp命令后很久,实际的写入操作才会执行,换句话说,就是进行了缓冲处理
有时候这种机制蛮不错的,因为sync会影响你系统的运行速度,但是这也会带来一些问题。想一想,当你希望将一个文件拷贝到u盘上时,你执行了 cp 命令,却忘记执行umount命令(它会强行将缓冲区内容写入),那么你拷贝的文件实际上并没有在u盘上面。如果你是使用的mv命令,而你又很快将u盘拔出……恭喜你,文件会从这个星球上消失的。因此,虽然async是默认属性,但是对于u盘,移动硬盘这种可移动存储设备,最好还是让他们使用sync选项。
==========================================


# 统一挂载
[root@test1 ~]# mount -a
posted @ 2022-03-23 10:43  Linux大魔王  阅读(564)  评论(0编辑  收藏  举报