Linux如何磁盘分区
需知一:Linux对磁盘分区的解决方案
MBR分区方案(寄存器)
GPT分区方案(全局唯一标识磁盘分区表)
需知二:MBR分区方案特点
最多支持四个主分区
在Linux上使用扩展分区和逻辑分区最多可以创建15个分区
由于分区中的数据以32位存储,使用MBR分区是最大支持单盘 2T 空间
fdisk管理工具只能创建MBR分区,但是在较新的发行版系统重 fdisk 命令已经不默认自带了,也通常不直接去专程创建 MBR 分区,工作中多数使用 PV 操作服务器储存介质的管理
需知三:GPT分区方案特点
GPT的优势是分区列表中,单个分区逻辑上最大支持 18 EB(1 EB = 1,048,576 TB),可以定义128个分区,分区的限制是不同系统决定的,没有主分区、扩展分区和逻辑分区的概念,所有分区都能格式化。通常使用 parted 管理工具创建GPT分区
需知四:如何区分MBR和GPT分区
注意:linux中的磁盘接口一般都在 /dev/ 下 ,格式为 sda、sdb、sdc 这种接口文件,分区会存在对应的 sda1 、sda2 这种接口文件
方法一:
[root@node3 ~]# fdisk -l----------主磁盘 sda 的信息 Disk /dev/sda:53.7GB,53687091200bytes,104857600sectors Units=sectors of1*512=512bytes Sector size(logical/physical):512bytes /512bytes I/O size(minimum/optimal):512bytes /512bytes Disk label type: dos ---------这里就是该磁盘用的分区方式 gpt 或者 dos(MBR)Disk identifier: 0x0008f1dc -----------------它下面有两个分区 Device Boot Start End Blocks Id System /dev/sda1 *204841164720480083Linux /dev/sda2411648104857599522229768e Linux LVM -----------新磁盘未分区时也会展示在这里 Disk /dev/sdb:21.5GB,21474836480bytes,41943040sectors Units=sectors of1*512=512bytes Sector size(logical/physical):512bytes /512bytes I/O size(minimum/optimal):512bytes /512bytes ------------下面展示的是所有系统现在有的逻辑卷分区 Disk /dev/mapper/centos-root:51.3GB,51325698048bytes,100245504sectors Units=sectors of1*512=512bytes Sector size(logical/physical):512bytes /512bytes I/O size(minimum/optimal):512bytes /512bytes Disk /dev/mapper/centos-swap:2147MB,2147483648bytes,4194304sectors Units=sectors of1*512=512bytes Sector size(logical/physical):512bytes /512bytes I/O size(minimum/optimal):512bytes /512bytes方法二
[root@node3 ~]# parted -l--------------------开头这部分指的是主磁盘信息,主磁盘叫 sda Model: VMware, VMware Virtual S(scsi)Disk /dev/sda:53.7GB 《----磁盘大小 Sector size(logical/physical): 512B/512B Partition Table: msdos 《----分区方式MBR Disk Flags: ------------主磁盘有两个分区,展示了它们的扇区位置,还有他们的类型(boot内核引导分区、lvm是逻辑卷)Number Start End Size Type File system Flags11049kB 211MB 210MB primary xfs boot2211MB53.7GB53.5GB primary lvm -----------------这个是未分区的新盘,只展示大小,其他的同时识别不到 Error: /dev/sdb: unrecognised disk label Model: VMware, VMware Virtual S(scsi)Disk /dev/sdb:21.5GB Sector size(logical/physical): 512B/512B Partition Table: unknown Disk Flags: -----------------系统逻辑卷分区 Model: Linux device-mapper(linear)(dm)Disk /dev/mapper/centos-swap: 2147MB ----------centos-swap意思是这个分区是个交换分区 Sector size(logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system Flags10.00B 2147MB 2147MB linux-swap(v1)Model: Linux device-mapper(linear)(dm)Disk /dev/mapper/centos-root:51.3GB ------------centos-root 是默认挂在根路径的总空间 Sector size(logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system Flags10.00B51.3GB51.3GB xfs注意,除了磁盘信息下方带序号的分区外。较新的 Linux 发行版已经不在显示逻辑卷了,它的信息确实对运维有影响,信息素比较乱。甚至 AlmaLinux 这些较新的发行版,已经默认不带fdisk命令了
如果你想看一个磁盘具体的分区信息,需要通过lsblk命令
[root@core opt]# lsblk /dev/sdbNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sdb8:160931.5G0disk ├─sdb18:1701K0part └─sdb58:210931.5G0part /opt/wy顺便说一个补充知识,当你将一个 Windows 上用的移动硬盘插在 linux 系统上,默认是不能用的,需要安装一个兼容插件
# 先启用 EPEL 源(如果还没启用)yuminstallepel-release-y# 安装 ntfs-3gyuminstallntfs-3g-y# 两种挂载方式都可以mount-tntfs-3g /dev/sdb5 ./wymount/dev/sdb5 ./wy# 用完后卸载umount/dev/sdb5下面我们开始分区
分区前你首先要知道当前服务器有几块盘,以及那些盘现在没有被使用可以用来分区的。
运行fdisk -l命令,可以看到如下图的输出信息
上图中的信息可以看到目前总计有两块盘,/dev/sda由于已经在使用,所以它有了标签类型和标识符,以及可以看到它被分了三个区且挂载在了不同的地方,而/dev/sdb由于是刚插到服务器上没有使用,因此没有相关的信息。
我们直接使用parted工具,该工具可以操作多种不同的分区方式,下面演示如何用它操作gpt分区
1、使用parted 加目标磁盘命令进行分区
[root@hdp3 opt]# parted /dev/sdbGNU Parted3.1使用 /dev/sdb Welcome to GNU Parted!Type'help'to view a list of commands.(parted)2、输入mklabel指令,定义分区格式,之后随着输入提示输入gpt,末尾可能有的时候会出现一个警告,输入y确定进行
(parted)mklabel New disk label type? gpt Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? y3、mkpart定义磁盘分区名称和文件系统类型,这里演示只分一个,实际操作时,3、4两步需要多次重复完成多个分区
(parted)mkpart Partition name?[]? gpt1 File system type?[ext2]? ext44、定义当前分区盘符大小,同时此步完成之后会在/dev自动生成对应的类似于/dev/sdb1这样的配置文件。这一步你可以写百分比或者是具体的扇区大小地址
Start?0% End?100%一定要带百分比符号,不带的话,按照磁盘指点扇区识别,会报如下提示,输入 Cancel 后重新执行 mkpart 即可
Warning: The resulting partition is not properly alignedforbest performance. Ignore/Cancel?5、使用print命令进行查看
(parted)print Model: VMware, VMware Virtual S(scsi)Disk /dev/sdb:21.5GB Sector size(logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志11049kB21.5GB21.5GB gpt1此时要说一点:parted操作到这里,如果你操作觉得不对,想要从新来过,需要执行umount /dev/sdb1命令先取消已经挂载的分区。如果你是分区文件类型写的不满意,并不需要去取消挂载,后期格式化时,使用实际的命令就行,标签会自动更新。如果某个分区没分对,在parted交互窗口中执行p得到分区号后rm即可。如果你是在给一块已经有分区,且已经对分区做了文件系统类型格式化的老盘重新分区,需要先执行parted /dev/sdb mklabel gpt/msdos格式化它
6、quit退出,并使用mkfs.分区格式格式化你建好的所有分区,注意mkfs后面的分区格式是linux根据不同的分区类型有不同的格式化命令,你分区时设置的什么类型就用什么命令,你可以输入“mkfs.”时用tab查看一下你能用的命令
(parted)quit Information: You may need to update /etc/fstab.[root@hdp3 opt]# mkfs.ext4 /dev/sdb1meta-data=/dev/sdb1isize=512agcount=4,agsize=1310592blks=sectsz=512attr=2,projid32bit=1=crc=1finobt=0,sparse=0data=bsize=4096blocks=5242368,imaxpct=25=sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=1log=internal logbsize=4096blocks=2560,version=2=sectsz=512sunit=0blks, lazy-count=1realtime=noneextsz=4096blocks=0,rtextents=07、为刚才的所有分区做挂载
[root@hdp3 opt]# mkdir /opt/oracleData[root@hdp3 opt]# mount /dev/sdb1 /opt/oracleData8、将挂载信息添加到配置文件/etc/fstab中,这样就可以随着系统启动自动挂载,注意这个文件里面内容标准是制表符tab分隔,不过你可以用空格
UUID=1aa586ac-c177-4037-a587-e965192b95fe /opt/oracleData ext4 defaults00注意,第一列是磁盘分区对应的标识,一定一定要使用 UUID ,不要使用磁盘分区名称,会导致重启时可能无法正常识别测盘而导致系统起不来,可以用如下的命令查看磁盘分区的 UUID
[root@wangyang ~]# lsblk -fNAME FSTYPE LABEL UUID MOUNTPOINT vda └─vda1 ext4 c8b5b2da-5565-4dc1-b002-2a8b07573e22 / vdb └─vdb1 ext4 1aa586ac-c177-4037-a587-e965192b95fe /opt/gpt1总计六列信息,从左到右分别为:磁盘标识(配置路径/UUID)、挂载路径、该分区文件系统类别、文件系统参数、能否被dump备份命令作用、是否检验扇区
这六列信息的配置可选项,可以看如下博文中的配置项详情
