第七周
1,创建一个10G分区,并格式化为ext4文件系统;
(1) 要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl;
(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
[root@www ~]# fdisk /dev/sda <-------------fdisk命令创建10G分区 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n First cylinder (6814-15665, default 6814): Using default value 6814 Last cylinder, +cylinders or +size{K,M,G} (6814-15665, default 15665): +10G Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@www ~]# partx -a /dev/sda <----------------partx命令让kernel读取新建的分区信息 BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 BLKPG: Device or resource busy error adding partition 3 BLKPG: Device or resource busy error adding partition 4 BLKPG: Device or resource busy error adding partition 5 [root@www ~]# mke2fs -t ext4 -b 2048 -L MYDATA -m 2 /dev/sda5 <------------按要求创建文件系统 mke2fs 1.41.12 (17-May-2010) Filesystem label=MYDATA OS type: Linux Block size=2048 (log=1) Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 655360 inodes, 5242030 blocks 104840 blocks (2.00%) reserved for the super user First data block=0 Maximum filesystem blocks=542113792 320 block groups 16384 blocks per group, 16384 fragments per group 2048 inodes per group Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 2048000, 3981312 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 28 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@www ~]# tune2fs -o acl /dev/sda5 <---------------------用tune2fs修改默认挂载属性包含acl tune2fs 1.41.12 (17-May-2010) [root@www ~]# tune2fs -l /dev/sda5 <---------------------用tune2fs验证结果 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: MYDATA Last mounted on: <not available> Filesystem UUID: 1b73355f-b889-4bfb-840e-5102f10d65cf Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: acl <---------------------默认挂载选项已修改包含acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 655360 Block count: 5242030 Reserved block count: 104840 Free blocks: 5120476 Free inodes: 655349 First block: 0 Block size: 2048 Fragment size: 2048 Reserved GDT blocks: 512 Blocks per group: 16384 Fragments per group: 16384 Inodes per group: 2048 Inode blocks per group: 256 Flex block group size: 16 Filesystem created: Sat Sep 2 20:08:23 2017 Last mount time: n/a Last write time: Sat Sep 2 20:09:36 2017 Mount count: 0 Maximum mount count: 28 Last checked: Sat Sep 2 20:08:23 2017 Check interval: 15552000 (6 months) Next check after: Thu Mar 1 20:08:23 2018 Lifetime writes: 225 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: bd60bce1-1bf1-4db7-af63-032fa657b0d0 Journal backup: inode blocks [root@www ~]# mkdir -pv /data/mydata <----------------------创建mydata目录 mkdir: created directory `/data' mkdir: created directory `/data/mydata' [root@www ~]# mount -t ext4 -o noexec,noatime /dev/sda5 /data/mydata <---------挂载文件系统至mydata目录 [root@www ~]# mount <-------------用mount命令验证结果 /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sda5 on /data/mydata type ext4 (rw,noexec,noatime) <---------------挂载后带有noexec和noatime属性
注意:如要让新建的文件系统重启后自动挂载,需添加如下内容至/etc/fstab文件中;
LABEL=MYDATA /data/mydata ext4 defaults,acl,noexec,noatime 0 0
/etc/fstab文件分6个字段:
a. 要挂载的设备,可用设备文件,LABEL名或UUID;如示例中用LABEL=MYDATA
b. 挂载点;如示例中/data/mydata
c. 文件系统类型,如示例中ext4;
d. 挂载选项;默认defaults,如选项有多个,彼此间用逗号“,”分隔;
e. 备份频率,0为不备份,1为每天备份,2为隔天备份;
f. 系统启动是是否自检,0为不自检,1为优先自检,2为次级优先自检;
2,创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
[root@www ~]# fdisk /dev/sda <-------------fdisk命令创建1G分区 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n First cylinder (8120-15665, default 8120): Using default value 8120 Last cylinder, +cylinders or +size{K,M,G} (8120-15665, default 15665): +1G Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@www ~]# partx -a /dev/sda <----------------partx命令让kernel读取新建的分区信息 BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 BLKPG: Device or resource busy error adding partition 3 BLKPG: Device or resource busy error adding partition 4 BLKPG: Device or resource busy error adding partition 5 BLKPG: Device or resource busy error adding partition 6 [root@www ~]# mkswap /dev/sda6 <------------------mkswap命令创建swap分区 Setting up swapspace version 1, size = 1060252 KiB no label, UUID=3fdbb6e2-5e02-4139-b141-3f49ad4b37fd [root@www ~]# blkid <------------------blkid命令查看所有文件系统 /dev/sda1: UUID="8631ceb8-a29c-4205-99fa-947bd93ec3a5" TYPE="ext4" /dev/sda2: UUID="c5e05cf4-7e32-402e-aefa-1353baf6df38" TYPE="ext4" /dev/sda3: UUID="f3e097ca-bd89-451e-8f35-fb0c31e07c6c" TYPE="swap" /dev/sda5: LABEL="MYDATA" UUID="1b73355f-b889-4bfb-840e-5102f10d65cf" TYPE="ext4" /dev/sda6: UUID="3fdbb6e2-5e02-4139-b141-3f49ad4b37fd" TYPE="swap" <-------------新建的swap分区 [root@www ~]# swapon /dev/sda6 <---------------------启用swap分区 [root@www ~]# swapon -s <---------------------验证swap是否启用 Filename Type Size Used Priority /dev/sda3 partition 2097148 0 -1 /dev/sda6 partition 1060252 0 -2
注意:注意:如要让新建的文件系统重启后自动挂载,需添加如下内容至/etc/fstab文件中;关于/etc/fstab文件中的字段在上文中已有解释,在此不再赘述。
UUID=3fdbb6e2-5e02-4139-b141-3f49ad4b37fd swap swap defaults 0 0
3,写一个脚本
(1),获取并列出当前系统上的所有磁盘设备;
(2),显示每个磁盘设备上每个分区相关的空间使用信息;
[root@www ~]# cat diskinfo.sh #!/bin/bash fdisk -l <-------------------------fdisk -l列出系统上所有磁盘设备 for par in $(fdisk -l | grep "^/dev/[sh]d[a-z][0-9]" | cut -d' ' -f1); do <---用命令引用的结果当作列表作为变量par的值 df -h $par <-------------------------df -h查看每个列表中分区的空间使用信息 done [root@www ~]# bash diskinfo.sh Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0x33239dbf Device Boot Start End Blocks Id System /dev/sdb1 1 1306 10490413+ 83 Linux /dev/sdb4 1307 2610 10474380 5 Extended /dev/sdb5 1307 2610 10474348+ 83 Linux Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 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: 0x000ca814 Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 6553 52428800 83 Linux /dev/sda3 6553 6814 2097152 82 Linux swap / Solaris /dev/sda4 6814 15665 71097336+ 5 Extended /dev/sda5 6814 8119 10484060 83 Linux /dev/sda6 8120 8251 1060258+ 83 Linux Filesystem Size Used Avail Use% Mounted on /dev/sdb1 9.8G 23M 9.3G 1% /mnt/sdb1 Filesystem Size Used Avail Use% Mounted on - 476M 220K 476M 1% /dev Filesystem Size Used Avail Use% Mounted on /dev/sdb5 9.8G 23M 9.2G 1% /mnt/sdb5 Filesystem Size Used Avail Use% Mounted on /dev/sda1 190M 36M 145M 20% /boot Filesystem Size Used Avail Use% Mounted on /dev/sda2 50G 2.3G 45G 5% / Filesystem Size Used Avail Use% Mounted on - 476M 220K 476M 1% /dev Filesystem Size Used Avail Use% Mounted on - 476M 220K 476M 1% /dev Filesystem Size Used Avail Use% Mounted on - 476M 220K 476M 1% /dev Filesystem Size Used Avail Use% Mounted on - 476M 220K 476M 1% /dev
4,总结RAID的各个级别及其组合方式和性能的不同。
4.1,何为RAID?
RAID (Redundant Arrays of Independent Disks),独立磁盘构成的具有冗余能力的阵列,简称磁盘阵列。磁盘阵列由多块磁盘,以硬件RAID卡或软件形成组合成一个容量巨大的磁盘组,利用不同raid组合磁盘的方式,提升整个磁盘系统的效能。利用这项技术,将数据切割成许多区段,分别放在各个硬盘上。磁盘阵列还能利用同位校验(Parity Check)的观念,在数组中任意一个硬盘故障时,任可读出数据,在数据重建时,将数据经计算后重新置入新硬盘中。
注意:虽然RAID可以预防数据丢失,但并不完全保证数据不会丢失,RAID不能代替数据备份。
4.2,RAID级别
RAID 0
实现RAID 0至少需要两块以上磁盘,它将两块以上的磁盘合并成一块,数据连续地分割在每块盘上。可用容量是多块磁盘的容量总和,因为带宽加倍,所以读/写速度加倍,但RAID 0在提高性能的同时,没有数据冗余,没有数据校验的功能,即没有提供数据保护功能,只要任何一块磁盘损坏就会丢失所有数据。因此RAID 0不可应用于需要数据高可用性的关键领域。
RAID 1
是由多块磁盘所构成的磁盘阵列,其容量等于一块磁盘的容量,因为其他的磁盘当作数据“镜像”,所以RAID 1又称为镜像卷。RAID 1的写入数据速度较慢,因为被分割的数据区段需要存在阵列上的每一块磁盘上。RAID 1有数据冗余和校验的功能,即提供了数据保护功能,任何一块磁盘损坏都不会导致丢失数据。RAID 1磁盘阵列主要用在数据安全性要求高且能够快速恢复被破坏数据的场合。
RAID 5
是一个存储性能,数据安全和存储成本兼顾的存储解决方案。它可以为系统系统安全保障,但保障程度要比镜像卷低而磁盘空间利用率比镜像卷高。RAID 5磁盘阵列至少需要3块磁盘组成,其容量等于n-1块磁盘。RAID 5具有和RAID 0相近似的数据读取速度,只是多了奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。RAID 5是一种数据安全,I/O速度的权衡与存储成本较低的解决方案。但是由于其工作方式的原因,在大于4Tb的场合下,磁盘故障发生后,数据重建的难度将大大增加。所以存储行业并不建议使用RAID5。
RAID 6
是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式。与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的,这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好。但是,由于增加了一个校验,所以写入的效率较RAID 5还差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间,所以组成RAID6阵列需至少4块磁盘,磁盘利用率是n-2。
RAID 10/01
RAID 10是先镜像再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜像到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。RAID 10/01磁盘利用率均为n/2。当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID 01,镜射再用三个建RAID 0,那么坏一个硬盘便会有三个硬盘离线。因此,RAID 10远较RAID 01更为安全。
5,创建一个大小为10G的RAID 1,要求有一个空闲盘,而且chunk大小为128k;
[root@www ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -c 128 -l 1 /dev/sdb{1,2,3} [root@www ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sun Sep 3 02:11:03 2017 Raid Level : raid1 Array Size : 10482176 (10.00 GiB 10.73 GB) Used Dev Size : 10482176 (10.00 GiB 10.73 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Sun Sep 3 02:11:55 2017 State : clean Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Name : www.iLove.org:0 (local to host www.iLove.org) UUID : dd4d92b5:6c1f0517:abf227fe:b579c6b2 Events : 17 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 18 1 active sync /dev/sdb2 2 8 19 - spare /dev/sdb3
6,创建一个大小为5G的RAID5设备,chuck大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;
[root@www ~]# mdadm --create /dev/md1 -l5 -n3 -x1 -c 256 /dev/sdb{1,2,3,5} <---------------创建raid 5 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started. [root@www ~]# mdadm -D /dev/md1 <-----------------验证raid 5创建结果 /dev/md1: Version : 1.2 Creation Time : Sun Sep 3 02:20:40 2017 Raid Level : raid5 Array Size : 10498048 (10.01 GiB 10.75 GB) Used Dev Size : 5249024 (5.01 GiB 5.38 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Sun Sep 3 02:21:35 2017 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 256K Name : www.iLove.org:1 (local to host www.iLove.org) UUID : dd9a128d:0685c7b2:087e858b:7965b4a1 <------------------记录UUID Events : 18 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 18 1 active sync /dev/sdb2 4 8 19 2 active sync /dev/sdb3 3 8 21 - spare /dev/sdb5 [root@www ~]# mke2fs -t ext4 /dev/md1 <-----------------------创建文件系统类型ext4 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=64 blocks, Stripe width=128 blocks 657072 inodes, 2624512 blocks 131225 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2688548864 81 block groups 32768 blocks per group, 32768 fragments per group 8112 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 30 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@www dev]# vim /etc/fstab <--------------------编辑/etc/fstab文件添加下面的挂载信息 UUID=dd9a128d:0685c7b2:087e858b:7965b4a1 /backup ext4 defaults,noatime,acl 0 0
7,写一个脚本
(1) 接受一个以上文件路径作为参数;
(2) 显示每个文件拥有的行数;
(3) 总结说明本地共为几个文件统计了其行数;
#!/bin/bash if [ $# -lt 1 ]; then <--------------------设置给定的参数不得低于2个 echo "Please enter more than 2 arguments." exit 1 fi num=0 <-----------------定义变量lines为0 for files in $*; do <--------------------设置变量files为$*特殊变量的值,$*表示所有参数 if [ ! -f $files ]; then <--------------------判断变量files不是文本文件 echo "${files} is not a ASCII text." <--------如果变量files不是文本文件,echo提示 else echo "${files} has "$(wc -l < $files)" lines." <-------变量files是文本文件,echo显示文本文件的行数 let num++ <--------------------计算每次给定的文本文件数量,然后相加 fi done echo "File numbers:"$num <-------------------echo显示最终给定的所有的文本文件数量 注意:脚本中,在for循环内嵌套了一个if多分支语句。
8,写一个脚本
(1) 传递两个以上字符串当做用户名;
(2) 创建这些用户,且密码同用户名;
(3) 总结说明共创建了几个用户;
#!/bin/bash if [ $# -lt 1 ]; then <--------------------设置给定的参数不得低于2个 echo "Please enter more than 2 arguments." exit 1 fi sum=0 for user in $*; do <--------------------设置变量user为$*特殊变量的值,$*表示所有参数 if grep "^$user\>" /etc/passwd &> /dev/null; then <--------------判断要创建的帐号是否存在 echo "$user exists." exit 2 else useradd $user echo $user | passwd --stdin $user &> /etc/null echo "$user added." let sum++ <---------------------循环每执行一次,数量加1 fi done echo "count user numbers:"$sum
9,写一个脚本,新建20个用户,visitor1-vistor20,计算他们的id之和;
#!/bin/bash declare -i sum=0 <-------------------定义变量sum为数值型,bash变了默认为字符型 for i in {1..20}; do useradd visitor$i sum+=$(id -u visitor$i) <-----------------相加每次id号 done echo "id sum is $sum."
原创文章,作者:ZhengBin,如若转载,请注明出处:http://www.178linux.com/86136
评论列表(1条)
磁盘操作运维工作中用的不是特别频繁,但是非常重要,他是数据安全的基础,所以应特别注意加深理解和学习