一、阶段知识回顾
服务器硬件,提升用户的体验(大型网站门户网站数据放在内存,中小型企业放在磁盘)尽量把请求往前推:memcached,redis
Buffer与Cache区别:
buffer:观看视频的时候 转圈,数据放在你的内存,存放这些数据的空间buffer区域 缓冲区,buffering
cache:提高观看速度 ,主要是用来给用户读取在内存中的区域cache,缓存区。
写buffer 读cache
写缓冲 读缓存
radis卡:
查看端口是否开启:telnet,netstat -lntp ,ss -lntup
ps -ef :正在运行的进程。
安装常见软件:
[root@oldboy-01 ~]# yum install tree telnet nc nmap lrzsz dos2unix -y
nc与telnet用法基本相同。
nmap -p22 10.0.0.201 查看端口是否开启
lrzssz :rz:上传
sz:下载,sz /etc/hosts
永久修改主机名:/etc/sysconfig/network,修改配置文件。
修改主机名解析:/etc/hosts
帮助命令:
man ls,ls --help
vim 相关知识:
光标移动:
左下右上:hjkl
gg:第一行
G:最后一行,100G
光标移动到行尾:$
光标移动到行首:0或者^
vim编译模式:
当前行下一行插入一行并进入编辑:o
光标位置至行尾删除并进入编辑:C
光标位置至行尾位置删除,不进入编辑:D,$d
光标移动至行尾,并进入编辑模式:A
复制光标所在行:yy
黏贴:p,多次黏贴3p,4p
删除/剪切:dd
删除当前行至文件尾部:dG
vim常见故障:
编辑模式查找:/
继续向下查找:n
继续向上查找:N
撤销当前的操作:u
撤销刚才的操作:ctrl+r
二、定时任务
(一)定时任务介绍
crond
atd:一次性
ana:不是7x24小时服务器
crond:
[root@oldboy-01 ~]# rpm -qa | grep cronie cronie-1.4.4-16.el6_8.2.x86_64 cronie-anacron-1.4.4-16.el6_8.2.x86_64 [root@oldboy-01 ~]# rpm -ql cronie /etc/cron.d /etc/cron.d/0hourly /etc/cron.deny /etc/pam.d/crond /etc/rc.d/init.d/crond /etc/sysconfig/crond /usr/bin/crontab /usr/sbin/crond /usr/share/doc/cronie-1.4.4 /usr/share/doc/cronie-1.4.4/AUTHORS /usr/share/doc/cronie-1.4.4/COPYING /usr/share/doc/cronie-1.4.4/ChangeLog /usr/share/doc/cronie-1.4.4/INSTALL /usr/share/doc/cronie-1.4.4/README /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz /usr/share/man/man8/cron.8.gz /usr/share/man/man8/crond.8.gz /var/spool/cron [root@oldboy-01 ~]#
系统的定时任务:系统会自动运行里面的内容,系统中毒的时候。
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
系统定时任务+logrotate命令完成对日志的日志切割/日志轮询。
/etc/crontat #系统定时任务的配置文件之一。
用户定时任务:
[root@oldboy-01 ~]# crontab -l
编辑模式:
[root@oldboy-01 ~]# crontab -e
定时任务存放的位置:
[root@oldboy-01 ~]# cat /var/spool/cron/root #root用户名
确认crond正在运行:
方法1:
[root@oldboy-01 ~]# /etc/init.d/crond status
方法2:
[root@oldboy-01 ~]# ps -ef | grep crond
查看是否开机自启动:
[root@oldboy-01 ~]# chkconfig | grep cron
crontab -r #删除所有定时任务,没有提示确认。
crontab 命令:有语法检查功能。
crontab -e :==vim /var/spool/cron/root
crontab -l :==cat /var/spool/cron/root
定时任务的日志文件:
/var/log/cron
定时任务黑名单,哪些用户禁止使用定时任务:
/etc/cron.deny#用户的名字写进去
(二)定时任务格式
什么时间做什么事?
格式:时间 命令
时间:分、时、日、月、星期(0-6)
避免日和星期同时写入。
定时任务中特殊符号:
星号(*):表示每的意思。
斜线(/n):每隔n
crontab中命令使用绝对路径
[root@oldboy-01 ~]# crontab -e #print name to file by cyc */3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
查看日志:
[root@oldboy-01 ~]# tail -f /var/log/cron
减号(-):表示范围 :
00 09-11 * * * cmd,整时运行;* 09-11 * * cmd,每分钟运行
逗号(,):不连续的范围,如:7,9,11等。
例子:* * * * * echo oldboy >> /oldboy.txt #每分钟将名字追加到oldboy.txt中。
定时任务注意事项:
①测试号命令
②命令放入脚本中
③测试脚本
④检查结果
(三)定时任务九局箴言
①定时任务之前加注释
②使用脚本替代命令定时任务。脚本一般放在,/server/scripts。使用sh命令进行执行。
③定时任务date中的%百分号。默认表示换行,所以需要在%号前加撬棍。date +%F
④运行脚本使用,/bin/sh
⑤定时任务中命令或者脚本结果(正确错误)定向到黑洞(>/dev/null 2>&1),或者定向到文件:>/oldboy.txt 2>&1。
如果不定向:
邮件的软件没有开启:大量小文件放在:[root@oldboy-01 ~]# ll /var/spool/postfix/maildrop/
邮件的软件开启:会有 you have new mail in /var/spool/mail/root
快捷键:A,光标移动到行尾,并进入编辑模式。DG:删除当前行至文件尾部。
⑥避免不必要的程序及命令输出。如:tar zcf,tar zcvf
⑦打包压缩使用相对路径(切换到目标目录的上一级打包目录)
cd /进入到被打包目录的上一级目录
cd /
tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
cd / && tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
⑧定时任务脚本中程序文件,尽量使用绝对路径
⑨系统与命令位置有关的环境变量问题
定时任务运行脚本的时候可以识别的path只有/usr/bin 和/bin
定时任务脚本中的ifconfig ip ntpdate 提示command not found
解决方法:
使用绝对路径,/sbin/ifconfig 使用绝对路径。
在脚本开头重新定义一个PATH。export PATH=/usr/local/sbin ...//
/bin /sbin
/usr/bin /usr/sbin
/usr/local/bin /usr/local/sbin
JAVA tomcat 里面一般需要重新定义path环境变量
ifconfig eth0 | awk -F '[ :]+' 'NR==2{print $4}'
java环境变量:在脚本开头添加export的环境变量。
rm -f #删除大量文件会报错。
需要:ls | xargs rm -f
(三)用户管理
(1)开机自启动
①/etc/rc.local
②通过chkconfig
如何让脚本放在chkconfig
①脚本放在/etc/init.d/oldboyd
vim /etc/init.d/oldboyd
添加头:#chkconfig: 2345 99 99
echo oldboy
②增加脚本执行权限
chmod +x /etc/init.d/oldboyd
③chkconfig --add oldboyd
④查看:chkconfig | grep oldboyd
chkconfig 背后的故事
s--stop
k--kill
[root@oldboy-01 maildrop]# chkconfig iptables on [root@oldboy-01 maildrop]# ll /etc/rc3.d/ | grep ipt lrwxrwxrwx. 1 root root 18 Dec 18 00:36 S08iptables -> ../init.d/iptables [root@oldboy-01 maildrop]# chkconfig iptables off [root@oldboy-01 maildrop]# ll /etc/rc3.d/ | grep ipt lrwxrwxrwx. 1 root root 18 Dec 18 00:37 K92iptables -> ../init.d/iptables [root@oldboy-01 maildrop]#
验证:
[root@oldboy-01 maildrop]# ls -l /etc/rc3.d/ | grep ipt lrwxrwxrwx. 1 root root 18 Dec 18 00:37 K92iptables -> ../init.d/iptables lrwxrwxrwx. 1 root root 20 Dec 18 00:43 S08iptables -> /etc/init.d/iptables [root@oldboy-01 maildrop]# chkconfig | grep ipt iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@oldboy-01 maildrop]# mv /etc/rc3.d/K92iptables /tmp/ [root@oldboy-01 maildrop]# mv /etc/rc3.d/S08iptables /tmp/ [root@oldboy-01 maildrop]# chkconfig | grep ipt iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@oldboy-01 maildrop]# ls -l /etc/rc3.d/ | grep ipt [root@oldboy-01 maildrop]# [root@oldboy-01 maildrop]# [root@oldboy-01 maildrop]# ln -s /etc/init.d/iptables /etc/rc3.d/S08iptables [root@oldboy-01 maildrop]# chkconfig | grep ipt iptables 0:off 1:off 2:off 3:on 4:off 5:off 6:off [root@oldboy-01 maildrop]#
cat /etc/init.d/iptables
08开机顺序
92关机顺序
(2)用户管理
用户分类:
root:uid,0
虚拟用户:uid,1-499
用户的命令解释器:/sbin/nologin
普通用户:uid>500
用户相关文件:
/etc/passwd 用户信息
/etc/shadown 用户密码信息
/etc/group 用户的用户信息
/etc/gshadow 用户组密码信息
[root@oldboy-01 maildrop]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash [root@oldboy-01 maildrop]# tail -2 /etc/passwd qemu:x:107:107:qemu user:/:/sbin/nologin lisi:x:1011:1011::/home/lisi:/bin/bash [root@oldboy-01 maildrop]#
第一列:用户
第二列:密码,x
第三列:uid,1011
第四列:gid,1011
第五列:用户说明信息(手工添加默认空,系统添加用户有),添加的用户空的,root是root
第六列:家目录,:/home/lisi
第七列:用户使用的命令解释器,shell,/bin/bash,/sbin/nologin(虚拟用户)
[root@oldboy-01 maildrop]# cat /etc/shells /bin/sh /bin/bash 默认 /sbin/nologin 虚拟机用户 /bin/dash ubuntu /bin/tcsh unix /bin/csh unix 升级版
/etc/default/useradd:添加用户的时候默认信息
[root@oldboy-01 ~]# ls -la /etc/skel/
drwxr-xr-x. 2 root root 4096 Nov 2 2018 .
drwxr-xr-x. 84 root root 12288 Dec 15 16:29 ..
-rw-r--r--. 1 root root 18 Mar 23 2017 .bash_logout #用户退出会运行这里的命令
-rw-r--r--. 1 root root 176 Mar 23 2017 .bash_profile #/etc/profile
-rw-r--r--. 1 root root 124 Mar 23 2017 .bashrc #/etc/bashrc
/etc/skel:
新用户的老家的模板(新用户家目录的样子)
请问如下登录环境故障的原理及解决办法?
-bash-4.1$
解决办法:
①cp /home/oldboy/.bash* ~
②cp /etc/skel/.bash* ~
用户管理之添加和删除用户:
点(当前目录),星号(*)所有
useradd :
-u:指定uid
-s:指定使用的shell,默认/bin/bash,可以手工设置/sbin/nologin
-M:表示不创建家目录,一般创建虚拟用户使用
-g:指定用户属于组(组名字)添加用户的时候,默认创建一个用户名一样的组
-c:创建用户指定用户信息
添加一个用户oldboy666指定uid为888禁止用户登录系统,不创建家目录。
[root@oldboy-01 ~]# useradd -s /sbin/noloin -u 888 oldboy666 -M [root@oldboy-01 ~]# id oldboy666 uid=888(oldboy666) gid=1013(oldboy666) groups=1013(oldboy666) [root@oldboy-01 ~]#
[root@oldboy-01 ~]# userdel oldboy666
后者在/etc/passwd 相应的用户名加注释
userdel -r :删除用户所有信息
usermod:修改用户信息
-s:修改用户使用的shell
-g:修改用户组
-G:修改用户属于多个组
[root@oldboy-01 ~]# usermod -c 'xuniyonghu' zhangsan666 [root@oldboy-01 ~]# grep zhangsan666 /etc/passwd zhangsan666:x:1012:1012:xuniyonghu:/home/zhangsan666:/bin/bash [root@oldboy-01 ~]# [root@oldboy-01 ~]# usermod -g oldboy zhangsan666 [root@oldboy-01 ~]# id zhangsan666 uid=1012(zhangsan666) gid=500(oldboy) groups=500(oldboy) [root@oldboy-01 ~]# [root@oldboy-01 ~]# usermod -G root,alex888,alex666 zhangsan666 [root@oldboy-01 ~]# id zhangsan666 uid=1012(zhangsan666) gid=500(oldboy) groups=500(oldboy),0(root),1013(alex666),1014(alex888) [root@oldboy-01 ~]#
设置用户密码:
方法1: passwd oldboy 方法2 [root@oldboy-01 ~]# echo '123' | passwd --stdin oldboy Changing password for user oldboy. passwd: all authentication tokens updated successfully. [root@oldboy-01 ~]# history -c
密码保存工具:keepass,
用户管理之如何增强系统安全性和指纹验证
①最小化安装
②保护好root,进制root远程登录
修改远程连接端口22
/var/log/secure 登录日志分析
③文件权限:
给系统常用命令+i
系统配置文件+a
④给文件或者命令做一个指纹
[root@oldboy-01 oldboy]# md5sum oldboy.txt 9cd0ec3f04d4b8ed2d752663b91bdc80 oldboy.txt [root@oldboy-01 oldboy]# echo 'zhangsan' >> oldboy.txt [root@oldboy-01 oldboy]# md5sum oldboy.txt 890e6d1a7a855c028d1186c3f0e3aa6e oldboy.txt [root@oldboy-01 oldboy]# md5sum oldboy.txt > polic.log [root@oldboy-01 oldboy]# cat polic.log 890e6d1a7a855c028d1186c3f0e3aa6e oldboy.txt [root@oldboy-01 oldboy]# md5sum -c polic.log oldboy.txt: OK [root@oldboy-01 oldboy]# echo 'zhangsa1n' >> oldboy.txt [root@oldboy-01 oldboy]# md5sum -c polic.log oldboy.txt: FAILED md5sum: WARNING: 1 of 1 computed checksum did NOT match [root@oldboy-01 oldboy]# 放入定时任务+md5sum定时检测
面试题:
chown:修改文件或者目录所有者和属于的用户组
-R:递归修改文件和目录的所有者和用户组
chown oldboy oldboy.txt#只修改文件的所有者
chown oldboy.oldboy oldboy.txt #修改用户的所有者和所属主
用户组相关:
groupadd
创建用户组
-g指定用户组的gid数字
添加一个虚拟用户mysql,指定用户uid gid 都是999
方法1 [root@oldboy-01 /]# useradd -s /sbin/nologin -u 997 -M mysql [root@oldboy-01 /]# id mysql uid=997(mysql) gid=997(mysql) groups=997(mysql) 方法2 [root@oldboy-01 /]# groupadd -g 996 mysql1 [root@oldboy-01 /]# useradd -s /sbin/nologin -M -u 996 -g mysql mysql1 [root@oldboy-01 /]# id mysql1 uid=996(mysql1) gid=997(mysql) groups=997(mysql) [root@oldboy-01 /]#
查询用户信息:
id 用户
/etc/group :查看用户里的用户
w:
[root@oldboy-01 /]# w 02:33:33 up 1 day, 12:42, 1 user, load average: 0.08, 0.08, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 Wed01 0.00s 0.27s 0.01s w [root@oldboy-01 /]#
第一行:
第一列:当前系统时间
第二列:系统运行时间
第三列:远程连接用户数量
第四列:系统负载信息
第二行:
第一列:远程登录用户名字
第二列:tty
第三列:从哪里登录的
最后一列:用户在做什么。
查询系统性能命令:
w
uptime
top:uptime,free h,ps -ef,M,P
htop
iotop:显示系统中每个进程使用的磁盘io
iftop:查看网络流量
last:查看用户登录信息
lastlog:系统中所有用户最近登录信息
Linux尚方宝剑(sudo)
ll /var/log/secure
su与su - :表示切换用户的时候更新环境变量
如何使用:
[oldboy@oldboy-01 ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
[sudo] password for oldboy: 
配置sudu:
[root@oldboy-01 ~]# visudo 93 oldboy ALL=(ALL) /bin/ls,/bin/touch [root@oldboy-01 ~]#visudo -c
使用步骤:
[root@oldboy-01 ~]# su - oldboy
[oldboy@oldboy-01 ~]$ sudo -l
[sudo] password for oldboy: 
Matching Defaults entries for oldboy on this host:
    !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
    HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
    LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
    LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
    _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User oldboy may run the following commands on this host:
    (ALL) /bin/ls, (ALL) /bin/touch
[oldboy@oldboy-01 ~]$ sudo ls /root/
access.log   etc.bak.gz      luffy.city     oldboy.txt-hard
anaconda-ks.cfg  ifcfg-eth0      oldboy-2017-10-20  oldboy.txt.hard
data         install.log         oldboy.txt     oldboy.txt-soft
etc.bak2.gz  install.log.syslog  oldboy.txt.bak
[oldboy@oldboy-01 ~]$ sudo touch /root/alex.txt
[oldboy@oldboy-01 ~]$ sudo ls /root/alex.txt
/root/alex.txt
[oldboy@oldboy-01 ~]$ 
visudo ==vim /etc/sudoers
授权命令:oldboy ALL=(ALL) /bin/ls, /bin/touch
C:删除光标位置至行尾,并进入编辑模式。
A:进入行尾,并进入编辑模式。
如果授权所有:
oldboy ALL=(ALL) /bin/,并且排除su
94 oldboy ALL=(ALL) /bin/*, !/bin/su #根据ls -/bin 查看可以使用的命令。
正常sudo需要密码,在权限前增加:(NOPASSWD:),可以不用使用输入密码。
(四)记录用户的操作记录
①齐治的堡垒机:商业
②gateone web跳板机
③py开发的开源跳板机
Jumpserver部署
crazyEYC
④shell跳板机
三、磁盘
(一)磁盘结构
(1)磁盘基础
分类:机械硬盘,固态硬盘
磁盘外部结构:盘片,主轴,磁头
磁盘接口:
SAS:服务器标配。生成环境。15k转数。
SATA:家庭电脑多用,容量大,价格便宜。性能要求不高,容量不大,线下服务。
SCSI:速度较快,造价较高。
PCI-E:一般为固态硬盘,较快。较贵。大规模读写。高并发。
5400:rpm,每分钟转数。
磁盘内部组成:磁头,磁道,扇区
盘面数量==磁头数量,主要用来读写速度。
磁道:主要存放数据,以主轴为圆心的的区域。
扇区:一个磁盘上最小存储数据单位。默认512字节。
柱面:相同的盘面组成圆柱体。柱面的数量和磁道的数量相等。
磁头读取数据是按照柱面进行读写。磁头的切换从0磁盘切换为1磁头。磁道的变化(寻道)
单元块:表示一个柱面的大小。
(2)机械磁盘和固态硬盘区别
机械硬盘:容量大的价格低,抗打击能力弱,读写速度慢,数据恢复容易,无限寿命。
固态机械硬盘:容量小价格贵,抗打击能力强,读写速度快,数据恢复难,读写次数1-2万次左右。
注意:重要数据放在机械硬盘。
(3)磁盘大小计算
[root@oldboy-01 ~]# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders 255磁头,63扇区/磁道 1305柱面 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: 0x00015468
磁盘大小:柱面大小*柱面数量,柱面由磁道大小组成。
每个柱面的大小=磁盘的大小*磁头的数量
磁道的大小=扇区的大小*每个磁道扇区大小
总结:512x63x255x1305字节byte
bit位,1Byte=8bits
单位换算:1KB=1024Byte
公式计算:
[root@oldboy-01 ~]# awk 'BEGIN{print 8225280*1305/1024/1024/1024}'
9.99681
[root@oldboy-01 ~]#
(二)raid卡
(1)raid卡基础知识
磁盘冗余阵列:
获得更大的容量
获得更高的性能
获得更强的安全性
阵列卡:
基础raid卡
高级raid卡
(2)raid级别:
级别 最少硬盘 安全冗余 可用容量 性能 使用场景 举例
Raid0 1 最低 所有之和 读写最快 不要求安全只要求速度 数据库从库
Raid1 只能2块 100% 一半 写入慢,读取正常 只追求安全,不追求速度 系统盘
Raid5 至少3(校验) 最多损坏一块 损失一块盘的容量 写入速度慢,读取正常 要求安全,不要求速度 普通数据库
Raid10 4 可以损坏一半 损失所有硬盘一半的容量 读写速度很快 对于安全和速度都要的 数据库主库,存储
raid5+spare:raid5+热备盘,平时不用,损坏时候立即顶上。
raid10:两个raid1,将两个raid1做raid0。
(3)磁盘分区:
磁盘分区表:
位置:0磁头0磁道1扇区:前446字节mbr主引导记录
64字节的分区表
55AA表示的是结束标记
64字节分区表:主分区-扩展分区-逻辑分区
3个主分区,1个扩展分区(如果想使用,需要在扩展分区下创建逻辑分区)
存储数据只有两个分区:主分区和逻辑分区。
主分区:存放数据分区,最多有4个。
扩展分区:无法直接使用,最多只能有一个,必须要在扩展分区中创建逻辑分区才可使用。
逻辑分区:存放数据分区。
(4)磁盘命名:
sas/sata/scsi接口:以sd开头
第一块sas硬盘:sda
第三块sas硬盘:sdc
分区命名:主分区,逻辑分区:1-4
逻辑分区:从5开始
磁盘格式化工具:fdisk(小于2个t),parted(大于2个t)
ctrl+u:删除光标位置至行首。
创建磁盘分区过程:
[root@oldboy-01 ~]# fdisk -l | grep '/dev/sd[a-c]'
Disk /dev/sda: 10.7 GB, 10737418240 bytes
/dev/sda1   *           1          26      204800   83  Linux
/dev/sda2              26         124      786432   82  Linux swap / Solaris
/dev/sda3             124        1306     9493504   83  Linux
Disk /dev/sdb: 106 MB, 106954752 bytes
Disk /dev/sdc: 106 MB, 106954752 bytes
[root@oldboy-01 ~]# fdisk -cu /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x5e6202b7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): m
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): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-208895, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): +30M
Command (m for help): m
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): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
First sector (63488-208895, default 63488): 
Using default value 63488
Last sector, +sectors or +size{K,M,G} (63488-208895, default 208895): 
Using default value 208895
Command (m for help): n  
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (65536-208895, default 65536): 
Using default value 65536
Last sector, +sectors or +size{K,M,G} (65536-208895, default 208895): +30M
Command (m for help): p
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5e6202b7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       63487       30720   83  Linux
/dev/sdb2           63488      208895       72704    5  Extended
/dev/sdb5           65536      126975       30720   83  Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@oldboy-01 ~]# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Dec 24 01:05 /dev/sdb
brw-rw---- 1 root disk 8, 17 Dec 24 01:05 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Dec 24 01:05 /dev/sdb2
brw-rw---- 1 root disk 8, 21 Dec 24 01:05 /dev/sdb5
[root@oldboy-01 ~]# 
(5)磁盘分区:
[root@oldboy-01 ~]# fdisk -cu /dev/sdb
Command (m for help): p
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5e6202b7
   Device Boot      Start         End      Blocks   Id  System
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-208895, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): 
Using default value 208895
Command (m for help): p
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5e6202b7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      208895      103424   83  Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@oldboy-01 ~]# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Dec 24 01:09 /dev/sdb
brw-rw---- 1 root disk 8, 17 Dec 24 01:09 /dev/sdb1
通知系统磁盘分区:
[root@oldboy-01 ~]# partprobe /dev/sdb
创建文件系统:
[root@oldboy-01 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25896 inodes, 103424 blocks
5171 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1992 inodes per group
Superblock backups stored on blocks: 
    8193, 24577, 40961, 57345, 73729
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
关闭磁盘自动检查功能:
[root@oldboy-01 ~]# tune2fs -c 0 -i 0 /dev/sdb1 tune2fs 1.41.12 (17-May-2010) Setting maximal mount count to -1 Setting interval between checks to 0 seconds [root@oldboy-01 ~]#
-c:关闭每挂载多少次进行磁盘检查功能
-i:关闭每个180天就进行磁盘检查功能
磁盘分区挂载:
[root@oldboy-01 ~]# mount /dev/sdb1 /mnt/ [root@oldboy-01 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.9G 6.5G 23% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sdb1 94M 1.6M 88M 2% /mnt [root@oldboy-01 ~]#
(6)永久开机自动挂载:
方法1:
将命令(mount /dev/sdb1 /mnt/)放入:/etc/rc.local
方法2:
/etc/fstab
vim /etc/fstab /dev/sdb1 /mnt ext4 defaults 0 0
(8)磁盘分区小结:
第一步:创建分区并通知系统分区表变化:fdisk,partprobe
第二步:格式化创建文件系统并关闭磁盘检查
mkfs.ext4 /dev/sdb1
tune2fs -c 0 -i 0 /dev/sdb1
第三步:挂载和自动挂载
mount /dev/sdb1 /mnt
开机自动挂载:
/etc/rc.local
/etc/fstab
注意:卸载,umount /mnt
磁盘分区实战
fdisk:
磁盘大小小于2TB
fdisk支持MBR
parted:
主要用于给磁盘大于2TB的进行分区
基于GPT分区表
print:显示磁盘分区表信息
mklabel:创建磁盘分区表
gpt
msdos(mbr)
mkpart:创建分区
rm:删除分区
q:退出不保存
创建分区:
[root@oldboy-01 ~]# parted /dev/sdc GNU Parted 2.1 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Error: /dev/sdc: unrecognised disk label (parted) mklabel gpt (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags
创建磁盘:
[root@oldboy-01 ~]# parted /dev/sdc GNU Parted 2.1 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Error: /dev/sdc: unrecognised disk label (parted) mklabel gpt (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags (parted) mkpart primary 0 30 Warning: The resulting partition is not properly aligned for best performance. Ignore/Cancel? I (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 30.0MB 30.0MB primary (parted) mkpart primary 30 60 (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 30.0MB 30.0MB primary 2 30.4MB 59.8MB 29.4MB primary (parted) q Information: You may need to update /etc/fstab. [root@oldboy-01 ~]# parted /dev/sdc GNU Parted 2.1 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) q [root@oldboy-01 ~]# parted /dev/sdc p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 107MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 30.0MB 30.0MB primary 2 30.4MB 59.8MB 29.4MB primary [root@oldboy-01 ~]#
(9)案例:java环境内存不足
创建控件文件块:
[root@oldboy-01 ~]# dd if=/dev/zero of=/tmp/100m bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0815905 s, 129 MB/s
查看文件类型:
[root@oldboy-01 ~]# file /tmp/100m 
/tmp/100m: data
将文件类型变成swap:
[root@oldboy-01 ~]# mkswap /tmp/100m
mkswap: /tmp/100m: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 10236 KiB
no label, UUID=dc24e68c-5375-42ed-9199-5d8c0ca2968d
查看文件类型:
[root@oldboy-01 ~]# file /tmp/100m
/tmp/100m: Linux/i386 swap file (new style) 1 (4K pages) size 2559 pages
[root@oldboy-01 ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          980M       344M       636M       248K        51M       109M
-/+ buffers/cache:       183M       797M
Swap:         767M         0B       767M
增加系统的swap生效:
[root@oldboy-01 ~]# swapon /tmp/100m
[root@oldboy-01 ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          980M       346M       634M       248K        51M       109M
-/+ buffers/cache:       185M       795M
Swap:         777M         0B       777M
查看swapon
[root@oldboy-01 ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/sda2                               partition   786428  0   -1
/tmp/100m                               file        10236   0   -2
[root@oldboy-01 ~]# 
永久生效:
方法1:/etc/rc.local
swapon /tmp/100m
方法2:/etc/fstab
/tmp/100m swap swap defaults 0 0
linux特点:会把使用过的命令和数据临时存放在内存中,cache和buffer
linux文件系统:inode,blok,superblock
查看文件的superblock:
[root@oldboy-01 ~]# dumpe2fs /dev/sda3
常见的文件系统:
openSUSElinux默认的文件系统:ReiserFS文件系统
大量小文件。
IBM的AIX使用的jfs日志文件系统。
centos7采用XFS文件系统。
mysql业务会选择xfs。
centos6采用ext4文件系统。
视频下载,流媒体,数据库,小文件业务。
centos5采用ext3文件系统。
ext2:没有日志,蓝汛的cache业务,CDN网站加速服务。
一个分区只能一种文件系统。
来源:https://www.cnblogs.com/cuiyongchao007/p/12105282.html