1.10 系统磁盘管理

1. 磁盘基本概述

1.1 固态硬盘的优缺点

优点:

  • 读写速度快
  • 防震抗摔性强
  • 低功耗
  • 无躁音
  • 体积小,携带方便

缺点:

  • 容量比机械硬盘小
  • 寿命比机械硬盘短
  • 制造成本高所以价格比机械硬盘高

1.2 Linux中磁盘命名方式

Linux中磁盘的命名方式与磁盘的接口有关,规则如下:

  • 传统IDE接口硬盘:/dev/hd[a-z]
  • SCISI接口硬盘:/dev/sd[a-z]
  • 虚拟化硬盘:/dev/vd[a-z]
    在设备名称的定义规则如下, 其他的分区可以以此类推
    系统的第一块SCSI接口的硬盘名称为/dev/sda
    系统的第二块SCSI接口的硬盘名称为/dev/sdb
    系统中分区由数字编号表示, 1-4留给主分区使用和扩展分区, 逻辑分区从5开始
//第一块磁盘
/dev/sda
//第一块磁盘的第一个分区
/dev/sda1
//第二块磁盘的第一个分区
/dev/sdb1

1.3 MBR与GPT

在使用新磁盘之前,你必须对其进行分区。MBR(Master Boot Record)和GPT(GUID Partition Table)是在磁盘上存储分区信息的两种不同方式。这些分区信息包含了分区从哪里开始的信息,这样操作系统才知道哪个扇区是属于哪个分区的,以及哪个分区是可以启动的。在磁盘上创建分区时,你必须在MBR和GPT之间做出选择

MBR是Master Boot Record的简称,也就是主引导记录,是位于磁盘最前边的一段引导(Loader)代码,主要用来引导操作系统的加载与启动

特点:

  1. MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘
  2. 只支持最多4个主分区。若想要更多分区,需要创建扩展分区,并在其中创建逻辑分区

GPT磁盘是指使用GUID分区表的磁盘,GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准

特点:
GPT对磁盘大小没有限制
最多可以创建128个分区

注意:

MBR与GPT之间互相转换会导致数据丢失

GPT磁盘概述
MBR与GPT的区别

2. 磁盘容量检查

使用df命令查看磁盘容量,不加参数以k为单位:

df -i   //查看inode使用情况
df -h   //以G或者T或者M人性化方式显示
df -T   //查看文件类型

//使用df命令查看磁盘,下面分别介绍每列什么含义
[root@localhost ~]# df -h
//设备名称      //磁盘大小 已用大小  可用大小 使用百分比  挂载点
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   17G   12G  5.6G  68% /
devtmpfs               471M     0  471M   0% /dev
tmpfs                  488M     0  488M   0% /dev/shm
tmpfs                  488M  7.2M  481M   2% /run
tmpfs                  488M     0  488M   0% /sys/fs/cgroup
/dev/sda1             1014M  164M  851M  17% /boot
tmpfs                   98M     0   98M   0% /run/user/0

使用lsblk查看分区情况:

[root@localhost ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   19G  0 part
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sr0            11:0    1  3.8G  0 rom

使用du命令查看目录或者文件的容量,不加参数以k为单位:

du -sh opt  //人性化输出显示大小
-s:列出总和
-h:人性化显示容量信息

3. 磁盘分区

分区之前, 需要先给虚拟机添加一块磁盘,以便于我们做后续的实验vmware虚拟机,请按如下进行操作:

1.找到对应虚拟主机点击右键, 选择设置
2.在硬件向导里面点击添加按钮, 在硬件类型中选中“硬盘”, 点击下一步
3.磁盘类型选择默认, 然后创建新虚拟磁盘, 调整大小(不要勾选立即分配空间)
4.最后点击下一步, 完成即可

分区工具有fdisk和gdisk,当硬盘小于2T的时候我们应该用fdisk来分区,而当硬盘大于2T的时候则应用gdisk来进行分区

3.1 fdisk分区

fdisk参数注释

[root@localhost ~]# fdisk  /dev/sdb
Command (m for help): m //输入m列出常用的命令
Command action
   a   toggle a bootable flag   //切换分区启动标记
   b   edit bsd disklabel     //编辑sdb磁盘标签
   c   toggle the dos compatibility flag    //切换dos兼容模式
   d   delete a partition     //删除分区
   l   list known partition types   //显示分区类型
   m   print this menu      //显示帮助菜单
   n   add a new partition  //新建分区
   o   create a new empty DOS partition table   //创建新的空白分区表
   p   print the partition table       //显示分区表的信息
   q   quit without saving changes  //不保存退出
   s   create a new empty Sun disklabel //创建新的Sun磁盘标签
   t   change a partition's system id   //修改分区ID,可以通过l查看id
   u   change display/entry units       //修改容量单位,磁柱或扇区
   v   verify the partition table       //检验分区表
   w   write table to disk and exit     //保存退出
   x   extra functionality (experts only)   //拓展功能

创建分区1P1E6L

[root@localhost ~]# fdisk  /dev/sdb
命令(输入 m 获取帮助):n		//新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p			//创建主分区
分区号 (1-4,默认 1):	//默认回车
起始 扇区 (2048-41943039,默认为 2048)://默认回车
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n		//新建分区
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e		//创建扩展分区
分区号 (2-4,默认 2):2		//默认回车
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 15 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l		//创建逻辑分区
添加逻辑分区 5
起始 扇区 (10489856-41943039,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-41943039,默认为 41943039):+200M
分区 5 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (10901504-41943039,默认为 10901504):
将使用默认值 10901504
Last 扇区, +扇区 or +size{K,M,G} (10901504-41943039,默认为 41943039):+200M
分区 6 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 7
起始 扇区 (11313152-41943039,默认为 11313152):
将使用默认值 11313152
Last 扇区, +扇区 or +size{K,M,G} (11313152-41943039,默认为 41943039):+200M
分区 7 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 8
起始 扇区 (11724800-41943039,默认为 11724800):
将使用默认值 11724800
Last 扇区, +扇区 or +size{K,M,G} (11724800-41943039,默认为 41943039):+200M
分区 8 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 9
起始 扇区 (12136448-41943039,默认为 12136448):
将使用默认值 12136448
Last 扇区, +扇区 or +size{K,M,G} (12136448-41943039,默认为 41943039):+200M
分区 9 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 10
起始 扇区 (12548096-41943039,默认为 12548096):
将使用默认值 12548096
Last 扇区, +扇区 or +size{K,M,G} (12548096-41943039,默认为 41943039):+200M
分区 10 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):w
The partition table has been altered!
[root@yusyang ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sdb             8:16   0   20G  0 disk 
├─sdb1          8:17   0    5G  0 part 
├─sdb2          8:18   0    1K  0 part 
├─sdb5          8:21   0  200M  0 part 
├─sdb6          8:22   0  200M  0 part 
├─sdb7          8:23   0  200M  0 part 
├─sdb8          8:24   0  200M  0 part 
├─sdb9          8:25   0  200M  0 part 
└─sdb10         8:26   0  200M  0 part 
sdc             8:32   0   20G  0 disk 
sr0            11:0    1  3.8G  0 rom

创建分区2P1E4L

[root@yusyang ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x567440c6 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e
分区号 (3,4,默认 3):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):
将使用默认值 41943039
分区 3 已设置为 Extended 类型,大小设为 10 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (20975616-41943039,默认为 20975616):
将使用默认值 20975616
Last 扇区, +扇区 or +size{K,M,G} (20975616-41943039,默认为 41943039):+200M
分区 5 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (21387264-41943039,默认为 21387264):
将使用默认值 21387264
Last 扇区, +扇区 or +size{K,M,G} (21387264-41943039,默认为 41943039):+200M
分区 6 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 7
起始 扇区 (21798912-41943039,默认为 21798912):
将使用默认值 21798912
Last 扇区, +扇区 or +size{K,M,G} (21798912-41943039,默认为 41943039):+200M
分区 7 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 8
起始 扇区 (22210560-41943039,默认为 22210560):
将使用默认值 22210560
Last 扇区, +扇区 or +size{K,M,G} (22210560-41943039,默认为 41943039):+200M
分区 8 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@yusyang ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sdb             8:16   0   20G  0 disk 
├─sdb1          8:17   0    5G  0 part 
├─sdb2          8:18   0    1K  0 part 
├─sdb5          8:21   0  200M  0 part 
├─sdb6          8:22   0  200M  0 part 
├─sdb7          8:23   0  200M  0 part 
├─sdb8          8:24   0  200M  0 part 
├─sdb9          8:25   0  200M  0 part 
└─sdb10         8:26   0  200M  0 part 
sdc             8:32   0   20G  0 disk 
├─sdc1          8:33   0    5G  0 part 
├─sdc2          8:34   0    5G  0 part 
├─sdc3          8:35   0    1K  0 part 
├─sdc5          8:37   0  200M  0 part 
├─sdc6          8:38   0  200M  0 part 
├─sdc7          8:39   0  200M  0 part 
└─sdc8          8:40   0  200M  0 part 
sr0            11:0    1  3.8G  0 rom

创建分区2P1E1L

[root@yusyang ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xc1a5da51 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):N
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+5G
分区 3 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
已选择分区 4
起始 扇区 (31459328-41943039,默认为 31459328):
将使用默认值 31459328
Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (31461376-41943039,默认为 31461376):
将使用默认值 31461376
Last 扇区, +扇区 or +size{K,M,G} (31461376-41943039,默认为 41943039):+200M
分区 5 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):W
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@yusyang ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sdb             8:16   0   20G  0 disk 
└─sdb1          8:17   0  500M  0 part 
sdc             8:32   0   20G  0 disk 
├─sdc1          8:33   0    5G  0 part 
├─sdc2          8:34   0    5G  0 part 
├─sdc3          8:35   0    5G  0 part 
├─sdc4          8:36   0    1K  0 part 
└─sdc5          8:37   0  200M  0 part 
sr0            11:0    1  3.8G  0 rom

3.2 gdisk分区

//安装gdisk工具
[root@localhost ~]# yum -y install gdisk

[root@localhost ~]# gdisk /dev/sdb
Command (? for help): n     //创建新分区
Partition number (1-128, default 1):
First sector (34-2097118, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-2097118, default = 2097118) or {+-}size{KMGTP}: +500M //分配500M大小

Command (? for help): p //打印查看
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1026047   500.0 MiB   8300  Linux filesystem

Command (? for help): w //保存分区
Do you want to proceed? (Y/N): y    //确认
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.

//检查磁盘是否是gpt格式
[root@localhost /]# fdisk /dev/sdb -l|grep type
Disk label type: gpt

//安装parted, 刷新内核立即生效,无需重启
[root@localhost ~]# yum -y install parted
[root@localhost ~]# partprobe /dev/sdb

4. 磁盘格式化

使用mkfs命令格式化磁盘,创建文件系统

//mkfs常用的选项有
-b  //设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块。
-t  //用来指定什么类型的文件系统,可以是ext3,ext4, xfs
-i  //设定inode的大小
-N  //设定inode数量,防止Inode数量不够导致磁盘不足
-L  //预设该分区的标签label

//格式化整个sdb磁盘为ext4文件系统
[root@localhost ~]# mkfs.ext4  /dev/sdb1

//也可以使用-t指定方式创建ext4文件系统
[root@localhost ~]# mkfs -t ext4  /dev/sdb1

//也可以格式化sdb1分区为xfs文件系统
[root@localhost ~]# mkfs.xfs  /dev/sdb1

5. 磁盘挂载

在上面的内容中讲到了磁盘的分区和格式化, 那么格式化完了后, 如何使用, 这就涉及到了挂载这块磁盘

挂载分区前需要创建挂载点, 挂载点以目录形式出现
如果往挂载点目录写入数据, 实际上会写入到该分区
挂载点建议是空目录, 不是也不影响挂载分区的使用,但是会隐藏原有的文件

5.1 临时挂载磁盘

命令:mount挂载磁盘,实质为文件系统指定访问入口
mount -t       //指定文件系统挂载分区,如ext3,ext4, xfs
mount -a       //重新读取/etc/fstab配置文件的所有分区
mount -o       //指定挂载参数

//fstab被损坏情况下,让只读文件系统可写(正常情况下不使用)
[root@localhost ~]#mount -o rw,remount /  

//挂载/dev/sdb1至db1目录
[root@localhost ~]# mkdir /db1
[root@localhost ~]# mount -t xfs /dev/sdb1  /db1

5.2 永久挂载磁盘

//使用blkid命令获取各分区的UUID
[root@localhost ~]# blkid |grep "sdb1"
/dev/sdb1: UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" TYPE="xfs"

//使用UUID挂载磁盘sdb1分区至于db1, 临时挂载
[root@localhost ~]# mount UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" /db1

//也可以把下面这行写到/etc/fstab中,永久挂载, 开机自动挂载
[root@localhost ~]# tail -1 /etc/fstab    
UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /db1 xfs  defaults 0  0

//加载fstab配置文件, 同时检测语法是否有错误
[root@localhost ~]# mount –a

永久挂载sdc1

[root@yusyang ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root   17G  5.6G   12G   33% /
devtmpfs               901M     0  901M    0% /dev
tmpfs                  912M     0  912M    0% /dev/shm
tmpfs                  912M  8.7M  904M    1% /run
tmpfs                  912M     0  912M    0% /sys/fs/cgroup
/dev/sda1             1014M  143M  872M   15% /boot
tmpfs                  183M     0  183M    0% /run/user/0
[root@yusyang ~]# vim /etc/fstab
UUID=8c806c93-393d-4217-9b4a-11f72c104667       /tmp/sdc1       xfs     defaults 0 0
[root@yusyang ~]# mount -a
[root@yusyang ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root   17G  5.6G   12G   33% /
devtmpfs               901M     0  901M    0% /dev
tmpfs                  912M     0  912M    0% /dev/shm
tmpfs                  912M  8.7M  904M    1% /run
tmpfs                  912M     0  912M    0% /sys/fs/cgroup
/dev/sda1             1014M  143M  872M   15% /boot
tmpfs                  183M     0  183M    0% /run/user/0
/dev/sdc1              5.0G   33M  5.0G    1% /tmp/sdc1

5.3 卸载挂载磁盘

umount -lf  //强制卸载挂载

//使用站点目录卸载
[root@localhost ~]# umount /db1
//使用设备名卸载/dev/sdb1
[root@localhost ~]# umount /dev/sdb1

//umount不能卸载的情况
[root@localhost db1]# umount /db1  
umount: /db1: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1)
       
//如上情况解决办法有两种, 切换至其他目录 或使用'-l'选项强制卸载    
[root@localhost db1]# umount -l /db1

6. 交换分区SWAP

交换分区SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用。

交换分区一般指定虚拟内存的大小为实际内存的1.5~2倍。如果实际内存超过8GB,可以直接划分16GB给虚拟内存即可,如果虚拟内存不够用的情况,须增加一个虚拟磁盘,由于不能给原有的磁盘重新分区,所以可以选择新建。

6.1 创建swap分区

6.1.1 使用系统中的某个文件作为swap分区

注解

[root@localhost ~]# dd if=/dev/zero of=/opt/newdisk bs=1M count=1024
//if:指定源  一般写/dev/zero
//of:指定目标
//bs:定义块大小
//count:数量

示例:

[root@yusyang ~]# dd if=/dev/zero of=/opt/swap bs=1G count=1
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,62.3237 秒,17.2 MB/秒
[root@yusyang ~]# du /opt/swap
1048576	/opt/swap
[root@yusyang ~]# du -h /opt/swap
1.0G	/opt/swap

6.1.2 使用磁盘分区作为swap分区

[root@yusyang ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xae9a066c 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):l	//显示分区类型
 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT            
1e  隐藏的 W95 FAT1 80  旧 Minix       

命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

6.2 格式化swap分区

注解

用法
 mkswap [选项] 设备 [大小]

选项:
 -c, --check               创建交换区前检查坏块
 -f, --force               允许交换区大于设备大小
 -p, --pagesize SIZE       指定页大小为 SIZE 字节
 -L, --label LABEL         指定标签为 LABEL
 -v, --swapversion NUM     指定交换空间版本号为 NUM
 -U, --uuid UUID           指定要使用的 UUID
 -V, --version             输出版本信息并退出
 -h, --help                显示此帮助并退出

示例:

[root@yusyang ~]# mkswap -f /opt/swap
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=1eab4368-4a6a-4c65-bb97-5c9d1e936371

6.3 检测当前swap分区情况

[root@yusyang ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1823         146        1098           8         577        1477
Swap:          2047           0        2047

6.4 开启新建的swap分区

[root@yusyang ~]# swapon /opt/swap 
swapon: /opt/swap:不安全的权限 0644,建议使用 0600。
[root@yusyang ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1823         148        1087           8         586        1476
Swap:          3071           0        3071

6.5 关闭新建的swap分区

[root@yusyang ~]# swapoff /opt/swap 
[root@yusyang ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1823         148        1087           8         586        1476
Swap:          2047           0        2047

6.6 永久启用swap

6.6.1 使用文件作为swap分区永久启用

[root@yusyang ~]# vim /etc/fstab
/opt/swap       swap     swap    defaults        0       0

6.6.2 使用系统分区作为swap分区永久启用

[root@yusyang ~]# partprobe /dev/sdb
[root@yusyang ~]# mkswap /dev/sdb1
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=0a43bcaa-9d21-4f4f-ad5e-305359ce13d3
[root@yusyang ~]# blkid |grep "sdb"
/dev/sdb1: UUID="0a43bcaa-9d21-4f4f-ad5e-305359ce13d3" TYPE="swap" 
[root@yusyang ~]# vim /etc/fstab
UUID=0a43bcaa-9d21-4f4f-ad5e-305359ce13d3 swap swap defaults 0 0
[root@yusyang ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        148M        1.1G        8.6M        596M        1.4G
Swap:          2.0G          0B        2.0G
[root@yusyang ~]# swapon /dev/sdb1
[root@yusyang ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        148M        1.1G        8.6M        596M        1.4G
Swap:          3.0G          0B        3.0G

7. 生产磁盘故障案例

Inode被占满,导致磁盘有可用的剩余空间也无法继续使用
[root@localhost ~]# dd if=/dev/zero of=/opt/newdisk bs=1k count=1024
[root@localhost ~]# mkfs.ext4 -i 1024 /opt/newdisk
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount -t ext4 -o loop /opt/newdisk /data/

//inode被占满
[root@localhost ~]# touch {1..20000}
touch: cannot touch `19997': No space left on device
touch: cannot touch `19998': No space left on device
touch: cannot touch `19999': No space left on device
touch: cannot touch `20000': No space left on device

//inode被占满,剩余block也是无法继续使用
[root@localhost ~]# df -i|grep data
/opt/newdisk      1024  1024       0  100% /data
[root@localhost ~]# df -h|grep data
/opt/newdisk    891K   34K  806K   5% /data

Block空间即将被占满, 但删除大文件也没有释放空间

假设现在线上正在运行Nginx服务, Nginx产生的日志已经达到了20个G, 磁盘眼看就看沾满了, 请问不重启Nginx的方式如何处理

//是会删除文件, 但Nginx持续占用着文件, 所以空间并不会被释放
rm -f access.log

//正确做法如下, 清空该文件即可释放文件内容
> access.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值