磁盘管理类命令
磁盘查看和分区类
du:查看文件和目录占用的磁盘空间
1)基本语法
du 目录/文件
显示目录下每个字母的磁盘使用情况
2)选项说明
选项 | 功能 |
---|---|
-h | 以人们交易阅读的GBytes,MBytes,KBytes等格式自行显示 |
-a | 不仅查看子目录大小,还包括文件 |
-c | 显示所有的文件和子目录大小后,显示总和 |
-s | 只显示总和 |
—max-depth=n 或 -d n | 指定统计子目录的深度为第n层 |
3)案例实操
(1)查看当前用户主目录占用的磁盘空间大小
[root@Demo-Server test]# cd
[root@Demo-Server ~]# du -sh
211M .
(2)综合案例
[root@Demo-Server ~]# cd test/
[root@Demo-Server test]# tree
.
├── logs
│ ├── java.log
│ └── spring.log
├── log.tar.gz
├── log.zip
├── package.zip
└── target
└── logs
├── java.log
└── spring.log
3 directories, 7 files
[root@Demo-Server test]# du -h
0 ./logs
0 ./target/logs
0 ./target
12K .
[root@Demo-Server test]# du -ah
4.0K ./package.zip
0 ./logs/java.log
0 ./logs/spring.log
0 ./logs
4.0K ./log.zip
4.0K ./log.tar.gz
0 ./target/logs/java.log
0 ./target/logs/spring.log
0 ./target/logs
0 ./target
12K .
[root@Demo-Server test]# du -ah -d 1
4.0K ./package.zip
0 ./logs
4.0K ./log.zip
4.0K ./log.tar.gz
0 ./target
12K .
df:查看磁盘空间使用情况
1)基本语法
df 选项
列出文件系统的整体磁盘使用量,检查文件系统磁盘占用情况。
2)选项
选项 | 功能 |
---|---|
-h | 以人们较易阅读的GBytes、MBytes、KBytes等格式显示大小 |
3)案例
[root@Demo-Server test]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 470M 0 470M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 8.4M 478M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 37G 7.2G 30G 20% /
/dev/sda1 1014M 173M 842M 18% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
lsblk:查看设备挂载情况
1)语法
lsblk [选项] [<设备> ...]
设备参数可以省略,此时会列出所有设备
2)选项
选项 | 功能 |
---|---|
-f | 查看详细的设备挂载情况,显示文件系统信息 |
3)案例
(1)lsblk:查看设备挂载信息
[root@Demo-Server test]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 37G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.4G 0 rom
- NAME:块设备名
- MAJ:MIN:本栏显示主要和次要设备号
- RM:显示可移动设备。0表示非移动设备,1表示可移动设备
- SIZE:块设备的空间大小
- RO:是否只读,0表示非只读,1表示只读
- TYPE:块设备类型,比如disk磁盘,part分区,lvm逻辑卷,rom只读存储
- MOUNTPOINT:设备挂载点
(2)lsblk -f:查看设备文件详细信息
[root@Demo-Server test]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 8aae9792-4467-4ab5-99c1-19db2e0a687a /boot
└─sda2 LVM2_member 88rVHd-kvZq-2DNv-EwYh-1Th7-KrTT-be0xq0
├─centos-root xfs 72845c0e-0173-49ad-a8ed-0f1877060a99 /
└─centos-swap swap 8abbdd0c-3be8-451c-8cec-f61780a2e756 [SWAP]
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
- NAME:设备名
- FSTYPE:文件系统类型
- UUID:文件系统ID
- MOUNTPOINT:设备挂载点
(3)lsblk 设备:查看某个设备挂载信息
[root@Demo-Server test]# cd
[root@Demo-Server ~]# lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 37G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
mount:挂载
mount 设备 目录
这个后面的案例中会讲。
umount:卸载
umount <设备> | <目录>
umount -v /dev/sda1umount -v /mnt/mymount/
磁盘管理(添加磁盘、分区、格式化、挂载)
这部分会演示一下,如何在系统中添加一块硬盘,会演示介绍整个过程。
linux如何使用一块硬盘?
大家可以把硬盘想象成一个大房子,房子里面有很多房间,房间需要装修后才能入住,才能够放东西
1)硬盘
相当于一个大房子
2)分区
硬盘想要使用,也需要像房子一样划分成一块块的区域,这个就叫分区,一个分区相当于房子中的一个房间。
在linux中一块硬盘只能划分成4个大的分区,如果想划分更多的分区怎么办呢?
这里就涉及到分区的类型了,即主分区和扩展分区
- 主分区:内部不能在创建小房间的分区,即一块硬盘最多只能有4个主分区,即4个分区的类型都是主分区。
- 扩展分区:内部可以继续划分成小房间的分区,一块磁盘中最多只能有一个扩展分区,扩展分区内部可以划分成很多小房间,这些小房间叫做逻辑分区。
3)格式化
对分区进行格式化,相当于对房间进行装修,装修后然后才能放东西,即格式化之后,分区中才能够存储数据
4)挂载
分区经过格式化之后,可以放数据了,而linux中是通过目录来访问文件的,而真正存储数据的是磁盘中的分区,此时目录就需要和分区有个映射关系,创建映射关系这个过程就是挂载的过程,将某个区分和某个目录联系起来,当向这个目录中放文件的时候,实际上就向目录关联的分区中放东西。
硬盘说明
- linux硬盘分IDE硬盘和SCSI硬盘,目前基本上都是SCSI硬盘
- 对应IDE硬盘,驱动器标识符为”hdx”,其中“hd”表名分区所在的设备的类型,这里是指IDE硬盘了,“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“”代表分区,钱4个分区用数字1到5表示,他们是主分区或者扩展分区,从5开始就是逻辑分区,例如,hda3表示为第一个IDE硬盘上第3个主分区或扩展分区,hdb2表示第2个IDE硬盘上的第2个主分区或扩展分区
- 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在的设备的类型的,其余则和IDE硬盘的表示方法一样
使用lsblk
可以看到系统硬盘情况,
TYPE列为disk的表示硬盘,可以看出只有一块硬盘,名称为sda
,sd开头的是SCSI类型硬盘,这个硬盘下面有2个分区(TYPE类型为part的)
- sda1:第一个主分区
- sda2:扩展分区,下面有2个逻辑分区(TYPE列为lvm的)
- centos-root:逻辑分区,挂载点是/,表示/目录中的数据这个分区中放在
- centos-swap:逻辑分区,挂载点是[SWAP:交换分区],类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用
案例:演示添加硬盘的过程(含分区、格式化、挂载整个过程)
这个过程还是挺重要,当我们系统中磁盘空间不足的时候,我们需要添加硬盘,就涉及到这个过程。
1)需求
添加一块20G的硬盘,分3个主分区,1个扩展分区,扩展分区下面挂2个逻辑分区,由于我们系统中已经存在一块硬盘了:sda,那么我们重新添加一块硬盘,名称就变成:sdb了,对应的分区如下,如果大家要创建的分区和这个不一样,将过程调整一下就可以了。
分区名称 | 类型(P:主分区,E:扩展分区,L:逻辑分区) | 大小(G) | 文件系统类型 |
---|---|---|---|
sdb1 | P | 4G | xfs |
sdb2 | P | 5G | xfs |
sdb3 | P | 6G | xfs |
sdb4 | E | ||
sdb5 | L | 2G | xfs |
sdb6 | L | 3G | xfs |
2)添加一块20G的硬盘
VMware左侧窗口,选中当前虚拟机->右键->设置
3)重启机器,即可看到新的硬盘
需要重启机器之后,可以看到这颗硬盘,所以执行reboot,重启机器。
重启之后,用lsblk
命令,即可看到新加的硬盘:sdb
linux中所有设备都是用文件来表示的,都在/dev目录用一个文件表示,磁盘也是一样的,我们通过下面命令来看一下
[root@Demo-Server ~]# ll /dev | grep -w "sd."
brw-rw----. 1 root disk 8, 0 10月 9 22:19 sda
brw-rw----. 1 root disk 8, 16 10月 9 22:19 sdb
- /dev/sda:对应第1块硬盘
- /dev/sdb:对应第2块硬盘
4)创建第1个主分区:sdb1,大小为4G
需要用到一个新的命令:fdisk 磁盘
,来对磁盘进行分区,这里我们需要对sdb
这块磁盘进行分区,所以需用fdisk /dev/sdb
来进行操作。
(1)执行fdisk /dev/sdb
命令
(2)输入m,查看帮助
- n:在当前磁盘创建一个新的分去
- d:在当前磁盘删除一个分区
- p:列出当前磁盘分区信息
- w:保存配置并退出
(3)输入n:创建分区,提示让我们选择创建的分区类型,我们要创建是主分区,所以需要选择p
p:主分区
e:扩展分区
(4)输入p:提示如下,此时会让我们选择分区编号,这里可以看出分区编号只能有4个
(5)输入分区编号1,如下,又会提示让我们输入扇区的位置,直接按enter键就行了,会自动取默认值
(6)输入分区的大小:+4G,注意这里的格式:+size{K,M,G}这单位有大小写的,不要写错了
(7)输入p看一下,目前的分区信息,如下
可以看到列表中目前只有一个分区:/dev/sdb1
5)创建第2个主分区:sdb2,大小为5G
过程参考第4步中创建第一个分区的过程。
6)创建第3个主分区:sdb3,大小为6G
7)创建扩展分区:sdb4,大小为剩下的空间
过程和上面的上面创建分区的过程有点不同
- 分区类型选择的是e,不能选p哦
- 输入大小的时候,直接按enter就行了,空间大小为剩余的空间,即5G
8)创建逻辑分区:sdb5,大小为2G
9)创建逻辑分区:sdb6,大小为3G
10)输入p查看分区列表,6个分区都ok了
11)输入w保存并退出(别忘啦)
12)查看/dev/sdb磁盘分区挂载情况
[root@Demo-Server ~]# lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1
├─sdb2
├─sdb3
├─sdb4
├─sdb5
└─sdb6
13)格式化第一个分区sdb1
需要使用mkfs
命令对分区进行格式化,语法
mkfs -t 文件类型 设备
这里文件类型我们选择xfs
,文件类型这里不介绍了,大家可以自行百度。
执行下面命令对sdb1分区进行格式化
[root@Demo-Server ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1048576 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=4194304, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
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
14)格式化其他几个分区(不包含扩展分区)
mkfs -t xfs /dev/sdb2
mkfs -t xfs /dev/sdb3
mkfs -t xfs /dev/sdb5
mkfs -t xfs /dev/sdb6
15)挂载
分区格式化好,然后需要将其和目录进行关联起来之后才可以使用,这个过程就是挂载的过程。
挂载有2种方式
- 方式1:使用mount命令进行挂载,重启会丢失
- 方式2:修改文件的方式,持久性的,重启之后不会丢失
16)使用mount命令进行挂载
mount挂载语法如下,将分区挂载到目标目录
mount 设备 目标目录
分区和目录的映射关系如下
分区(也叫挂载点或者设备) | 目录 |
---|---|
/dev/sdb1 | /home/xxx/dir1 |
/dev/sdb2 | /home/xxx/dir2 |
/dev/sdb3 | /home/xxx/dir3 |
/dev/sdb5 | /home/xxx/dir5 |
/dev/sdb6 | /home/xxx/dir6 |
执行下面命令,对5个分区进行挂载到表格中对应的目录
[root@Demo-Server ~]# cd /home/
[root@Demo-Server home]#
[root@Demo-Server home]# mkdir -p /home/xxx/dir1 /home/xxx/dir2 /home/xxx/dir3 /home/xxx/dir5 /home/xxx/dir6
[root@Demo-Server home]# mount /dev/sdb1 /home/xxx/dir1/
[root@Demo-Server home]# mount /dev/sdb2 /home/xxx/dir2/
[root@Demo-Server home]# mount /dev/sdb3 /home/xxx/dir3/
[root@Demo-Server home]# mount /dev/sdb5 /home/xxx/dir5/
[root@Demo-Server home]# mount /dev/sdb6 /home/xxx/dir6/
再来看看挂载后的情况,如下
[root@Demo-Server home]# lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1 xfs a55fa579-0e1b-4b79-b429-bb6b5913f0fd
├─sdb2 xfs bed7ee3e-2f6f-408c-b720-49af694bbc7a /home/xxx/dir2
├─sdb3 xfs 6e712f33-c47a-423a-9bfd-372434437549 /home/xxx/dir3
├─sdb4
├─sdb5 xfs 30f62f64-316e-477d-8b59-99fec197ac28 /home/xxx/dir5
└─sdb6 xfs 18768b27-579c-4b2c-bf9d-326eb47bb7c5 /home/xxx/dir6
下面来测试一下效果,向/home/xxx/dir1
目录中扔个大文件,看看对应的分区/dev/sdb1
磁盘使用情况是否发生变化了
[root@Demo-Server home]# df -h /dev/sdb1
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 470M 0 470M 0% /dev
[root@Demo-Server home]# find / -size +100M
/proc/kcore
find: ‘/proc/2822/task/2822/fd/5’: 没有那个文件或目录
find: ‘/proc/2822/task/2822/fdinfo/5’: 没有那个文件或目录
find: ‘/proc/2822/fd/6’: 没有那个文件或目录
find: ‘/proc/2822/fdinfo/6’: 没有那个文件或目录
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/var/lib/rpm/Packages
/var/cache/yum/x86_64/7/updates/packages/firefox-91.11.0-2.el7.centos.x86_64.rpm
/var/cache/yum/x86_64/7/updates/packages/firefox-91.12.0-2.el7.centos.x86_64.rpm
/usr/lib/locale/locale-archive
/usr/lib64/firefox/libxul.so
[root@Demo-Server home]# cp /var/cache/yum/x86_64/7/updates/packages/firefox-91.11.0-2.el7.centos.x86_64.rpm /home/dir1
[root@Demo-Server home]# ll -h /home/dir1
-rw-r--r--. 1 root root 107M 10月 9 22:40 /home/dir1
[root@Demo-Server home]# ^C
[root@Demo-Server home]# df -h /dev/sdb1
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 470M 0 470M 0% /dev
17)设置自动挂载
mount命令的挂载方式,重启后挂载关系会丢失。
linux提供了自动挂载的方式:配置文件/etc/fstab
,用来配置设备的挂载信息,系统启动后会自动读取这个目录,执行自动挂载操作。
将下面信息加入到/etc/fstab
中,即可实现自动挂载
/dev/sdb1 /home/xxx/dir1 xfs defaults 0 0
/dev/sdb2 /home/xxx/dir2 xfs defaults 0 0
/dev/sdb3 /home/xxx/dir3 xfs defaults 0 0
/dev/sdb5 /home/xxx/dir5 xfs defaults 0 0
/dev/sdb6 /home/xxx/dir6 xfs defaults 0 0