linux分区 fdisk和parted

硬盘分为2种:机械硬盘,固态硬盘。
机械硬盘是就是传统的硬盘主要有,磁盘盘片,磁头,电机,磁头控制器等等,通过磁盘的快速旋转来进行读写,固态硬盘则是多个芯片合成的。

插拔方式分为:
热插拔,非热插拔。
就是能否支持通电状态的插拔。

硬盘的主要接口有:
SATA SAS PCIE等等

整理碎片:硬盘读取内容的过程有几个,1、找到文件存储在硬盘的位置。2、读取文件。这两步都要费时间,而文件存储时不规范,让文件存得分散,到处都是,就会让找到文件的时间很多,影响速度,而整理碎片就是将这些乱的文件汇聚整理,减少寻找文件的时间从而增加速度。

硬盘的分区主要是为了方便管理,若遇到系统需要重装或者分区需要进行格式化等,原有的重要文件无法在本硬盘保留,而若提前进行了合理分区,则用户数据不会收到影响,读取越频繁,磁盘越容易受损,我们把读写频繁的目录挂载到一个单独的分区,可以把磁盘的损伤控制在一个集中的区域。

根据分区方式的不同可以分为2种情况:
2T以下的 用fdisk分区,分区表是MBR
2T以上的 用parted分区,分区表是GPT

MBR分区的限制:
主分区 、逻辑分区、拓展分区。
最多4个主分区。
总共不能超过15 个分区。
只支持2T以下的硬盘。

最初的硬盘设计时没有考虑到存储的发展如此迅速,硬盘的分区表只有64bytes存储着分区信息存储,而每个分区要用16 bytes来记录,所以主分区只能有4个,但是4个并不能满足需求,所以引入了拓展分区和逻辑分区,将剩下的所有分区作为拓展分区,将拓展分区的前一部分作为分区表,后边的重新分区作为逻辑分区,就像俄罗斯套娃。逻辑分区就是在拓展分区中再细分的。

而GPT则没有那么多限制,没有逻辑分区等概念,只限制了数量128个分区。

注:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!

fdisk分区工具MBR的分区的步骤:
1、添加设备(硬盘)
2、选择分区工具进行分区
3、格式化(也叫创建文件系统)
4、挂载使用。

查看设备
/dev目录存放的是设备文件,其中硬盘这种也在其中,

分区之前就是要确定文件是否存在,也就是设备是否存在。
可以使用 ll /dev/sd* 来查看文件。

[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8,  0 Oct 21 17:53 /dev/sda
brw-rw----. 1 root disk 8,  1 Oct 21 17:53 /dev/sda1
brw-rw----. 1 root disk 8,  2 Oct 21 17:53 /dev/sda2
brw-rw----. 1 root disk 8, 16 Oct 21 17:53 /dev/sdb
brw-rw----. 1 root disk 8, 17 Oct 21 17:53 /dev/sdb1
brw-rw----. 1 root disk 8, 18 Oct 21 17:53 /dev/sdb2
brw-rw----. 1 root disk 8, 32 Oct 21 17:53 /dev/sdc
brw-rw----. 1 root disk 8, 33 Oct 21 17:53 /dev/sdc1
brw-rw----. 1 root disk 8, 34 Oct 21 17:53 /dev/sdc2
brw-rw----. 1 root disk 8, 35 Oct 21 17:53 /dev/sdc3
brw-rw----. 1 root disk 8, 48 Oct 21 17:53 /dev/sdd
brw-rw----. 1 root disk 8, 64 Oct 21 17:53 /dev/sde

可以看到sda,sdb,sdc,sde,sdf 几个硬盘。
另一种更加直观的显示方式。
lsblk

[root@localhost ~]# lsblk
NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                     8:0    0  200G  0 disk 
├─sda1                  8:1    0    2G  0 part /boot
└─sda2                  8:2    0  144G  0 part 
  ├─centos-root       253:0    0   40G  0 lvm  /
  ├─centos-swap       253:1    0    4G  0 lvm  [SWAP]
  └─centos-tmp        253:2    0  100G  0 lvm  /tmp
sdb                     8:16   0   20G  0 disk 
├─sdb1                  8:17   0  953M  0 part /sdb1
└─sdb2                  8:18   0  1.9G  0 part /sdb2
sdc                     8:32   0    2G  0 disk 
├─sdc1                  8:33   0   94M  0 part 
│ ├─vg1-lv1-real      253:3    0   60M  0 lvm  
│ │ ├─vg1-lv1         253:4    0   60M  0 lvm  
│ │ └─vg1-lv1--snap   253:6    0   60M  0 lvm  
│ └─vg1-lv1--snap-cow 253:5    0   12M  0 lvm  
│   └─vg1-lv1--snap   253:6    0   60M  0 lvm  
├─sdc2                  8:34   0   96M  0 part 
└─sdc3                  8:35   0  286M  0 part 
sdd                     8:48   0   10G  0 disk 
sde                     8:64   0   10G  0 disk 
sr0                    11:0    1  8.1G  0 rom  

abc都进行了分区 de则没有。

选择分区工具分区

fdisk

    -l 列出素所有分区表
    -u 与"-l"搭配使用,显示分区数目
    -s<分区编号> 指定分区
    -v 版本信息
	-c[=]  兼容模式 (default)
	-u[=]  显示扇区 (default)
[root@localhost ~]# fdisk /dev/sdd  //进入fdisk分区工具的分区设置
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.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x69e33cfe.

Command (m for help):   //按M进帮助

这里的选项很多只列出几个常用的。

    m :显示菜单和帮助信息
    a :活动分区标记/引导分区
    d :删除分区
    l :显示分区类型
    n :新建分区
    p :显示分区信息
    q :退出不保存
    t :设置分区号
    v :进行分区检查
    w :保存修改
    x :扩展应用,高级功能
Command (m for help): n   //n添加新分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p   //主分区
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 
Using default value 2048   //起始的字节数
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +2G   //给这个分区分配2G的内存
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e   //新建拓展分区
Partition number (3,4, default 3): 
First sector (8390656-20971519, default 8390656): 
Using default value 8390656
Last sector, +sectors or +size{K,M,G} (8390656-20971519, default 20971519): 
Using default value 20971519
Partition 3 of type Extended and of size 6 GiB is set

Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l   //新建逻辑分区
Adding logical partition 5
First sector (8392704-20971519, default 8392704): 
Using default value 8392704
Last sector, +sectors or +size{K,M,G} (8392704-20971519, default 20971519): +2G
Partition 5 of type Linux and of size 2 GiB is set

按P查看分区情况

Command (m for help): p

Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 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: 0x69e33cfe

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048     4196351     2097152   83  Linux
/dev/sdd2         4196352     8390655     2097152   83  Linux
/dev/sdd3         8390656    20971519     6290432    5  Extended
/dev/sdd5         8392704    12587007     2097152   83  Linux
/dev/sdd6        12589056    16783359     2097152   83  Linux

第一列分区位置,第二列起始点,第三列结束点,第四列分区大小,第五列分区的id,第六列分区类型

w:保存退出

让内核刷新分区表:
kpartx -a /dev/sdd
如果报错可以
partprobe /dev/sdd
或者重启

格式化(也叫创建文件系统)

[root@localhost ~]# mkfs.xfs /dev/sdd1  //格式化是对分区进行的
meta-data=/dev/sdd1              isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

挂载
挂载就是挂载到某个目录中,在目录就可以访问硬盘的分区,类似于C:D: 或者插U盘时的H等都是window自动挂载了这些。

[root@localhost /]# mkdir /tmp/test-gsc/sdd1  //创建文件夹
[root@localhost /]# mount /dev/sdd1 /tmp/test-gsc/sdd1/   //挂载到上面的目录
[root@localhost sdd1]# touch sdd1file.txt
[root@localhost sdd1]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 21 18:46 sdd1file.txt
[root@localhost test-gsc]# umount /dev/sdd
sdd   sdd1  sdd2  sdd3  sdd5  sdd6  
[root@localhost test-gsc]# umount /dev/sdd1 
[root@localhost test-gsc]# cd sdd1/
[root@localhost sdd1]# ls

能创建文件,取消后查看文件,没有文件,确定之前挂载完成,重新挂载。

这个挂载只是手动临时生效的重新启动后就会失效。所以要进行开机自动挂载操作。

[root@localhost sdd1]# blkid
/dev/sdd1: UUID="8b3bbbd4-3085-4d05-9a97-45142462e7d7" TYPE="xfs" 
找到相对的这一条。
[root@localhost sdd1]# vi /etc/fstab   //修改这个文件
[root@localhost sdd1]# cd ..
[root@localhost test-gsc]# umount /dev/sdd1   //取消挂载
[root@localhost test-gsc]# mount | grep sdd1  //查看sdd1的挂载,没有
[root@localhost test-gsc]# mount -a   //重新加载/etc/fstab文件,没有挂载的重新挂载
[root@localhost test-gsc]# mount | grep sdd1 //插看sdd1的挂载
/dev/sdd1 on /tmp/test-gsc/sdd1 type xfs  (rw,relatime,seclabel,attr2,inode64,noquota)   //查到一个挂载点
[root@localhost test-gsc]# 

fstab 文件


#
# /etc/fstab
# Created by anaconda on Mon Oct 14 15:18:56 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=2f597dda-b97e-4756-8610-3822538ea536 /boot                   xfs     defaults        0 0
/dev/mapper/centos-tmp  /tmp                    xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
PARTUUID=225d8ecd-2268-4a3f-8203-cefa17e92c7d /sdb1			 xfs defaults		0 0
PARTUUID=1056505a-716e-4fc1-95a1-fb202d7fe4a0 /sdb2			 xfs defaults		0 0
UUID=8b3bbbd4-3085-4d05-9a97-45142462e7d7 /tmp/test-gsc/sdd1		xfs	defaults	0 0

最后一行就是新添加的。

parted分区工具GPT的分区的步骤:
步骤同上:

如果用同一块硬盘进行操作的话要先删除/etc/fstab文件中的分区挂载,清空硬盘分区操作。
有个指令可以快速的删除这些信息:
dd if=/dev/zero of=/dev/sdd bs=2M count=1
用这个方法覆盖硬盘存储分区信息的部分。

这里就用第二块硬盘了。sde硬盘。

[root@localhost test-gsc]# parted /dev/sde   
//进入工具
GNU Parted 3.1
Using /dev/sde
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Error: /dev/sde: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)                                    
Disk /dev/sde: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 
(parted) mklabel gpt  //设置分区表为gpt
(parted) print      //查看分区情况
(parted) mkpart p1 1M 2G     //建立第一个分区 从1M到2G  p1 是名字 可以随意
(parted) mkpart primary 2G 3G   
(parted) rm 2   //删除2号分区。也就是print看到的Number
(parted) mkpart p2 2G 3G 
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sde: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2000MB  1999MB               p1
 2      2000MB  3000MB  1000MB               p2

(parted)                            

按q退出

依旧如上:
格式化 挂载。

[root@localhost test-gsc]# ll /dev/sde*
brw-rw----. 1 root disk 8, 64 Oct 21 19:16 /dev/sde
brw-rw----. 1 root disk 8, 65 Oct 21 19:16 /dev/sde1
brw-rw----. 1 root disk 8, 66 Oct 21 19:16 /dev/sde2
[root@localhost test-gsc]# mkfs.xfs /dev/sde1
meta-data=/dev/sde1              isize=512    agcount=4, agsize=121984 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=487936, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost test-gsc]# mkdir /tmp/test-gsc/sde1
[root@localhost test-gsc]# mount /dev/sde1 /tmp/test-gsc/sde1/
[root@localhost test-gsc]# mount |grep /dev/sde
/dev/sde1 on /tmp/test-gsc/sde1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

完成。

可以再到parted工具里查看一下状态。

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2000MB  1999MB  xfs          p1
 2      2000MB  3000MB  1000MB               p2

可以发现p1 的文件系统已将发生改变了。

PS : mkfs.xfs 格式化是对分区操作的。
        umount取消挂载,可以写分区也可以写挂载点。
        使用gpt分区并且格式化是会出翔UUID和PARTUUID,其中这个UUID是用来描述文件,表示本身的,而PARTUUID则是用于挂载使用的,填写fstab配置文件时要是用PARTUUID来进行。

你可能感兴趣的:(linux的存储)