Linux入门-第五周
1、磁盘lvm管理,完成下面要求,并写出详细过程:
1) 创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
准备两个10G的分区
1 [root@Centos7 data]# lsblk -l |grep sdb[0-9] 2 sdb1 8:17 0 10G 0 part 3 sdb2 8:18 0 10G 0 part
升级为物理卷
1 [root@Centos7 data]# partprobe /dev/sdb
创建物理卷
1 [root@Centos7 data]# pvcreate /dev/sdb1 /dev/sdb2 2 Physical volume "/dev/sdb1" successfully created. 3 Physical volume "/dev/sdb2" successfully created.
创建卷组 指定PE大小
1 [root@Centos7 data]# vgcreate -s 16M testvg /dev/sdb1 /dev/sdb2 2 Volume group "testvg" successfully created
创建5G的逻辑卷,名称为testlv
1 [root@Centos7 data]# lvcreate -n testlv -L 5G testvg 2 Logical volume "testlv" created.
查看LV列表
1 [root@Centos7 data]# lvs 2 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert 3 data centos_centos7 -wi-ao---- 20.00g 4 root centos_centos7 -wi-ao---- 20.00g 5 swap centos_centos7 -wi-ao---- 8.00g 6 testlv testvg -wi-a----- 5.00g
创建文件系统
1 [root@Centos7 data]# mkfs.ext4 /dev/testvg/testlv 2 mke2fs 1.42.9 (28-Dec-2013) 3 Filesystem label= 4 OS type: Linux 5 Block size=4096 (log=2) 6 Fragment size=4096 (log=2) 7 Stride=0 blocks, Stripe width=0 blocks 8 327680 inodes, 1310720 blocks 9 65536 blocks (5.00%) reserved for the super user 10 First data block=0 11 Maximum filesystem blocks=1342177280 12 40 block groups 13 32768 blocks per group, 32768 fragments per group 14 8192 inodes per group 15 Superblock backups stored on blocks: 16 32768, 98304, 163840, 229376, 294912, 819200, 884736 17 18 Allocating group tables: done 19 Writing inode tables: done 20 Creating journal (32768 blocks): done 21 Writing superblocks and filesystem accounting information: done
查看UUID
1 [root@Centos7 data]# blkid /dev/testvg/testlv 2 /dev/testvg/testlv: UUID="800ff8eb-8557-4d7f-9b55-e097f957b431" TYPE="ext4"
创建一个目录并挂载
1 [root@Centos7 data]# cd / 2 [root@Centos7 /]# mkdir users 3 [root@Centos7 /]# mount /dev/testvg/testlv /users/ 4 [root@Centos7 /]# df -Th |grep "/users" 5 /dev/mapper/testvg-testlv ext4 4.8G 20M 4.6G 1% /users
设置永久挂载
1 [root@Centos7 /]# vim /etc/fstab 2 [root@Centos7 /]# cat /etc/fstab |grep "/users" 3 UUID=800ff8eb-8557-4d7f-9b55-e097f957b431 /users ext4 defaults 0 0 4 [root@Centos7 /]#
2) 扩展testlv至7G,要求archlinux用户的文件不能丢失
新建用户archlinux , 要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录
1 [root@Centos7 ~]# useradd archlinux -d /users/archlinux 2 [root@Centos7 ~]# su - archlinux 3 [archlinux@Centos7 ~]$ cp -av /etc/pam.d/ /users/archlinux/ 4 ‘/etc/pam.d/’ -> ‘/users/archlinux/pam.d’ 5 ‘/etc/pam.d/config-util’ -> ‘/users/archlinux/pam.d/config-util’ 6 ‘/etc/pam.d/other’ -> ‘/users/archlinux/pam.d/other’ 7 ‘/etc/pam.d/passwd’ -> ‘/users/archlinux/pam.d/passwd’ 8 ‘/etc/pam.d/chfn’ -> ‘/users/archlinux/pam.d/chfn’ 9 ‘/etc/pam.d/chsh’ -> ‘/users/archlinux/pam.d/chsh’ 10 ‘/etc/pam.d/login’ -> ‘/users/archlinux/pam.d/login’ 11 ‘/etc/pam.d/remote’ -> ‘/users/archlinux/pam.d/remote’ 12 ‘/etc/pam.d/runuser’ -> ‘/users/archlinux/pam.d/runuser’ 13 ‘/etc/pam.d/runuser-l’ -> ‘/users/archlinux/pam.d/runuser-l’ 14 ‘/etc/pam.d/su’ -> ‘/users/archlinux/pam.d/su’ 15 ‘/etc/pam.d/su-l’ -> ‘/users/archlinux/pam.d/su-l’ 16 ‘/etc/pam.d/systemd-user’ -> ‘/users/archlinux/pam.d/systemd-user’ 17 ‘/etc/pam.d/polkit-1’ -> ‘/users/archlinux/pam.d/polkit-1’ 18 ‘/etc/pam.d/crond’ -> ‘/users/archlinux/pam.d/crond’ 19 ‘/etc/pam.d/vlock’ -> ‘/users/archlinux/pam.d/vlock’ 20 ‘/etc/pam.d/ppp’ -> ‘/users/archlinux/pam.d/ppp’ 21 ‘/etc/pam.d/vmtoolsd’ -> ‘/users/archlinux/pam.d/vmtoolsd’ 22 ‘/etc/pam.d/xserver’ -> ‘/users/archlinux/pam.d/xserver’ 23 ‘/etc/pam.d/pluto’ -> ‘/users/archlinux/pam.d/pluto’ 24 ‘/etc/pam.d/cups’ -> ‘/users/archlinux/pam.d/cups’ 25 ‘/etc/pam.d/gdm-autologin’ -> ‘/users/archlinux/pam.d/gdm-autologin’ 26 ‘/etc/pam.d/gdm-fingerprint’ -> ‘/users/archlinux/pam.d/gdm-fingerprint’ 27 ‘/etc/pam.d/gdm-launch-environment’ -> ‘/users/archlinux/pam.d/gdm-launch-environment’ 28 ‘/etc/pam.d/gdm-password’ -> ‘/users/archlinux/pam.d/gdm-password’ 29 ‘/etc/pam.d/gdm-pin’ -> ‘/users/archlinux/pam.d/gdm-pin’ 30 ‘/etc/pam.d/gdm-smartcard’ -> ‘/users/archlinux/pam.d/gdm-smartcard’ 31 ‘/etc/pam.d/liveinst’ -> ‘/users/archlinux/pam.d/liveinst’ 32 ‘/etc/pam.d/sshd’ -> ‘/users/archlinux/pam.d/sshd’ 33 ‘/etc/pam.d/setup’ -> ‘/users/archlinux/pam.d/setup’ 34 ‘/etc/pam.d/smtp.postfix’ -> ‘/users/archlinux/pam.d/smtp.postfix’ 35 ‘/etc/pam.d/smtp’ -> ‘/users/archlinux/pam.d/smtp’ 36 ‘/etc/pam.d/atd’ -> ‘/users/archlinux/pam.d/atd’ 37 ‘/etc/pam.d/sudo’ -> ‘/users/archlinux/pam.d/sudo’ 38 ‘/etc/pam.d/sudo-i’ -> ‘/users/archlinux/pam.d/sudo-i’ 39 ‘/etc/pam.d/system-auth-ac’ -> ‘/users/archlinux/pam.d/system-auth-ac’ 40 ‘/etc/pam.d/system-auth’ -> ‘/users/archlinux/pam.d/system-auth’ 41 ‘/etc/pam.d/postlogin-ac’ -> ‘/users/archlinux/pam.d/postlogin-ac’ 42 ‘/etc/pam.d/postlogin’ -> ‘/users/archlinux/pam.d/postlogin’ 43 ‘/etc/pam.d/password-auth-ac’ -> ‘/users/archlinux/pam.d/password-auth-ac’ 44 ‘/etc/pam.d/password-auth’ -> ‘/users/archlinux/pam.d/password-auth’ 45 ‘/etc/pam.d/fingerprint-auth-ac’ -> ‘/users/archlinux/pam.d/fingerprint-auth-ac’ 46 ‘/etc/pam.d/fingerprint-auth’ -> ‘/users/archlinux/pam.d/fingerprint-auth’ 47 ‘/etc/pam.d/smartcard-auth-ac’ -> ‘/users/archlinux/pam.d/smartcard-auth-ac’ 48 ‘/etc/pam.d/smartcard-auth’ -> ‘/users/archlinux/pam.d/smartcard-auth’ 49 [archlinux@Centos7 ~]$ ls /users/archlinux/pam.d/ | wc -l 50 44 51 [archlinux@Centos7 ~]$
查看VG是否有足够可用空间
1 [archlinux@Centos7 ~]$ su root 2 Password: 3 [root@Centos7 archlinux]# vgs 4 VG #PV #LV #SN Attr VSize VFree 5 centos_centos7 1 3 0 wz--n- 48.00g 4.00m 6 testvg 2 1 0 wz--n- <19.97g <14.97g
查看逻辑卷大学
1 [root@Centos7 archlinux]# lvs |grep "testlv" 2 testlv testvg -wi-ao---- 5.00g
扩展逻辑卷大小至7G
1 [root@Centos7 archlinux]# lvextend -L +2G -r /dev/testvg/testlv 2 Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents). 3 Logical volume testvg/testlv successfully resized. 4 resize2fs 1.42.9 (28-Dec-2013) 5 Filesystem at /dev/mapper/testvg-testlv is mounted on /users; on-line resizing required 6 old_desc_blocks = 1, new_desc_blocks = 1 7 The filesystem on /dev/mapper/testvg-testlv is now 1835008 blocks long.
查看当前逻辑卷和物理卷大小
1 [root@Centos7 archlinux]# lvs |grep "testlv" 2 testlv testvg -wi-ao---- 7.00g 3 [root@Centos7 archlinux]# df -Th |grep "testlv" 4 /dev/mapper/testvg-testlv ext4 6.8G 23M 6.4G 1% /users
查看archlinux账户pam.d目录下文件个数
1 [root@Centos7 archlinux]# ls /users/archlinux/pam.d | wc -l 2 44
3) 收缩testlv至3G,要求archlinux用户的文件不能丢失
先取消挂载,使之处于离线状态
1 [root@Centos7 ~]# umount /dev/testvg/testlv
设置文件系统大小
1 [root@Centos7 ~]# resize2fs /dev/testvg/testlv 3G 2 resize2fs 1.42.9 (28-Dec-2013) 3 Resizing the filesystem on /dev/testvg/testlv to 786432 (4k) blocks. 4 The filesystem on /dev/testvg/testlv is now 786432 blocks long. 5 6 [root@Centos7 ~]#
缩减逻辑卷大小,并查看
1 [root@Centos7 ~]# lvreduce -L 3G /dev/testvg/testlv 2 WARNING: Reducing active logical volume to 3.00 GiB. 3 THIS MAY DESTROY YOUR DATA (filesystem etc.) 4 Do you really want to reduce testvg/testlv? [y/n]: y 5 Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents). 6 Logical volume testvg/testlv successfully resized. 7 [root@Centos7 ~]# lvs |grep "testlv" 8 testlv testvg -wi-a----- 3.00g 9 [root@Centos7 ~]#
挂载后,查看物理卷大小,查看pam.d目录文件个数
1 [root@Centos7 ~]# mount /dev/testvg/testlv /users 2 [root@Centos7 ~]# df -Th |grep "/users" 3 /dev/mapper/testvg-testlv ext4 2.9G 16M 2.7G 1% /users 4 [root@Centos7 ~]# ls /users/archlinux/pam.d/ | wc -l 5 44 #文件个数没变。表示没丢失数据。登录用户也正常 6 [root@Centos7 ~]# su archlinux 7 [archlinux@Centos7 root]$
4) 对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
创建大小为1G的只读快照,并查看。
1 [root@Centos7 ~]# lvcreate -L 1G -s -n testsnap -p r /dev/testvg/testlv 2 Logical volume "testsnap" created. 3 [root@Centos7 ~]# lvs |grep "test" 4 testlv testvg owi-aos--- 3.00g 5 testsnap testvg sri-a-s--- 1.00g testlv 0.01 6 [root@Centos7 ~]#
创建快照目录并挂载
1 [root@Centos7 ~]# mkdir /users/testsnap 2 [root@Centos7 ~]# mount /dev/testvg/testsnap /users/testsnap/ 3 mount: /dev/mapper/testvg-testsnap is write-protected, mounting read-only 4 [root@Centos7 ~]#
删除pam.d目录下的g开头文件并查看剩余文件个数,与快照中的文件作对比
1 [root@Centos7 ~]# rm -f /users/archlinux/pam.d/g* 2 [root@Centos7 ~]# ls /users/archlinux/pam.d/ |wc -l 3 38 4 [root@Centos7 ~]# ls /users/testsnap/archlinux/pam.d/ |wc -l 5 44 6 [root@Centos7 ~]#
取消挂载,在还原快照文件后查看文件个数。
1 [root@Centos7 ~]# umount /users/testsnap/ 2 [root@Centos7 ~]# umount /users 3 [root@Centos7 ~]# cd /users/ 4 [root@Centos7 users]# tar -zxf /tmp/backup.tar.gz 5 [root@Centos7 users]# ls users/testsnap/archlinux/pam.d/ |wc -l 6 44 7 [root@Centos7 users]#
2、创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
创建raid1 并创建挂载点和文件系统
1 [root@Centos7 ~]# lsblk |grep "sdb" 2 sdb 8:16 0 20G 0 disk 3 ├─sdb1 8:17 0 512M 0 part 4 ├─sdb2 8:18 0 512M 0 part 5 └─sdb3 8:19 0 512M 0 part 6 [root@Centos7 ~]# mdadm -C /dev/md0 -l 1 -n 2 /dev/sdb{1,2} -x 1 /dev/sdb3 7 mdadm: Note: this array has metadata at the start and 8 may not be suitable as a boot device. If you plan to 9 store '/boot' on this device please ensure that 10 your boot-loader understands md/v1.x metadata, or use 11 --metadata=0.90 12 Continue creating array? 13 Continue creating array? (y/n) y 14 mdadm: Defaulting to version 1.2 metadata 15 mdadm: array /dev/md0 started. 16 [root@Centos7 ~]# mkdir /backup 17 [root@Centos7 ~]# mkfs.ext4 /dev/md0 18 mke2fs 1.42.9 (28-Dec-2013) 19 Filesystem label= 20 OS type: Linux 21 Block size=1024 (log=0) 22 Fragment size=1024 (log=0) 23 Stride=0 blocks, Stripe width=0 blocks 24 131072 inodes, 523264 blocks 25 26163 blocks (5.00%) reserved for the super user 26 First data block=1 27 Maximum filesystem blocks=34078720 28 64 block groups 29 8192 blocks per group, 8192 fragments per group 30 2048 inodes per group 31 Superblock backups stored on blocks: 32 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 33 34 Allocating group tables: done 35 Writing inode tables: done 36 Creating journal (8192 blocks): done 37 Writing superblocks and filesystem accounting information: done 38 39 [root@Centos7 ~]#
设置永久挂载
1 [root@Centos7 ~]# blkid /dev/md0 2 /dev/md0: UUID="7708add9-f5c8-48d0-9547-b127f773fbf1" TYPE="ext4" 3 [root@Centos7 ~]# vim /etc/fstab 4 [root@Centos7 ~]# mount -a 5 [root@Centos7 ~]# cat /etc/fstab |grep "backup" 6 UUID=7708add9-f5c8-48d0-9547-b127f773fbf1 /backup ext4 defaults 0 0 7 [root@Centos7 ~]#
3、简述TCP链接建立和断开过程
TCP会话的建立
由于TCP是一个面向连接的协议,发送数据前需要先和接收者提前建立连接,该连接通常称为“会话”。TCP通过三次握手的可靠性机制来建立会话,所谓三次握手是指在TCP会话的建立过程中,总共交换3个TCP控制报文,通过这3个控制报文,保证了TCP会话建立过程的可靠性。TCP三次握手建立过程如下图所示。
图中假设现在主机A需要向主机B发送TCP数据,首先由主机A发起会话建立,向主机B发送一个设置“SYN”标志位的TCP控制报文,表示想和主机B建立会话连接,报文中的SEQ序列号字段会填充一个0~216范围内的随机数(只有SYN标志位置位的TCP报文才会填充一个随机数),图中的SEQ序列号用0表示。
主机B收到SYN置位的TCP报文后,知道有人想和自己建立连接,主机B接收SYN报文并向主机A回复一个同时设置了“SYN”和“ACK”标志位的TCP报文,其中的“ACK”表示主机B同意和主机A建立连接,并确认主机A发送的“SYN”报文。而“SYN”表示主机B同时想和主机A建立一个会话连接,这是因为TCP协议是全双工模式,建立一个会话可以实现数据的双向发送。
报文中的SEQ序列号字段填充一个0~216范围内的随机数,主机B发送的序列号同样用0表示。而确认序列号=接收到的序列+数据长度,有于TCP协议中的控制报文的数据长度也算作一个字节,所以图中的ACK SEQ为1(0+1)。通过确认序列号可以统计出已接收的数据总长度。如上图所示。
主机A收到主机B发送的“SYN+ACK”后,回复一个“ACK”置位的TCP报文进行确认,回复的ACK报文中,SEQ序列号字段位1(0+1),由于主机A之前发送的SYN报文中的序列号为0,并且已经发送过一个字节数据(SYN报文),所以现在的SEQ序列号为1。通过序列号字段可以统计出发送者已发送的数据总长度。ACK SEQ确认序列号=主机B的发送序列号+数据长度(1=0+1),经过三次握手之后,主机A和主机B建立了两个TCP会话,最终实现数据的双向发送。
TCP会话的终止
TCP会话的终止需要经过四次握手断开连接,原因是TCP的会话是双向的,会话两端独立的发送和接收数据,那么终止会话就需要双向断开连接,例如下图所示,主机A和主机B建立TCP会话后两端都开始发送TCP数据,如果现在主机A的数据发送完了,主机A向主机B提出断开连接,这只是单方向的行为,只会断开主机A到主机B的连接,而主机B到主机A的连接环还保持正常,主机B还可以向主机A继续发送数据,如果现在主机B的数据也发送完了,主机B向主机A提出断开连接,连接双向断开后TCP会话终止,TCP协议四次握手终止会话如下图所示。
下图中,主机A向主机B发送完数据后,主机A断开和主机B的连接,主机A向主机B发送一个FIN置位的TCP控制报文,主机B收到FIN报文后,回复ACK报文确认收到的FIN。由于主机B也没有数据再发送给主机A,随后主机B也向主机A发送一个FIN置位的TCP控制报文,断开和主机A的连接。主机A收到FIN报文后,回复ACK报文确认收到的FIN。
4、简述TCP和UDP的区别
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能顺序地从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,不保证数据按顺序传递,故而传输速度很快。