4.磁盘管理

1.什么是磁盘

硬盘作为计算机/服务器的存储介质,文件最终都是存储到硬盘中的。 从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘 (Solid State Disk, SSD)。

1.1机械硬盘

机械硬盘采用磁性碟片来存储数据 。

  • 物理结构:HDD由一个或多个旋转的磁盘组成,这些磁盘被密封在一个保护性外壳内,以防止灰尘和其他污染物的侵入。

  • 读写机制:数据通过磁头读写,磁头悬浮在磁盘表面,不接触磁盘,以避免磨损和损坏。

  • 速度:HDD的速度受限于磁盘的旋转速度,通常为5400 RPM(每分钟转数)或7200 RPM。

1.2固态硬盘

而固态硬盘通过闪存颗粒来存储数据。

  • 物理结构:SSD使用闪存芯片来存储数据,没有移动部件,因此更耐震、更安静,且通常更轻。

  • 读写机制:数据通过电子方式读写,没有物理移动部件,因此读写速度更快。

  • 速度:SSD的读写速度通常远高于HDD,提供更快的数据访问速度。

2.分区表

​ 硬盘分区之后,就必须要有地方记录下每一个分区的基础信息,包括起始和终止位置等,这个保存 分区信息的东西叫分区表。分区表有MBR和GPT之分 。

2.1MBR分区表

2.2GPT分区表

电子数据存储相关(二)应知必懂的两种磁盘分区类型:MBR 和 GPT - 知乎 (zhihu.com)

3.磁盘分区实例
3.1磁盘管理常用命令

df: 检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息 。

-h : 以人类能看懂的方式显示
-a : 显示虚拟文件系统
-i : 显示inode信息
-T : 显示文件系统类

du:显示文件和目录的大小

-s : 显示指定目录的大小
-k :以kb为单位显示大小
-m : 以mb为单位显示大小

fdisk -l:列出所有分区表

lsblk:列出所有可用的块设备信息的命令。这个命令会显示每个块设备的名称、挂载点、分区大小、分区类型等信息。 不显示分区之后未挂载的点。

blkid:查看磁盘的uuid,方便在/etc/fstab挂载。

3.2 fdisk分区

分区之后必须要格式化,也就是安装文件系统

[root@monitor ~]# fdisk /dev/sdb  # 对指定磁盘操作
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.
​
​
Command (m for help): p  # 打印已分区信息
​
Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 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: 0x000eda04
​
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2621439     1309696   8e  Linux LVM
/dev/sdb2         2621440     6815743     2097152   8e  Linux LVM
​
Command (m for help): n   # 新建分区
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): # 默认primary主分区类型
Using default response p
Partition number (3,4, default 3): # 分区编号
First sector (6815744-10485759, default 6815744):
Using default value 6815744
Last sector, +sectors or +size{K,M,G} (6815744-10485759, default 10485759): +1G   # 指定内存大小
Partition 3 of type Linux and of size 1 GiB is set
​
Command (m for help): P
​
Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 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: 0x000eda04
​
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2621439     1309696   8e  Linux LVM
/dev/sdb2         2621440     6815743     2097152   8e  Linux LVM
/dev/sdb3         6815744     8912895     1048576   83  Linux
​
Command (m for help): W   # 退出保存
The partition table has been altered!
​
Calling ioctl() to re-read partition table.
​
WARNING: Re-reading the partition table failed with error 16: Device or resource busy. # 显示正在使用,下次重启之后生效
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
​
# P 打印分区信息
# m 查看帮助
# n 新建分区
# d 删除分区
# w 退出保存
​
​
​
​
注意:分区之后需要格式安装文件系统
​
mkfs -t  (xfs|ext2|ext3|ext4)   磁盘     ==    mkfs.(xfs|ext2|ext3|ext4)  磁盘
​
​
[root@monitor ~]# mkfs -t xfs /dev/sdb3
meta-data=/dev/sdb3              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
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
​
3.3 parted分区

# 设置磁盘分区表类型,/dev/xxx不能为lsblk 里面的part,必须是一块完整的硬盘。msdos是MBR分区表。
parted -s /dev/xxx mklable  (gpt |  msdos) 
​
​
# -s免交互式创建分区,  FS_TYPE()指定了也默认ext2,离开parted界面后自己格式化
parted -s /dev/xxx   mkpart  PART_TYPE(primary | extend)     FS_TYPE     START     END
​
parted -s /dev/sdb mkpart primary   90%   92%   # 创建分区
parted -s /dev/sdb print   # 查看分区
parted -s /dev/sdb rm  分区编号   # 查看分区查看里面看要删除分区编号

4.挂载及挂载磁盘信息

自己添加的磁盘和磁盘分区要挂载才能使用。

4.1 临时挂载

mount  /dev/XXX   挂载目录
eg:  mount  /dev/sdb1   /media
mount -a # 检查是否挂载正常
umount  /dev/sdb1  # 解除挂载

4.2 永久挂载/etc/fstab

blkid查看需要挂载设备的uuid,注意记住需要挂载设备的文件系统类型.
​

[root@monitor ~]# blkid
/dev/sdb1: UUID="2KyNAq-kbSW-Fd1m-1eXz-fH91-RkYL-0ZQL9d" TYPE="LVM2_member"
/dev/sdb2: UUID="6Rcsnk-ya9X-KxZp-Ufej-9sPw-P2zj-3fUMX8" TYPE="xfs"
……
​
​
如果要挂载/dev/sdb1,就复制UUID="2KyNAq-kbSW-Fd1m-1eXz-fH91-RkYL-0ZQL9d" TYPE="xfs"
vim /etc/fstab
UUID="2KyNAq-kbSW-Fd1m-1eXz-fH91-RkYL-0ZQL9d"       /mnt   xfs  defaults 0   0
​
重启之后就可以看到使用空间了

4.2 永久挂载/etc/rc.local下面,把mount命令开机之后会自动执行挂载。

5.分区扩容

1.fdisk 扩容

目标sdc1 目前有1G,我们需要扩展到2G,步骤如下:
1.fdisk  删除 不要退出保存如何新建磁盘
Command (m for help): d
Selected partition 1
Partition 1 is deleted
​
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +2G
Partition 1 of type Linux and of size 2 GiB is set
​
Command (m for help): P
​
Disk /dev/sdc: 5368 MB, 5368709120 bytes, 10485760 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: 0x20c11600
​
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     4196351     2097152   83  Linux
​
Command (m for help): W
​
2.扩展文件系统
挂载起来在扩展,如果之前是xfs文件系统: xfs_growfs    /挂载目录
如果之前是ext文件系统 :               resize2fs     /dev/……(设备路径)

2.parted扩容

1.进入交互模式:parted /dev/……

3.growpart进行磁盘分区扩容

6.LVM

LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。实际上是将底层的硬盘,做 成了一个大的存储池,上层的磁盘分区不是直接从硬盘上分配,而是从它存储池子中分配,为我们提供 了逻辑概念上的硬盘,使得文件系统不再关心底层物理硬盘的概念。

1. 添加磁盘
2.为磁盘分区
3.设置磁盘分区id为8e
4.pvcreate  将分区创建生成物理卷
    pvdisplay 检查有哪些物理卷
    pvremove  删除物理卷
5.vgcreate  将物理卷组成卷组
    vgdiaplay 检查卷组
    vgremove 删除卷组
    vgextend 如果卷组已经存在,需要添加新的物理卷内存给他使用
6.lvcreate  分配卷组内存给卷组使用
    lvdiaplay 检查卷组
    lvremove 删除卷组
    lvextend 如果卷组已经存在,需要添加新的物理卷内存给他使用
7.格式化逻辑卷
    
2~3:    
fdisk  /dev/sdc
n # 新建分区
t  # 修改分区id
1  # 分区号
8e  # 将1分区的id改为8e
t  
2
8e
w  # 保存
​
​
4:
pvcreate /dev/sdc1
pvcreate  /dev/sdc2
​
5.
vgcreate  vg_name    /dev/sdc1   /dev/sdc2
vg_name : 卷组的名字
​
6.lvcreate 
lvcreate -L 100M    -n    lv_name    vg_name
​
-L 100M : 指定 逻辑卷的大小
​
7.格式逻辑卷(ext,xfs)
mkfs.xfs   /dev/mapper/vg_name
7.疑问解决

1.为什么需要格式化创建文件系统?文件系统的作用是什么?

解:格式化创建文件系统是一个重要的步骤,它为存储设备(如硬盘、固态硬盘、USB闪存驱动器等)提供了一套组织和存储数据的标准方式。以下是格式化和文件系统的几个关键作用:

  1. 初始化存储空间:格式化会清除存储设备上的所有数据,为新的文件系统创建做准备。

  2. 定义数据结构:文件系统定义了数据如何在存储设备上组织。这包括目录结构、文件分配表(FAT)、索引节点表(UNIX/Linux系统)等。

  3. 提供数据访问接口:文件系统提供了一套标准的操作接口,使得操作系统和应用程序能够读取、写入、移动和删除文件。

  4. 错误检测和恢复:许多文件系统具备错误检测和恢复机制,如循环冗余检查(CRC)和校正代码,以确保数据的完整性。

  5. 权限和安全:文件系统支持用户权限和安全策略,控制对文件和目录的访问。

  6. 空间管理:文件系统负责跟踪存储空间的使用情况,包括哪些部分已使用,哪些部分空闲,以及如何有效利用空间。

总之,格式化和创建文件系统是确保存储设备能够以一种标准化、高效和安全的方式被操作系统和应用程序访问的基础。

2.什么是分区对齐,分区对齐有什么作用?

解:

1.分区对其可以规则化管理空间,减少碎片空间。

2.当分区对齐时,数据块可以存储在连续的物理扇区中,减少了磁盘头移动的次数,从而加快了数据访问速度 。

3.减少寻找数据时间,因为连续的空间里检查数据读取的次数减少。

4.读取次数减少,磁盘寿命会更长。

3.parted 设置分区类型需要注意的点?

parted /dev? mklabel (gpt | msdos ) 写的磁盘不能是part的部分。

4.分区表MBR和GPT的区别?

解:

1.MBR只能支持少于2TB的磁盘,GPT没有限制。

2.MBR只能有有四个主分区,GPT最多可达128个分区。

3.MBR只有一个分区表,被损害是无法数据恢复,GPT有备份分区表,可以护肤数据。

4.MBR位于第一个扇区,GPT位于硬盘的开始和中间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值