需要有关在 UNIX 上创建交换内存的信息

需要有关在 UNIX 上创建交换内存的信息

我正在使用fallocate -l "$memory" "$swapfilename"命令创建交换文件。

我有一些疑问:

  1. 如果存在多个文件系统,则在哪个文件系统上创建交换文件?我们可以从外部指定从哪个文件系统获取吗?

  2. 我有两个文件系统tmpfsrootfs,默认情况下交换文件是使用 rootfs 内存创建的;甚至 tmpfs 的大小也更大。什么是 tmpfs?

  3. 创建交换文件之前如何检查是否有空间?

[root@rhev6 scripts]# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          3.1G  2.8G  123M  96% /
tmpfs           1.5G   76K  1.5G   1% /dev/shm

答案1

该文件在 指示的目录中创建$swapfilename,默认为当前目录。该命令fallocate不知道您要对该文件执行什么操作;它只是创建它并分配所请求的空间量。要将文件用作分页区域,您需要mkswap在其上运行。

临时文件系统是一个基于内存的文件系统,用于(小)临时文件。由于它是基于内存的,因此很少有大量空间临时文件系统文件系统。根文件系统是另一个基于内存的文件系统,仅用于在安装某些内容之前保存根目录。在生产中,通常会安装一个基于磁盘的文件系统/

您希望将交换文件放在基于磁盘的文件系统上,例如外部4文件系统。

答案2

按顺序回答您的问题

如果存在多个文件系统,则在哪个文件系统上创建交换文件?我们可以从外部指定从哪个文件系统获取吗?

交换文件可以放置在任何本地文件系统上。这样的文件系统应该由物理磁盘支持。

我有两个文件系统tmpfsrootfs,默认情况下交换文件是使用rootfs内存创建的;甚至 tmpfs 的大小也更大。什么是 tmpfs?

tmpfs是直接来自物理内存的临时文件系统。如果您有 8GB 物理内存,您可能会决定使用tmpfs2GB 的文件系统。文件系统中的可用内存量tmpfs和运行系统的可用内存量之间存在直接的权衡。

rootfs是一个最小的基于内存的启动映像。通常我希望这已被真正的基于磁盘的根文件系统所取代,但这里没有发生这种情况。

不要在rootfstmpfs文件系统上创建交换文件!

创建交换文件之前如何检查是否有空间?

df -h命令将显示每个安装点的可用空间。您可以选择一个(任何一个)由物理磁盘支持且有足够空间的磁盘。在小屏幕截图片段中,没有显示任何合适的地方,因为您只包含了rootfstmpfs文件系统。

答案3

如果存在多个文件系统,则在哪个文件系统上创建交换文件?我们可以从外部指定从哪个文件系统获取吗?

fallocate命令用于创建、放大或缩小文件至指定大小。无论您告诉它做什么,它都会创建该文件。它还可以用于在文件中“挖洞”,减少它们在磁盘上使用的块数量。

我有两个文件系统 tmpfs 和 rootfs,默认情况下交换文件是使用 rootfs 内存创建的;甚至 tmpfs 的大小也更大。什么是 tmpfs?

尽管普遍认为tmpfs不是基于 RAM 的文件系统,而不是基于虚拟内存的文件系统。这意味着它的后端是磁盘交换区域(可能是分区或普通文件)和未使用或保留用于其他目的的 RAM 部分的总和。当然,如果没有创建任何交换区,tmpfs则类似于基于RAM的文件系统。

创建交换文件之前如何检查是否有空间?

在创建交换文件之前,您需要找到一个有足够空间的文件系统。虚拟文件系统如rootfstmpfs不适合交换。当rootfs由RAM(ramfs)支持时,在其上创建大量交换文件将产生灾难性的影响,否则就像在其上创建一个tmpfs完全没有意义的交换文件一样,就像用从这个罐子中取出的液体填充一个罐子一样。

相关内容