在管理 Linux 系统时,我经常发现自己在分区变满后很难找到罪魁祸首。我通常使用du / | sort -nr但在大型文件系统上这需要很长时间才能返回任何结果。
此外,这通常可以成功地突出显示最严重的罪犯,但我经常发现自己
在更微妙的情况下诉诸于du没有sort,然后不得不浏览输出。
我更喜欢依赖于标准 Linux 命令的命令行解决方案,因为我必须管理相当多的系统并且安装新软件很麻烦(尤其是在磁盘空间不足时!)
当我总结我的文件的大小时,我得到一个数字。如果我跑du,我会得到另一个数字。如果我du在分区上的所有文件上运行,它与df使用的声明不匹配。为什么我的文件总大小有这么多不同的数字?电脑不能加吗?
说到添加:当我添加 的“Used”和“Available”列时df,我没有得到总数。而且这个总数小于我的分区大小。如果我把我的分区大小加起来,我就不会得到我的磁盘大小!是什么赋予了?
是否有一个命令可以列出所有分区及其标签?sudo fdisk -l并且sudo parted -l默认不显示标签。
编辑:(根据下面的评论)我说的是 ext2 标签 - 您可以在gparted分区时设置的标签。
EDIT2:目的是列出未安装的分区(所以我知道要安装哪个)。
我想备份硬盘驱动器的整个分区布局,包括逻辑驱动器,以便我可以将该布局恢复到另一个磁盘。我不想要复制分区的内容,只有布局。对于主分区和扩展分区,很简单:
dd if=/dev/sda of=partitiontable.bin bs=1 skip=446 count=64 # backup
dd if=partitiontable.bin of=/dev/sda bs=1 seek=446 count=64 # restore
Run Code Online (Sandbox Code Playgroud)
但是说到逻辑分区的布局,我想知道标准工具中是否存在类似的保存布局的方式?我想主要问题是找到 EBR 位置的偏移量,因为有了它,dd剩下的就可以完成了。请记住,我需要能够将所有内容放回(可能)空白磁盘,从而恢复相同的布局。使用像fdisk或这样的分区工具parted很好,但我必须能够自动化它们的使用(脚本)并且它们不应该依赖于任何与 X 相关的包——仅命令行。
我的备份计划是使用 struct 模块在一个小的 python 脚本中手动完成,但我更希望有一种更简单的方法。
我正在使用parted对非 SSD 硬盘进行分区,因为我想要一个 GPT 分区表。
parted /dev/sda mklabel gpt
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试创建正确对齐的分区,因此我使用以下命令来了解第一个扇区的开始位置:
parted /dev/sda unit s p free
Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
34s 488397134s 488397101s Free Space
Run Code Online (Sandbox Code Playgroud)
我们可以看到它从扇区 34 开始(这是使用此分区表时的默认值)。
因此,要创建我尝试的第一个分区:
parted /dev/sda mkpart primary 63s 127s
Run Code Online (Sandbox Code Playgroud)
将它对齐到第 64 扇区,因为它是 8 的倍数,但它显示:
警告:生成的分区没有正确对齐以获得最佳性能。
我硬盘中的逻辑和物理扇区大小均为 512 字节:
cat /sys/block/sda/queue/physical_block_size
512
cat /sys/block/sda/queue/logical_block_size
512
Run Code Online (Sandbox Code Playgroud)
如何创建正确对齐的分区?我究竟做错了什么?
如何用零清除未使用的空间?(ext3,ext4)
我正在寻找比它更聪明的东西
cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero
Run Code Online (Sandbox Code Playgroud)
就像FSArchiver正在寻找“已用空间”并忽略未使用但相反的站点。
目的:我想压缩分区图像,因此强烈建议用零填充未使用的空间。
顺便提一句。对于 btrfs :用零清除未使用的空间 (btrfs)
我见过有些人为/boot. 这样做有什么好处?这样做以后我可能会遇到什么问题?
另外,除了/homeand之外/boot,哪些分区可以分开?是否推荐?
当我想创建一个新的分区表时,我有以下选项:
aixamigabsddvhgptmacmsdospc98sunloopgparted 中的默认值似乎是msdos我猜是“MBR”分区表。但是gpt是更新的,但对 Windows 的支持较少。我已经使用 Linux 很长时间了,但我从来没有真正研究过分区。
有哪些不同的选项及其区别?是否有推荐用于仅用于 Linux 的磁盘?
我在我的 SSD 驱动器上安装了带有默认分区的 Debian Jessie。我当前的磁盘分区如下所示:
由于我有 16GB 的 RAM,我假设我不需要swap。但是由于我有其他磁盘驱动器,因此我可能会在其他驱动器之一上创建交换文件。
你能告诉我我应该采取什么步骤来正确和永久地删除交换分区以使其不占用磁盘空间吗?我希望删除交换分区,因为我目前只有 128GB SSD。
这是我每次尝试并重新启动的内容;这些步骤中的每一个都不是永久性的,或者没有做任何事情:
使用该swapoff实用程序:
swapoff --all
Run Code Online (Sandbox Code Playgroud)使用GParted实用程序:
右键单击交换分区并单击交换。
/etc/fstab
Run Code Online (Sandbox Code Playgroud)/etc/initramfs-tools/conf.d/resume
Run Code Online (Sandbox Code Playgroud)最后运行这些命令(按此顺序和相反顺序):
update-grub
update-initramfs -u
Run Code Online (Sandbox Code Playgroud)上周我遇到了一个问题(对我来说是新的)。我有一个 ext4(Fedora 15)文件系统。服务器上运行的应用程序突然停止。乍一看,我找不到问题所在。
df显示 50% 的可用空间。搜索了大约一个小时后,我看到了那个人使用的论坛帖子df -i。该选项查找 inode 使用情况。系统没有inode,这是一个我没有意识到的简单问题。该分区只有 3.2M 的 inode。
现在,我的问题是:我可以让系统有更多的 inode 吗?应该/可以在格式化磁盘时设置吗?使用 320 万个 inode,我可以拥有多少个文件?
partition ×10
filesystems ×4
command-line ×3
linux ×3
disk-usage ×2
backup ×1
command ×1
compression ×1
debian ×1
disk ×1
files ×1
gpt ×1
inode ×1
size ×1
storage ×1
swap ×1