Linux磁盘管理这块也有很多命令和知识,建议大家学习完基础知识后,抓住业务主线整理自己的知识体系,一般情况下无论我们是云机器还是物理机器,创建安装一个全新的机器都至少有一块盘,也就是系统盘,这是自带的,创建好就能直接用的,常见的其它业务场景有:
现在的磁盘按照物理结构通常分为 机械硬盘(HDD) 和 固态硬盘(SSD),机械硬盘通常原型的碟片组成,工作的时候会转动,噪音稍大,固态硬盘的原理比较像U盘,工作时几乎没有噪音,固态硬盘的性能要好于机械硬盘,机械硬盘读取速度一般100M/S左右,固态硬盘一般500M/S
硬盘的性能指标,比较常见的是看顺序读写速度和随机读写速度,一般电脑上都可以下载到一些测评软件来测试,这里不多说,附一份阿里云磁盘性能的对比,以供参考 https://help.aliyun.com/document_detail/25382.html?spm=a2c4g.11186623.6.772.5658559bLL6BM1
一般的磁盘都需要分区,一块物理硬盘可以分成多个逻辑硬盘,比如我们的windows台式机箱里插入一块1T的硬盘,可以在电脑里分成C盘,D盘,E盘等
常见的分区格式有MBR和GPT,只有GPT支持2T以上的硬盘
/dev/sd[a-p][1-128]:为实体磁盘的磁盘文件名
/dev/vd[a-d][1-128]:为虚拟磁盘的磁盘文件名
一块磁盘可以只分一个区,windows支持的分区格式有,FAT32,NTFS等,Linux支持的常见分区格式有EXT4,XFS,Windows上分区完毕并格式化后是指定磁盘符,也就是C盘,D盘这样来访问的,而是Linux下是指定一个目录,后面往这个目录存放东西,就相当于存在了这个磁盘上
查看系统中支持的文件格式可以使用 ls -l /lib/modules/$(uname -r)/kernel/fs
lsblk 列出系统中所有的磁盘
blkid 列出磁盘的UUID等参数
df 查看系统剩余磁盘空间
du 经常用来查看某个目录的总使用磁盘空间大小
ln 建立软连接(快捷方式),硬链接
dd
fdisk 小于2T硬盘用
parted 大于2T硬盘用
parted /dev/sda print 列出磁盘的分区表类型(MBR OR GPT)
fdisk -lu /dev/sda 查看磁盘信息
partprobe 通知系统更新分区表
mount 挂载
umount 卸载
mkfs 格式化文件系统,ext4、xfs等
swapon
swapoff
正常新增一块磁盘的步骤是:
lsblk
能看到类似/dev/sdb
)/dev/sdb1
,确定分区的格式,MBR OR GPT,一般默认是MBR格式/dev/sda1
)格式化为需要的文件系统(filesystem) EXT4、XFS等 (mkfs.ext4 /dev/sdc1
)mount /dev/sdb1 /data
)简要概括,磁盘的使用一般需要经过:分区、格式化、挂载
MBR(Master Boot Record,主分区引导记录) GPT(Globally Unique Identifier Partition Table,GUID分区表)
假设这块硬盘是全新的,上面没有数据,可以随意格式化
操作系统为CentOS 7.6,为一块新的20GiB数据盘(设备名为/dev/sdb)创建一个MBR格式的单分区,挂载的是ext4文件系统,挂载目录是 /xdata
1 给系统增加一块磁盘,如果是物理机直接插入硬盘,vmware或virtual box上也有相应的操作,云服务器就是购买硬盘,也可能服务商已经给你插入好硬盘了,此处不再赘述
2 查看新增的数据盘 可用 fdisk -l OR lsblk 之类的命令
3 这一步就有2种选择:创建分区号和不创建分区号(把整块硬盘当成一个分区),任选其一即可
3.1 不创建分区号 (阿里云称呼为裸设备文件系统)
mkdir -p /xdata
echo yes | mkfs.ext4 /dev/sdb
partprobe
parted /dev/sdb print
echo "/dev/sdb /xdata ext4 defaults 0 0" >> /etc/fstab
cat /etc/fstab
mount -a OR mount /dev/sdb /xdata
df -h
3.2 创建分区号
这块阿里云的文档非常详细,附上 https://help.aliyun.com/document_detail/25426.html?spm=a2c4g.11186623.2.24.133b3b94gjsuAr#concept-jl1-qzd-wdb
mkdir /xdata
parted /dev/sdc print
fdisk -u /dev/sdc p n 1 w
fdisk -lu /dev/sdc OR parted /dev/sdc print
mkfs.ext4 /dev/sdc1 (其他文件系统格式修改mkfs对应的命令)
lsblk
echo "/dev/sdc1 /xdata ext4 defaults 0 0" >> /etc/fstab
cat /etc/fstab
mount -a OR mount /dev/sdc1 /xdata
df -h
假设这块硬盘是全新的,上面没有数据,可以随意格式化
下面CentOS 7.6 64位操作系统为例,说明如何在Linux实例上使用parted工具和e2fsprogs工具分区并格式化一个大容量数据盘。假设需要处理的数据盘是一个新建的3TiB的空盘,设备名为/dev/sdb
,挂载到/xdata
目录下
参考资料 https://help.aliyun.com/document_detail/34377.html?spm=a2c4g.11186623.2.25.133b3b94gjsuAr#title-f8r-9od-yn9
1 检查软件版本
[root@node1 ~]# rpm -qa | egrep "parted|e2fsprogs"
parted-3.1-29.el7.x86_64
e2fsprogs-1.42.9-13.el7.x86_64
e2fsprogs-libs-1.42.9-13.el7.x86_64
2 开始操作
parted /dev/sdb
(parted) mklabel gpt (将默认的MBR分区格式转为GPT分区格式)
(parted) mkpart primary 1 100% (划分一个主分区,并设置分区的开始位置和结束位置)
(parted) align-check optimal 1 (检查分区是否对齐)
(parted) print
(parted) quit
partprobe
mkfs.ext4 /dev/sdb1 (mkfs.xfs /dev/sdb1)
mkdir -p /xdata
echo "/dev/sdb1 /xdata ext4 defaults 0 0" >> /etc/fstab
cat /etc/fstab
mount -a OR mount /dev/sdb1 /xdata
df -h
parted /dev/sdb1 print
以下执行命令的详细记录
[root@node1 ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) mkpart primary 1 100%
(parted) align-check optimal 1
1 aligned
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 21.5GB 21.5GB ext4 primary
(parted)
(parted) quit
Information: You may need to update /etc/fstab.
[root@node1 ~]# partprobe
[root@node1 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242368 blocks
262118 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@node1 ~]# mkdir -p /xdata
[root@node1 ~]# echo "/dev/sdb1 /xdata ext4 defaults 0 0" >> /etc/fstab
[root@node1 ~]# mount -a
[root@node1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 7.8G 43G 16% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.6M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 1014M 133M 882M 14% /boot
/dev/mapper/centos-home 202G 33M 201G 1% /home
tmpfs 396M 0 396M 0% /run/user/0
/dev/sdb1 20G 45M 19G 1% /xdata
parted /dev/sdb mklabel msdos mkpart p xfs 0% 100%
mkfs.xfs /dev/sdb1
blkid
# Edit /etc/fstab and add
UUID="<UUID-from-output-above>" /mnt/sdb1 xfs noatime 0 0
mkdir /mnt/sdb1
mount -a
参考链接
https://docs.openstack.org/swift/latest/development_saio.html
https://blog.csdn.net/dufufd/article/details/53508367
csdn 111378574
系统盘容量不足,解决方法有:
数据盘容量不足,解决方法有:
磁盘容量不足,扩容的操作步骤,建议参考相关云平台的文档,例如阿里云
https://help.aliyun.com/document_detail/35095.html?spm=a2c4g.11186623.2.27.5658559bLL6BM1#concept-e1g-44g-ydb
[root@node1 xdata]# df -h | grep sdb
/dev/sdb 20G 45M 19G 1% /xdata
[root@node1 xdata]# cd /root (卸载的时候不能处在当前磁盘所在的目录)
[root@node1 xdata]# umount /xdata
目前swap内存已经几乎不再使用,内存不足拿硬盘凑在某些服务上非常慢,甚至无法使用,比如docker,另外有些时候内存不足报OOM,及时收到告警加内存即可,否则服务一直处于使用swap内存的状态,一直慢,一直死不到,这也很尴尬,取消使用swap功能操作如下
1 swapoff -a
2 注释掉 /etc/fstab 里swap挂载部分
3 partprobe
4 mount -a
5 free 检查
LVM 强调的是『弹性的变化文件系统的容量』
pvdisplay vgdisplay lvdisplay
待更新
[root@nexus3 ~]# cat /root/disk-check.sh
opsemail="xys4k@qq.com"
if df | grep '/dev/vdb1' | awk -F '[ %]+' '{print $(NF-1)}' | egrep '9[0-9]+'; then
df -h > /tmp/disk-usage.txt
/usr/bin/mailx -v -s "Docker 镜像仓库所在机器磁盘使用已超过90%" $opsemail < /tmp/disk-usage.txt
fi
https://blog.csdn.net/xys2015/article/details/112545937
查看磁盘是否为固态硬盘
https://blog.csdn.net/u011436427/article/details/120372514
[root@localhost ~]# lsblk --topology
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sr0 0 2048 0 2048 2048 1 deadline 128 128 0B
vda 0 512 0 512 512 1 mq-deadline 256 4096 0B
└─vda1 0 512 0 512 512 1 mq-deadline 256 4096 0B
nvme0n1 0 512 0 512 512 0 none 1023 128 0B