Linux 硬盘笔记

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 会:
  1. 创建一个 loop 设备(比如 /dev/loop0
  2. 把这个 Snap 包的镜像文件挂载到这个 loop 设备上
  3. 再把这个 loop 设备挂载到系统的某个目录(如 /snap/firefox/6626
  4. 然后你就可以像运行普通程序一样运行这个 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 安装的软件,比如 firefoxsnapd(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 运行的关键机制,通常无需手动干预,由系统自动管理即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值