Linux之磁盘管理——磁盘分区

磁盘管理

磁盘分区(硬件的物理设备,在逻辑上划分边界)

  • 盘片: 磁盘中有多个盘片,堆叠起来的,通过磁头去读取盘片信息
  • 磁道:同一个盘片中划分的同心圆,在出厂的时候已经弄好了
  • 柱面:不同盘片的相同磁道,组成的圆柱体
  • 扇区基本单位同一时间,划过的圆弧,一般大小为512bytes、一个块大小4k

主分区:可以直接建立文件系统
扩展分区:不可以格式,不可以建立文件系统
逻辑分区:可以创建文件系统,存放数据
Linux之磁盘管理——磁盘分区_第1张图片
Linux之磁盘管理——磁盘分区_第2张图片

两种分区类型:

MBR
Master Boot Record 主引导记录 512bytes
boot loader: 引导加载器,是一个程序,硬盘引导程序。占用446个bytes,
功能是检查,计算机自检完成之后,将控制权交给bootloader
FAT: 文件分区表,用来记录我们的分区信息, 64个bytes, 每个分区占16个bytes
MBR能支持4个主分区或者3个主分区和一个扩展分区(设置逻辑分区)
Magic Numer: 2个bytes,55AA, 标识MBR是否有效

GPT
GUID Partition Table: 全局唯一标识分区
Linux之磁盘管理——磁盘分区_第3张图片

LBA0 (MBR兼容部分)与MBR模式相似的,这个兼容区块也分为两个部份,一个就是跟之前446
bytes相似的区块,储存了第一阶段的开机管理程序!而在原本的分区表的纪录区内,这个兼容模式仅放入一个特殊标志的分区,用来表示此磁盘为GPT格式之意。而不懂GPT分割表的磁盘管理程序,就不会认识这块磁盘,除非用户有特别要求要处理之,否则该管理软件不能修改此分区信息,进一步保护了此磁盘!

LBA1 (GPT表头纪录)这个部份纪录了分区表本身的位置与大小,每128字节标识一个分区(UEFI标准中的最低要求:分区表最小要有16384字节)同时纪录了备份用的GPT分区(就是前面谈到的在最后34 个LBA 区块) 放置的位置, 同时放置了分区表的检验机制码(CRC32 ),操作系统可以根据这个检验码来判断GPT 是否正确。若有错误,还可以通过这个纪录区来取得备份的GPT(磁盘最后的备份区域) 来恢复GPT 的正常运作

相较于MBR,GPT具有以下优点

  • 得益于LBA提升至64位,以及分区表中每项128位设定,GPT可管理的空间近乎无限大(单一分区8ZB)
  • 分区数量几乎没有限制,由于可在表头中设置分区数量的大小(目前windows仅支持最大128个分区)
  • 自带保险,由于在磁盘的首尾部分各带一个GPT表头,任何一个受到破坏后都可以通过另一份恢复,极大地提高了磁盘的抗性
  • 循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率
  • GPT提供了16字节的GUID来标识分区类型,使其更不容易产生冲突
  • 每个分区都可以拥有一个特别的名字,最长72字节

为什么要创建磁盘分区

1.数据安全:

主要方面:只用一个分区,若遇到系统需要重装或者分区需要进行格式化等,原有的重要文件无法在本硬盘保留,而若提前进行了合理分区,则用户数据不会收到影响

次要方面:我们知道,同等外部条件下,读取越频繁,磁盘越容易受损,我们把读写频繁的目录挂载到一个单独的分区,可以把磁盘的损伤控制在一个集中的区域。

2.效率(针对目前常用的机械硬盘):

主要方面:分区将数据集中在某个磁柱的区段,当有数据要读取自该分区时, 硬盘只会搜寻相应区段,有助于数据读取的速度与效能的提升!

另一方面:磁盘不同区域(内圈与外圈,)的读取速度是不同的,磁盘越大,差别越明显,通常将读写频繁的目录挂载到读取速度更快的区域(总体来说,是推荐外圈),不常使用和变更的数据放在稍慢的区域将是一个比较好的选择。

磁盘至少要创建哪些分区

  • /:根分区
  • /swap:交换分区
  • /boot

磁盘管理相关命令及作用

  • fdisk 磁盘管理主要命令
  • fdisk -l 查询所有硬盘的分区表信息
  • df -h 查看文件系统使用情况
  • mount 挂载命令
  • umount 取消挂载命令
  • lsblk 列出块设备信息
  • blkid 列出文件系统名称与设备的UUID等数据
  • free -m 查看内存信息
  • mount -a 查看是否有文件系统是否未挂载,如果有未挂载的文件系统类型,出现提示,反之则
    不会出现

fdisk命令创建分区步骤

  1. lsblk 列出块设备信息
  2. fdisk /dev/sda 进行磁盘分区
  3. mkfs.xfs /dev/sda1 创建文件系统类型、格式化
  4. 使用mount 命令实现临时挂载 、
    修改vim /etc/fstab 文件,重启实现开机自动挂载即永久挂载

fdisk命令创建分区案例

案例1

1、新建两个分区,他们的大小分别为1G,分别将他们挂载在/apple和/orange目录下。(mount 永久挂载)

列出块设备即硬盘

当前有一个大小为20G,SATA类型的硬盘sda,
sro光盘,我们的映像文件
大小为30G的,NVMe类型的硬盘nvme0n1

[root@redhat ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
sr0            11:0    1  8.8G  0 rom  /run/media/root/RHEL-8-3-0-Base
nvme0n1       259:0    0   30G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   29G  0 part 
  ├─rhel-root 253:0    0   27G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]

使用fdisk命令进行分区

[root@redhat ~]# fdisk /dev/sda

Welcome to fdisk (util-linux 2.32.1).
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.
Created a new DOS disklabel with disk identifier 0x224ee20f.

Command (m for help): m     //查看选项帮助

Help:

  DOS (MBR)
   a   toggle a bootable flag    
   b   edit nested BSD disklabel      
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition       删除一个分区
   F   list free unpartitioned space     //
   l   list known partition types     列出已知分区的位置
   n   add a new partition       增加新的分区
   p   print the partition table      打印分区表
   t   change a partition type       改变分区类型
   v   verify the partition table     验证分区表
   i   print information about a partition    打印一个分区的信息

  Misc
   m   print this menu      打印此帮助菜单
   u   change display/entry units     改变
   x   extra functionality (experts only)   额外功能

  Script
   I   load disk layout from sfdisk script file   
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit    保存并退出
   q   quit without saving changes       退出不保存

  Create a new label
   g   create a new empty GPT partition table    创建一个新的空的GPT格式的分区表
   G   create a new empty SGI (IRIX) partition table    创建一个新的空的SGI格式的分区表
   o   create a new empty DOS partition table     创建一个新的空的DOS格式的分区表
   s   create a new empty Sun partition table     创建一个新的空的Sun格式的分区表


Command (m for help): n
Partition type   //分区类型
   p   primary (0 primary, 0 extended, 4 free)   //主分区
   e   extended (container for logical partitions)   //扩展分区(逻辑分区容器)
Select (default p): p    
Partition number (1-4, default 1):     //分区号
First sector (2048-41943039, default 2048):      //第一个扇区 ,默认就行
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +1G   //上一个扇区

Created a new partition 1 of type 'Linux' and of size 1 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 
First sector (2099200-41943039, default 2099200): 
Last sector, +sectors or +size{K,M,G,T,P} (2099200-41943039, default 41943039): +1G

Created a new partition 2 of type 'Linux' and of size 1 GiB.

Command (m for help): p
Disk /dev/sda: 20 GiB, 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
Disklabel type: dos
Disk identifier: 0x86dda10f

Device     Boot   Start     End Sectors Size Id Type
/dev/sda1          2048 2099199 2097152   1G 83 Linux   //主分区
/dev/sda2       2099200 4196351 2097152   1G 83 Linux   //主分区



Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

查看磁盘情况

[root@redhat ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
├─sda1          8:1    0    1G  0 part 
└─sda2          8:2    0    1G  0 part 
sr0            11:0    1  8.8G  0 rom  /run/media/root/RHEL-8-3-0-Base
nvme0n1       259:0    0   30G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   29G  0 part 
  ├─rhel-root 253:0    0   27G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]

格式化创建文件系统类型

[root@redhat ~]# mkfs.xfs /dev/sda1    //xfs类型
meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=262144, 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@redhat ~]# mkfs.xfs -f /dev/sda2    //加-f进行强制转换,否则报错
meta-data=/dev/sda2              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=262144, 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@redhat ~]# mkdir /{apple,orange}

mount实现临时挂载

[root@redhat ~]# mount /dev/sda1 /apple
[root@redhat ~]# mount /dev/sda2 /orange
[root@redhat ~]# mount   //查看所有挂载信息
/dev/sda1 on /apple type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
/dev/sda2 on /orange type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
[root@redhat ~]# df -h   //查看当前文件系统的使用情况
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               866M     0  866M   0% /dev
tmpfs                  896M     0  896M   0% /dev/shm
tmpfs                  896M  9.7M  886M   2% /run
tmpfs                  896M     0  896M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   27G  5.3G   22G  20% /
/dev/nvme0n1p1        1014M  240M  775M  24% /boot
tmpfs                  179M  1.2M  178M   1% /run/user/42
tmpfs                  179M  3.5M  176M   2% /run/user/0
/dev/sr0               8.9G  8.9G     0 100% /run/media/root/RHEL-8-3-0-BaseOS-x86_64
/dev/sda1             1014M   40M  975M   4% /apple
/dev/sda2             1014M   40M  975M   4% /orange

修改/etc/fstab文件系统表实现永久挂载

查看设备UUID以及文件系统类型

[root@redhat ~]# blkid
/dev/nvme0n1: PTUUID="c945b4cd" PTTYPE="dos"
/dev/nvme0n1p1: UUID="612b04fd-ae2c-44ef-898c-8e00e8052d27" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="c945b4cd-01"
/dev/nvme0n1p2: UUID="KU5Le7-Vmv4-CVLN-UrZv-JEl6-wgBT-G7remj" TYPE="LVM2_member" PARTUUID="c945b4cd-02"
/dev/sda1: UUID="f6fe755c-49e0-4320-87ef-529a422caa11" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="86dda10f-01"
/dev/sda2: UUID="5a8712c4-b3f0-4c87-b20c-fd3ab3e66a34" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="86dda10f-02"
/dev/sr0: BLOCK_SIZE="2048" UUID="2020-10-09-06-40-37-00" LABEL="RHEL-8-3-0-BaseOS-x86_64" TYPE="iso9660" PTUUID="4c667155" PTTYPE="dos"
/dev/mapper/rhel-root: UUID="7ad64e06-cc3a-4f19-8dbd-600e08e78214" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="3f43edf6-4b3e-4a34-9db6-f366c81379a0" TYPE="swap"

修改文件
第一个是设备的UUID也可以是设备名称
第二个是挂载点目录
第三个是文件系统类型
第四个是文件系统的挂载参数,一般都为默认
最后两个0,第一个0开始是否备份,第二个0 开机是否检查

[root@redhat ~]# vim /etc/fstab


# /etc/fstab
# Created by anaconda on Wed Aug  4 03:53:22 2021
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=612b04fd-ae2c-44ef-898c-8e00e8052d27 /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   none                    swap    defaults        0 0

UUID=f6fe755c-49e0-4320-87ef-529a422caa11  /apple  xfs   defaults  0 0
UUID=5a8712c4-b3f0-4c87-b20c-fd3ab3e66a34  /orange  xfs  defaults  0 0  

重启使配置生效

[root@redhat ~]# reboot

如果无法正常启动,表示之前配置文件系统信息出错,会提示输入root密码进入单用户模式 如果要想启动需要修改文件系统信息,vim
/etc/fstab,
注意:千万不要误操作前三个系统分区否则会很麻烦

重启成功的话
查看挂载,目前以实现永久挂载即开机自动挂载

[root@redhat ~]# mount | grep sda
/dev/sda2 on /orange type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
/dev/sda1 on /apple type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)

案例二

实现http文件共享红帽软件包(/dev/sr0),通过自动挂载

自动挂载实现工具autofs,运行autofs后用户就不需要手动完成系统的挂载和卸载

查看是否httpd

没有的话使用:yum install httpd -y下载

[root@redhat ~]# rpm -qa | grep httpd
centos-logos-httpd-85.8-1.el8.noarch
httpd-tools-2.4.37-39.module_el8.4.0+778+c970deab.x86_64
httpd-2.4.37-39.module_el8.4.0+778+c970deab.x86_64
httpd-filesystem-2.4.37-39.module_el8.4.0+778+c970deab.noarch

修改配置文件

[root@redhat ~]# vim /etc/httpd/conf.d/vhost.conf
<VirtualHost 192.168.159.128:80>
        ServerName 192.168.159.128
        DocumentRoot /work/gongxiang
</VirtualHost>
<Directory /work/gongxiang>
          AllowOverride none
          Require all granted
          Options +Indexes 
</Directory>


关闭httpd默认欢迎界面,否则无法实现

[root@redhat ~]# vim /etc/httpd/conf.d/welcome.conf
将里面的内容全部注释掉
# This configuration file enables the default "Welcome" page if there
# is no default index page present for the root URL.  To disable the
# Welcome page, comment out all the lines below. 
#
# NOTE: if this file is removed, it will be restored on upgrades.
#
#
 #   Options -Indexes
  #  ErrorDocument 403 /.noindex.html
#

#
 #   AllowOverride None
  #  Require all granted
#

#Alias /.noindex.html /usr/share/httpd/noindex/index.html
#Alias /poweredby.png /usr/share/httpd/icons/apache_pb2.png

创建目录

[root@redhat ~]# mkdir /work

重启服务、关闭防火墙、关闭selinux

[root@redhat ~]# systemctl restart httpd
[root@redhat ~]# systemctl stop firewalld
[root@redhat ~]# setenforce 0

安装autofs

[root@redhat ~]# yum install autofs -y

重启服务

[root@redhat www]# systemctl restart autofs

修改主配置文件
添加/public /etc/auto.httpd

[root@redhat www]# vim /etc/auto.master

#
# Sample auto.master file
# This is a 'master' automounter map and it has the following format:
# mount-point [map-type[,format]:]map [options]
# For details of the format look at auto.master(5).
#
/misc   /etc/auto.misc
/work /etc/auto.httpd

临时挂载光盘
获取光盘type

[root@redhat ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@redhat ~]# mount
/dev/sr0 on /mnt type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=0,gid=0,dmode=500,fmode=400)
     

新建文件auto.httpd文件

[root@redhat ~]# vim /etc/auto.httpd
添加如下信息
gongxiang    -fstype=iso9660,ro    :/dev/sr0

修改了主配置文件,再次重启服务

[root@redhat ~]# systemctl restart autofs

网页输入IP地址查看
Linux之磁盘管理——磁盘分区_第4张图片

你可能感兴趣的:(Linux,linux,经验分享)