Linux巩固篇006-Linux 磁盘和存储

简介: 纸上得来终觉浅,绝知此事要躬行

前言

身为一个三年的运维工程师,从开发转测开再转运维,都是不断学习的过程,未必开发才是最优秀的,找到适合自己的职业不断深耕,你也会在自己的行业大放光彩,本系列依照《Linux就该这么学》系列随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,也希望大家多关注刘遄老师的第二版关于centos8的丛书,学习最前沿的Linux相关技术。

常用命令汇总

根目录

Linux 系统中的一切文件都是从“根(/)”目录开始

图片.png

常见目录解析

图片.png

绝对路径:从根目录开始到当前目录下的路径

相对路径:当前目录下对应的路径

物理设备命名规则

在 Linux 系统中一切都是文件,硬件设备也是文件,系统内核中的udev 设备管理器会自动规范硬件名称

图片.png

一般的硬盘设备都会是以“/dev/sd”开头(sda、sdb),字母顺序是由系统内核的识别顺序来决定

图片.png

/dev/目录中保存的应当是硬件设备文件

sd 表示是存储设备

a 表示系统中同类接口中第一个被识别到的设备

5 表示这个设备是一个逻辑分区

图片.png

每个扇区的容量为512 字节

主引导记录需要占用446 字节,分区表为64 字节,结束符占用2 字节

每记录一个分区信息需要16 字节

图片.png

3 个主分区加1 个扩展分区

扩展分区是指向另外一个分区的指针

主分区、扩展分区、逻辑分区

文件系统数据资料

Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并

能自动修复数据的不一致与错误。

Ext4:Ext3 的改进版本,作为RHEL 6 系统中的默认文件管理系统,它支持的存储容

量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。Ext4 文件系统能够批量分配block 块,从而极大地提高了读写效率。

XFS:是一种高性能的日志文件系统,RHEL 7 中默认的文件管理系统,在发生意外宕机后,快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。最大可支持的存储容量为18EB


文件的访问权限(read、write、execute)

文件的所有者与所属组(owner、group)

文件的大小(size)

文件的创建或内容修改时间(ctime)

文件的最后一次访问时间(atime)

文件的修改时间(mtime)

文件的特殊权限(SUID、SGID、SBIT)

文件的真实数据地址(point)

image.png

挂载硬件设备

mount 命令

mount 命令用于挂载文件系统,格式为“mount 文件系统挂载目录”

image.png

[root@linux ~]# mount /dev/sdb2 /backup

永久挂载

/etc/fstab 文件设备文件挂载目录 格式类型权限选项自检 优先级

image.png

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

#

# /etc/fstab

# Created by anaconda on Wed May 4 19:26:23 2017

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/rhel-root / xfs defaults 1 1

UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2

/dev/mapper /rhel-swap swap swap defaults 0 0

/dev/cdrom /media/cdrom iso9660 defaults 0 0

/dev/sdb2 /backup ext4 defaults 0 0

umount 命令

umount 命令用于撤销已经挂载的设备文件,格式为“umount [挂载点/设备文件]”

[root@linux ~]# umount /dev/sdb2

添加硬盘设备

虚拟机挂载硬盘操作如下

虚拟机关机(一定要关机)选择编辑虚拟机设置

image.png

选择硬盘,点击添加硬盘

image.png

下一步,接下来的操作都按照推荐的安装

image.pngimage.pngimage.pngimage.pngimage.png

至此硬盘就已经添加到服务器上了,但是还要进行磁盘的管理(见下),以及资源挂载(见上)

fdisk 命令

fdisk 命令用于管理磁盘分区,格式为“fdisk [磁盘名称]”

image.pngfdisk 命令来尝试管理/dev/sdb 硬盘设备,输入参数p 查看硬盘设备内已有的分区信息,输入参数 n 尝试添加新的分区,系统会要选择继续输入参数p 来创建主分区,还是输入参数e 来创建扩展分区。输入参数p 来创建一个主分区,在确认创建一个主分区后,系统要求先输入主分区的编号,主分区的编号范围是1~4,输入默认的1,输入+2G 即可创建出一个容量为2GB 的硬盘分区,再次使用参数p,查看硬盘设备中的分区信息,输入参数w 后回车,完成分区,输入partprobe 命令手动将分区信息同步到内核,如果没反应重启

[root@linux ~]# 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.

Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0x47d24a34.

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x47d24a34

Device Boot Start End Blocks Id System

Command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1): 1

First sector (2048-41943039, default 2048):此处敲击回车

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G

Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x47d24a34

Device Boot Start End Blocks Id System

/dev/sdb1 2048 4196351 2097152 83 Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

mkfs 命令

mkfs 命令用于格式分区类型,格式为“mkfs.文件类型名称 /[待格式化文件名称]”

image.png

[root@linux ~]# mkfs.xfs /dev/sdb1

meta-data=/dev/sdb1 isize=256 agcount=4, agsize=131072 blks

= sectsz=512 attr=2, projid32bit=1

= crc=0

data = bsize=4096 blocks=524288, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=0

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


完成上述工作后差最后一步挂载文件


[root@linux ~]# mkdir /newFS

[root@linux ~]# mount /dev/sdb1 /newFS/

[root@linux ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/rhel-root 18G 3.5G 15G 20% /

devtmpfs 905M 0 905M 0% /dev

tmpfs 914M 140K 914M 1% /dev/shm

tmpfs 914M 8.8M 905M 1% /run

tmpfs 914M 0 914M 0% /sys/fs/cgroup

/dev/sr0 3.5G 3.5G 0 100% /media/cdrom

/dev/sda1 497M 119M 379M 24% /boot

/dev/sdb1 2.0G 33M 2.0G 2% /newFS


永久挂载

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

#

# /etc/fstab

# Created by anaconda on Wed May 4 19:26:23 2017

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/rhel-root / xfs defaults 1 1

UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2

/dev/mapper /rhel-swap swap swap defaults 0 0

/dev/cdrom /media/cdrom iso9660 defaults 0 0

/dev/sdb1 /newFS xfs defaults 0 0


du 命令

du -sh /*命令查看在Linux 系统根目录下所有一级目录分别占用的空间大小

du -h -x --max-depth=1 命令展示文件深度一层,显示大小 -h进行排序 -x以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过

添加交换分区

SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常

用的数据临时存放到硬盘中,添加swap分区和上述添加分区的唯一区别在于使用 SWAP 分区专用的格式化命令mkswap

[root@linux ~]# mkswap /dev/sdb2

Setting up swapspace version 1, size = 5242876 KiB

no label, UUID=2972f9cb-17f0-4113-84c6-c64b97c40c75

image.png

磁盘容量配额

使用quota命令进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数

image.png

软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。

硬限制:当达到硬限制时会提示用户,且强制终止用户的操作

xfs_quota 命令

xfs_quota 命令针对XFS 文件系统管理quota 磁盘容量配额服务 格式为“quota [参数] 配额文件系统”

-c 参数用于以参数的形式设置要执行的命令

-x参数是专家模式

使用xfs_quota命令来设置用户tom 对/boot 目录的quota 磁盘容量配额,软

限制和硬限制分别为3MB 和6MB,创建文件数量的软限制和硬限制分别为3个和6个

[root@linux ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6

tom' /boot

[root@linux ~]# xfs_quota -x -c report /boot

User quota on /boot (/dev/sda1) Blocks

User ID Used Soft Hard Warn/Grace

---------- --------------------------------------------------

root 95084 0 0 00 [--------]

tom 0 3072 6144 00 [--------]

检测

[root@linux~]# su - tom

[tom@linux~]$ dd if=/dev/zero of=/boot/tom bs=5M count=1

1+0 records in

1+0 records out

5242880 bytes (5.2 MB) copied, 0.123966 s, 42.3 MB/s

[tom@linux~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1

dd: error writing ‘/boot/tom’: Disk quota exceeded

1+0 records in

0+0 records out

6291456 bytes (6.3 MB) copied, 0.0201593 s, 312 MB/s


edquota 命令

edquota 命令用于编辑用户的quota 配额限制,格式为“edquota [参数] [用户] ”

-u 参数表示要针对哪个用户进行设置

-g 参数表示要针对哪个用户组进行设置


用户tom 的硬盘使用量的硬限额从5MB 提升到8MB

[root@linux~]# edquota -u tom

Disk quotas for user tom (uid 1001):

Filesystem blocks soft hard inodes soft hard

/dev/sda 6144 3072 8192 1 3 6

[root@linux~]# su - tom

Last login: Mon Sep 7 16:43:12 CST 2017 on pts/0

[tom@linux~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1

1+0 records in

1+0 records out

8388608 bytes (8.4 MB) copied, 0.0268044 s, 313 MB/s

[tom@linux~]$ dd if=/dev/zero of=/boot/tom bs=10M count=1

dd: error writing ‘/boot/tom’: Disk quota exceeded

1+0 records in

0+0 records out

8388608 bytes (8.4 MB) copied, 0.167529 s, 50.1 MB/s

软硬方式链接

硬链接(hard link):“指向原始文件inode 的指针”,每添加一个硬链接,该文件的inode 连接数就会增加1,硬链接文件与原始文件其实是同一个文件,只是名字不同,不能跨分区做硬链接

软链接(也称为符号链接[symbolic link]):仅仅包含所链接文件的路径名,跨越文件系统进行链接,类似快捷方式

ln 命令

ln 命令用于创建链接文件,格式为“ln [选项] 目标”

image.png

硬链接1个

[root@localhost ~]# echo "test" > readme.txt

[root@localhost ~]# ln -s readme.txt readme2.txt  

[root@localhost ~]# cat readme.txt  

test

[root@localhost ~]# cat readme2.txt  

test

[root@localhost ~]# ls -l readme.txt  

-rw-r--r--. 1 root root 5 Oct 18 17:33 readme.txt

[root@localhost ~]# rm -f readme.txt  

[root@localhost ~]# cat readme2.txt  

cat: readme2.txt: No such file or directory

硬连接2个

[root@localhost ~]# echo "test" > readme.txt

[root@localhost ~]# ln readme.txt readme3.txt

[root@localhost ~]# cat readme.txt  

test

[root@localhost ~]# cat readme3.txt  

test

[root@localhost ~]# ls -l readme.txt  

-rw-r--r--. 2 root root 5 Oct 18 17:35 readme.txt

[root@localhost ~]# rm -f readme.txt  

[root@localhost ~]# cat readme3.txt  

test

结语

简问简答

/dev/sda5 是主分区还是逻辑分区?

答:逻辑分区


哪个服务决定了设备在/dev 目录中的名称?

答:udev 设备管理器服务


硬盘中需要5 个分区,至少需要几个逻辑分区?

答:可以选用创建3 个主分区+1 个扩展分区的方法,然后把扩展分区再分成2 个逻辑分

区,有5 个分区

如果想根据教程实践的朋友们可以通过阿里云ecs服务器免费试用和低价购买,入口如下

入口一:新人免费试用

入口二:大学生免费试用

入口三:低价服务器购买

入口四:低价服务器购买2

入口五:建站特惠购买

目录
相关文章
|
16天前
|
存储 监控 安全
《Linux 简易速速上手小册》第6章: 磁盘管理与文件系统(2024 最新版)
《Linux 简易速速上手小册》第6章: 磁盘管理与文件系统(2024 最新版)
30 1
|
1月前
|
Prometheus 运维 监控
linux磁盘I/O监控
【4月更文挑战第1天】在Linux中监控磁盘I/O性能至关重要,工具如iostat(-d显示磁盘统计)、iotop(进程级I/O查看)、vmstat、/proc/diskstats(详细统计信息)、Node Exporter(Prometheus集成)和Zabbix(动态监控与LLD)提供关键指标,如IOPS、吞吐量、利用率和服务时间,助力系统优化和故障排查。
43 4
linux磁盘I/O监控
|
2月前
|
Linux Shell C语言
【Shell 命令集合 磁盘维护 】Linux 分区管理的工具 sfdisk命令使用教程
【Shell 命令集合 磁盘维护 】Linux 分区管理的工具 sfdisk命令使用教程
30 1
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 管理硬盘分区 mpartition命令使用教程
【Shell 命令集合 磁盘维护 】Linux 管理硬盘分区 mpartition命令使用教程
39 1
|
2月前
|
Shell Linux API
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
33 1
|
2月前
|
Shell Linux C语言
【Shell 命令集合 磁盘维护 】Linux 创建一个初始化内存盘 mkinitrd命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建一个初始化内存盘 mkinitrd命令使用教程
39 0
|
2月前
|
监控 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 交换分区的特殊文件或设备 swapon命令使用指南
【Shell 命令集合 磁盘维护 】Linux 交换分区的特殊文件或设备 swapon命令使用指南
40 1
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建一个用作交换空间(swap space)的特殊文件或设备 mkswap命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建一个用作交换空间(swap space)的特殊文件或设备 mkswap命令使用教程
36 0
|
2月前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
31 0
|
15天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。