linux也有 系统盘 和 数据盘。
但这并不是 Linux 内核或文件系统层面的强制划分,而是一种基于最佳实践的逻辑和规划上的区分
常用的一些命令,
lsblk
fdisk -l
df -l
,然后区分下 loop 和 snap的区别
😎一 snap loop
你问得非常深入,触及了 Linux 系统中两个既常见又容易被忽略的重要机制:Snap 包 和 Loop 设备,以及它们之间的紧密联系。下面我会用通俗易懂的语言,结合你之前看到的 lsblk 输出,详细解释:
一、🔍 什么是 Snap 包?
✅ 简单定义:
Snap 是一种软件包格式,由 Canonical(Ubuntu 的母公司)推出,旨在简化软件的安装、更新和管理。
🧩 Snap 包的特点:
| 特性 | 说明 |
|---|---|
| 格式 | Snap 是一种 自包含的软件包,不仅包含程序本身,还包含它运行所需的 所有依赖库、配置文件、甚至一个小型的文件系统。 |
| 安装方式 | 通过 snap 命令安装,比如:sudo snap install firefox |
| 更新方式 | Snap 包 自动更新,无需用户手动升级,非常省心(但也有人觉得过于频繁 😅) |
| 沙盒机制 | Snap 应用运行在 受限的沙盒环境中,安全性较高,但可能与系统其他部分隔离较多 |
| 适用平台 | 最初为 Ubuntu 设计,但现在几乎所有主流 Linux 发行版(如 Debian、Fedora、Arch 等)都支持 Snap |
📦 举个例子:
你可能安装过这些常见的 Snap 软件:
- Firefox(浏览器)
- Spotify(音乐播放器)
- VS Code(代码编辑器)
- Discord(聊天软件)
- Docker(部分版本)
这些软件在 Ubuntu 等系统上,可能不是通过传统的 .deb 包安装的,而是通过 Snap 安装的!
二、🔁 那么 Loop 设备又是什么?和 Snap 有什么关系?
✅ 简单定义:
Loop 设备是 Linux 中的一种虚拟块设备,它可以将一个普通文件(比如一个镜像文件、压缩包等)“模拟”成一个磁盘分区,从而可以像访问真实磁盘一样访问这个文件。
🧩 Loop 设备的作用:
| 用途 | 说明 |
|---|---|
| 挂载 ISO 镜像 | 比如把 ubuntu.iso 挂载成虚拟光驱,查看或安装系统 |
| 挂载磁盘映像文件 | 比如 .img、.qcow2 等虚拟机磁盘文件 |
| 挂载 Snap 包的底层文件 | 这是你最关心的:Snap 包本质上是一个压缩的 SquashFS 文件系统镜像,它需要通过 Loop 设备挂载到系统中才能运行! |
🔄 Snap 包与 Loop 设备的关系(核心重点!)
Snap 包的本质:
- 一个 Snap 包(比如
firefox.snap)并不是传统意义上的可执行文件或安装包。 - 它本质上是一个 只读的 SquashFS 文件系统镜像,里面包含了:
- 应用程序的可执行文件
- 所有依赖的库
- 配置文件
- 资源文件(如图标、UI 界面)
- 甚至一个私有的
/usr、/lib等目录结构
为了让系统能够使用这个“镜像文件”,Linux 会:
- 创建一个 loop 设备(比如
/dev/loop0) - 把这个 Snap 包的镜像文件挂载到这个 loop 设备上
- 再把这个 loop 设备挂载到系统的某个目录(如
/snap/firefox/6626) - 然后你就可以像运行普通程序一样运行这个 Snap 应用了!
三、🔍 回到你之前的 lsblk 输出
你之前运行了:
lsblk
并看到了很多 loop 设备,比如:
loop0 7:0 0 4K 1 loop /snap/bare/5
loop4 7:4 0 73.9M 1 loop /media/user/disk2
loop5 7:5 0 50.9M 1 loop /media/user/disk1
loop17 7:17 0 50.9M 1 loop /media/user/disk
loop19 7:19 0 568K 1 loop /snap/snapd-desktop-integration/253
...
这些 loop 设备大多数都是 Snap 包在背后使用的!
✅ 举个例子:
比如这一行:
loop0 7:0 0 4K 1 loop /snap/bare/5
含义是:
- 有一个 loop 设备叫
/dev/loop0 - 它是一个 Snap 包在后台挂载后产生的虚拟设备
- 它被挂载到了
/snap/bare/5,这是 Snap 系统为该软件包分配的一个只读目录 - 你可能根本没直接使用过
bare这个包,但它是 Snap 系统的基础组件之一,由系统自动安装和管理
四、🧠 通俗总结:Snap 和 Loop 的关系
| 概念 | 通俗解释 | 与对方的关系 |
|---|---|---|
| Snap 包 | 就像是一个“打包好的软件盒子”,里面不仅有程序,还有它需要的所有东西,甚至连一个小系统都有! | Snap 包本质是一个 只读的文件系统镜像(比如 .snap 文件) |
| Loop 设备 | 是 Linux 的一种“虚拟光驱/虚拟硬盘”,它能把一个文件(比如 Snap 包的镜像)当成真正的磁盘来用 | Snap 包需要通过 Loop 设备挂载到系统中,才能被运行和访问 |
| 关联 | 当你安装一个 Snap 软件(比如 Firefox、VSCode),系统会: 1. 把 Snap 包文件加载到一个 loop 设备(比如 /dev/loop0)2. 挂载到 /snap/软件名/版本号3. 你就可以像正常软件一样使用它了 | 每一个 Snap 包在运行时,通常都会占用一个或多个 loop 设备 |
五、🔧 你可以自己查看 Snap 和 Loop 的关系
1. 查看当前系统安装了哪些 Snap 包:
snap list
输出示例:
Name Version Rev Tracking Publisher Notes
core 16-2.58.2 16 latest/stable canonical✓ core
firefox 120.0.1-1 4356 latest/stable mozilla✓ -
snapd 2.58.2 21759 latest/stable canonical✓ snapd
这些就是你系统里通过 Snap 安装的软件,比如 firefox、snapd(Snap 系统核心)等。
2. 查看当前有哪些 loop 设备,以及它们挂载到哪里:
lsblk
或者更直观地查看 loop 设备的挂载来源:
losetup -l
输出示例:
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 0 1 /var/lib/snapd/snaps/bare_5.snap
/dev/loop1 0 0 0 1 /var/lib/snapd/snaps/firefox_4356.snap
这表示:
/dev/loop0是一个 loop 设备,它关联的原始文件是/var/lib/snapd/snaps/bare_5.snap,也就是一个 Snap 包文件!- 该 loop 设备被挂载到了
/snap/bare/5,供系统和用户使用
六、🙋 常见问题 FAQ
❓ Q1:Snap 包和传统的 .deb 包有什么区别?
| 对比项 | Snap 包 | 传统的 .deb 包 |
|---|---|---|
| 安装方式 | 通过 snap install | 通过 apt install |
| 依赖管理 | 自带所有依赖,不依赖系统库 | 依赖系统已安装的库,可能版本冲突 |
| 更新方式 | 自动更新,统一管理 | 通过系统包管理器手动或自动更新 |
| 文件结构 | 自包含,沙盒化 | 与系统深度集成 |
| 适用范围 | 跨发行版(Ubuntu、Fedora、Debian…) | 通常只适用于特定发行版(如 Ubuntu 的 .deb) |
❓ Q2:我能删除这些 loop 设备吗?
🔴 不要手动删除 loop 设备!
-
这些 loop 设备是由系统(特别是
snapd服务)自动创建和管理的 -
如果你删除了正在使用的 loop 设备,可能导致 Snap 应用崩溃或无法运行
-
如果你真的想清理未使用的 loop 设备,可以卸载对应的 Snap 包:
snap remove 包名比如:
snap remove spotify卸载后,相关的 loop 设备通常会被系统自动清理。
❓ Q3:我能不用 Snap 吗?只用传统的 .deb 包?
✅ 可以!
- 如果你不喜欢 Snap,可以选择安装软件的 传统 .deb 包版本(比如通过
apt) - 某些软件(如 Firefox、VSCode)同时提供 Snap 和 .deb 安装方式
- 你也可以卸载 Snap 系统本身(但不推荐,可能影响系统稳定性)
卸载 Snap(谨慎操作!):
sudo apt purge snapd
但很多 Ubuntu 系统工具依赖 Snap,卸载后可能导致部分功能异常。
✅ 总结一句话:
Snap 包是一种自包含、易管理、自动更新的软件打包格式,但它需要通过 Linux 的 Loop 设备挂载到系统中才能运行。
你通过lsblk看到的众多loop设备,大部分就是 Snap 包在后台使用的虚拟挂载点,它们是 Snap 运行的关键机制,通常无需手动干预,由系统自动管理即可。



2万+

被折叠的 条评论
为什么被折叠?



