Linux(三)磁盘管理

2023-05-30,,

Linux磁盘管理

Linux中的tree工具

tree可以查看目录的树形结构,前提是需要自行安装

yum install tree -y
[root@hadoop100 ~]# tree ./
./
├── anaconda-ks.cfg
└── original-ks.cfg 0 directories, 2 files
1 查看目录占用空间大小
1.1 ls -lh:只能统计当前列出的文件及文件夹
[root@hadoop100 ~]# ls -lh /
total 24K
drwxr-xr-x. 2 root root 6 Sep 5 01:00 -
lrwxrwxrwx. 1 root root 7 Aug 11 21:04 bin -> usr/bin
dr-xr-xr-x. 5 root root 4.0K Aug 12 21:47 boot
drwxr-xr-x. 19 root root 3.3K Nov 11 23:17 dev
drwxr-xr-x. 147 root root 8.0K Nov 13 21:25 etc
drwxr-xr-x. 6 root root 57 Nov 13 21:20 home
lrwxrwxrwx. 1 root root 7 Aug 11 21:04 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Aug 11 21:04 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 10 2018 media
drwxr-xr-x. 2 root root 6 Apr 10 2018 mnt
drwxr-xr-x. 5 root root 45 Sep 5 03:17 mydata
drwxr-xr-x. 2 root root 177 Nov 9 23:09 myredis
drwxr-xr-x. 5 root root 48 Sep 4 20:51 opt
drwxr-xr-x. 2 root root 6 Sep 5 01:00 p
dr-xr-xr-x. 181 root root 0 Nov 11 23:17 proc
dr-xr-x---. 5 root root 275 Nov 13 21:14 root
drwxr-xr-x. 41 root root 1.3K Nov 14 00:09 run
lrwxrwxrwx. 1 root root 8 Aug 11 21:04 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 10 2018 srv
dr-xr-xr-x. 13 root root 0 Nov 11 23:17 sys
drwxrwxrwt. 12 root root 4.0K Nov 14 00:09 tmp
drwxr-xr-x. 13 root root 155 Aug 11 21:04 usr
drwxr-xr-x. 22 root root 4.0K Sep 5 01:32 var
1.2 du [选项] <folderName/fileName> 递归查找所有的文件大小

du即disk uages,磁盘使用情况

[root@hadoop100 ~]# du /
。。。。
7684108 /

选项说明

-h:以人类熟悉的大小单位进行自行显示

-a:不仅查看子目录大小,还要查看文件

-c:显示所有文件和子目录大小后,实现总和

-s:只显示总和

--max-depth=n:指定统计子目录的深度为第n层

[root@hadoop100 ~]# du -sh /
du: cannot access ‘/proc/9533/task/9533/fd/3’: No such file or directory
du: cannot access ‘/proc/9533/task/9533/fdinfo/3’: No such file or directory
du: cannot access ‘/proc/9533/fd/4’: No such file or directory
du: cannot access ‘/proc/9533/fdinfo/4’: No such file or directory
7.4G /
1.3 df [选项] 查看磁盘剩余情况

如上面所说,du只是查看文件、文件夹的大小,并不能看到磁盘的使用情况

-h:以人类熟悉的大小单位进行自行显示

[root@hadoop100 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 13M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda3 27G 6.7G 21G 25% /
/dev/sda1 297M 163M 134M 55% /boot
overlay 27G 6.7G 21G 25% /var/lib/docker/overlay2/e986474118b198c327740258f4f588b7cbb2301504cc3ded82850b89e7920511/merged
overlay 27G 6.7G 21G 25% /var/lib/docker/overlay2/398a283b3e2b584b07dcf6dbab7e167a8b8ddc5d8f8a86a65a6555128dda18db/merged
overlay 27G 6.7G 21G 25% /var/lib/docker/overlay2/d9a74b32407c155dca33a9a4d04c9990ac2be7774239bd779e9d083309a8e3a0/merged
tmpfs 781M 0 781M 0% /run/user/0

/dev/sda 是开始安装虚拟机时设置的两个分区,引导分区设置了297M,挂载点为boot,已经使用163还剩134

而其他的如tmpfs(temp file system临时文件系统)是linux基于内存的临时文件系统的展示。

当时安装系统设置的第二个虚拟内存分区swap,主要就是与内存进行相应的置换,可以当做虚拟内存,因此内存和swap分区的文件系统时一致的,都是tempfs。

如第一个tmpfs的挂载点为/dev/shm,即共享内存,内存中的进程就可以访问这一部分空间当做虚拟内存,可以看到大小默认为内存的一半。

devtmp则是在linux启动的时候产生的,用于管理所有的设备

1.4 free查看内存使用
[root@hadoop100 ~]# free -h
total used free shared buff/cache available
Mem: 7.6G 969M 5.7G 12M 1.0G 6.4G
Swap: 3.0G 0B 3.0G

可以查询内存使用以及swap虚拟内存

2 查看设备挂载情况
lsblk -f 列出所有的块设备的挂载情况

-f 表示同时列出文件系统,块设备主要指的硬盘以及光盘等。

[root@hadoop100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sr0 11:0 1 1024M 0 rom
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 6a44be55-10b5-4efe-9127-b2335e515fb4 /boot
├─sda2 swap ca26e17f-21d5-4605-b645-c3a5e7febb9e [SWAP]
└─sda3 xfs eae7a973-7181-4c50-98ad-624a56936d00 /
sr0

sda表示一个硬盘,sda1 sda2 sda3表示三个分区

sr0指的是光盘的光驱,类型为cdrom,没有对应的挂载点,虽然没有光盘,但是还是预留了空间进行挂载

[root@hadoop100 ~]# ll /dev/ | grep sr0
lrwxrwxrwx. 1 root root 3 Nov 11 23:17 cdrom -> sr0
brw-rw----. 1 root cdrom 11, 0 Nov 11 23:17 sr0
硬盘种类

IDE:挂载之后会显示为hda、hdb。。后面的ab表示第几块硬盘

SATA:硬盘容量比较大,成本低,挂载之后会显示为sda、sdb

SCSI:硬盘容量比更大,存储速度更高,成本高,挂载之后会显示为sda、sdb

3 mount umount 挂载/卸载

挂载:我们在开始装虚拟机的时候将硬盘分为了三个区:boot引导分区、swap分区以及根分区,而在实际使用的时候并不是将某个文件放到具体的分区而是放在目录下面,而挂载就是描述了目录和分区之间的映射关系

根目录下的文件和文件夹自然也是存放在根分区下面的。

光盘也是一种块存储设备,可以将其挂载到/mnt分区之后就可以访问了。

首先使用虚拟机的设置来模拟插入光盘

这时候如果开启了图形化界面,会自动对光盘进行挂载,查看其挂载点:

[hikaru@hadoop100 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sr0 11:0 1 4.4G 0 rom /run/media/hikaru/CentOS 7 x86_64
[hikaru@hadoop100 hikaru]$ cd CentOS\ 7\ x86_64/
[hikaru@hadoop100 CentOS 7 x86_64]$ ls
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL

我们想要进行手动挂载,就需要关闭图形化界面,一种办法是直接退出当前用户到选择用户登录界面,另一种办法则是设置linux的安全等级为3,即关闭图形化界面。

systemctl set-default mult-user.target

这里直接关闭图形化界面,重启即可。然后再次查看设备挂载情况,发现光驱大小变为了4G,但是显示没有挂载点。

Last login: Mon Nov 14 22:52:29 2022
[root@hadoop100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sr0 11:0 1 1024M 0 rom
[root@hadoop100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sr0 11:0 1 4.4G 0 rom

这时候在/dev下面会有一个链接文件链接到cdrom:

[root@hadoop100 ~]# ll /dev/cdrom
lrwxrwxrwx. 1 root root 3 Nov 14 22:53 /dev/cdrom -> sr0
mount [-t vfstype] [-o options] 挂载设备

-t:指定挂载设备的文件类型,一般情况下不需要指定,linux会自动进行选择

光盘或者光盘镜像:iso9660

-o:主要来描述设备或者档案的挂接方式。

loop:用来把一个文件当做硬盘分区挂接上系统

ro:采用只读方式挂接设备

rw:采用可读可写的方式

iocharset:访问文件系统所用的字符集

device:要挂载的设备

dir:设备的挂载点

[root@hadoop100 ~]# mount -o ro /dev/cdrom /mnt/
[root@hadoop100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sr0 11:0 1 4.4G 0 rom /mnt
[root@hadoop100 ~]# ls /mnt/
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
umount <设备文件名或者挂载点> 卸载设备
[root@hadoop100 ~]# umount /mnt
[root@hadoop100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sr0 11:0 1 4.4G 0 rom
自动挂载 /etc/fstab filesystemtab

查看配置文件

[root@hadoop100 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Fri Aug 12 05:03:56 2022
#
# 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
#
UUID=eae7a973-7181-4c50-98ad-624a56936d00 / xfs defaults 0 0
UUID=6a44be55-10b5-4efe-9127-b2335e515fb4 /boot xfs defaults 0 0
UUID=ca26e17f-21d5-4605-b645-c3a5e7febb9e swap swap defaults 0 0

配置文件每个分区后面的两个0,

第一个是kdump表示是否开启自动备份,1表示开启,开启后系统会自动进行备份然后可以进行回滚

第二个是查找优先级,在开机的时候,linux系统会执行fsck命令来进行系统中文件的检查与修复,就会根据这里的优先级先进行检查,0表示不检查,其他数字越小优先级别越高

修改配置文件为:

#
# /etc/fstab
# Created by anaconda on Fri Aug 12 05:03:56 2022
#
# 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
#
UUID=eae7a973-7181-4c50-98ad-624a56936d00 / xfs defaults 0 0
UUID=6a44be55-10b5-4efe-9127-b2335e515fb4 /boot xfs defaults 0 0
UUID=ca26e17f-21d5-4605-b645-c3a5e7febb9e swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0

重启查看设备挂载情况:

[root@hadoop100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sr0 11:0 1 4.4G 0 rom /mnt/cdrom
4 fdisk 分区
fdisk -l 查看磁盘分区详情
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 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: 0x000372c3 Device Boot Start End Blocks Id System
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 6907903 3145728 82 Linux swap / Solaris
/dev/sda3 6907904 62914559 28003328 83 Linux

该命令只能在root用户下才能执行

device:分区序列 Boot:是否为主引导分区 start end:开始结束磁柱数 blocks:当前分区的容量大小

id:分区类型

system:系统分区类型

在虚拟机中设置添加磁盘

添加之后不会像光盘一样热启动,需要重启才能检测到。

[root@hadoop100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sdb 8:16 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom
[root@hadoop100 ~]# fdisk -l Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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 /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 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: 0x000372c3 Device Boot Start End Blocks Id System
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 6907903 3145728 82 Linux swap / Solaris
/dev/sda3 6907904 62914559 28003328 83 Linux

可以看到检测到了磁盘,但是既没有挂载也没有分区信息。

fdisk 对设备进行分区

m查看帮助

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
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
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

n 添加分区

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended

① 选择分区类型:主分区 或者 扩展分区

磁盘最多被划分为4个主分区,然后四个主分区又可以被划分成4个扩展分区,主分区1-4 扩展分区号则为5-16

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):

② 选择主分区号

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):

③ 选择起始扇区 和 结束扇区

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set

④ 查看当前分区信息

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0x74407672 Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux

w 保存并退出:将分区表写入硬盘

Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks.

q 退出分区但不保存

p 打印分区表信息 (fdisk-l)

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0x74407672 Device Boot Start End Blocks Id System

分配完成后查看磁盘挂载情况

[root@hadoop100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 3G 0 part [SWAP]
└─sda3 8:3 0 26.7G 0 part /
sdb 8:16 0 10G 0 disk
└─sdb1 8:17 0 10G 0 part
sr0 11:0 1 4.4G 0 rom
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 6a44be55-10b5-4efe-9127-b2335e515fb4 /boot
├─sda2 swap ca26e17f-21d5-4605-b645-c3a5e7febb9e [SWAP]
└─sda3 xfs eae7a973-7181-4c50-98ad-624a56936d00 /
sdb
└─sdb1
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00

可以看到磁盘sdb没有被分配uuid和标明文件系统,这是由于磁盘没有进行格式化

mkfs -t xfs 创建文件系统,对磁盘进行格式化

mkfs即makFileSystem

[root@hadoop100 ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621184, 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
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 6a44be55-10b5-4efe-9127-b2335e515fb4 /boot
├─sda2 swap ca26e17f-21d5-4605-b645-c3a5e7febb9e [SWAP]
└─sda3 xfs eae7a973-7181-4c50-98ad-624a56936d00 /
sdb
└─sdb1 xfs 23f47bff-9161-4437-a04f-0629d2fd23ab
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00

格式化之后,分区便拥有了文件类型和uuid

mkfs命令的对象必须是分区名

分区后硬盘的挂载 mount
[root@hadoop100 ~]# mount /dev/sdb1 /home/test/
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 6a44be55-10b5-4efe-9127-b2335e515fb4 /boot
├─sda2 swap ca26e17f-21d5-4605-b645-c3a5e7febb9e [SWAP]
└─sda3 xfs eae7a973-7181-4c50-98ad-624a56936d00 /
sdb
└─sdb1 xfs 23f47bff-9161-4437-a04f-0629d2fd23ab /home/test
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
[root@hadoop100 ~]#

查看已经使用的磁盘情况

[root@hadoop100 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 13M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda3 27G 7.2G 20G 27% /
/dev/sda1 297M 163M 134M 55% /boot
overlay 27G 7.2G 20G 27% /var/lib/docker/overlay2/e986474118b198c327740258f4f588b7cbb2301504cc3ded82850b89e7920511/merged
overlay 27G 7.2G 20G 27% /var/lib/docker/overlay2/d9a74b32407c155dca33a9a4d04c9990ac2be7774239bd779e9d083309a8e3a0/merged
overlay 27G 7.2G 20G 27% /var/lib/docker/overlay2/398a283b3e2b584b07dcf6dbab7e167a8b8ddc5d8f8a86a65a6555128dda18db/merged
tmpfs 781M 0 781M 0% /run/user/0
/dev/sdb1 10G 33M 10G 1% /home/test

Linux(三)磁盘管理的相关教程结束。

《Linux(三)磁盘管理.doc》

下载本文的Word格式文档,以方便收藏与打印。