4.磁盘管理
硬盘作为计算机/服务器的存储介质,文件最终都是存储到硬盘中的。从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘 (Solid State Disk, SSD)。
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闪存驱动器等)提供了一套组织和存储数据的标准方式。以下是格式化和文件系统的几个关键作用:
-
初始化存储空间:格式化会清除存储设备上的所有数据,为新的文件系统创建做准备。
-
定义数据结构:文件系统定义了数据如何在存储设备上组织。这包括目录结构、文件分配表(FAT)、索引节点表(UNIX/Linux系统)等。
-
提供数据访问接口:文件系统提供了一套标准的操作接口,使得操作系统和应用程序能够读取、写入、移动和删除文件。
-
错误检测和恢复:许多文件系统具备错误检测和恢复机制,如循环冗余检查(CRC)和校正代码,以确保数据的完整性。
-
权限和安全:文件系统支持用户权限和安全策略,控制对文件和目录的访问。
-
空间管理:文件系统负责跟踪存储空间的使用情况,包括哪些部分已使用,哪些部分空闲,以及如何有效利用空间。
总之,格式化和创建文件系统是确保存储设备能够以一种标准化、高效和安全的方式被操作系统和应用程序访问的基础。
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位于硬盘的开始和中间。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)