Linux 是如何分区格式化磁盘并挂载使用的?

在 Linux 是去如何分区格式化一块磁盘分区的,并使用之?流程如下图

1、分区

(1)、首先要,知道一块磁盘是否有空间没有划分分区的?

划分分区是根据柱面(cylinders),有没有剩余的柱面才可以再划分分区,否则的话是不可以的。

但是要注意的是:

我们最多可以划分4个主分区,如果查看磁盘上还有剩余的柱面(cylinders)的话,也是不可再划分分区了。也就是说这些剩余的柱面

是再也没法使用了。除非重新对该磁盘划分分区。

查看是否有剩余柱面:

[[email protected] ~]# fdisk  -l /dev/sda

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00088117

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        8120     2103516   83  Linux
                      |           |
       		     \|/         \|/
           磁盘分区的开始柱面   磁盘分区的结束柱面

说明:

可以使用上述方式,查看一个磁盘的是否有空闲。因为磁盘分区是根据“柱面cylinders”,

所以,如果最后一个分区的结束柱面数小于磁盘的总的柱面数的话,表明该磁盘还有没有被划分的柱面。

如果,最后一个分区的结束柱面数等于磁盘的总的柱面数的话,该磁盘的所有柱面都被划分分区了。

(2)、使用工具:【fdisk】【sfdisk】【parted】划分分区。

【fdisk】是一个交互式的磁盘分区工具。

[[email protected] ~]# fdisk /dev/sda -->进入【fdisk】的交互交界后使用下述的命令完成磁盘分区操作
                      m         查看fdisk的帮助
		      p         列出磁盘的分区情况
		      n         创建新的分区
		      d         删除分区
                      t         指定分区使用什么系统主要是跟文件系统相对应的。
		      w         保存退出
		      q         不保存退出

这样就完成了磁盘的分区的创建。内核是自己不会识别刚创建的分区的。我们要在新创建的分区上安装软件(也就是格式化分区,也就是创建文件系统),

内核必须要知道有该分区。否则的话是无法在该分区创建文件系统的。

2、让内核识别分区,CentOS 的5版本和 CentOS 的6版本使用的工具不一样。

    CentOS 5 使用【partitions】
    CentOS 6 使用【partx】或【kpartx】

(1)、怎么知道内核是否识别到磁盘和分区呢?可以通过内核提供给用户空间的一个接口/proc 来查修内核工作的一些信息。

[[email protected] ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   83886080 sda
   8        1     204800 sda1
   8        2   62914560 sda2
   8        3    2103516 sda3
 253        0   20971520 dm-0
 253        1    2097152 dm-1
 253        2   10485760 dm-2
 253        3   20971520 dm-3

说明:上述标识的就是内核识别到的磁盘分区。如果你刚创建的分区没有列出来,就要通知内核了。

(2)、怎么样,通知内核识别新建的分区

【kpartx】是【partx】的升级版

 partx -a   DEVOCE
  kpartx -a  DEVOCE
  kpartx -f  DEVOCE 
  kpartx -fa DEVOCE

如果,内核识别到刚创建的分区了,就可以在该分区上创建指定的文件系统了。

3、格式化(创建文件系统)

(1)、选择文件系统

文件系统也是一个软件,它的作用就是直接管理磁盘上的文件的。该软件和平时的软件不同,它是直接做到内核的,通常把它做成内核的一个模块。能够实现同一类功能的软件很多,比如:可以管理磁盘上的文件的软件(文件系统)有:ext2、ext3、ext4、xfs、ufs、ceph、htrfs等。

这文件系统各有各的特点,它们在不同场景有不同的表现能力。所以,我们要根据实际应用来选择管理我们磁盘的软件(文件系统)。这得先要了解它们各有什么特点。才可以根据实际应用,选择最符合应用需要的文件系统。比如:我们要存储的一个文件通常是16M,那么就要选择一个支持大文件存储的文件系统。有些文件系统支持的磁盘块(block),很大。假如我们创建文件系统时设置 block size 大小8M,2块block就可以把一个文件存储完了。如果我们创建文件系统的时候,的block 的大小为2M.

那么我们存储16M的数据得需要8个磁盘块。这8块需要块在磁盘上不一定是连续的,那么就会产生“异步IO”。速度肯定比我们把一个文件存储在一块磁盘块慢得多。

不过,我们选择的文件系统要支持大的磁盘块才可以。

我们选择了最适合现在的应用的文件系统,操作系统支持才可以使用。因为文件系统是由内核管理的。那么怎么知道,我们使用的操作系统是否支持呢?以CentOS 6

为例:

[[email protected] ~]# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   tmpfs
nodev   devtmpfs
nodev   binfmt_misc
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   anon_inodefs
nodev   inotifyfs
nodev   devpts
nodev   ramfs
nodev   hugetlbfs
        iso9660
nodev   pstore
nodev   mqueue
nodev   selinuxfs
        ext4
nodev   rpc_pipefs
nodev   autofs

通过上述方法,就可以知道:CentOS 6 是否支持我们选择的文件系统了。

用户是通过,VFS(虚拟文件系统),与底层的很多的文件系统打交道的。VFS是底层这些文件系统的一个抽象层。所以,我们可以这样认为只要VFS支持的文件系统。Linux系统都支持。

注意:有时候我们会有这种情况:通过 linux 的官方,知道支持该文件系统,但是 CentOS 却不支持。这是什么原因呢?

因为,在编译 linux 内核源代码的时候,把支持该文件系统的功能关闭了。如果,我们又想使用该文件系统呢,只有重新编译内核。

我们可以通过查看文件 /boot/config-2.6.32-358.el6.i686  在编译内核的时候是如何配置的。我们也可以参考该配置文件,把支持该文件系统的功能开启后重新编译内核。

(2)、使用工具安装文件系统(格式化)。【mkfs】或【mke2fs】

格式化会把扇区(512)组织成块(block),而我们存储数据的时候,是以块来存储的,如:我们的块大小为2M,而我们要存储5M大小的文件。那么我们就需要使用3个磁盘块(block)来存储该文件。剩余的1M空闲,是不可用来存储其它文件数据的。它霸占了这1M的存储空间(浪费)所以,我们分区的时候要根据实际需要设定块(block)的大小。

如果我们的分区磁盘空间完全被使用完,当系统管理员进行维护的时候,就就尴尬了。所以我们得有预留空间,给管理员执行维护操作.

在 Windows 系统中,可以给不同的盘起不同的名称。Linux 系统也可以,不过称之为“卷标”。不过计算识别该分区还是根据设备号的。只不过是一个标识而已。

【mke2fs】该命令对文件系统的可定制性很强,所以选择该命令来定制符合我们需要的文件系统。

Usage: mke2fs OPTIONS... DEVICE
   -c                        检测块的好坏再创建文件系统
   -t  {ext2,ext3,ext4}     指定文件系统
   -b   {1024,2048,4096}     指定块大小 
   -L   LABEL                指定卷标
   -j   相当于 -t ext3  
   -i   #   # 创建 innode 的百分比
   -N   #   直接指定可用的inode数
   -m  # 指定预留空间占整个分区空间的百分之五。Reserved block count 预留块数。默认预留5%

4、挂载

在 Linux 系统,新的分区格式化好是不可以直接使用的,需要“挂载”才可以使用。这不像 Windows 。Linux 层次式的倒树状结构来管理目录文件,

所有目录文件都属于根(/),当然我们访问某一个目录文件也要通常根(/),一级级访问。如下图:访问/var/log/message 的过程。从下图可以看得出我们访问一个文件要多次去查 inode table.为了提高查表的速度,系统会把 innode table缓存在内存的缓冲区中。不竟访问内存的速度要比访问磁盘的速度快得多。通常也会把用户访问过的目录文件与inode的对应关系缓存起来。下一次再访问该数据就可以直接到磁盘上去取数据了。这些数据通常会保存在 buffer 和 cached 中。

我们访问一个文件要经过很多查找过程,特别是文件所在的目录比较深的时候。所以,如果我们的文件

在Linux的目录树中离根(/)越近,访问该文件会比较快点。

既然,我们访问磁盘中的文件入口只有一个(根),所以我们要把新格式化好的分区与根(/)下的一个目录关联起来。让它属于根(/)的一员。那么该目录就是

该分区设备的访问入口了,但它还是属于根(/)的.这样就使得本无层次的分区有了层次结构(分区是属于文件树的第几层)了。挂载使用【mount】命令:

mount [option]... [-t fstype] [-o option] 设备 挂载点
                   指定文件系统  设备的选项参数
-t       fstype    指定文件系统类型(一般情况下不需要指定,自动识别)
-r       readonly   只读挂载
-w       read and  write   读写挂载
-L       以卷标指定设备, mount -L MYDATA 挂载点
-U       以UUID 的方式指定设备  mount UUID=‘uuid‘ 挂载点
-a       自动挂载所有(/etc/fstab文件中定义的)的支持自动挂载的所有设备
-n       挂载时,不更新/etc/mtab文件
-o   option   其实是指定在设备上操作数据时候的动作。
     async               异步I/O 往该分区写数据时候,是采用异步方式。数据暂时存放在内存中
                         然后再把数据一次性同步到磁盘上。虽然这在一定程序上提高了写操作的
                         性能,但是对于数据安全很高的应用就直接考虑了。
     sync                同步I/O 
     atime/noatime       文件和目录被访问时是否更新最近一次的访问时间戳比较繁忙的系统见议
                         关闭。因为,更新就需要写,增加额外的工作。如果可以忽略的话可以禁
                         止。                    
    auto/noauto          设备是否支持【mount -a】自动挂载.写在 /etc/fstab 文件中的设备才
                         可以使用该方法自动挂载。
    diratime/nodiratime  目录被访问时是更新最近一次的访问时间戳
    dev/nodev            是否支持在此设备上使用设备
    exec/noexec          是否允许执行此设备上的二进制程序文件
    suid/nosuid          是否支持在此设备的文件上使用suid
    remount              重新挂载,通常用于不卸载时重新挂载指定挂载选项
    ro                   只读 
    rw                   读写
    acl                  在此设备是否支持使用facl,默认不支持。

注意:挂载时可以不指定选项,只要默认选项符合你当前系统应用的要求,默认选项有哪些呢?

defaults
        Use default options: rw, suid, dev, exec, auto,  nouser,  async,and relatime.

显然,如果我们需要用到 acl 功能,就不可以使用默认了。

Linux 系统识别设备是依靠设备号的,可以查看 /dev 目录中的设备文件(设备的一个访问入口罢了)。系统比较人性化,使用字符串来标识设备,如:sda1 表示第一块磁盘的第一分区。但是系统识别 sda1 设备还是靠设备号的。像我们还可以给分区创建一个卷标来标识该分区。所以我们挂载设备的时候标识挡挂载的设备就有多种方式了

如下:

使用UUID号来标识设备

[[email protected] /]# mount -o acl UUID="47b2cb89-20de-4adb-8cc5-e45e172d0028" /mydata
[[email protected] /]# mount | grep "\<sda3\>"
/dev/sda3 on /mydata type ext4 (rw,acl)

[[email protected] /]# mount -o acl -U 47b2cb89-20de-4adb-8cc5-e45e172d0028 /mydata
[[email protected] /]# mount | grep "\<sda3\>"
/dev/sda3 on /mydata type ext4 (rw,acl)

使用设备名称挂载设备

[[email protected] /]# mount -o acl /dev/sda3 /mydata
[[email protected] /]# mount | grep "\<sda3\>"
/dev/sda3 on /mydata type ext4 (rw,acl)

使用自定义的卷标挂载设备

[[email protected] mydata]# mount -L MYDATA /mydata
[[email protected] ~]# mount | grep "\<sda3\>"
/dev/sda3 on /mydata type ext4 (rw)

说明:虽然它们都可以标识设备并挂载成功,但是它们是有区别的,在主机很多磁盘的情况下。最好使用 UUID的方式挂载。

UUID是唯一的设备标识符,不会重复。是该设备的终身标志。如我们的***。

补充:

【blkid】查看指定块设备的信息

[[email protected] ~]# blkid /dev/sda1
/dev/sda1: UUID="12e178c7-8a7e-4d2e-a33b-b3b17f8ef842" TYPE="ext4"

修改分区的各项参数属性:

tune2fs
      -j                     ext2 升级为 ext3.  注意:只可升级不可降级。但是,我们在挂载
                             的时候可以明确指定不使用,日志功能。
      -L   LABEL             修改卷标
      -m  #                  修改预留百分比
      -O  [^]FEATURE          启用指定特性,特性前加^,表示关闭此种特性。
      -o  [^]mount-options    开始或关闭指定的挂载选项

Linux 是如何分区格式化磁盘并挂载使用的?

时间: 2024-10-12 12:18:21

Linux 是如何分区格式化磁盘并挂载使用的?的相关文章

chapter8:Linux磁盘与文件系统管理之(3)磁盘的分区,格式化,检验与挂载

当我们在系统里新增加一个硬盘时,我们要做的有: 1.对磁盘进行分区,以创建新的可用分区. 2.对分区进行格式化,以创建系统可用的文件系统. 3.对刚刚创建的文件系统进行检验. 4.在Linux上还要创建挂载点,也就是目录,并将分区挂载上来. 我们要考虑的有,分区的大小,是否加入日志功能,inode与block数量的规划,这些都是要看主机的用途来定的. 一.磁盘分区fdisk fdisk [-l] 设备名 输出后面所有设备的分区内容.如果只有fdisk -l,则会列出系统上所有的设备的分区.可用U

linux 新增硬盘分区格式化

Linux不可避免会出现磁盘空间不足,而当之前未规划LVM分区的时候,默认硬盘分区则无法动态扩容,不过也可以通过增加硬盘挂载的方式来增加系统存储空间 1.新增一块硬盘(下例新增的是/dev/sdb) 2.第二步是最重要的,就是为新硬盘设置分区(本人比较懒,就直接设置了一个分区) 3.查看分区情况,下图中目前已经将分区信息设置好了 4.格式化新增的分区(使用最新的EXT4) 5.挂载分区并使用 6.设置开机挂载硬盘(必不可少哦, 如果不设置可能开机的时候直接导致应用无法启动)

自动格式化磁盘并挂载

1.背景介绍 工作当中经常会遇到需要对新来的服务器进行安装系统,在安装系统的时候需要对磁盘进行分区.格式化.往往服务器磁盘都是2块SSD+12块SATA硬盘,在对如此之多的磁盘进行分区和格式化,真是个体力活.甚至还有许多服务器的USB插口不够用,鼠标和键盘不能同时用,而且身边又没有一个USBhub,其操作难度可想而知.于是就有了以下的故事.最初的想法是在安装操作系统的时候,只用对系统盘进行分区和格式化,剩余的磁盘待装完操作系统之后再在后台手动进行分区和格式化,再后来就想着写一个shell脚本进自

Linux系统管理-(2)--磁盘的挂载与卸载

什么是挂载: 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载: 什么是卸载: 解除此关联关系的过程称之为卸载: 注意:挂载点下原有文件在挂载完成后会被临时隐藏:     挂载方法:mount DEVICE MOUNT_POINT        mount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备        mount [-fnrsvw] [-t vfstype] [-o options] device dir    

linux下磁盘的挂载

linux下磁盘的挂载与卸载 Linux下每个文件系统都有独立的inode,block,super block等信息,这个文件系统要挂载到目录树才可以使用,将文件系统与目录树结合的操作称为挂载,反之则为卸载. 也就是说,挂载点一定是目录,而目录是进入磁盘分区(也就是文件系统)的入口. 挂载时有三点需要注意: 1.单一文件系统不应该重复被挂载到不同的挂载点(目录)中:2.单一目录不应该重复挂载多个文件系统#这两点可以类比windows磁盘与盘符的关系,一一对应.3.作为挂载点的目录理论上应该是空目

第九章 Linux系统下分区、格式化磁盘,学会挂载和卸载磁盘

1. 请查资料了解这些术语:/dev/hda, /dev/hdb, /dev/sda, /dev/sdb, 他们之间有什么区别?/dev/hda, /dev/hdb 是 IDE借口硬盘的块文件. /dev/hda  第一块IDE磁盘 : /dev/hdb 第二块IDE磁盘 /dev/sda, /dev/sdb 是SCSI接口硬盘的块文件. /dev/sda 第一块SCSI磁盘 :/dev/sdb 第二块SCSI磁盘 2. 为什么 du -b /etc/passwd  和 du -k  /etc/

linux磁盘分区格式化、挂载,文件系统

一.硬盘分区&格式化&挂载 RHEL5强制刷新分区表 partprobe /dev/sdb RHEL6强制刷新分区表 partx -a /dev/sdb 1.创建文件系统:挂载分区&格式化 mkfs.TAB 查看当前系统可创建分区类型 [[email protected] ~]# mkfs. mkfs.cramfs  mkfs.ext3    mkfs.vfat    mkfs.ext2    mkfs.msdos 格式化第一个分区   mkfs.ext3 /dev/sdb1 创建

Linux新磁盘分区格式化及挂载-fdisk命令

本文主解决linux系统的磁盘分区格式化及挂载问题注意:分区操作针对磁盘vda,sda等vda1,sda1等是分区的名称 1.检查当前磁盘分区状态 1.1.查看分区挂载情况 df -h ------------------------------------------------------------------------------- [email protected]:~# df -h Filesystem Size Used Avail Use% Mounted on udev 7.

linux增加硬盘 磁盘分区格式化及挂载

nux磁盘分区格式化及挂载 意义: 给linux 系统服务器扩容, 加一块硬盘 实验环境: virtualBox虚拟软件  + centos6.5 第一步: 添加硬件 硬盘 (我这里用virtualBox模拟) 启动 查看设备,找到新加的硬盘标识 fdisk -l 分区 fdisk /dev/sdb 说明: p --主分区[1-4] 或查看现有分区 n -- 添加一个分区 d -- 删除分区 +1G --分配1G空间 w --保存并退出 分区完成查看 fdisk -l 接下来格式化 mke2fs