

Linux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被 划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设 定block大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的

[wks@hcss-ecs-ab43 file_patition_lesson]$ ls /dev/vda*
/dev/vda /dev/vda1
[wks@hcss-ecs-ab43 file_patition_lesson]$ 这是一种常见的磁盘分区布局。通常情况下:
/dev/vda 代表整块磁盘设备/dev/vda1、/dev/vda2 等代表这个磁盘设备上划分的不同分区我这里只有一个/dev/vda1分区,以下查看文件系统的磁盘使用情况:
[wks@hcss-ecs-ab43 file_patition_lesson]$ df -h
df: ‘/tmp/.mount_nvimxPjzYC’: Transport endpoint is not connected
Filesystem Size Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 12K 919M 1% /dev/shm
tmpfs 919M 98M 822M 11% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 40G 8.0G 30G 22% /
tmpfs 184M 0 184M 0% /run/user/1003
tmpfs 184M 0 184M 0% /run/user/0
[wks@hcss-ecs-ab43 file_patition_lesson]$ df -h命令:
df是"disk free"的缩写,用于查看文件系统的磁盘使用情况。-h是"human-readable"的缩写,表示以更容易理解的格式(如KB、MB、GB)显示磁盘大小。Filesystem: 表示文件系统所在的磁盘分区或设备。Size: 文件系统的总容量。Used: 已使用的容量。Avail: 可用的剩余容量。Use%: 已使用容量的百分比。Mounted on: 文件系统挂载的目录。/dev/vda1 40G 8.0G 30G 22% /这一行:
/dev/vda1 表示这是一个名为 vda1 的磁盘分区。/ 下。dd 命令是 Linux 和 Unix 系统中非常强大和重要的命令之一。它主要用于以下几个方面:
数据转换和复制:
dd 命令的语法格式如下:
dd [选项]... [if=文件] [of=文件] [bs=bytes] [count=blocks] [seek=blocks]其中最常用的几个选项包括:
if=: 指定输入文件of=: 指定输出文件bs=: 指定读写的块大小count=: 指定读写的块数conv=: 指定数据转换选项首先创建目录。制作一个大的磁盘区就当做一个分区。这里使用dd命令。
[wks@hcss-ecs-ab43 file_patition_lesson]$ mkdir disk.iso
[wks@hcss-ecs-ab43 file_patition_lesson]$ dd if=/dev/zero of=./disk.iso bs=1M count=5
5+0 records in
5+0 records out
5242880 bytes (5.2 MB) copied, 0.00503848 s, 1.0 GB/s
[wks@hcss-ecs-ab43 file_patition_lesson]$ 这段命令输出是在 Linux 系统上使用 dd 命令创建一个 5MB 大小的磁盘镜像文件 disk.iso。
dd if=/dev/zero of=./disk.iso bs=1M count=5
if=/dev/zero: 指定从 /dev/zero 设备读取输入数据。这个设备会产生无限量的 0 值字节。of=./disk.iso: 指定将输出写入到当前目录下的 disk.iso 文件。bs=1M: 指定每次读写的块大小为 1MB。count=5: 指定读写 5 个块,也就是 5MB 的数据。mkfs.ext4 命令用于在磁盘分区或文件上创建 ext4 文件系统。
这个命令的作用如下:
disk.iso 文件,将其转换为一个可挂载的 ext4 文件系统。/ 等。运行这个命令后,disk.iso 文件就变成了一个可用的 ext4 格式的磁盘镜像文件。你可以将其挂载到系统上,就像挂载一个物理磁盘分区一样使用它。
需要注意的是,在运行 mkfs.ext4 之前,请确保 disk.iso 文件已经创建完成,否则可能会出现错误。另外,如果需要使用其他文件系统类型,可以将 ext4 替换为 ext3、xfs、btrfs 等其他文件系统类型。
[wks@hcss-ecs-ab43 file_patition_lesson]$ mkfs.ext4 disk.iso #格式化写入文件系统
mke2fs 1.42.9 (28-Dec-2013)
disk.iso is not a block special device.
Proceed anyway? (y,n) y//这里y确认创建空目录
[wks@hcss-ecs-ab43 file_patition_lesson]$ sudo mkdir /mnt/mydisk
[sudo] password for wks:
[wks@hcss-ecs-ab43 file_patition_lesson]$ ll
total 1152
-rw-rw-r-- 1 wks wks 5242880 Nov 8 20:49 disk.iso查看可以使用的分区
[wks@hcss-ecs-ab43 file_patition_lesson]$ df -h
df: ‘/tmp/.mount_nvimxPjzYC’: Transport endpoint is not connected
Filesystem Size Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 12K 919M 1% /dev/shm
tmpfs 919M 98M 822M 11% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 40G 8.0G 30G 22% /
tmpfs 184M 0 184M 0% /run/user/1003
tmpfs 184M 0 184M 0% /run/user/0
[wks@hcss-ecs-ab43 file_patition_lesson]$ 将 disk.iso 文件挂载到 /mnt/mydisk/ 目录下
[wks@hcss-ecs-ab43 file_patition_lesson]$ sudo mount -t ext4 ./disk.iso /mnt/mydisk/
[wks@hcss-ecs-ab43 file_patition_lesson]$ df -h
df: ‘/tmp/.mount_nvimxPjzYC’: Transport endpoint is not connected
Filesystem Size Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 12K 919M 1% /dev/shm
tmpfs 919M 98M 822M 11% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 40G 8.0G 30G 22% /
tmpfs 184M 0 184M 0% /run/user/1003
tmpfs 184M 0 184M 0% /run/user/0
/dev/loop0 3.9M 53K 3.5M 2% /mnt/mydisk
[wks@hcss-ecs-ab43 file_patition_lesson]$ sudo: 使用 root 权限执行此命令,因为挂载文件系统通常需要管理员权限。
mount -t ext4: 指定要挂载的文件系统类型为 ext4。这需要与之前使用 mkfs.ext4 命令创建的文件系统类型一致。
./disk.iso: 要挂载的磁盘镜像文件的路径。在这里使用了相对路径,表示当前目录下的 disk.iso 文件。
/mnt/mydisk/: 挂载点的目录。这是一个空目录,用于挂载 disk.iso 文件系统。如果该目录不存在,需要先创建它。
执行这个命令后,Linux 系统会将 disk.iso 文件作为一个 ext4 文件系统挂载到 /mnt/mydisk/ 目录下。此时,你就可以像访问普通文件系统一样访问和操作 disk.iso 中的文件和目录了。
接下来我们就可以进去这个分区,路径也就是分区的开头
[wks@hcss-ecs-ab43 file_patition_lesson]$ ll
total 1152
-rw-rw-r-- 1 wks wks 5242880 Nov 8 21:00 disk.iso
[wks@hcss-ecs-ab43 file_patition_lesson]$ cd /mnt/mydisk
[wks@hcss-ecs-ab43 mydisk]$ pwd
/mnt/mydisk分区中创建文件
[wks@hcss-ecs-ab43 mydisk]$ sudo touch test.txt
[sudo] password for wks:
[wks@hcss-ecs-ab43 mydisk]$ ls -al
total 17
drwxr-xr-x 3 root root 1024 Nov 8 21:07 .
drwxr-xr-x. 4 root root 4096 Nov 8 20:56 ..
drwx------ 2 root root 12288 Nov 8 20:49 lost+found
-rw-r--r-- 1 root root 0 Nov 8 21:07 test.txt
[wks@hcss-ecs-ab43 mydisk]$ 当使用umount 卸载分区,会提示系统繁忙,这是因为,你还在这个分区内,只要退出这个分区,就可以进行删除。
[wks@hcss-ecs-ab43 mydisk]$ sudo umount /mnt/mydisk
umount: /mnt/mydisk: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[wks@hcss-ecs-ab43 mydisk]$ df -h
df: ‘/tmp/.mount_nvimxPjzYC’: Transport endpoint is not connected
Filesystem Size Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 12K 919M 1% /dev/shm
tmpfs 919M 98M 822M 11% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 40G 8.0G 30G 22% /
tmpfs 184M 0 184M 0% /run/user/1003
tmpfs 184M 0 184M 0% /run/user/0
/dev/loop0 3.9M 53K 3.5M 2% /mnt/mydisk
[wks@hcss-ecs-ab43 mydisk]$切换到别的目录,或者分区,就可以卸载分区,但是回到根目录,想再进行卸载根目录分区,无法做到,因为你切换不到别的分区了 卸载成功:

**问题: 你怎么确认你在哪一个分区里面?? ? 多个分区->一个分区包含/->若干个普通目录->/a /b /c /d-> 分区无法直接使用,分区必须经过“挂载”到目录上,分区才可以被用通过路径的方式进行访问! **
当分区只有挂到目录上才能使用,那么任何一个分区,天然有了基本的路径
/dev/loop0 3.9M 53K 3.5M 2% /mnt/mydisk当我们进去到一个分区挂载到一个目录上时,
cd mnt/XXX此时,在分区里进行操作分区,创建目录之类的操作,因此一个文件的路径是
由分区+ 自己的操作路径,这就知道pwd是怎么获取到路径是这样来的
mkdir /mnt/XXX/whb/dircd /
cd mnt/XXX/whb/dir怎么确认我们在哪个分区下呢?
/mnt/mydisk/XXXX/XXXX当我们的路径从根目录进行解析时,首先解析到/mnt/mydisk/分区就清楚了。
