从 ubuntu 到 redhat

这里说的是我们的生产系统(server),而非个人的笔记本(desktop)。做这个决定由来已久。之前写过一篇博客,总结了自使用了 [email protected] 机器上出现的诸多问题,再加上 ubuntu 没有专业的支持(发布的时候发现目前 ubuntu 已经有专业的技术团队支持了, ubuntu advantage),有问题只能去 launchpad 上提 issue,能不能解决还是另外一回事,如果遇到一些 kernel panic,比如之前我们线上机器遇到的 208 天宕机这类及其严重的事故,这对一个线上的系统来说绝对是一个非常大的打击。之后,我们着手调研了两大商业系统,redhat 以及 suse,由于之前没有正式的使用过,再加上我司一贯的作风,人少(我一个全职带人)事多(负责从上架到下架的所有过程包括周边的 IDC 等),因此我们更多的是通过同行之间的交流获取到的一些信息。另外,好歹当年我也是满分通过的 RHCE,对 redhat 还是有一些感情的。所以,最终我们决定使用 redhat,我们挑选了某个业务的一小部分集群做线上的测试,使用了大半年的时间,除了遇到过几次 panic,其他的都比较稳定,再加上 redhat 售后技术支持的给力工作,尤其是海外的团队专业专注,几个 panic 都得到了比较好的解决;一些日常的小问题提交到其 portal 上也能得到很快的回复解决。总体说来,这是一次比较成功的转变。
当然,我们绝对不是说 ubuntu 不好,只能说是适用场景不同。对于一个刚孵化的公司,使用 ubuntu server 绝对是一个很好的选择,就像我们初期那样,0 成本(费用,这个对刚开始创业的公司是一个非常重要的因素),社区丰富,上手快,仅这几点就有足够的吸引力了。然而,当一公司进入了快速成长的阶段,发展到了一定的规模,需要的是更加的稳定的对外服务、出现问题的及时解决以及一对一的更加有效的服务,这时候选择 redhat/suse 就是一个比较好的方式,因为通过花费一定的费用,可以得到令人满意的服务,这个服务最终的是体现在出现问题后的及时有效的解决以及各种软件包的推送更新(主要是安全方面)。
再扯一句,说到系统的定制,我认为,除非你的机器数量超过 5 位数,做系统的定制甚至是内核的定制,对于业务的提升有帮助,哪怕只有 1% 的提升,从单台机器的角度看没什么大不了,但是放大到一万台,十万台,效果显而易见,最终解决的就是成本,说白了就是白花花的银子。但是如果规模只有数百台或者只有数十台,那就完全没有必要了,有这个空去做那百分之几的提升,不如花更多的时间放在核心业务的稳定高效上。

下面谈正题,在我们正式投入使用之前,有差不多一个月的测试时间,从机器的下单,到远程卡配置 RAID 建立 BIOS 升级、系统安装服务部署监控系统等,在此期间还是遇到了一些问题。这篇博客主要涉及的是 redhat 系统本身的一些问题。相对底层的会在系统部署的这一阶段通过 cobbler 的 snippet 解决,而比较上层的则通过 puppet, saltstack 解决。

1. 服务的开关
关闭主要包括下面这些:
cups
rpcbind
postfix
nfslock
qpidd
ip6tables
portreserve
rhnsd          
rhsmcertd      
rngd           
avahi-daemon

sshd, ntpd 这两个是必须开启的


2. hostname 修改
这点跟 ubuntu 不完全一样,不过步骤也很简单。
# cat /etc/sysconfig/network:
NETWORKING=yes
HOSTNAME=fk.jaseywang.me
GATEWAY=192.168.1.1

# cat /etc/hosts
127.0.0.1   localhost.localdomain localhost
192.168.1.2 fk.jaseywang.me     fk

# echo "fk.jaseywang.me"/proc/sys/kernel/hostname


3. 源的增加
如果购买了 rh 的licence,绝大部分的都可以在其购买的源里面找到,否则只能靠第三方的比如 epel, remi 以及一些专业的比如 nginx, puppet 等单独安装:
# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

确认源的有效性
# yum repolist

测试:
# yum –enablerepo=epel info zabbix


4. 网卡接口命名
默认 broadcom 的会被 udev 识别为 emx,而非之前的 eth,这个影响不是很大。如果需要修改,可以参考下面的步骤:
* 在 grub 里面添加  biosdevname=0
* 修改 network-scripts 里面的 DEVICE 字段
* 删除 70-persistent-net.rules


5. zeroconf(169.254.0.0)
rh 默认开启了 zeroconf,大多数人包括我在内在 route -n 看到估计会有强迫症,还是将其禁用掉。在 /etc/sysconfig/network:
NOZEROCONF=yes


6. ssh 登陆问题
有可能是 selinux 问题


7. 彻底关闭/禁用 ipv6
大陆的网络基础设施如此的落后,大哥跟大哥之前还相互掐架,这个预计在未来五年之内都不会用到,看到了同样有强迫症。
有点需要注意,一些应用会以来 ipv6,比如 LVS,所以需要特殊情况特殊对待。使用 install 代表不管何时需要加在 ipv6 模块,都会强制的执行 /bin/true 而非加载 ipv6 模块,而 /bin/true 并不做什么,因此 ipv6 永远都不会被加载:
$ cat /etc/modprobe.d/ipv6.conf
# disable ipv6 completely.
# if "options ipv6 disabled=1" is commented out, it will not completely disable ipv6.
# this procedure must be handled with precaution since many system modules depend on 'ipv6'.
# blacklisting this module can cause services to stop working. iSCSI and bonding, for instance, stop working.
install ipv6 /bin/true
#options ipv6 disable=1

注意不要使用 blacklist,否则在出发跟 ipv6 相关的模块的时候又会被重新激活:
blacklist ipv6

如果需要 on-fly 的开启,移除下面这些:
options ipv6 disable=1
install ipv6 /bin/true
blacklist ipv6

不清楚的可以看这里


8. wget 跟 "&"(ampersand)
在使用 wget 下载 rh 一些文件的时候,由于一个链接都类似下面这样:
https://content-web.rhn.redhat.com/rhn/public/NULL/kernel/2.6.32-279.el6/x86_64/kernel-2.6.32-279.el6.x86_64.rpm?__gda__=1376478050_ed506236373d0fc2a4c2bd9fcf1c8ced&ext=.rpm

最初没有加双引号的习惯,于是下载上面这个链接的时候就不行了。记得加上双引号。为什么了?因为 "&"(ampersand) 符号在 shell 里面另有含义,表示 background 执行,加上双引号就可以了。


9. yum 包管理工具的一些问题(降级,安装指定的包,依赖性)

默认情况下,会安装同一个包的 x86_64 以及 i386 版本,可以在每个 repo 段里面加上下面的指令阻止 i386 版本的安装:
exclude=postgresql*
或者在 /etc/yum.conf 里面指定:
exclude=*.i?86

Ubuntu 通过 apt-cache 可以直接看到包的依赖问题,yum 可以使用 yum deplist 来判断,或者使用 repoquery,得到的更加简洁:
# yum deplist which
package: which.x86_64 2.19-6.el6
  dependency: libc.so.6(GLIBC_2.4)(64bit)
   provider: glibc.x86_64 2.12-1.107.el6
   provider: glibc.x86_64 2.12-1.107.el6_4.2
  dependency: /sbin/install-info
   provider: info.x86_64 4.13a-8.el6
  dependency: /bin/sh
   provider: bash.x86_64 4.1.2-14.el6
   provider: bash.x86_64 4.1.2-15.el6_4
  dependency: rtld(GNU_HASH)
   provider: glibc.i686 2.12-1.107.el6
   provider: glibc.x86_64 2.12-1.107.el6
   provider: glibc.i686 2.12-1.107.el6_4.2
   provider: glibc.x86_64 2.12-1.107.el6_4.2

通过 pipe,同样可以实现类似下面的效果:
# yum deplist $PACKAGE | grep provider | awk '{print $2}' | sort | uniq | grep -v $PACKAGE | sed ':a;N;$!ba;s/\n/ /g' | xargs yum -y install

# repoquery  –requires which
/bin/sh
/sbin/install-info
libc.so.6(GLIBC_2.4)(64bit)
rtld(GNU_HASH)

如果需要安装指定的包,可以先格式化下需要的包:
# rpm -qa –qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"

同时,由于一个包有很多的版本,可以通过下面的方式查看到目前 repo 支持的所有版本:
# yum –showduplicates list netperf
Installed Packages
netperf.x86_64                 2.6.0-1.el6.rf                 @rpmforge
Available Packages
netperf.x86_64                 2.4.5-1.el6.rf                 rpmforge
netperf.x86_64                 2.6.0-1.el6.rf                 rpmforge

列出来之后,就可以进行指定版本的安装:
# yum install netperf-2.4.5-1.el6.rf

接着可以 lock 住以阻止更新:
# yum install yum-versionlock
# yum versionlock netperf


10. route 相关的 cheat sheet
# route add -host 192.168.1.47 gw 192.168.10.1
# route add -net 192.168.1.0/24 gw 192.168.10.1
# route add default gw 192.168.10.1


11. 同步
起初是通过 rsync
同步一些文件,包括源。如果要排除某些文件、目录不同步,可以使用 –exclude,但是需要注意相对路径的问题
后来发现可以使用 fedora 官方的 mirrormanager 这个工具。比较强大的一个功能就是镜像地址的自动侦测定位。这个是根据互联网上的 BGP 协议,配合 Autonomous System Numbers(ASNs)来实现的,MM 可以获取到来源客户端的 ASN,然后选择在同一个 ASN 或者最近的 mirror 地址给客户。 这个其实是个双赢的结果,对 ISP 来说,在自己的 ASN 内,当然没有流量的费用产生,对于客户来说,其访问的速度也会因此有所改善,有点类似 CDN。通过下面的命令可以看到自己的所在 ASN 的信息:
$ wget -O asn 'http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-11&arch=i386'

通过 whois 可以查看到该 IP 所属的 AS 域:
$ whois 211.151.131.0  | grep origin
origin:         AS17428

上面这个对于开放的 public mirror 很实用,但是对于一个内部的源,没有必要如此心师动众,直接使用 cobbler 来同步就好了。


12. 频道订阅
默认情况下,RHN 只订阅了 "Red Hat Enterprise Linux Server(v.6 for 64-bit x86_64)" 频道,同时这个频道也是其他众多频道的 "Parent Channel",如果需要更多的包,可以按照这两个(1, 2) 教程来订阅 "RHEL Server Optional (v. 6 64-bit x86_64)" 或者其他的频道。


13. 使用 system-config-kickstart 制作 ks 文件
最初在制作 ks 模板时,还是通过 system-config-kickstart 这个 gui 来制作的,可惜的是,在安装的时候发现了很严重的依赖性。
system-config-kickstart 依赖于:
# ll *rpm
-rw-r–r–. 1 root root 3277088 Feb 3 21:44 anaconda-13.21.176-1.el6_3.x86_64.rpm
-rw-r–r–. 1 root root 12772 Feb 3 21:44 anaconda-yum-plugins-1.0-5.1.el6.noarch.rpm
-rw-r–r–. 1 root root 82656 Feb 3 21:44 createrepo-0.9.8-5.el6.noarch.rpm
-rw-r–r–. 1 root root 72680 Feb 3 21:44 deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
-rw-r–r–. 1 root root 98688 Feb 3 21:44 device-mapper-multipath-0.4.9-56.el6_3.1.x86_64.rpm
-rw-r–r–. 1 root root 162072 Feb 3 21:44 device-mapper-multipath-libs-0.4.9-56.el6_3.1.x86_64.rpm
-rw-r–r–. 1 root root 94640 Feb 3 21:44 fcoe-utils-1.0.22-3.el6.x86_64(1).rpm
-rw-r–r–. 1 root root 94640 Feb 3 21:44 fcoe-utils-1.0.22-3.el6.x86_64.rpm
-rw-r–r–. 1 root root 669704 Feb 3 21:44 iscsi-initiator-utils-6.2.0.872-41.el6.x86_64.rpm
-rw-r–r–. 1 root root 24476 Feb 3 21:44 isomd5sum-1.0.6-1.el6.x86_64.rpm
-rw-r–r–. 1 root root 51776 Feb 3 21:44 kpartx-0.4.9-56.el6_3.1.x86_64.rpm
-rw-r–r–. 1 root root 51696 Feb 3 21:44 libconfig-1.3.2-1.1.el6.x86_64.rpm
-rw-r–r–. 1 root root 22336 Feb 3 21:44 libhbaapi-2.2-14.el6.x86_64.rpm
-rw-r–r–. 1 root root 32476 Feb 3 21:44 libhbalinux-1.0.13-1.el6.x86_64.rpm
-rw-r–r–. 1 root root 197940 Feb 3 21:44 lldpad-0.9.43-20.el6_3.x86_64.rpm
-rw-r–r–. 1 root root 42560 Feb 3 21:44 makebootfat-1.4-10.el6.x86_64.rpm
-rw-r–r–. 1 root root 310380 Feb 3 21:45 pykickstart-1.74.10-1.el6.noarch.rpm
-rw-r–r–. 1 root root 188160 Feb 3 21:45 pyparted-3.4-3.el6.x86_64.rpm
-rw-r–r–. 1 root root 22964 Feb 3 21:45 python-cryptsetup-0.0.11-1.el6.x86_64.rpm
-rw-r–r–. 1 root root 27836 Feb 3 21:45 python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
-rw-r–r–. 1 root root 68352 Feb 3 21:45 python-pyblock-0.48-1.el6.x86_64.rpm
-rw-r–r–. 1 root root 82328 Feb 3 21:45 squashfs-tools-4.0-5.el6.x86_64.rpm
-rw-r–r–. 1 root root 879160 Feb 3 21:45 syslinux-4.02-7.el6.x86_64.rpm
-rw-r–r–. 1 root root 946084 Feb 3 21:45 system-config-kickstart-2.8.6.4-1.el6.noarch.rpm
-rw-r–r–. 1 root root 145876 Feb 3 21:45 system-config-language-1.3.4-5.el6.noarch.rpm
-rw-r–r–. 1 root root 1112724 Feb 3 21:45 tigervnc-server-1.0.90-0.17.20110314svn4359.el6.x86_64.rpm
有些包不在标准的订阅里面,需要单独的下载。详细的可以看这个 gist。 https://gist.github.com/4701849


14. gui vs text 安装方式
默认是使用图形化的界面安装,如果想使用 text 模式,可以在启动的时候按『Tab』键修改参数,加上『text』再启动就好了。
需要注意的是,使用 text 模式安装定制性相对 gui 来说较少,以下这些只有图形界面才提供:
* configuring advanced storage methods such as LVM, RAID, FCoE, zFCP, and iSCSI.
* customizing the partition layout
* customizing the bootloader layout
* selecting packages during installation
* configuring the installed system with firstboot

RH 在使用图形界面安装系统或者使用 kickstart 安装包含 desktop 和 X window 软件包的时候,会有一个 Firstboot 的步骤,他会引导你完成一些基本的系统配置;如果使用的是 text-mode 或者 kickstart(没有安装 X),那么就不会出现这个 firstboot 配置。

如果使用 andconda 安装,可以使用 Shift+Print Screen 来截屏,默认存为 /root/anaconda-screenhosts 文件;如果使用 kickstart 的方式,可以使用 –autoscreenshot 的方式,将每一步的安装过程截屏下来。

在安装过程中可以使用如下的快捷键进行切换:
1 ctrl+alt+f1     graphical display
2 ctrl+alt+f2     shell prompt
3 ctrl+alt+f3     install log (messages from installation program)
4 ctrl+alt+f4     system-related messages
5 ctrl+alt+f5     other messages
6 ctrl+alt+f6    

在使用 NM 配置网络环节,"Automatic (DHCP)" 表示包含 DNS 在内的所有跟网络相关的都交由 DHCP 负责;而 "Automatic (DHCP) addresses only" 则表示只负责 IP/netmask/gateway 这些,而 DNS 以及 search domain 则需要手动配置;"Link-Local Only" 则表示多出了一个 169.254/16 网段。


15. 系统的升级
RH 是不支持 major 版本升级的,也就是从 5.7 不可以升级到 6.3,但是从 6.2 可以升级到 6.3。
升级前可使用下面这个命令来获取当前系统中安装的包,便于升级之后对比:
# rpm -qa –qf '%{NAME} %{VERSION}-%{RELEASE} %{ARCH}\n' > ~/old-pkglist.txt


16. swap 的大小设置
关于 swap,redhat 官方的推荐:
Amount of RAM in the system     Recommended swap space     Recommended swap space if allowing for hibernation
2GB of RAM or less     2 times the amount of RAM     3 times the amount of RAM
2GB to 8GB of RAM     Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM     0.5 times the amount of RAM     1.5 times the amount of RAM
64GB of RAM or more     4GB of swap space     No extra space needed
现在动不动就是 64, 96 的,大的有 192GB,禁用了,做好 /proc 里面的设置,应该问题不大。


17. boot/ 以及 /usr 的分区
RHEL 6 的 GRUB bootloader 只支持 ext2, ext3, ext4(推荐),因此不可以使用 Btrfs, XFS, VFAT 作为 /boot/ 的格式。
如果 64 位的系统使用 UEFI 而非 BIOS,需要单独建立一个 /boot/ 分区,并将其格式化为 ext3 格式。可以参考这篇博客

官方建议不要对 /usr/ 进行单独分区,如果将 /usr/ 从 / 单独分离出去,系统启动过程的复杂度将会大大增加,因为 /usr/ 包含了启动需要的资源,在某些情况下,如果进行了单独分区,系统或许根本起不来。
对于安装有问题的,可以看看这个 troubleshoting


18. 使用半自动的方式安装进行一些特殊的操作
在安装的初期,可以指定一些选项来减少安装的步骤,
在 boot:prompt 的是时候输入 linux options 就可以做一些参数的指定。当系统启动看到画面的时候,按下 Esc 键就可以进入 boot: promot。如果需要指定多个参数,可以像下面这样:
linux option1 option2 option3
比如指定网络方面的:
linux ip=192.168.1.10 netmask=255.255.255.0 gateway=192.168.1.1 dns=192.168.1.3 ksdevice=em1
这样指定之后,在后期的安装过程中就不会再出现 "Networking Devices" 和 "Configure TCP/IP" 选相框了。

在安装过程中可以通过 VNC、ssh、telent 的方式连接到安装的机器上。
使用 VNC,在安装的机器上指定下面两个选项:
linux vnc vncpassword=qwerty
客户端安装 tigervnc 这个包,打开 vncviewer 连接安装的机器。

还可以让安装的机器自动连接 vncviewer,在客户端上启动默认的 5500 端口:
# vncviewer -listen
接着在安装机器上执行:
linux vnc vncpassword=qwerty vncconnect=desktop.mydomain.com:5500

还可以指定 ssh 以及 telent,分别如下:
linux sshd=1
linux text telnet
其中前者需要 user, passwd 而后者不需要认证,因此使用 telnet 需要在一个安全的网络环境中使用。

使用 ks 选项完成 untended 的安装:
linux ks=location/kickstart-file.cfg

repo=http://host/path
linux ip=192.168.1.10 netmask=255.255.255.0 gateway=192.168.1.1 dns=192.168.1.3 ksdevice=eth0 ifname=primary:01:23:45:67:89:ab

linux syslog=192.168.1.20:514
$ModLoad imudp.so
$UDPServerRun 514

在 /var/lib/tftpboot/pxelinux.cfg 里面的可以添加:
ip=
repo=
lang=
keymap=
ksdevice= (if installation requires an interface other than eth0)

除了安装系统之外,还可以进行 rescue 操作,默认会将现有的 OS 挂载到 /mnt/sysimage/ 下面。


19. grub 问题
rh 的 grub 同时在好几处出现,但是除了 /boot/grub/grub.conf 这个文件之外,其余的均为软链接:
# ll /boot/grub/grub.conf
-rw——-. 1 root root 787 Feb  3 14:50 /boot/grub/grub.conf
# ll /boot/grub/menu.lst
lrwxrwxrwx. 1 root root 11 Feb  3 14:50 /boot/grub/menu.lst -> ./grub.conf
# ll /etc/grub.conf
lrwxrwxrwx. 1 root root 22 Feb  3 14:50 /etc/grub.conf -> ../boot/grub/grub.conf
# lsb_release  -a
LSB Version:    :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:    RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.2 (Santiago)
Release:    6.2
Codename:    Santiago


Why does the installer exits with the message "Specified nonexistent disks mapper/mpath0 in partition command" while installing Red Hat Enterprise Linux 5.6 on an FC attached OPEN-V Lun ?


20. 内核的更新
再使用过程中曾经出现一台机器 kernel panic (今年 Q4 阶段发布的 rh6.5 会 bugfix)之后,完全起不来的情况,这时候只好进入 rescue mode 了。
进入 rescue mode 之后:
# uname -a
Linux localhost.localdomain 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

将需要更新的 kernel* 上传到该机器上:
# ll kernel-*
-rw-r–r– 1 root root 26408880 Feb 25 11:15 kernel-2.6.32-279.el6.x86_64.rpm
-rw-r–r– 1 root root  7990420 Jun 15  2012 kernel-devel-2.6.32-279.el6.x86_64.rpm
-rw-r–r– 1 root root  9099056 Feb 25 11:09 kernel-firmware-2.6.32-279.el6.noarch.rpm
-rw-r–r– 1 root root  1988972 Feb 25 11:09 kernel-headers-2.6.32-279.el6.x86_64.rpm

安装:
# rpm -ivh *rpm
会出现如下的 error:
kernel-firmware-2.6.32-279.el6.noarch conflicts with file from package kernel-firmware-2.6.32-220.el6.noarch

先升级 firmware,再安装剩余的三个:
# rpm -Uvh kernel-firmware-2.6.32-279.el6.noarch.rpm
# rpm -ivh kernel-2.6.32-279.el6.x86_64.rpm kernel-devel-2.6.32-279.el6.x86_64.rpm kernel-headers.2.6.32-279.el6.x86_64.rpm

检查确认:
# cat /etc/grub.conf
# rpm -qa | grep kernel


21. ks 安装软件包的依赖性问题
在使用 ks 安装 puppet-2.7.20-1.el6 的时候,出现了依赖性问题,导致无法无法继续往下进行。不得已找了台一模一样的机器测试,通过下面这个命令就能知道缺少哪些软件包了:
# yum deplist puppet-2.7.20-1.el6.noarch
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
Finding dependencies:
package: puppet.noarch 2.7.20-1.el6
  dependency: ruby(selinux)
   Unsatisfied dependency
  dependency: initscripts
   provider: initscripts.x86_64 9.03.27-1.el6
  dependency: ruby(abi) >= 1.8
   provider: ruby-libs.x86_64 1.8.7.352-3.el6
   provider: coreutils.x86_64 8.4-16.el6
   …
  dependency: /bin/sh
   provider: bash.x86_64 4.1.2-8.el6
  dependency: config(puppet) = 2.7.20-1.el6
   provider: puppet.noarch 2.7.20-1.el6
  dependency: chkconfig
   provider: chkconfig.x86_64 1.3.47-1.el6


22. 如何提问
在官方找到一个叫《Red Hat Quick Support》的文件,上面涉及到如何解决一个问题的步骤,值得参考,当然,你也可以参考这篇《How To Ask Questions The Smart Way》。

去 knowledgebase 上寻找答案
首先去 access.redhat.com/knowledge/search 上搜寻,上面包含 FAQ、最佳实践、经验教训等等,专业性很强,基本这上面能解决大部分的问题。当然,如果你愿意,完全可以 google,这基本可以解决 99.9% 的问题了。

如果上面的不能解决,请搜集问题的相关信息并提交 issue:

1. 背景
包含如下的一些信息:
* 硬件的的相关信息,涉及到的软件的版本灯
* 最近系统、软件的的升级情况
* 最近系统的变更操作
* 对问题的描述
* 出现问题的 log 等错误信息

2.  问题的诊断
技术支持经常需要一些诊断的信息,包括 sosreport, dumps, traces, logs 灯,因此,在提交 ticket 之前,请先准备好这些

3. 账号和联系方式
除了提供背景资料以及诊断信息之外,我们还需要向技术支持提供如下的信息
* Red Hat 客户号码或者 RHN 的登陆账号
* 公司名称
* 联系人
* 优选选择的沟通方式(电话还是邮件)以及沟通的信息(电话号码以及邮件地址)

4. 问题的严重性
在提交一个 issue 之前,请先评估问题的 severity,接着按照上面需要提供的信息提交 issue,如果是 severity-1 或者 severity-2 的问题,可以把电话等联系方式留在下面,这样能更及时的沟通。如果对问题的回答不满意(质量或者反应时间等),可以向上申诉,要求上级一般是一个有更丰富经验的技术支持工程师来解答此问题。
问题结束了之后,需要关闭这个 issue,当然如果关闭了又发现了跟此相关的问题,可以 reopen。

注意: 上面所有的步骤均为人肉操作,真正的部署是由建立在此人肉基础上自动化的配置工具完成,因此,首先先要熟悉上面的内容,才会有最后的大规模部署。

(8 月 10 日 补充),另外,被全球最大的买卖假货烂货高仿货的公司收购之后,发现,跟他们的生产系统蛮匹配的,都是 2.6.32 出来的。

  • nomyself

    access.redha.com/knowledge/search 中的 redha 少了个 t。

    • http://jaseywang.me/ Jasey Wang

      多谢,看的真仔细,已修正。