Raspberry Pi磁盘空间不足


9

我对rpi感到陌生,并且我一直在关注许多教程,以尝试使人脸识别在我的pi上正常工作。我的磁盘空间用完了,似乎通过大量的教程,我发现了很多垃圾。

我在关于分区的另一个讨论中看到,可以运行命令查看我的分区。这就是它所显示的。

pi@raspberrypi ~ $ sudo fdisk -l

Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders, total 15564800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c27cb

    Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192     1685546      838677+   e  W95 FAT16 (LBA)
/dev/mmcblk0p2         1687552    15499263     6905856   85  Linux extended
/dev/mmcblk0p3        15499264    15564799       32768   83  Linux
/dev/mmcblk0p5         1695744     1818623       61440    c  W95 FAT32 (LBA)
/dev/mmcblk0p6         1826816    15499263     6836224   83  Linux

我以某种方式获得了5个分区吗?如何释放空间?

编辑:df -h的输出

pi@raspberrypi ~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       6.3G  6.0G   25M 100% /
devtmpfs        428M     0  428M   0% /dev
tmpfs            87M  336K   86M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           173M     0  173M   0% /run/shm
/dev/mmcblk0p5   60M   20M   41M  33% /boot
/dev/mmcblk0p3   27M  397K   25M   2% /media/SETTINGS

SD卡有多大?df -h的输出是什么?您是否运行过sudo raspi-config并扩展了根文件系统(选项1-我相信)?
Steve Robillard

8gig卡,我确实将其扩展了。
叉车

这是“仅仅是”树莓还是菜鸟?我不知道第二个FAT分区是做什么用的。
加纳玛

是NOOBS是的。我需要重新开始吗?我应该在没有NOOBS的情况下重新安装吗?
叉车

1
du / |sort -n首先检查正在消耗什么空间,例如日志(如果logrotate无法正常工作)或程序包管理器的缓存。史蒂夫(Steve)的命令行-sh最好这样做。
加纳玛

Answers:


10

这是对我有用的东西。您可以尝试使用以下命令清除不需要的软件包文件:

sudo apt-get autoremove
sudo apt-get clean

这行不通,但有时可以为我释放几百MB。

如果您只想运行raspbian,那么我对Jessie Lite感到很幸运,并可以根据需要添加软件包。这是8GB uSD卡上的示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.8G  1.1G  6.4G  15% /
devtmpfs        224M     0  224M   0% /dev
tmpfs           229M     0  229M   0% /dev/shm
tmpfs           229M  4.6M  224M   2% /run
tmpfs           5.3M  4.1k  5.3M   1% /run/lock
tmpfs           229M     0  229M   0% /sys/fs/cgroup
/dev/mmcblk0p1   63M   21M   43M  34% /boot

这似乎很有帮助。我会在早上尝试。我做了“清理”但没有自动删除。谢谢你的建议。
叉车

我还将研究Jessie Lite,但这可能会让我倒退一些时间。我希望有一种方法可以下载包含我需要的东西的OS快照:)
Forklift

AFAIK,“ apt-get autoremove”仅删除过期的软件包文件,而“ apt-get clean”将全部删除。如果您打算重新安装某些软件包,建议您采取前一种操作,以节省一些时间和精力。
derjoachim '16


3

另一个解决方案是使用更大的(32G)USB记忆棒或SD卡(带有USB SD卡读取器),然后将根文件系统传输到新设备。请参阅扩展根目录大小/使用外部HDD

如果您想重新开始而不会丢失更大的SD卡上的存储卡,可以使用以下方法在新的SD卡上安装可启动的Raspbian OS。安装后,将新的SD卡与启动SD卡交换,您将拥有一个干净的系统,可以访问所有旧信息。

Install Raspbian on the Raspberry Pi from Linux
  1. 设置-要求是一个Linux(类型)系统,该系统能够连接到互联网,写入micro SD卡(8G或更大),一个磁盘格式程序(fdisk),wget非常适合funzipunzip需要本地存储)和一个Raspberry皮。在读卡器或USB读卡器中将SD卡连接到Linux系统后,使用lsblk或其他命令确定设备地址。就我而言,我将使用/ dev / sdb。检查设备是否已通过df命令安装,如果已安装,请通过命令卸载umount /dev/sdb?

    pi@RPi3:~ $ lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sdb           8:16   1  29.8G  0 disk
    └─sdb1        8:17   1  29.8G  0 part
    sda           8:0    0 931.5G  0 disk
    ├─sda2        8:2    0 931.4G  0 part /
    └─sda1        8:1    0   120M  0 part /media/pi/boot1
    mmcblk0     179:0    0  29.7G  0 disk
    ├─mmcblk0p2 179:2    0  29.7G  0 part
    └─mmcblk0p1 179:1    0    63M  0 part /boot
    
  2. 格式-将SD卡格式化为一个分区,键入fat32 [ sudo fdisk /dev/sdb,subcmd p,(如果不是Disklabel类型:dos,subcmd o),subcmd d删除旧分区,subcmd n创建一个新分区(采用默认值,主分区) p,数字1,第一个,最后一个),subcmd t(类型1(代码c)和要写的subcmd w)。

    pi@RPi3:~ $ sudo fdisk -l /dev/sdb
    
    Device     Boot Start      End  Sectors  Size Id Type
    /dev/sdb1        8192 62552063 62543872 29.8G  c W95 FAT32 (LBA)
    
  3. 下载,解压缩和写入-可以一次下载Raspbian映像,解压缩并将其安装在SD卡上。unzip如果先下载Raspbian映像然后unzip将其解压缩,则该命令将起作用(将不适用于管道输入funzip)。图像超过1.5G,解压缩到4G以上,需要一段时间才能下载。

    pi@RPi3:~ $ wget -qO - https://downloads.raspberrypi.org/raspbian_latest | funzip | sudo dd bs=4M of=/dev/sdb
    
  4. 验证-映像现在安装了两个分区(引导和根)。Linux分区很小,应该扩展。(如果需要,可以在扩展之前添加更多分区。)在扩展Linux分区之前,请注意/ dev / sdb2 Start Sector(在我的情况下为137216)。

    pi@RPi3:~ $ echo -e "p\nq" | sudo fdisk /dev/sdb | egrep "Dev|^/"
    Device     Boot  Start     End Sectors Size Id Type
    /dev/sdb1         8192  137215  129024  63M  c W95 FAT32 (LBA)
    /dev/sdb2       137216 8581119 8443904   4G 83 Linux
    
  5. fdisk扩展分区-该命令可用于扩展Linux分区。首先
    使用“开始扇区”(如步骤3中所述)删除Linux分区subcmd d(默认值为2),将其重新添加回subcmd n,默认值为p,默认值为2,作为结束扇区使用默认值,然后将更改写入subcmd w(如果有)。高兴(或者退出而不用subcmd q编写更改)。如果“起始扇区”与以前相同,则数据将保持不变。

    pi@RPi3:~ $ echo -e "d\n2\nn\np\n2\n137216\n\nw" | sudo fdisk /dev/sdb
    
  6. 写标签,文件系统检查和扩展文件系统-

    pi@RPi3:~ $ sudo e2label /dev/sdb2 root
    pi@RPi3:~ $ sudo e2fsck -f /dev/sdb2
    pi@RPi3:~ $ sudo resize2fs /dev/sdb2
    
  7. 选项-可以挂载SD卡的分区并进行文件配置,这超出了此范围。sync从运行中的系统中取出SD卡之前,请确保已装入数据并卸载。

  8. 引导和配置-将SD卡安装在Raspberry Pi中并插入电源。Pi应该启动。参考https://www.raspberrypi.org/documentation/configuration/配置Pi 。


1

可能您不想从头开始。如果清理完多次下载和未使用的源代码后空间不足,请移至更大的存储卡。

您需要能够通过带有SD插槽的“笔式驱动器”托盘或类似设备在RPI上安装辅助卡。

您的安装基于NOOBS,因此您完成了一些不再使用的分区,但是浪费的空间不是那么大,消除可能很麻烦。为边界对齐创建了一些开放空间。

在更大的SD卡(16GB或更大)上创建一个克隆。

使用Win32DiskImager,使用您喜欢的文件名上的“读取”按钮创建映像备份,然后使用“写入”将映像复制到新的SD卡。

挂载新卡并启动。此时,您必须使用相同的原始空白空间运行克隆。

使用fdisk,'p'打印当前分区。将此信息复制并粘贴到您可以用作参考的位置。如下所示(您将有所不同):

Device         Boot   Start      End  Sectors   Size Id Type
/dev/mmcblk0p1         8192  1675781  1667590 814.3M  e W95 FAT16 (LBA)
/dev/mmcblk0p2      1679360 30703615 29024256  13.9G 85 Linux extended
/dev/mmcblk0p5      1687552  1810431   122880    60M  c W95 FAT32 (LBA)
/dev/mmcblk0p6      1818624 30703615 28884992  13.8G 83 Linux

用“ d”删除/ dev / mmcblk0p2,然后输入“ 2”,再次重新创建分区。“秘密”将使用相同的“开始”扇区。

使用“ n”创建Linux扩展分区,选择“扩展”,输入第一个扇区(在我的示例1679360中fdisk),然后选择最后一个扇区(“默认”),然后输入“ t”以输入“分区”的分区“类型” '2,应为'85'类型(Linux扩展)。

现在,创建位于刚创建的扩展分区内的逻辑分区。

在新的示例中使用“ n”,在“逻辑”中输入“ l”,然后“ fdisk”将分配下一个可用插槽,第一个扇区必须与之前的扇区相同,在我的示例中,第一个1687552,最后一个扇区,请使用原来的在示例122880上,输入分区号“ t”作为“ c”(ms-dos)。

对其他分区重复该过程,但是在最后一个分区(p6)上,让“ fdisk”选择“最后一个扇区”。

使用“ p”验证您的输入,并确保仅更改了最后一个分区上的最后一个扇区,并且没有其他任何更改(包括分区类型或“ id”)。

现在,使用“ w”提交更改以写入新的分区表。

重新启动,并通过以下命令让Linux知道您的新磁盘大小:

resize2fs /dev/mmcblk0p6

请享用,


为什么不只是dd整个SD卡,然后重新调整分区大小?复制良好的Pi SD的结构并非易事,特别是要确保分区的最佳边界,这不是正常的fdisk默认设置。
Milliways

问题是修改扩展分区,出于我的未知原因,更改SD品牌时,我无法在确切的初始扇区上重新创建修改后的分区。创建新分区可能不会处于边界,而是处于固态而非物理状态不是问题。最简单的方法应该是使用Win32DiskImager(或类似方法):克隆SD卡,使用fdisk Delete(删除)并重新创建,在这种情况下为mmcblk0p6。然后resize2fs
fcm

要更改分区,您首先需要修改扩展分区,然后才能扩展活动分区。边界的原因是,当SD需要恢复空间时,它会在“擦除块边界”上进行恢复-通常为4M。如果分区边界未对齐,则需要擦除2个块。对于SD卡,应以块而不是扇区为单位指定磁盘大小。
Milliways '16

如果不是使用dd复制您刚刚格式化过的分区mkfs.ext4,然后使用复制到内容中的分区,那将更有意义,节省时间并且不易出错rsync。注意不是上面,你将需要创造更大的明确分区第一,如果你想使用resizefs文件系统里面的分区
goldilocks

1

确保已扩展文件系统以使用所有可用空间。

打开终端并运行 sudo raspi-config -> Expand Filesystem

如果这不是问题,那么您只需要移动到更大的磁盘即可。无需重新开始(这些说明假定使用Mac,但其他方面非常相似):

备份磁盘:

  • 查找磁盘名称:将SD卡放入计算机并运行diskutil list(可能disk2...请勿使用disk1!!!)
  • 备用图片:sudo dd bs=1m if=/dev/disk2 of=/path/to/your/backup.img注意,这将花费很长时间。要查看进度,请按CTRL-T
  • 插入新磁盘并 diskutil list
  • 写入新磁盘: sudo dd bs=1m if=/path/to/your/backup.img of=/dev/disk2
  • 扩展文件系统:插入Pi并启动, sudo raspi-config -> Expand Filesystem

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.