【Linux系列教程】硬盘的管理

一、添加硬盘

1.虚拟机添加硬盘

vmdk1

vmdk2

vmdk3

vmdk4

二、创建磁盘分区

我们可以使用命令,查看我们刚刚添加的新硬盘

1.查看硬盘

# lsblk
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  476M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-root 253:0    0 17.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    8G  0 disk 	#我们刚刚添加的硬盘,默认命名为sdb
sr0              11:0    1  4.4G  0 rom

2. fdisk -l查看当前系统硬盘

# fdisk -l
[root@localhost ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009d66b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896    41943039    20483072   8e  Linux LVM

磁盘 /dev/sdb:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-root:18.8 GB, 18824036352 字节,36765696 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

三、fdisk磁盘管理工具

1.常用参数

  • n 新建分区
  • d 删除分区
  • p 查看分区
  • w 保存退出
  • q 强制退出

2.使用方法

# fdisk 硬盘名称
[root@localhost ~]# fdisk /dev/sdb	#当前你要编辑的硬盘设备,默认在dev目录下
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x617b717f 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):

3.创建一个主分区

具体要求如下:
主分区 2G ext4 /web/nginx
逻辑分区 3G ext4 /web/httpd
逻辑分区 3G xfs /web/mysql

命令(输入 m 获取帮助):n	#创建一个新分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p	#选择主分区
分区号 (1-4,默认 1):1 #默认即可
起始 扇区 (2048-16777215,默认为 2048): #默认即可
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-16777215,默认为 16777215):+2G #主分区划分的大小
分区 1 已设置为 Linux 类型,大小设为 2 GiB

4.创建拓展分区

命令(输入 m 获取帮助):n	#新建一个分区
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e	#选择拓展分区
分区号 (2-4,默认 2):		#默认即可
起始 扇区 (4196352-16777215,默认为 4196352):	#默认即可
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-16777215,默认为 16777215):	#默认即可
将使用默认值 16777215
分区 2 已设置为 Extended 类型,大小设为 6 GiB

命令(输入 m 获取帮助):

5.创建逻辑分区

命令(输入 m 获取帮助):n	#新建分区
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l	#选择逻辑分区,只有先创建拓展分区才可以创建逻辑分区
添加逻辑分区 5
起始 扇区 (4198400-16777215,默认为 4198400):
将使用默认值 4198400
Last 扇区, +扇区 or +size{K,M,G} (4198400-16777215,默认为 16777215):+3G    #创建一个3G的逻辑分区
分区 5 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (10491904-16777215,默认为 10491904):
将使用默认值 10491904
Last 扇区, +扇区 or +size{K,M,G} (10491904-16777215,默认为 16777215):     	#把剩下的容量都给第二个逻辑分区    
将使用默认值 16777215
分区 6 已设置为 Linux 类型,大小设为 3 GiB

6.查看

命令(输入 m 获取帮助):p	#可以使用p参数查看当前硬盘情况

磁盘 /dev/sdb:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x617b717f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux	#主分区大小2G
/dev/sdb2         4196352    16777215     6290432    5  Extended	#拓展分区大小6G
/dev/sdb5         4198400    10489855     3145728   83  Linux	#逻辑分区大小3G
/dev/sdb6        10491904    16777215     3142656   83  Linux	#逻辑分区大小3G
删除(拓展)不用执行
命令(输入 m 获取帮助):d	#删除操作
分区号 (1,2,5,6,默认 6):5	#选择第5号分区
分区 5 已删除

命令(输入 m 获取帮助):p
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352    16777215     6290432    5  Extended
/dev/sdb5        10491904    16777215     3142656   83  Linux	#这里只剩下分区6了
退出(不用执行)
命令(输入 m 获取帮助):q
[root@localhost ~]# 

7.保存分区

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

8.让内核识别硬盘上的分区变化 (重要)

[root@localhost ~]# partprobe /dev/sdb

9.查看分区

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  476M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-root 253:0    0 17.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    8G  0 disk 
├─sdb1            8:17   0    2G  0 part 
├─sdb2            8:18   0    1K  0 part 
├─sdb5            8:21   0    3G  0 part 
└─sdb6            8:22   0    3G  0 part 
sr0              11:0    1  4.4G  0 rom

10.创建文件系统(格式化)

[root@localhost ~]# mkfs -t ext4 /dev/sdb1
[root@localhost ~]# mkfs -t ext4 /dev/sdb5
[root@localhost ~]# mkfs -t xfs /dev/sdb6

11.挂载

[root@localhost ~]# mkdir -p /web/{nginx,httpd,mysql}

[root@localhost ~]# mount /dev/sdb1 /web/nginx
[root@localhost ~]# mount /dev/sdb5 /web/httpd
[root@localhost ~]# mount /dev/sdb6 /web/mysql

12.查看挂载情况

[root@localhost ~]# df -Th | grep "sdb"		#查看挂载情况
/dev/sdb1               ext4      2.0G  6.0M  1.8G    1% /web/nginx
/dev/sdb5               ext4      2.9G  9.0M  2.8G    1% /web/httpd
/dev/sdb6               xfs       3.0G   33M  3.0G    2% /web/mysql

[root@localhost ~]# lsblk	#这个命令同样可以查看挂载情况
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  476M  0 part 
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-root 253:0    0 17.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    8G  0 disk 
├─sdb1            8:17   0    2G  0 part /web/nginx
├─sdb2            8:18   0    1K  0 part 
├─sdb5            8:21   0    3G  0 part /web/httpd
└─sdb6            8:22   0    3G  0 part /web/mysql
sr0              11:0    1  4.4G  0 rom

取消挂载(拓展)不用执行

[root@localhost ~]# umount /dev/sdb1 /web/nginx
[root@localhost ~]# umount /dev/sdb5 /web/httpd
[root@localhost ~]# umount /dev/sdb6 /web/mysql

13.永久挂载

查看分区的UUID

[root@localhost ~]# blkid /dev/sdb6
/dev/sdb6: UUID="edefd51c-6f21-42a0-9ea3-a84fa7ced7cc" TYPE="xfs"

a.实现永久挂载

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

/dev/sdb1       /web/nginx      ext4    defaults        0 0
/dev/sdb5       /web/httpd      ext4    defaults        0 0
UUID=edefd51c-6f21-42a0-9ea3-a84fa7ced7cc       /web/mysql      xfs     defaults        0 0
[root@localhost ~]# mount -a	#挂载所有
[root@localhost ~]# lsblk | grep "sdb"	#查看挂载情况
sdb               8:16   0    8G  0 disk 
├─sdb1            8:17   0    2G  0 part /web/nginx
├─sdb2            8:18   0    1K  0 part 
├─sdb5            8:21   0    3G  0 part /web/httpd
└─sdb6            8:22   0    3G  0 part /web/mysql

四、查看磁盘使用情况

[root@localhost ~]# df -hT | grep -v "tmpfs"
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        18G  5.6G   12G   32% /
/dev/sdb6               xfs       3.0G   33M  3.0G    2% /web/mysql
/dev/sdb1               ext4      2.0G  6.0M  1.8G    1% /web/nginx
/dev/sdb5               ext4      2.9G  9.0M  2.8G    1% /web/httpd
/dev/sda1               xfs       473M  177M  297M   38% /boot

五、inode i节点

  • 限制磁盘存储数据的因素
    • 容量
    • inode
      • 文件数量

1.查看磁盘容量

[root@localhost ~]# df -hT /dev/sdb1
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sdb1      ext4  477M  2.3M  445M    1% /web/httpd

2.查看磁盘inode

[root@localhost ~]# df -i /dev/sdb1
文件系统        Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1      128016      21  127995       1% /web/httpd	#当12W多的文件创建满以后,即使磁盘还有剩余容量,也无法继续创建文件

3.inode作用

  • 存储文件的元数据metadata信息
  • 文件的存储
    • 真实的数据
      • 数据块
    • 元数据信息
      • inode

用于限制磁盘创建文件数量

4.查看元数据

[root@localhost ~]# stat /etc/fstab 
  文件:"/etc/fstab"
  大小:615       	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:18354730    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:etc_t:s0
最近访问:2022-07-14 15:14:58.014971698 +0800
最近更改:2022-07-14 15:14:57.906971702 +0800
最近改动:2022-07-14 15:14:57.906971702 +0800
创建时间:-