代码改变世界

磁盘构造/msdos分区(fdisk)格式化(mkfs)和挂载

2018-10-04 16:20  烟雨楼人  阅读(2831)  评论(0编辑  收藏  举报

分区不是必要的,分区是与系统盘分开,防止数据丢失。

磁盘使用流程:查看磁盘(fdisk -l---分区---格式化(创建文件系统)----挂载(自动挂载)

分区表类型:msdos(一般是系统分区 gpt(一般是数据分区)

Msdos(Microsoft Disk Operating System,):最多支持4个分区,单分区最大2T.

GptGUID Partition Table,其含义为“全局唯一标识磁盘分区表”):没有分区数量限制,单分区最大18EB

msdos只支持4个分区,所以若需多个分区,可以用扩展分区.主分区分完后,其他是扩展分区,在扩展分区里区分逻辑分区,由扩展分区管理.扩展分区只能有一个,负责管理逻辑分区,不能进行格式化.主分区能当引导分区用,逻辑分区不能,其他存储数据都一样.主分区和逻辑分区可以格式化.主分区不是必须的,一般会将硬盘所有容量给扩展分区.

Msdos分区表类型:分区表信息会写在磁盘头,容量有限,故最多只支持4个分区.而在扩展分区里会记录分区表,就可以建多个逻辑分区了.一般都是分一个主分区,其他全部空间给扩展分区,然后在里面分配逻辑分区

主分区和扩展分区编号是1-4,逻辑分区时5-over...

针对新的磁盘,创建完成保存退出后,会自动更新分区表信息,故旧磁盘需partx -a device_name  (a --add )

查看磁盘:ll  /dev/sd*

查看磁盘:fdisk -l 

[root@lbg ~]# ll /dev/sd*

brw-rw---- 1 root disk 8,  0 Oct  4 16:30 /dev/sda

brw-rw---- 1 root disk 8,  1 Oct  4 16:30 /dev/sda1

brw-rw---- 1 root disk 8,  2 Oct  4 16:30 /dev/sda2

brw-rw---- 1 root disk 8,  3 Oct  4 16:30 /dev/sda3

brw-rw---- 1 root disk 8, 16 Oct  4 16:30 /dev/sdb

[root@lbg udev]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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: 0x000c5fa7

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *      2048      821247      409600   83  Linux

/dev/sda2          821248     1230847      204800   82  Linux swap / Solaris

/dev/sda3         1230848    41943039    20356096   83  Linux

介绍说明:Disk /dev/sda: 21.5 GB, 21474836480 bytesbytes=B代表字节,bit=b代表位), 41943040 sectors(扇区)

heads:表示磁头数。   sectors:扇区   track:磁道。cylinders:柱面。

磁盘的大小=一个柱面大小*柱面的总数=磁头数量*每个磁道上的扇区数*一个扇区大小*柱面总数

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"Sector)。每个扇区储存512字节(相当于0.5KB.操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个""block)。这种由多个扇区组成的"",是文件存取的最小单位。""的大小,最常见的是4KB,即连续八个 sector组成一个 block

磁盘正在使用(有挂载就表示正在使用)不能用不同的方式分区,需先卸载(umount).但用同一种分区方法时,当前设备是否在用不受影响.

查看文件系统磁盘使用情况: df  -Th  (-T  type  -h  human-readable)

[root@lbg udev]# df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on

/dev/sda3      xfs        20G  3.3G   17G  17% /

devtmpfs       devtmpfs  478M     0  478M   0% /dev

tmpfs          tmpfs     493M     0  493M   0% /dev/shm

/dev/sr0       iso9660   4.3G  4.3G     0 100% /mnt/rhel

/dev/sda1      xfs       397M  146M  251M  37% /boot


磁盘分区步骤:

[root@lbg ~]# fdisk -l           --显示已格式化的磁盘

[root@lbg ~]# ll /dev/sd*        ---显示所有磁盘

通过上面两个命令的对比可查看没有分区的磁盘。

sdb分区:   fdisk   /dev/sdb

其中:d(删除分区)  n(添加分区) p(打印现有分区表) q(退出不保存) w(保存并退出)

帮助(menu)

n  创建分区(new partition)

p  分区表信息(partition table)

q  quit

w  write

d-> delete

l--> 列出已知分区类型

Command (m for help): n            --添加分区

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

其中 extended:是扩展分区,primary 是主分区.

其中给定分区大小时:+加单位就是容量,不加单位就是用柱面算.

Select (default p): p

Partition number (1-4, default 1): 1

Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): +1G

Partition 1 of type Linux and of size 1 GiB is set

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1         2097152     4194303     1048576   83  Linux

Select (default p): e       ----设置扩展分区,一般将剩下的所有容量都给扩展分区,故一直直接回车就行

Partition number (2-4, default 2): 

First sector (2099200-4194303, default 2099200): 

Using default value 2099200

Last sector, +sectors or +size{K,M,G} (2099200-4194303, default 4194303): 

Using default value 4194303

Partition 2 of type Extended and of size 1023 MiB is set

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     2099199     1048576   83  Linux

/dev/sdb2         2099200     4194303     1047552    5  Extended

Command (m for help): n       ----再添加新的分区--逻辑分区

Partition type:

   p   primary (1 primary, 1 extended, 2 free)

   l   logical (numbered from 5)                -----有了扩展分区后,再分区就有逻辑分区 

Adding logical partition 5

First sector (2101248-4194303, default 2101248): 

Last sector, +sectors or +size{K,M,G} (2101248-4194303, default 4194303): +500M

Partition 5 of type Linux and of size 500 MiB is set

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     2099199     1048576   83  Linux

/dev/sdb2         2099200     4194303     1047552    5  Extended

/dev/sdb5         2101248     3125247      512000   83  Linux

刷新分区表:partx -a /dev/sdb

查看分区命令 fdisk -l /dev/sdb(从内存看 fdisk /dev/sdb(从磁盘里看) p查看的结果不同的话, partx -a /dev/sdb (刷新分区表a--add).不一致的原因可能是旧磁盘以前有分区表.


格式化步骤:

mkfs命令(make file system)格式化就是创建文件系统。(文件系统类型:6ext4 ,7xfs )

一个分区一个分区地格式化:

mkfs.ext4  /dev/sdb1  或者 mkfs -t ext4  /dev/sdb1                          --- (t--type)

创建文件系统相当于在物理分区制作了一层内容,用来记录文件的存放位置等等这些信息。你会发现创建了文件系统的磁盘你还没用空间就少了十几M,,就是这个原因.

判断格式化是否成功:

格式化后就可查看该块设备信息:blkid, 有了该设备就说明格式化成功.没格式化的不在其中显示.(blkidblockid)

[root@lbg ~]# blkid

/dev/sda1: UUID="83d6abb5-1bda-497d-a33e-f11e601a6ff0" TYPE="xfs" 

/dev/sda2: UUID="957ffd57-d1fc-40d5-87c2-5f57f15d6a11" TYPE="swap" 

/dev/sda3: UUID="37765c8e-208a-4358-b643-7beeca05683c" TYPE="xfs" 

/dev/sdb1: UUID="3c914c37-dc34-4fcf-932d-f4ea7753d2dc" TYPE="xfs" 

/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

 

挂载:

创建空目录然后挂载mount /dev/sdb1  /mnt/cs (手动挂载临时生效,重启失效.)

再红帽系统里有lost+found 文件夹说明挂载成功.或者直接mount查看是否挂载成功。

设置开机自动挂载:

挂载的本质是挂载设备上的文件系统,将挂载命令写到下面两种配置文件都可:

[root@lbg rhel]# vim /etc/rc.d/rc.local

[root@lbg rhel]# vim /etc/fstab 

/etc/rc.d/rc.local是操作系统启动最后一个读取的脚本文件,操作系统基本已经启动了,命令写在这里面,可以开机自动挂载.开机挂载,能挂,但是不太合适,可以在这里挂载镜像,挂载磁盘,可能启动软件需要的服务需要用到磁盘中的东西,这时候就不合适了.

/etc/fstab 中内容大致如下:

UUID=37765c8e-208a-4358-b643-7beeca05683c      /      xfs     defaults        0 0

UUID=83d6abb5-1bda-497d-a33e-f11e601a6ff0      /boot   xfs     defaults        0 0

UUID=957ffd57-d1fc-40d5-87c2-5f57f15d6a11      swap  swap       defaults       0 0

/dev/sr0                     /mnt/rhel     iso9660     defaults       0 0

依次是:设备,挂载点,文件系统类型,文件系统挂载属性(默认defaults),是否备份(0就行),是否进行文件系统检查(0,不检查就行,否则开机时间过长)0 ---不检查  1 ---优先度高的检查   2----优先度低的检查

其中 UUid的值可以通过blkid查看.记着后面三个 defaults 0 0 .  /etc/fstab 里面挂载点有/boot,故开机运行时很早,专门用来做自动挂载./etc/rc.d/rc.local可以写很多其他命令,比如启动服务.挂载镜像.


检测/etc/fstab修改是否正确:

注意:vim  /etc/fstab.--系统重启生效.若写错了,则系统无法正常开机,必须测,若写错了,则操作系统只能看,root用户也无法改,检测时  umount /dev/sdb1mount -a --检测/etc/fatab是否正确.mount -a 是自动挂载 /etc/fstab 里面的东西,若无任何报错输出则表示/etc/fstab修改无问题。)


修复文件系统

#fsck   -a      /dev/sdb1        

#fsck   -y      /dev/sdb1