注意:所有实验不涉及SElinux,请用命令关闭
1、fdisk分区工具的使用实验
查看分区结构fdisk -l
fdisk /dev/sdXY X代表检测到的SCSI、SATA或者是USB的硬盘先后。Y代表的是分区的标识数字。逻辑分区
比如:/dev/sdb5 为第二个硬盘的第一个逻辑分区
使用n建立新分区验证分区的规则4P+0,3P+1E+NL
Primary主分区Extened扩张分区Logical逻辑分区
使用t修改分区的类型,建立一个vfat的分区,一个swap分区,一个raid auto detected分区,一个LVM分区记录下ID号。
使用w保存分区的修改结果
partprobe /dev/sdb 对新修改的分区探测,让系统识别新的
分区结构
格式化现有的分区
• 注意:误操作此指令会对系统或其他文件系统带来不可恢复的灾难,请十二分的小心,确认你要格式化的分区。
• mkfs.ext3 /dev/sdb6 格式化Linux分区
• mkfs.vfat /dev/sdb7 格式化fat32分区
• mkfs.msdos /dev/sdb8 格式化dos分区
• 新的分区只有在格式化之后才能使用,挂载一个未曾格式化的分区将提示“不能识别的文件系统”
2、新建swap分区和文件
当添加了新的内存,对内存做扩充时,需要调整当前的交换分区。
•使用dd if=/dev/zero of=/1000M.swap bs=1M count=1000 命令生成一个1G大小的交换文件
• 使用fdisk分出一个1000M的swap类型的分区
• mkswap /dev/sdb7 或/1000M.swap 对分区或文件进行数字签名,标识这是一个swap类型的partition或者file
• swapon -s 查看现有的swap信息
• swapon -a /dev/sdb7 -p -2 激活分区同时设置其优先级
• swapoff /dev/sda2;swapon -a /dev/sda2 -p -10;假设现有的分区的处在相对低速的硬盘上,我们可以将其卸载,并重新分配一个-10的优先级,让其他交换分区优先作用。
• 最后使用top或者free指令观察swap分区和内存的状态
3、 使用e2lable给予分区标签
• 使用标签可以在不用修改其他代码,配置文件的前提下更为方便的更换新的分区
• 首先假设/mnt/ftpdata挂载了/dev/sda5,我们给/dev/sda5一个标签
• e2lable /dev/sda5 先查看到的是空的标签
• e2lable /dev/sda5 FTPDATA 给予一个新的标签
• mount LABEL=FTPDATA /mnt/ftpdata 将等同于
mount /dev/sda5 /mnt/ftpdata
• 在/etc/fstab中的挂载变成了LABEL=FTPDATA /mnt/ftpdata ext3 defaults 0 0
• 如果之后由于空间的问题,更换一个更大空间的分区时,只要简单的e2lable /dev/sda5 OLDFTPDATA; e2lable /dev/sdb7 FTPDATA;
那么我们的文件系统将使用新的空间,而我们什么配置都不要去修改
4、对新建分区的/etc/fstab永久设置
• 将之前增加的Linux分区或swap文件在/etc/fstab中建立新的
条目,让其随着系统的启动自动挂载
• 下面的例子中将使用默认选项挂载新的交换分区或交换文件,swap分区是不需要挂载点的
• /dev/sda7 swap swap defaults 0 0
• /1000M.swap swap swap defaults 0 0
• 下面的例子将挂载新的分区到/mnt/ftpdata(需事先建立该目录夹),同时为了防止用户上传恶意代码,我们移除了可执行
• /dev/sda6 /mnt/ftpdata ext3 defaults,noexec 0 0
5、sulogin模式修复引导是挂载的错误
• 修改/etc/fstab,将defaults改为defaul
• /dev/sda1 / ext3 defaul 0 0
• 之后重新启动系统,将可以看到系统开机错误提示“需要root帐户做维护,或者ctrl+D系统将重启,此时的模式就为sulogin模式。
• 输入root帐户密码,进入reparied模式
• 注意:此时的系统在kernel引导时将系统的根目录挂载为只读的方式,这是为了防止kernel引导异常崩溃后对文件系统做破坏性的写入。所以我们要重新挂载根分区
• mount -o remount,rw /
• 之后对/etc/fstab做修改保存。再正常引导系统init 3;进入到运行级别3.
6、mount参数实验(未完)
• -o remount 可以对一个已经挂载的设备重新挂载,当然我们是添加了新的挂载属性。此时不用再指定设备的名称
• mount -o remount,rw / ; 重新挂载根目录
• -o noexec 可以在一个共享上传的目录中防止上传恶意代码的程序在服务器上被执行。
• 测试cp /bin/pwd /mnt/ftpdata ; /mnt/ftpdata/pwd提示“操作不允许”的错误,/mnt/ftpdata为挂载点
• -o ro 将文件系统挂载为一个不需要任何修改的文件夹,比如用在固定的图片,静态网页或只允许下载的FTP文件服务器
• 测试cp /etc/group /mnt/ftpdata; 提示只读的系统写操作失败
7、mount总结
• mount -t iso9660 /dev/cdrom /mnt/cdrom
• mount -t iso9660 -o loop /winxp.iso /mnt/cdrom
• mount -t vfat /dev/sda5 /mnt/usb
• mount -t nfs server1:/home/guests /home/guests
• mount -t cifs -o username=smbuser01 //192.168.0.254/share1 /mnt/smb
8、挂载误区
• 错误一:挂载到一个已经存在的文件夹下,比如新建分区mount /dev/sdb8 /root
• 分析:此操作步骤不对,原意是为root帐户分配一个更大的空间(即使用/dev/sda8),但在挂载之前应该讲/root下的文件先行备份,可以使用tar打包压缩到其他目录夹之下,之后才能挂载,最后就是将打包的文件解压到新的设备上。这样恢复了原来root的个人文件。
• 总结:原则上创建一个新的目录夹挂载新的分区
9、rpm软件管理-安装
• rpm包的安装,必须存在本地或是网络中资源
• elinks ftp://server1/ 记录下资源的地址
• 也可以下载到本地安装
• rpm -ivh ftp://server1/pub/Server/zsh*.rpm 正常安装
• rpm -ivh ftp://server1/pub/Server/eclipse*.rpm–failed dependencies 检测出多个依赖关系的问题,要安
装这个软件需要其他软件先行安装。以后用yum来解决安装的问题
10、文件系统下的配额
• 先建立一个配额所需分区,将其格式化
• 在/etc/fstab中,添加这个分区的挂载属性如下/dev/sdb1 /ftpdata ext3 defaults,usrquota,grpquota 0 0
• mount -a ; mount检查挂载的有效性
• quotaon /ftpdata;在存在quota用户的数据库文件的情况下激活配额的挂载点,注意很多人忽略了此步骤而实验失败
• quotacheck -cugm /ftpdata 对文件系统做配额前帐户使用文件的扫描
• ls /ftpdata/aquota.{user,group} -l
• edquota user01 分别添加blocks的配额soft部分软限为14000,hard硬限为20000,节点数的限制先不做
• 等同的使用方法setquota user01 14000 20000 0 0 /ftpdata
• su – user01; cd /ftpdata
• dd if=/dev/zero of=15M.user01 bs=1M count=15
• 看到达到配额的提示,继续写入文件
• dd if=/dev/zero of=2M.user01 bs=1M count=2
• ls /ftpdata -l 查看新文件仍然可以形成
• dd if=/dev/zero of=5M.user01 bs=1M count=5
• 这时看到配额限制的错误信息
• ls /ftpdata -l 查看新文件大小不够5M
• 接着同样的方式做基于user02的inode节点数的限制edquota user02 0 0 10 15 /ftpdata
11、软队列实现与测试
• 基于硬盘建立分区/dev/sda{5,6,7,8} 用来模拟多个磁盘,大小都为100M即可我们将使用分区来模拟四个单独的磁盘分区。用来做RAID的分区不需要格式化
• 注意分区时设置分区的类型为Linux RAID autodetect
• mdadm -C /dev/md0 -l 5 -n 3 -X 1/dev/sda{5,6,7,8}
• 创建RAID5的三个磁盘,名称为/dev/md0
• mdadm —detail /dev/md0 查看编译的过程等待结束
• mkfs.ext3 /dev/md0; mount /dev/md0 /ftpdata;
• cp /etc/*.conf /ftpdata -v 将设备格式化,挂载,并拷入些数据
• mdadm /dev/md0 -f /dev/sda6 将sda6设备模拟失效
• mdadm —detail /dev/md0 查看设备显示失效Failed,另外一个标记为Spare备用的磁盘此时变成队列中在使用磁盘,并且磁盘将进入到重新编译的过程mdadm /dev/md0 —remove /dev/sda6 移除坏的设备
• mdadm —detail /dev/md0 查看设备所对应位置显示removed
• mdadm /dev/md0 -a /dev/sda8 添加新的设备到/dev/md0中,新加入的设备将自动的重新编译数据
• mdadm —detail /dev/md0 等待设备编译成功
• umount /dev/md0;mount /dev/md0 /ftpdata
• ls /ftpdata -l 将设备卸载并重新挂载后查看数据
12、使用快照对LVM的备份
• 建立一个lvm名字叫做/dev/myvol/ftpdata
• 并将该逻辑卷格式化,挂载,并拷入一些数据(11M左右)mkfs.ext3 /dev/myvol/ftpdat mkdir /ftpdata; mount /dev/myvol/ftpdata/ftpdata
• 利用空余的卷组的空间建立对当前逻辑卷/dev/myvol/ftpdata的快照LVM
• lvcreate -L 20M -n ftpsnap -s /dev/myvol/ftpdata
• 快照的大小只要稍微大于原始LVM现有数据长有的空间的总和即可。
• 使用lvdisplay 查看快照的LVM
• lvdisplay /dev/myvol/ftpsnap
• LV snapshot status active destination for/dev/myvol/ftpdata
• 现在可以将此LVM快照分区挂载到新的目录夹,再针对这个目录夹做备份了
• mount /dev/myvol/ftpdata /mnt/ftpsnap;
• dump -0u -f /tmp/ftp.dump /mnt/ftpsnap;
• 一旦备份成功,可以使用
• file /tmp/ftp.dump 查看备份的信息
• 成功的备份之后,那么LVM快照就没有任何的作用了。可以将其删除
–lvremove /dev/myvol/ftpsnap
• 接着测试数据的还原,还原指令会还原到当前的工作目录中
• cd /mnt/ftpsnap;
• restore -rf /tmp/ftp.dump
• 最后检查文件的有效性
13、rpm软件管理-q查询
• rpm -qa 查询已经所有的软件
–rpm -qa | grep zsh
• rpm -ql 查询zsh安装了那些文件
–rpm -ql zsh | grep bin 查询软件包的执行程序
–rpm -ql zsh | grep doc 查询软件包的文档
–rpm -ql zsh | grep man 查询软件包的手册
• rpm -qi zsh 查看软件包的信息
• rpm -qf $(which mount) 查询mount指令由哪一个软
件包提供的
• 导入GPG红帽公钥
rpm —import /etc/pki/rpm-gpg/*
rpm对文件的修复
• echo “1” > /bin/mount 假设我们破坏了mount
• rpm -qf $(which mount) 找出由哪一个软件包提供的mount指令
• rpm -qV xxxxxxx 将对上面的软件包做检测,你将看到存在安装后修改的文件列表
• 下一步将这个软件重装
• rpm -ivh –force XXXXX
• rpm -qV xxxxxx 再对软件包做检测,这时没有任何差异,再执行mount指令。
14、grub修改
• 文件存放在/boot/grub/grub.conf
• default = 数值由0开始,对应每个title段
• timeout=5 自动在5秒后引导默认的Linux
• title RedHat Enterprise Linux
–root (hd0,0) 引导的系统存在的分区
–kernel /vmlinuz-2….. ro root=/dev/vol0/root核心文件,根分区只读的挂载
–initrd /initrd-….. 初始化ramdisk
• title The Other Linux kernel
–第二个Linux引导设置
15、grub修复
• rm /boot/* -rf 模拟我们破坏了引导文件、分区
• 重新安装核心yum reinstall kernel 或者rpm -ivh —forceftp://server1.example.com/pub/Server/kernel*.rpm
• 修复grub,将grub安装到硬盘MBR记录中
–grub-install /dev/sda
• 再次创建/boot/grub/grub.conf文件
• 注意:在有的系统中还需要我们将init ramdisk重新生成一份,如果你的系统不能引导,请使用下面的指令在rescue救援模式修复一次
• mkinitrd /boot/initrd-2.6.18-128.el5.img $(uname -r)
16、编译新的驱动模块到核心中
• 假设我们添加一个QLogic的1280 SCSI卡到系统中
• cd /lib/modules/$(uname -r)/kernel/drivers
• 查看这个下面的目录的硬件分类,
• 我们可以使用modprobe -l 列举出系统所有的模块驱动
• modinfo qla1280 解读模块信息
• lsmod | grep ql1280 先对当前系统检测没有包含此模块
• mkinitrd —with=qla1280 /boot/initrd-2.6.18-I.do.img $(uname -r) 针对现有的版本的模块添加
• 修改grub添加新的initrd,设置默认的启动核心,重启系统
• 再使用lsmod | grep qla1280 查看此模块是否安装
17、手工添加核心模块到initRD
• 首先需要一个原始系统在用的initrd
• cp /boot/initrd-2.6.8-128.el5.img /tmp; mkdir /tmp/initrd
• 使用file /tmp/initrd-2.6.8-128.el5.img 查看其格式并记录下来,之后我们打包或压缩的时候也要对应相同的格式否者系统无法启动
• 我们可以看到这个文件显示用gzip 命令使用最大压缩比例压缩的文件,我们使用对用的gunzip 解压缩
• gunzip -9 -d -S .img /tmp/initrd-2.6.8-128.el5.img
• 再次查看file 指令gunzip 之后的文件格式我们发现是cpio打包的文件,其格式为SRV4 no CRC.
• cd /tmp/initrd; cpio -i < /tmp/initrd-2.6.8-128.el5 解包将可以看到所有的文件在当前文件
• 将你需要加载到initrd的模块拷贝到此目录lib下,下面的例子同样加载qla1280 scsi 驱动。
• cp /lib/modules/$(uname
-r)/kernel/drivers/scsi/qla1280.ko /tmp/initrd/lib -v
• 接着我们需要将模块添加到初始化脚本中
• vim /tmp/initrd/init;
• echo “Loading qla1280 modules”
• insmod /lib/qla1280.so
• 之后我们可以对此文件夹打包了,由于cpio打包的格式是基于文件清单,所以我们需要以下的方式打包cpio格式,(前面我们使用file 确定其文件格式为newc
• cd /tmp/initrd; find ./ > /tmp/initrd.lst;
• cpio -o -c < /tmp/initrd.lst >/tmp/initrd-I-do
• 注意确保cpio的格式和原始文件的格式一样,否则系统无法启动不同格式的cpio打包的文件-c 等同于-H newc
• 那么之后就是使用gzip对打包好的文件压缩了
• gzip -9 -S .img /tmp/initrd-I-do;
• cp /tmp/initrd-I-do.img /boot/ -v
• 最后就是测试新的ram disk, 我们可以修改grub.conf 文件
• title Kernel with qla1280 module
• kernle /….. 之前的相同的核心,复制一份过来
• initrd /initrd-I-do.img 新的initrd文件
18、yum数据仓库的安装指向
• 在/etc/yum.repos.d文件夹下,查看是否存在其他不正常的仓库文件,将其删除。
• 手工创建一个my.repo 文件(.repo后缀)[class] 仓库名随便给,当不要有相同的名字name=there isa description 这里只为一个描述
baseurl=http://…. 由教室环境中提供的地址enabled=1 是否对这个仓库中的软件做搜索,也就代表是否启用这个仓库
gpgcheck=0 是否做GPG检测在yum安装指令后也可以直接屏蔽gpg检查
yum —nogpgcheck zsh…..rpm
• 排错:
–给定的baseurl不能用浏览器看到
• elinks http://server1.example.com
• ping server1.example.com
–存在着多余的多余的仓库文件
• ls /etc/yum.repos.d
• yum install zsh*
• rpm -qa | grep zsh
• yum reinstall zsh
• yum grouplist
• yum remove zsh*
19、系统日志服务-本地
• 修改syslog.conf配置文件,在最尾部加上
• authpriv.* /var/log/mysecure.log
• 保存后重启syslog服务
• 接着违背账户验证,让syslog在/var/log/mysecure.log中记录下日志信息
• 分别以普通用户登录到其他的虚拟控制台;tty; su – root;输入错误的密码
• 接着在自定义的日志文件中查看消息
• su: Authentication failure; logname=root uid=502 tty=tty2
• 上面su切换身份显示错误的信息
20、系统日志服务-本地
• 修改syslog.conf配置文件,在最尾部加上
• authpriv.* /var/log/mysecure.log
• 保存后重启syslog服务
• 接着违背账户验证,让syslog在/var/log/mysecure.log中记录下日志信息
• 分别以普通用户登录到其他的虚拟控制台;tty; su – root;输入错误的密码
• 接着在自定义的日志文件中查看消息
• su: Authentication failure; logname=root uid=502 tty=tty2
• 上面su切换身份显示错误的信息
• 监控主机端的配置
• 修改syslog.conf文件
• authpriv.* @collecthost
• @之后的为收集日志的主机的主机名,请确保在/etc/hosts有其对应的ip地址和主机名,保存后重启syslog服务
• 收集日志信息服务器的配置
• 修改/etc/sysconfig/syslog文件
• SYSLOG_OPTIONS=“-r -m 0”#接收来自远程的日志消息
• 保存停止syslog服务,稍等一会在启动syslog服务
• 接下来就是在监控主机上产生错误信息,在这台主机上查看
• tail /var/log/message;