关于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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」