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)代码,主要用来引导操作系统的加载与启动
特点:
- MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘
- 只支持最多4个主分区。若想要更多分区,需要创建扩展分区,并在其中创建逻辑分区
GPT磁盘是指使用GUID分区表的磁盘,GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准
特点:
GPT对磁盘大小没有限制
最多可以创建128个分区
注意:
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