Linux运维生产上必须要掌握的一些配置操作
一、必须要熟练掌握的操作
1.1 忘记root密码(进入单用户模式) 1.2 进急救模式 1.3 配置IP地址 1.4 配置主机名 1.5 扫描磁盘、磁盘分区、挂载分区 1.6 LVM卷组管理 1.7 分区的扩展和收缩 1.8 VNC设置 1.9 定时设置
二、详细配置步骤
2.1 忘记root密码
忘记root密码这种事情不会经常发生,但是是生产中必须要会的一个技能。 RHEL7之前的系统都比较简单,RHEL7之后有些变化。
我这里都以RHEL6系统来做配置,有些比较不一样的配置也会加上RHEL7。
进入单用户模式
RHEL6:
- step1:开机加载后,按任意键,进入启动菜单栏
- step2:进入后看菜单栏下面的文字说明。按字母e可以编辑启动前的菜单命令
- step3:按e后,进入菜单编辑状态,按上下键,把光标移到第二行,再按e
- step4:在命令最后加上1或者字母single,都表示单用户,回车
- step5:按字母b进行启动(注意,这里不是回车)
- step6:确定是否是单用户模式\r\n启动完全后,会直接进入系统,不会有输入密码等提示。
- 可以输入runlevel查看系统级别:
#runlevel
N S
或者
#runlevel
n1 S
都说明现在的系统是单用户模式。 然后就可以使用passwd命令修改系统密码。
RHEL7进入单用户模式:进入编辑命令前的步骤都一样,只是修改的内容不一样. 找到以"linux16"为开头的一句配置,把配置中的ro改成"rw init=/sysroot/bin/sh",完成之后按 “Ctrl+x”启动。 启动后,还需要执行chroot才能执行一些命令:
chroot /sysroot/
passwd root
由于selinux开启着的需要执行以下命令更新系统信息,否则重启之后密码未生效
#cat /etc/sysconfig/selinux
SELINUX=enforcing
#touch /.autorelabel
重启系统
exec /sbin/reboot
2.4 配置主机名
也是可以使用命令和修改文件来配置 #hostname 主机名 这种重启就会失效 所以也是推荐修改文件来配置
#vim /etc/sysconfig/network
HOSTNAME=主机名
2.5 扫描磁盘、磁盘分区、挂载分区
扫描磁盘: 不重启系统识别新添加的磁盘
echo '- - -' > /sys/class/scsi_host/host0/scan
.......
echo '- - -' > /sys/class/scsi_host/hostN/scan
磁盘分区: 常用分区的两个分区命令:fdisk、parted 常用的两种分区格式:MBR、GPT fdisk支持MBR分区格式,MBR分区格式支持最多4个主分区,或者3个主分区+1个扩展分区(1个扩展分区再分逻辑分区),MBR分区最多支持2TB的磁盘 parted支持MBR和GPT分区格式。GPT突破了2TB分区的限制,最大支持18EB的分区。 所以如果分区超过2TB,就要使用parted来进行分区。
fdisk命令:
#fdisk -l
Disk /dev/sda: 23.6 GB, 23572365312 bytes
255 heads, 63 sectors/track, 2865 cylinders #255个磁头,63个扇区,2865柱面
Units = cylinders of 16065 * 512 = 8225280 bytes #一个柱面的大小,大概8M左右
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003f559
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 1339 10240000 83 Linux
/dev/sda3 1339 1849 4096000 82 Linux swap / Solaris
Disk /dev/sdb: 15.9 GB, 15918956544 bytes
255 heads, 63 sectors/track, 1935 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb6a02d9d
Device Boot Start End Blocks Id System
可以看出,有两个磁盘,一个sda,一个sdb
sda已经有三个分区,其中sda3分区格式为swap,是交换分区。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.5G 4.2G 4.8G 47% /
tmpfs 801M 0 801M 0% /dev/shm
/dev/sda1 477M 75M 373M 17% /boot
sdb未进行分区。 对sdb进行分区并格式,然后挂载。
#fdisk /dev/sdb
Command (m for help): m #输入m显示fdisk命令参数
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition #删除分区
l list known partition types
m print this menu
n add a new partition #增加分区
o create a new empty DOS partition table
p print the partition table #显示分区情况
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit #保存操作信息并退出
x extra functionality (experts only)
Command (m for help): p #输入p显示分区情况
Disk /dev/sdb: 15.9 GB, 15918956544 bytes
255 heads, 63 sectors/track, 1935 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb6a02d9d
Device Boot Start End Blocks Id System
Command (m for help): n #输入n添加分区
Command action
e extended #输入e创建扩展分区
p primary partition (1-4) #输入p创建主分区(只能创建4个)
p
Partition number (1-4): 1 #分区号
First cylinder (1-1935, default 1): #起始柱面,不输入选择默认
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1935, default 1935): #结束柱面(可使用柱面数量,也可以使用大小),不输入选择默认
Using default value 1935
Command (m for help): w #保存操作并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
分区后还不能使用,需要格式化后
mkfs.ext4 /dev/sdb1
mke2fs 1.43-WIP (20-Jun-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
972944 inodes, 3885714 blocks
194285 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3980394496
119 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
格式化后,挂载到某个目录上,才能正常使用。
# mount /dev/sdb1 /mnt
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.5G 4.2G 4.8G 47% /
tmpfs 801M 0 801M 0% /dev/shm
/dev/sda1 477M 75M 373M 17% /boot
/dev/sdb1 15G 38M 14G 1% /mnt
parted命令:
parted可以使用交互模式操作,也可以使用非交互模式。
交互模式:
# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
check NUMBER do a simple check on the file system
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkfs NUMBER FS-TYPE make a FS-TYPE file system on partition NUMBER
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
move NUMBER START END move partition NUMBER
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all
found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
resize NUMBER START END resize partition NUMBER and its file system
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU Parted
(parted) mklabel gpt #格式化成gpt格式的硬盘
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you
want to continue?
Yes/No? Yes #提示会丢失磁盘里的数据,输入Yes
(parted) mkpart 1 #分区号
File system type? [ext2]? #分区格式
Start? 1 #起始位置,可以是柱面,也可以是大小,也可以是百分比
End? 100% #结束位置
(parted) print #查看分区结果
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 15.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 15.9GB 15.9GB 1
(parted) quit #退出
Information: You may need to update /etc/fstab.
格式化,并挂载
# mkfs.ext4 /dev/sdb1
# mount /dev/sdb1 /mnt
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.5G 4.2G 4.8G 47% /
tmpfs 801M 0 801M 0% /dev/shm
/dev/sda1 477M 75M 373M 17% /boot
/dev/sdb1 15G 38M 14G 1% /mnt
非交互模式: parted可以使用一句命令直接创建完成。
#parted -s /dev/sdb mklabel gpt mkpart 1 ext3 1 100%
2.6 LVM卷组管理
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 由于LVM有快照功能,可在线扩展磁盘等特点,在生产系统中,特别是业务分区,一般都是用LVM来进行分区。
基本的逻辑卷管理概念: PV(Physical Volume)- 物理卷 物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。 VG(Volumne Group)- 卷组 卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。 LV(Logical Volume)- 逻辑卷 逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
创建命令:
先使磁盘PV化
# pvcreate /dev/sdb1
使用PV化的磁盘创建VG组
# vgcreate vg00 /dev/sdb1
在创建的VG组中创建LV分区
# lvcreate -L 10G -n lv00 vg00
格式化分区
# mkfs.ext4 /dev/vg00/lv00
2.7 分区的扩展和收缩
fdisk可以扩展分区,但不能收缩分区。 parted可以扩展和收缩分区。 不过fdisk和parted扩展收缩分区都有很大限制。 要对磁盘扩展和收缩,使用LVM是比较方便的一种方法。
fdisk分区扩展: 可以通过修改结束柱面的大小来进行扩展分区。不过前提是要扩展的分区后面要有未分配的空间可以使用。
parted分区扩展: 使用resize指令可以更改指定分区的大小。 但要使用parted中的resize功能,需要是parted中的mkfs命令格式化后的分区。使用系统中的mkfs.ext3等格式化命令后,不能再使用resize功能进行修改操作。
用系统中自带的命令mkfs.ext3格式化再想调整分区,会出错: File system has an incompatible feature enabled
如果先用parted中mkfs格式化成ext2格式,再用tune2fs -j /dev/sdb1转化成ext3格式,回到parted中,还是可以用resize的调整分区大小。 不过不提倡使用这种方法。
2.8 VNC设置
VNC服务可能主要是用来安装Oracle时使用。 redhat上有两个vnc软件: 一个是tigervnc,这个命令行的工具,一般都用这个; 一个是vino,这个是图形工具里面的“共享桌面”
安装tigervnc:
#yum install vnc-server
临时开启服务:(这种启用服务重启后会失效) 哪个用户要启用vnc,就要登录哪个用户执行此命令 第一次执行会提示设置密码 #vncserver
长久开启:
登录要启用VNC远程连接的用户,设置密码:
#vncpasswd
修改配置:
# vim /etc/sysconfig/vncservers
.......
# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
修改最后两个配置
VNCSERVERS="2:root" #数字后跟上要启用vnc的用户名
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp" #这句要去掉-localhost
2.9 定时任务
Linux定时任务,一般都是使用crontab工具来完成。 我们可以通过crontab -e命令来配置当前用户的定时任务。保存后,会在/var/spool/cron/生成相应的文件。 还可以在/etc/cron.d、/etc/cron.daily、/etc/cron.hourly、/etc/cron.monthly中配置定时任务。
crontab格式:
* * * * * 要执行的脚本或者命令
第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令
记住“分时日月周”即可。
一些定时执行的例子:
每10分钟重启apache
*/10 * * * * /usr/local/apache/bin/apachectl restart
每晚的21:30重启apache
30 21 * * * /usr/local/apache/bin/apachectl restart
每月1、10、22日的4 : 45重启apache
45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
每周六、周日的1 : 10重启apache
10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
每天18 : 00至23 : 00之间每隔30分钟重启apache
0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
每星期六的11 : 00 pm重启apache
0 23 * * 6 /usr/local/apache/bin/apachectl restart
每一小时重启apache
* */1 * * * /usr/local/apache/bin/apachectl restart
晚上11点到早上7点之间,每隔一小时重启apache
* 23-7/1 * * * /usr/local/apache/bin/apachectl restart
每月的4号与每周一到周三的11点重启apache
0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
一月一号的4点重启apache
0 4 1 jan * /usr/local/apache/bin/apachectl restart
注意:用crontab定时执行任务时,其中命令或者目录地址最好使用绝对路径,因为crontab中获取不到很多环境变量。当你手动执行脚本没问题,但是放在定时任务中就没办法执行,一般都是路径的问题。