四、生产上必须要掌握的一些配置操作

持续更新中….

一、必须要熟练掌握的操作

1.1 忘记root密码(进入单用户模式)
1.2 进急救模式
1.3 配置IP地址
1.4 配置主机名
1.5 扫描磁盘、磁盘分区、挂载分区
1.6 LVM卷组管理
1.7 分区的扩展和收缩
1.8 VNC设置
1.9 定时设置

二、详细配置步骤

我这里都以RHEL6系统来做配置,有些比较不一样的配置也会加上RHEL7。

2.1 忘记root密码(进入单用户模式)

这种事情不会经常发生,但是是必须要会的技能。
RHEL7之前的系统都比较简单,RHEL7之后有些变化。
RHEL6:
step1:开机加载后,按任意键,进入启动菜单栏
四、生产上必须要掌握的一些配置操作_第1张图片
step2:进入后看菜单栏下面的文字说明。按字母e可以编辑启动前的菜单命令。
四、生产上必须要掌握的一些配置操作_第2张图片
step3:按e后,进入菜单编辑状态,按上下键,把光标移到第二行,再按e
四、生产上必须要掌握的一些配置操作_第3张图片
step4:在命令最后加上1或者字母single,都表示单用户,回车
四、生产上必须要掌握的一些配置操作_第4张图片
四、生产上必须要掌握的一些配置操作_第5张图片
step5:按字母b进行启动(注意,这里不是回车)
四、生产上必须要掌握的一些配置操作_第6张图片

step6:确定是否是单用户模式
启动完全后,会直接进入系统,不会有输入密码等提示。
可以输入runlevel查看系统级别:
#runlevel
N S
或者
#runlevel
1 S
都说明现在的系统是单用户模式。

然后就可以使用passwd命令修改系统密码。

RHEL7进入单用户模式:
进入编辑命令前的步骤都一样,只是修改的内容不一样.
四、生产上必须要掌握的一些配置操作_第7张图片
四、生产上必须要掌握的一些配置操作_第8张图片

找到以”linux16″为开头的一句配置,把配置中的ro改成”rw init=/sysroot/bin/sh”,完成之后按 “Ctrl+x”启动。
四、生产上必须要掌握的一些配置操作_第9张图片
修改后的
四、生产上必须要掌握的一些配置操作_第10张图片

启动后,还需要执行chroot才能执行一些命令:
chroot /sysroot/
passwd root

由于selinux开启着的需要执行以下命令更新系统信息,否则重启之后密码未生效
#cat /etc/sysconfig/selinux
SELINUX=enforcing

#touch /.autorelabel
重启系统
exec /sbin/reboot

2.2 进急救模式(rescue mode)

进急救模式,需要用到系统光盘进行启动。
一般是比较严重的问题才需要进急救模式。
比如分区表损坏、GRUB引导损坏、系统内核文件丢失、boot分区损坏等,都需要进急救模式进行操作。

这里模拟GRUB损坏来介绍急救模式的使用。
登录系统,用dd命令破坏引导信息:
#dd if=/dev/zero of=/dev/sda bs=446 count=1
然后重启系统,会找不到引导信息,报错
FATAL: No boottable medium found! System halted.
插入系统光盘,用光盘引导进入急救模式。
选择“Rescue installed system”进入急救模式。

四、生产上必须要掌握的一些配置操作_第11张图片

bash-4.1# chroot /mnt/sysimage
sh-4.1# grub
grub > root (hd0,0)
grub > setup (hd0)
grub > quit

四、生产上必须要掌握的一些配置操作_第12张图片

重启系统,引导恢复正常。

2.3 配置IP地址

可以使用命令ip或ifconfig来配置,也可以直接修改配置文件来进行配置IP。

1

2

#ip addr add 192.168.3.10/24 dev eth0

#ifconfig eth0 192.168.3.10 netmask 255.255.255.0

不过这两种方法,只要系统一重启就可能失效,所以还是推荐直接编辑网卡配置文件进行配置
#vim /etc/sysconfig/network-scripts/ifcfg-eth0

1

2

3

4

5

6

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

IPADDR=192.168.3.31

NETMASK=255.255.255.0

BOOTPROTO=static

2.4 配置主机名

也是可以使用命令和修改文件来配置
#hostname 主机名
这种重启就会失效
所以也是推荐修改文件来配置
#vim /etc/sysconfig/network
HOSTNAME=主机名

2.5 扫描磁盘、磁盘分区、挂载分区

扫描磁盘:
不重启系统识别新添加的磁盘

1

2

3

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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

1

2

3

4

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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

1

2

3

4

5

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

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

1

2

3

4

5

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

1

2

3

.......

# VNCSERVERS="2:myusername"

# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"

修改最后两个配置

1

2

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中获取不到很多环境变量。当你手动执行脚本没问题,但是放在定时任务中就没办法执行,一般都是路径的问题。

 

 

更多文章见我个人网站:http://haibing.org

你可能感兴趣的:(Linux)