NFS user/group 映射问题

客户端通过 NFS mount 服务器上的一个目录,奇怪的是 client 每新建一个文件其 group 都跟 server 不一致,在 client 下新建一个测试文件:
[email protected]:~/$ touch ddd
[email protected]:~/$ ls -l ddd

-rw-r–r–  1 jaseywang jaseywang    0 2013-01-14 16:36 ddd

可以发现 ddd 的是 jaseywang:jaseywang,但是从 server 上查看却成了如下的 group:
[email protected]:~/uploads$ ls -l ddd
-rw-r–r– 1 jaseywang rvm 0 Jan 14 16:36 ddd

查看了各自的 group,果真有问题,两者恰好相反。
client:
jaseywang:x:1002:jaseywang
rvm:x:1001:jaseywang

server:
jaseywang:x:1001:jaseywang
rvm:x:1002:jaseywang

搜到了一个叫 map_static 的选项,根据这篇文章作者的实践,应该是可以的,不过新版本(ubuntu 10.04 1.2.0-4ubuntu4.2)是不支持的:
$ sudo exportfs  -ar
exportfs: /etc/exports:2: unknown keyword "map_static=/etc/nfs/nfs.map"

看了下 ubuntu manual,10.04 的确实已经不支持了,但是 8.04 的还是支持的。

看来 NFS 是通过 GID 去识别 group 的,只能选择一台对换一下 GID。还有可以通过 LDAP 或者 NIS 实现。

ref:
http://serverfault.com/questions/240897/how-to-properly-set-permissions-for-nfs-folder-permission-denied-on-mounting-en
http://www.troubleshooters.com/linux/nfs.htm

OpenManage 安装使用

DELL 非官方支持在 Ubuntu 上的使用,10.04/12.04 的系统直接加源就可以了:
deb http://linux.dell.com/repo/community/deb/latest /
最新的是 7.1 版本:
# gpg –keyserver pool.sks-keyservers.net –recv-key 1285491434D8786F
# gpg -a –export 1285491434D8786F | sudo apt-key add –
# apt-get update
# apt-cache policy srvadmin-all
srvadmin-all:
  Installed: 7.1.0-3
  Candidate: 7.1.0-3
  Version table:
 *** 7.1.0-3 0
        500 http://linux.dell.com/repo/community/deb/latest/  Packages
        100 /var/lib/dpkg/status

在安装过程中,由于某台机器先前为了安装 MegaCli,曾通过 alien 安装了 lib-utils,其里面的 libsysfs.so 文件由于版本问题,造成跟 apt 安装的冲突:
# apt-get install -f
Reading package lists… Done
Building dependency tree       
Reading state information… Done
Correcting dependencies… Done
The following extra packages will be installed:
  srvadmin-storelib-sysfs
The following NEW packages will be installed:
  srvadmin-storelib-sysfs
0 upgraded, 1 newly installed, 0 to remove and 63 not upgraded.
25 not fully installed or removed.
Need to get 0 B/22.8 kB of archives.
After this operation, 115 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database … 69380 files and directories currently installed.)
Unpacking srvadmin-storelib-sysfs (from …/srvadmin-storelib-sysfs_7.1.0-1_amd64.deb) …
dpkg: error processing /var/cache/apt/archives/srvadmin-storelib-sysfs_7.1.0-1_amd64.deb (–unpack):
 trying to overwrite '/opt/lsi/3rdpartylibs/x86_64/libsysfs.so.2.0.2', which is also in package lib-utils 1.00-10
No apport report written because MaxReports is reached already
                                                           Errors were encountered while processing:
 /var/cache/apt/archives/srvadmin-storelib-sysfs_7.1.0-1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决方式比较简单,将 /var/lib/dpkg/status 里面跟 lib-utils 相关的段删除,并且删除原先在 /opt/ 下面的 lsi/ 目前,重新执行上面的目录即可。

Continue reading

cobbler 2.2.3 安装 ubuntu 12.04

cobbler server 部署在 ubuntu 上还是 rh 上问题都不大,关键是 2.2.3 这个版本对 ubuntu 的支持依然不是很好。需要对 cobbler 本身做一些调整,再加上 preseed 这个比 autoYAST 好用一些,比 ks 差很远的 debian 式自动化程序,花了小半天的时间才搞定了。当然前提是你对 preseed 足够的熟悉,否则需要更多的时间。

由于在不同的 vlan,需要新部署 dhcrelay,这个确实是件麻烦的事,再加上没有 dhcp,就陷入了鸡生蛋蛋生鸡的窘境。另外考虑过是直接加 ks=ip 的方式,但是不管是改成 static 还是 dhcp 的模式,必然获取不到 ip,此路行不通。暂时先找了个 netboot.iso,然后在启动的时候按 Esc,手动执行:
boot: linux ip=192.168.1.10 netmask=255.255.255.0 gateway=192.168.1.1 dns=192.168.1.3 ksdevice=eth0
现在正在评估在三层开启 dhcp 的可能性,否则以后每增一个 vlan 都是一次又一次的重复工作。

开始正题,首先是本地源的问题,cobbler 自身的那个 repo 自命令对 ubuntu 支持的很不好,只能通过其他的途径解决。
要同步 ubuntu 的源到本地,可以使用 apt-mirror,这个之前介绍过,还可以使用 debmirror,这里主要介绍 debmirror。还有个叫 apt-cacher 的工具,可用性不高也不方便管理,就是不介绍了。除此之外就是 rsync 这个最普遍的也是最好用的工具了。

安装 debmirror,导入公钥:
# yum install debmirror
# wget http://pa.archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-keyring/ubuntu-keyring_2012.05.19.tar.gz
# tar zxvf ubuntu*tar.gz
# gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg  --import /ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg

然后就可以参照上面那个脚本。两点需要注意:
1. arch 选项如果需要 64 位的,应该是 amd64 而非 x86_64,因为这个问题延误了半个多小时,后来还是在脚本里面开启 –debug 选项才看到问题的。
2. release 选项默认不全,precise 的一共有如下几个: precise,precise-backports,precise-proposed,precise-security,precise-updates。

通过 debmirror 同步的源不存在任何的问题,但是使用 apt-mirror 同步的源会在安装过程报找不到 mirror 的错误,因为他会使用 grep 去 mirror 里面查找一些必要的东西。

在导入 distro 的时候又出现了不少问题,cobbler 默认导入的的 kernel, initrd 是 $UBUNTUROOT(UBUNTUROOT=/var/www/cobbler/ks_mirror/ubuntu_12.04.2-x86_64)/install/ 下面的两个,明显是错误的,正确的是 $UBUNTUROOT/install/netboot/ubuntu-installer/amd64/ 下面的两个文件:
# distro edit --name=ubuntu_12.04.2-x86_64 --initrd=$UBUNTUROOT/install/netboot/ubuntu-installer/amd64/initrd.gz   --kernel=$UBUNTUROOT/install/netboot/ubuntu-installer/amd64/linux --os-version=precise --breed=ubuntu --arch=x86_64
Continue reading