Linux 磁盘的一生

注意:实验环境都是使用VMware模拟

​ 磁盘接口类型这里vm中是SCSI,扩展sata,ide(有时间可以看看或者磁盘的历史)

​ 总结:磁盘从有到无---类似于建房子到可以住


1.第一个历程:添加磁盘(房子框架)(具体几块看自己,可以做Raid博客可以看我的链接)

不重启检测磁盘:

echo "- - -" > /sys/class/scsi_host/host0/scan

echo "- - -" > /sys/class/scsi_host/host1/scan

echo "- - -" > /sys/class/scsi_host/host2/scan

查看是否添加成功:

python 复制代码
[root@shell ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  3.9G  0 part [SWAP]
├─sda3   8:3    0   50G  0 part /
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0 45.1G  0 part /home
sdb      8:16   0    1G  0 disk 
sr0     11:0    1  4.3G  0 rom  /run/media/root/CentOS 7 x86_64

2.第二个历程:分区(区域划分大厅或者是厨房、卧室)

fdisk 【设备名】 例如:fdisk /dev/sdb 扩展分区工具:gdisk parted

fdisk /dev/sdb

python 复制代码
[root@shell ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xe348f4b5 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m  #列出菜单

分区选项:

python 复制代码
d 删除分区
g 创建一个新的空 GPT 分区表
G 创建一个 IRIX(SGI)分区表
l 列出已知的分区类型
m 打印此菜单
n 添加一个新的分区
p 打印分区表
q 不保存更改退出

n:创建一个新的分区

python 复制代码
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)   #主分区
   e   extended									 #逻辑分区
Select (default p):
python 复制代码
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-2097151,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):+100M
分区 1 已设置为 Linux 类型,大小设为 100 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (206848-2097151,默认为 206848):
将使用默认值 206848
Last 扇区, +扇区 or +size{K,M,G} (206848-2097151,默认为 2097151):+100M
分区 2 已设置为 Linux 类型,大小设为 100 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (411648-2097151,默认为 411648):
将使用默认值 411648
Last 扇区, +扇区 or +size{K,M,G} (411648-2097151,默认为 2097151):+100M   
分区 3 已设置为 Linux 类型,大小设为 100 MiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e     #选择扩展分区
已选择分区 4				  #因为之前分了三个主分区所以这里自动是4编号
起始 扇区 (616448-2097151,默认为 616448):
将使用默认值 616448
Last 扇区, +扇区 or +size{K,M,G} (616448-2097151,默认为 2097151):
将使用默认值 2097151
分区 4 已设置为 Extended 类型,大小设为 723 MiB

命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (618496-2097151,默认为 618496):
将使用默认值 618496
Last 扇区, +扇区 or +size{K,M,G} (618496-2097151,默认为 2097151):+200M
分区 5 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):m
命令操作
   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)

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

扩展一下:

python 复制代码
主分区:

​		1,必须存在

​		2,最多有4个

​		3,一般作为系统盘

​		4,分区编号开始:1开始  例如:/dev/sda1

扩展分区:

​		1,不能单独存在

​		2,需要和逻辑分区一起结合

逻辑分区:

​		1,需要有扩展分区

​		2,分区编号:5开始 例如:/dev/sda5

3.第三个历程:格式化(装修房子)

mkfs [ -V ] [ -t 文件系统类型 ] [ fs-选项 ] 文件系统 [ 块 ]

python 复制代码
选项
       -V     输出冗长的帮助信息,其中包括执行的各种系统相关的命令.
              一行命令中出现多个此参数可禁止所有系统相关命令的执行。
              这个做法实际上之是在测试时有用。

       -t 文件系统类型
              指定所要创建的文件系统类型。如没有任何指定,
              则使用缺省的文件系统类型(目前是 ext2)。

       fs-选项
              要传递给实际的文件系统制作工具的文件系统相关的选项。
              虽然我们不能保证,但是绝大部分文件系统制作工具支持下面的选项。

       -c     在创建文件系统之前进行设备坏块检查。

       -l filename
              从指定文件 filename 中读取坏块信息。

       -v     产生冗长输出信息。
python 复制代码
ext4:是Linux中最常用的文件系统类型之一,支持大容量的文件和分区,具有较高的性能和稳定性。
ext3:是ext4的前身,也是一种常见的Linux文件系统类型,具有日志功能,但相对于ext4来说性能较低。
ext2:是ext3的前身,是一个简单的Linux文件系统,不具备日志功能,因此更容易遭受数据损坏。
XFS:是一种高性能的日志文件系统,适用于大型文件和高并发访问的场景。
Btrfs:是一个新兴的复制文件系统,具有许多先进的特性,如快照、压缩和校验和。
ReiserFS:是一个早期的日志文件系统,但目前在Linux社区中已经较少使用。
NTFS:是Windows系统中常见的文件系统类型,但在Linux中也有支持,通常用于与Windows系统共享数据。
FAT32 和 exFAT:是用于可移动存储设备的常见文件系统类型,可以在Linux和Windows之间共享数据。
ZFS:是一种先进的文件系统,具有强大的数据完整性和管理功能,但在Linux中需要额外的安装和配置。
python 复制代码
[root@shell ~]# mkfs -V -t ext4 /dev/sdb1 
mkfs,来自 util-linux 2.23.2
mkfs.ext4 /dev/sdb1 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
[root@shell ~]# 

分区完成之后可以使用 partprobe 设备名 来更新内核中中的分区表信息

例子:partprobe /dev/sdb1

4.第四个历程:挂载(装大门)

mount 【设备名】【挂载点】

python 复制代码
-t <filesystem>:指定文件系统类型。例如,-t ext4表示要挂载的文件系统是ext4类型。
-o <options>:指定挂载选项。常见的选项包括:
ro:以只读模式挂载文件系统。
rw:以读写模式挂载文件系统。
remount:重新挂载已经挂载的文件系统,可以修改挂载选项。
noexec:禁止在文件系统上执行可执行文件。
nosuid:禁止在文件系统上执行setuid和setgid权限的文件。
nodev:禁止在文件系统上创建设备文件。
uid=<uid>:设置挂载点的所有者用户ID。
gid=<gid>:设置挂载点的所有者组ID。
umask=<mask>:设置文件权限掩码。
defaults:使用默认挂载选项。
-r 或 --read-only:以只读模式挂载文件系统。
-w 或 --read-write:以读写模式挂载文件系统(与 -o rw 等价)。
-o loop:用于挂载一个镜像文件。
-L <label>:根据文件系统标签来挂载。
-U <uuid>:根据UUID(通用唯一标识符)来挂载。
-a:挂载 /etc/fstab 文件中定义的所有文件系统。
python 复制代码
[root@shell ~]# mkdir /data
[root@shell ~]# mount /dev/sdb
sdb   sdb1  sdb2  sdb3  sdb4  sdb5  
[root@shell ~]# mount /dev/sdb1 /data
[root@shell ~]# df -lh
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        50G  5.0G   46G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda5        46G   33M   46G    1% /home
/dev/sda1      1014M  174M  841M   18% /boot
tmpfs           378M  8.0K  378M    1% /run/user/42
tmpfs           378M   36K  378M    1% /run/user/0
/dev/sr0        4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1        93M  1.6M   85M    2% /data

取消挂载:

python 复制代码
[root@shell ~]# umount /data    #强制取消挂载使用-f umount -f /dev/sdb1或者挂载点
[root@shell ~]# df -lh
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        50G  5.0G   46G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda5        46G   33M   46G    1% /home
/dev/sda1      1014M  174M  841M   18% /boot
tmpfs           378M  8.0K  378M    1% /run/user/42
tmpfs           378M   36K  378M    1% /run/user/0
/dev/sr0        4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
[root@shell ~]# 

永久挂载:

/etc/fstab 用于系统启动时如何挂载文件系统

格式:<file_system> <mount_point>

​ 设备名或者UUID 挂载路径 文件系统类型 读写等参数 是否备份 是否检查

例子:

python 复制代码
[root@shell test]# vim /etc/fstab 
[root@shell test]# tail -1 /etc/fstab    #查看最后一行
/dev/sdb1	/test	ext4 defaults	0 0
[root@shell test]# umount /dev/sdb1		 #因为我在这个目录中所以会出现这个条信息
umount: /test:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
[root@shell test]# cd ..
[root@shell /]# umount /dev/sdb1
[root@shell /]# mount -a 				 #加载/etc/fstab这个文件
[root@shell /]# df -lh
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        50G  5.0G   46G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda5        46G   33M   46G    1% /home
/dev/sda1      1014M  174M  841M   18% /boot
tmpfs           378M     0  378M    0% /run/user/0
tmpfs           378M   12K  378M    1% /run/user/42
/dev/sdb1        93M  1.6M   85M    2% /test
[root@shell /]#

5.测试是否可以放入数据

python 复制代码
[root@shell ~]# mount /dev/sdb1 /test
[root@shell ~]# df -lh
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        50G  5.0G   46G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda5        46G   33M   46G    1% /home
/dev/sda1      1014M  174M  841M   18% /boot
tmpfs           378M     0  378M    0% /run/user/0
tmpfs           378M  8.0K  378M    1% /run/user/42
/dev/sdb1        93M  1.6M   85M    2% /test
[root@shell ~]# cd /test
[root@shell test]# ls
lost+found
[root@shell test]# cd lost+found/
[root@shell lost+found]# ls
[root@shell lost+found]# cd ..
[root@shell test]# touch yuanshang
[root@shell test]# ls
lost+found  yuanshang
[root@shell test]# rm -rf lost+found/
[root@shell test]# ls
yuanshang
[root@shell test]# 

2

/dev/sdb1 93M 1.6M 85M 2% /test

root@shell \~\]# cd /test \[root@shell test\]# ls lost+found \[root@shell test\]# cd lost+found/ \[root@shell lost+found\]# ls \[root@shell lost+found\]# cd ... \[root@shell test\]# touch yuanshang \[root@shell test\]# ls lost+found yuanshang \[root@shell test\]# rm -rf lost+found/ \[root@shell test\]# ls yuanshang \[root@shell test\]# ``` ```

相关推荐
好好学操作系统4 分钟前
autodl 保存 数据 跨区
linux·运维·服务器
dbitc6 分钟前
WIN11把WSL2移动安装目录
linux·运维·ubuntu·wsl
KingRumn6 分钟前
Linux同步机制之信号量
linux·服务器·网络
嵌入式学习菌7 分钟前
SPIFFS文件系统
服务器·物联网
旺仔Sec7 分钟前
2026年度河北省职业院校技能竞赛“Web技术”(高职组)赛项竞赛任务
运维·服务器·前端
BullSmall28 分钟前
linux 根据端口查看进程
linux·运维·服务器
herinspace32 分钟前
管家婆软件年结存后快马商城操作注意事项
服务器·数据库·windows
_F_y38 分钟前
Linux:进程间通信
linux
嘻哈baby39 分钟前
Ansible自动化运维入门:从手工到批量部署
运维·自动化·ansible
weixin_462446231 小时前
Kali/ubuntu Linux 中彻底删除 Cursor 编辑器(含 dpkg 非空目录警告解决)
linux·ubuntu·cursor