Linux(三)磁盘管理
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步