查看Unix/Linux文件的inode

Unix/Linux系统上可以使用stat命令查看文件的inode信息。NetBSD系统:

# stat -f %i foo
1400196

Linux系统:

# stat -c %i foo
277428

也可以使用ls命令:

# ls -i foo
1400196 foo

df命令可以显示整个文件系统的inode使用情况,仍以Linux为例:

# df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
devtmpfs        55113    371  54742    1% /dev
tmpfs           61625      1  61624    1% /dev/shm
tmpfs           61625    371  61254    1% /run
/dev/sda1      524288 116074 408214   23% /
cgroup          61625     13  61612    1% /sys/fs/cgroup
tmpfs           61625      3  61622    1% /tmp

要注意inode的数量是预先分配好的。我曾经经历过的一个短信网关项目最初的设计的就是每条短信都存到一个文件里,结果很快就把inode用光了:-)。

一分钟了解NetBSD

NetBSD操作系统是一个“麻雀虽小,五脏俱全”的开源项目。它支持很多硬件平台,包括早在2000年就已经退出历史舞台的VAX。另外它也有自己的基金会,用来筹措资金,保证NetBSD项目的运行。就像OpenBSD衍生出OpenSSHLibreSSL等项目一样,NetBSDpkgsrc也已被移植到多个系统上,并且每年还有专门的大会。最后,NetBSD的博客不仅有关于NetBSD项目的最新进展,还有很多关于内核,LLVM的相关文章,值得一看。

pkgsrc与IPS

pkgsrc是一个用来安装第三方软件的的框架,它集成了编译,安装,删除应用等功能。pkgsrc发源于NetBSD,但现在已经移植到多个操作系统,比如OpenBSD。通常来讲,使用pkgsrc安装软件有两种方式:直接安装已经编译好的二进制包,即pkg;或者是下载源码自己编译安装,即src。在使用pkgsrc框架的系统上,pkg_add(1)命令用来安装软件;pkg_delete(1)用来移除软件。

pkgin项目是用来管理pkgsrc的二进制包的工具,其类似于Linux系统上的apt/yum。”pkgin install“用来安装软件;”pkgin remove“用来移除软件。如果你使用pkgsrc框架,你既可以选择使用pkgsrc自带的pkg_*命令来管理安装软件,也可以安装pkgin,然后通过pkgin来管理。

除了pkgsrcSun/Oracle也有一个类似的框架:IPS(Image Packaging System),其主要应用于Solaris及其衍生的操作系统。IPS使用pkg(5)命令来管理软件包:”pkg install“用来安装软件;”pkg uninstall“用来卸载软件。注意同pkgsrcpkg_*命令相区分。有趣的是,基于OpenSolaris/illumos的发行版中,OmniOSOpenIndiana使用IPS,而SmartOS则使用pkgsrc

References:
pkgsrc;
The pkgsrc guide;
pkgin;
Image Packaging System.