16 随后,boot loader会帮助我们加载kernel。kernel实际上是一个用来操作17 计算机的程序,它是计算机操作系统的内核,主要的任务是管理计算机的硬件18 资源,充当软件和硬件的接口。操作系统上的任何操作都要通过kernel传达19 给硬件。Windows和Linux各自有自己kernel。狭义的操作系统就是指kernel,20 广义的操作系统包括kernel以及kernel之上的各种应用。 21 (Linus Torvalds与其说是Linux之父,不如说是Linux kernel之父。他依22 然负责Linux kernel的开发和维护。至于Ubuntu, Red Hat, 它们都是基于相同的kernel之上,囊括了不同的应用和界面构成的一个更加完整的操作系统版本。) 实际上,我们可以在多个分区安装boot loader,每个boot loader对应不同的操作系统,在读取MBR的时候选择我们想要启动的boot loader。这就是多操作系统的原理。 小结:BIOS -> MBR ->boot loader -> kernel 2) kernel 如果我们加载的是Linux kernel,Linux kernel开始工作。kernel会首先预留自己运行所需的内存空间,然后通过驱动程序(driver)检测计算机硬件。这样,操作系统就可以知道自己有哪些硬件可用。随后,kernel会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,kernel就完成了在计算机启动阶段的工作,交接给init来管理。 小结: kernel -> init process 3) initprocess (根据boot loader的选项,Linux此时可以进入单用户模式(singleuser mode)。在此模式下,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误) 随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts。这些脚本执行如下功能: 设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络„„ 当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录!!!init会给出登录(login)对话框,或者是图形化的登录界面。 输入用户名(比如说vamei)和密码,DONE! 在此后的过程中,你将以用户(user)vamei的身份操作电脑。此外,根据你创建用户时的设定,Linux还会将你归到某个组(group)中,比如可以是stupid组,或者是vamei组。 所以你将是用户vamei,同时是vamei组的组员。(注意,组vamei和用户vamei只是重名而已,就好想你可以叫Dell, 同时还是Dell公司的老板一样。你完全也可以是用户vamei,同时为stupid组的组员) 总结: BIOS ->MBR -> boot loader -> kernel -> init process -> login 用户,组。
5.你说下你技术的强项和不足?
6.如果给你300台服务器,你该怎么去管理?
7.在一个系统架构中,我们为了避免单点故障,会怎么做? 1 系统集群高可用
8、 xen环境下,如何调整虚拟机内存及vcpu数? 更改虚拟机分配的CPU数量。要更改此设置,既可以利用虚拟机管理器(Virtual 1 Machine Manager)进行,也可以使用xm vcpu-set命令。例如,将domain 12 分配的VCPU数改为4个,则: xm vcpu-set14
9、简述下一般调整哪些内核参数 1 linux 内核参数调整说明 2 所有的TCP/IP调优参数都位于/proc/sys/net/目录。例如, 下面是最重要的3 一些调优参数, 后面是它们的含义: 4 1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲。 5 2. /proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲。
6 3. /proc/sys/net/ipv4/tcp_timestamps — 时间戳在(请参考 7 RFC 1323)TCP的包头增加12个字节。 8 4. /proc/sys/net/ipv4/tcp_sack — 有选择的应答。 9 5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 如果10 TCP窗口最大超过65535(64KB), 必须设置该数值为1。 11 6. rmem_default — 默认的接收窗口大小。 12 7. rmem_max — 接收窗口的最大大小。 13 8. wmem_default — 默认的发送窗口大小。 14 9. wmem_max — 发送窗口的最大大小。 15 /proc目录下的所有内容都是临时性的, 所以重启动系统后任何修改都会丢16 失。 17 建议在系统启动时自动修改TCP/IP参数: 18 把下面代码增加到/etc/rc.local文件, 然后保存文件, 系统重新引导的时19 候会自动修改下面的TCP/IP参数: 20 echo 256960> /proc/sys/net/core/rmem_default 21 echo 256960> /proc/sys/net/core/rmem_max 22 echo 256960> /proc/sys/net/core/wmem_default 23 echo 256960> /proc/sys/net/core/wmem_max 24 echo 0> /proc/sys/net/ipv4/tcp_timestamps 25 echo 1> /proc/sys/net/ipv4/tcp_sack 26 echo 1> /proc/sys/net/ipv4/tcp_window_scaling 27 TCP/IP参数都是自解释的, TCP窗口大小设置为256960, 禁止TCP的时间戳28 (取消在每个数据包的头中增加12字节), 支持更大的TCP窗口和TCP有选择29 的应答。 30 上面数值的设定是根据互连网连接和最大带宽/延迟率来决定。 31 注: 上面实例中的数值可以实际应用, 但它只包含了一部分参数。 32 另外一个方法: 使用 /etc/sysctl.conf 在系统启动时把参数配置成您所设33 置的值: 34 net.core.rmem_default = 256960 35 net.core.rmem_max = 256960 36 net.core.wmem_default = 256960 37 net.core.wmem_max = 256960 38 net.ipv4.tcp_timestamps = 0 39 net.ipv4.tcp_sack =1 40 net.ipv4.tcp_window_scaling = 1 41 设置Linux内核参数 42 配置 Linux 内核参数(2种方法),修改后不用重启动更新: /sbin/sysctl -p 43 第一种:打开/etc/sysctl.conf 复制如下内容 第12/16页 44 kernel.shmall = 2097152 45 kernel.shmmax = 2147483648 46 kernel.shmmni = 4096 47 kernel.sem = 25032000100128 48 fs.file-max = 65536 49 net.ipv4.ip_local_port_range = 102465000 50 net.core.rmem_default=262144 51 net.core.wmem_default=262144 52 net.core.rmem_max=262144 53 net.core.wmem_max=262144 54 第二种:打开终端 55 cat >> /etc/sysctl.conf< 56 kernel.shmall = 2097152 57 kernel.shmmax = 2147483648 58 kernel.shmmni = 4096 59 kernel.sem = 25032000100128 60 fs.file-max = 65536 61 net.ipv4.ip_local_port_range = 102465000 62 net.core.rmem_default=262144 63 net.core.wmem_default=262144 64 net.core.rmem_max=262144 65 net.core.wmem_max=262144 66 EOF 67 这里,对每个参数值做个简要的解释和说明。 68 (1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省69 为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。 70 (2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该71 参数的默认值是 4096。通常不需要更改。 72 (3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。73 缺省值就是2097152,通常不需要修改。 74 (4)sem:该参数表示设置的信号量。 75 (5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux76 系统中可以打开的文件数量。 77 修改好内核以后,执行下面的命令使新的配置生效。 78 [root @linux1 /root]# /sbin/sysctl-p 79 以 root 用户身份运行以下命令来验证您的设置: 80 /sbin/sysctl -a | grep shm 第13/16页 81 /sbin/sysctl -a | grep sem 82 /sbin/sysctl -a | grep file-max 83 /sbin/sysctl -a | grep ip_local_port_range 84 例如: 85 # /sbin/sysctl -a | grep shm kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shm-use-bigpages = 0 # /sbin/sysctl -a | grep sem kernel.sem = 25032000100128 # /sbin/sysctl -a | grep file-max fs.file-max = 65536 # /sbin/sysctl -a | grep ip_local_port_range net.ipv4.ip_local_port_range = 102465000 如果系统的参数设置的比上述参数值小,则编辑/etc/sysctl.conf 文件,添加或更改这些参数。完成后,运行以下命令激活更改: /sbin/sysctl -p
10、最大打开文件数如何调整 1 修改下Linux的配置: 2 修改 /etc/sysctl.conf,增加fs.file-max = 8061540 3 修改 /etc/security/limit.conf,增加 * soft 8192和 * hard 16384 4 ulimit -n 4096 5 也就是限制用户的最大文件打开数为4096个 6 当前设置最大打开文件数可以通过如下命令查看。 7 ulimit -n 8 这个数字说明了一个普通用户能够在一个单独会话中所能打开最大的文件数9 目。注意。如果是root,以下操作不能使ulimit -n的输出增加。因为用户10 root用户不受这个ulimit限制。只有普通用户才会受这个限制。 11 为了提高最大打开文件数到默认值1024以上,需要在系统上修改2个地方。12 在这个案例中,我们将最大打开文件数增加到2048。所有的步骤需要root用13 户操作。普通用户需要重新登录才能使设置生效。 14 1. 按照最大打开文件数量的需求设置系统,并且通过检查 15 /proc/sys/fs/file-max文件来确认最大打开文件数已经被正确设置。 第14/16页 16 # cat /proc/sys/fs/file-max 17 如果设置值太小,修改文件/etc/sysctl.conf的变量到合适的值。这样会在18 每次重启之后生效。如果设置值够大,跳过下步。 19 # echo 2048> /proc/sys/fs/file-max编辑文件/etc/sysctl.conf,插入下20 行。 fs.file-max = 2048 21 2. 在/etc/security/limits.conf文件中设置最大打开文件数,下面是一行22 提示: 23 #<domain><type><item> <value>添加如下这行。 24 * – nofile 2048 25 这行设置了每个用户的默认打开文件数为2048。注意”nofile”项有两个可26 能的限制措施。 27 就是<type>项下的hard和soft。要使修改过得最大打开文件数生效,必须对28 这两种限制进行设定。 29 如果使用”-”字符设定<type>, 则hard和soft设定会同时被设定。 30 硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效31 的设置值。 32 hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比33 hard限制更高。只有root用户才能够增加hard限制值。 34 eg: 35 我在google上搜索过关于ulimit命令的一些用法,其中有 36 ulimit -n 4096 37 也就是限制用户的最大文件打开数为4096个 38 在网上查了关于怎么查看文件打开数的文章大致有两种说法 39 /proc/sys/fs/file-nr 40 该文件与 file-max 相关,它有三个值: 41 已分配文件句柄的数目 42 已使用文件句柄的数目 43 文件句柄的最大数目 44 该文件是只读的,仅用于显示信息。 45 [root@linux /]# cat /proc/sys/fs/file-max 46 8061540 47 [root@linux /]# cat /proc/sys/fs/file-nr 48 90008061540 查看所有进程的文件打开数 lsof |wc -l 查看某个进程打开的文件数 lsof -p pid |wc -l 第15/16页 查看java进程的PID [root@linux /]# ps -ef |grep java root 104079780014:50pts/100:00:00grep java kill -99780就能全部杀掉 java进程。 pid 就是9780。 [root@linux /]# lsof |wc -l 1238 [root@linux /]# lsof -p 9780|wc -l 18 (责任编辑:IT) |