Yin的笔记本

vuePress-theme-reco Howard Yin    2021 - 2025
Yin的笔记本 Yin的笔记本

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
author-avatar

Howard Yin

303

Article

153

Tag

Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
  • 如何压缩Win32DiskImager读出的磁盘镜像

    • 准备
      • 查看最大的分区的起点位置
        • 挂载镜像中最大的分区到本地回环
          • 对挂载的设备启动gparted
            • 修改大小
              • 重建分区
                • 裁剪文件
                  • 刷入系统后如何扩容到物理存储器大小

                  如何压缩Win32DiskImager读出的磁盘镜像

                  vuePress-theme-reco Howard Yin    2021 - 2025

                  如何压缩Win32DiskImager读出的磁盘镜像


                  Howard Yin 2021-08-02 13:12:04 服务器运维

                  做大规模实验经常要一次装很多台机器。通常的办法是将一台已经装好的机器上的系统盘取出来,用Win32DiskImager制作成镜像再写到其他机器的存储器上,这样就不用一台机器一台机器地用安装盘装机了。

                  但是这种方法有个问题,那就是系统盘有多大读出来的镜像就有多大,64G的盘不管里面写了多少内容读出来的镜像就是64G.这样,在写入镜像的时候就很费时间。显然一个刚装好的系统不可能把64G全写满,所以我们可以将镜像里面没有写入内容的部分裁掉,这样就能极大地节省写入镜像的时间。

                  # 准备

                  注意:开了LVM的盘不能用此方法

                  • 用Win32DiskImager做好的镜像
                  • 运行着Linux操作系统的电脑
                  • 安装gparted
                  apt-get install -y gparted
                  
                  1

                  # 查看最大的分区的起点位置

                  通常,镜像中的比较小的分区都是操作系统的固定分区,不能变,只有最大的那个才是存储用户文件的分区。

                  首先得看看最大的分区从哪开始:

                  IMG_FILE=$(pwd)/server-basic.img
                  fdisk -l $IMG_FILE
                  
                  1
                  2

                  这个大小最大的分区的起点就是我们要找的数字。

                  # 挂载镜像中最大的分区到本地回环

                  知道了起点位置,losetup就可以将最大的分区挂载到本地回环上:

                  START=1050624
                  DEVICE=/dev/loop100
                  losetup $DEVICE $IMG_FILE -o $(($START*512))
                  
                  1
                  2
                  3

                  # 对挂载的设备启动gparted

                  gparted $DEVICE
                  
                  1

                  如果发现有lvm字样说明是开了LVM的盘,不能用这种方法操作。

                  # 修改大小

                  点这个“更改大小/移动”

                  拖着这个拉到最左边然后点“调整大小”

                  最后点“应用全部操作”

                  在输出中找到修改后的分区具体大小

                  # 重建分区

                  losetup -d $DEVICE
                  DEVICE=/dev/loop1000
                  losetup $DEVICE $IMG_FILE
                  fdisk $DEVICE
                  
                  1
                  2
                  3
                  4
                  • 最大的分区是第2个,所以依次输入d和2删除该分区
                  • 然后输入n和2重建第2个分区
                  • 输入$START的值作为起始位置
                  • 输入上一步中看到的修改后的分区具体大小的值作为分区大小+<值>K,注意要输入前面的加号和后面的K
                  • 输入w确认修改

                  # 裁剪文件

                  先看从哪裁剪

                  fdisk -l $DEVICE
                  
                  1

                  找到修改后的最大扇区末尾,这就是要裁的位置:

                  卸载设备然后裁之:

                  losetup -d $DEVICE
                  END=17827839
                  truncate -s $((($END+1)*512)) $IMG_FILE
                  
                  1
                  2
                  3

                  完成,可以看到镜像文件大小显著降低了。

                  # 刷入系统后如何扩容到物理存储器大小

                  将一个16G盘的镜像刷到32G的盘上,不经过任何操作开机只会识别出16G的存储空间,这是因为这种刷机方式将分区表也一起刷入卡里,所以多出来的空间相当于没有格式化的新分区。这种情况只需要和前面一样用gparted重建一下分区表就可以解决。

                  1. gparted /dev/sdb
                  2. 将第二个分区的扇区末尾拉到最右边
                  3. 卸载第二个分区
                  4. 第二个分区点击右键菜单检查当前分区
                  帮助我们改善此页面!
                  创建于: 2021-07-07 15:01:25

                  更新于: 2021-08-02 13:12:42