1.創建一個10G的分區,并格式為ext4的文件系統;
(1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;
(2)掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;
[root@localhost ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): e #創建的是擴展分區 Partition number (3,4, default 3): 3 First sector (41945088-83886079, default 41945088): Using default value 41945088 Last sector, +sectors or +size{K,M,G} (41945088-83886079, default 83886079): Using default value 83886079 Partition 3 of type Extended and of size 20 GiB is set Command (m for help): n Partition type: p primary (2 primary, 1 extended, 1 free) l logical (numbered from 5) Select (default p): l #創建邏輯分區,分配10G Adding logical partition 5 First sector (41947136-83886079, default 41947136): Using default value 41947136 Last sector, +sectors or +size{K,M,G} (41947136-83886079, default 83886079): +10G Partition 5 of type Linux and of size 10 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. ## 強制刷新分區表 ## [root@localhost ~]# partprobe /dev/sdb5
創建文件系統并掛載
[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb5 mke2fs 1.42.9 (28-Dec-2013) Filesystem label=MYDATA #卷標 OS type: Linux Block size=2048 (log=1) #塊大小2048 Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 655360 inodes, 5242880 blocks 104857 blocks (2.00%) reserved for the super user #為超級用戶預留2%空間 First data block=0 Maximum filesystem blocks=273678336 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 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done ## 默認掛載屬性包含acl [root@localhost ~]# tune2fs -o acl /dev/sdb5 tune2fs 1.42.9 (28-Dec-2013) #掛載 [root@localhost ~]# mkdir -p /data/mydata [root@localhost ~]# mount -o noexec,noatime /dev/sdb5 /data/mydata [root@localhost ~]# mount /dev/sdb5 on /data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered) [root@localhost ~]# df -lh #查看磁盤使用情況 Filesystem Size Used Avail Use% Mounted on /dev/sdb5 9.8G 13M 9.6G 1% /data/mydata #自動掛載,修改/etc/fstab文件 /dev/sdb5 /data/mydata ext4 defaults,acl,noexec,noatime, 0 0
2.創建一個大小為1G的swap分區,并創建好文件系統,并啟用之;
創建一個sdb6分區,大小1G
[root@localhost ~]# mkswap /dev/sdb6 #格式化為swap分區 Setting up swapspace version 1, size = 1048572 KiB no label, UUID=2a049e47-5b17-4311-9c6f-9cf945c7f2cc [root@localhost ~]# blkid /dev/sdb6 /dev/sdb6: UUID="2a049e47-5b17-4311-9c6f-9cf945c7f2cc" TYPE="swap" [root@localhost ~]# free -m #查看現在swap分區大小,為2G total used free shared buff/cache available Mem: 977 118 710 6 148 707 Swap: 2047 0 2047 [root@localhost ~]# swapon /dev/sdb6 #啟用/dev/sdb6的swap分區 [root@localhost ~]# free -m total used free shared buff/cache available Mem: 977 119 709 6 148 706 Swap: 3071 0 3071 #此時swap大小為3G,證明sdb6的swap分區已啟動
3.寫一個腳本:
(1)獲取并列出當前系統上的所有磁盤設備;
(2)顯示每個磁盤設備上每個分區相關的空間使用信息;
#!/bin/bash # fdisk -l /dev/[sh]d[a-z] | grep "^Disk /dev/[sh]d[a-z]" df -lh | grep "^/dev/[sh]d[a-z]"
1478337359175.jpg
4.總結RAID的各個級別及其組合方式和性能的不同;
RAID:
Redundant Arrays of Independent Disks
獨立硬盤冗余陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列。其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。
參考資料:https://zh.wikipedia.org/wiki/RAID
RAID-0: (追求最大容量、速度)
讀、寫性能提升;
可用空間:N*min(S1,S2,…)
無容錯能力
最少磁盤數:2, 2+
RAID-1:(追求最大安全性)
讀性能提升、寫性能略有下降;
可用空間:1*min(S1,S2,…)
有冗余能力,安全性高
最少磁盤數:2, 2+
RAID-4:
1101, 0110, 1011
一塊硬盤專門生成校驗數據(校驗盤)
最少磁盤數:3,3+
RAID-5:(追求最大容量、最小預算)
讀、寫性能提升
可用空間:(N-1)*min(S1,S2,…)
有容錯能力:1塊磁盤
最少磁盤數:3, 3+
RAID-6:(同RAID 5,但較安全)
讀、寫性能提升
可用空間:(N-2)*min(S1,S2,…)
有容錯能力:2塊磁盤
最少磁盤數:4, 4+
混合類型
RAID-10:
讀、寫性能提升
可用空間:Nmin(S1,S2,…)/2
有容錯能力:每組鏡像最多只能壞一塊;
最少磁盤數:4, 4+
RAID-01:
讀、寫能力提升
可用空間:Nmin(S1,S2,…)/2
有容錯能力:每組鏡像最多可壞三塊;
最少磁盤數:4, 4+
5.創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為128K;
在/dev/sdb劃分三個10G大小的空間,/dev/sdb{5,6.7},并將分區類型改為fd.
1478350124870.jpg
[root@localhost ~]# mdadm -C /dev/md1 -a yes -c 128 -n 2 -x 1 -l 1 /dev/sdb{5,6,7} #創建RAID1 mdadm: /dev/sdb5 appears to be part of a raid array: level=raid1 devices=2 ctime=Sat Nov 5 04:02:27 2016 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 #這里是說這個RAID不能做引導分區 mdadm: /dev/sdb6 appears to be part of a raid array: level=raid1 devices=2 ctime=Sat Nov 5 04:02:27 2016 mdadm: /dev/sdb7 appears to be part of a raid array: level=raid1 devices=2 ctime=Sat Nov 5 04:02:27 2016 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started. [root@localhost ~]# cat /proc/mdstat #查看md的狀態 Personalities : [raid1] md1 : active raid1 sdb7[2](S) sdb6[1] sdb5[0] 10473472 blocks super 1.2 [2/2] [UU] unused devices: <none>
1478350468933.jpg
6.創建一個大小為4G的RAID5設備,chunk大小為256K,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能;
刪除前面創建的raid1,從/dev/sdb分出3個2G,分區類型設置為fd
1478352601885.jpg
[root@localhost ~]# mdadm -C /dev/md5 -a yes -c 256 -n 3 -l 5 /dev/sdb{7,8,9} mdadm: /dev/sdb7 appears to be part of a raid array: level=raid1 devices=2 ctime=Sat Nov 5 04:14:49 2016 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md5 started. ##格式化為ext4 [root@localhost ~]# mke2fs -t ext4 /dev/md5 [root@localhost ~]# blkid /dev/md5 /dev/md5: UUID="49b8b4c2-58e9-458b-affe-3dec2f5495c8" TYPE="ext4"
在/etc/fstab最后面加上一行.使用UUID更穩.
UUID=49b8b4c2-58e9-458b-affe-3dec2f5495c8 /backup ext4 defaults,acl,noatime 0 0 ##重啟查看## [root@localhost ~]# mount /dev/md5 on /backup type ext4 (rw,noatime,seclabel,stripe=128,data=ordered)
可以看看這篇文章:
http://www.toxingwang.com/linux-unix/linux-basic/1048.html
7.寫一個腳本:
(1) 接受一個以上文件路徑作為參數;
(2) 顯示每個文件擁有的行數;
(3) 總結說明本次共為幾個文件統計了其行數;
#!/bin/bash # if [ $# -lt 1 ];then echo "至少一個文件路徑" && exit 1 fi declare -i sum=0 for i in $*; do if [ ! -f $i ];then echo "$i文件不存在" continue fi echo "文件$i行數為"$(cat $i | wc -l) let sum++ done echo "傳入路徑$#個,統計有效文件$sum個"
1478355522232.jpg
8.寫一個腳本:
(1) 傳遞兩個以上字符串當作用戶名;
(2) 創建這些用戶;且密碼同用戶名;
(3) 總結說明共創建了幾個用戶;
#!/bin/bash if [ $# -lt 2 ];then echo "至少2個用戶名" && exit 1 fi declare -i sum=0 for i in $*; do id $i &> /dev/null if [ $? -eq 0 ];then echo "$i用戶已存在" continue fi useradd $i echo $i | passwd --stdin $i echo "$i用戶添加完成,密碼同用戶名" let sum++ done echo "一共傳入$#個用戶,共創建$sum個用戶.$[$#-$sum]個用戶已存在"
1478357208676.jpg
9.寫一個腳本,新建20個用戶,visitor1-visitor20;計算他們的ID之和;
#!/bin/bash declare -i sumid=0 for i in {1..20};do useradd visitor$i sumid+=$(id -u visitor$i) done echo "用戶id之和為$sumid"
10.寫一腳本,分別統計/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#號開頭的行數之和,以及總的空白行數;
#!/bin/bash declare -i count1=0 declare -i count2=0 for i in /etc/{rc.d/{rc.sysinit,init.d/functions},fstab};do count1+=$(grep "^#" $i | wc -l) count2+=$(grep "^$" $i | wc -l) done echo "文件#開頭的行有$count1行,空白行有$count2行"
11.寫一個腳本,顯示當前系統上所有默認shell為bash的用戶的用戶名、UID以及此類所有用戶的UID之和;
#!/bin/bash declare -i uid=0 for i in $(grep "/bin/bash$" /etc/passwd | cut -d: -f1);do echo "shell為bash的用戶名:$i" uid+=$(id -u $i) done echo "shell為bash的用戶id之和為:$uid"
12.寫一個腳本,顯示當前系統上所有,擁有附加組的用戶的用戶名;并說明共有多少個此類用戶;
#!/bin/bash declare -i count=0 for i in $(cat /etc/passwd | cut -d: -f1);do if [ $(id -G $i | wc -w) -gt 1 ] ;then echo $i let count++ fi done echo "用戶附加組的用戶個數為:$count"
13.創建一個由至少兩個物理卷組成的大小為20G的卷組;要求,PE大小為8M;而在卷組中創建一個大小為5G的邏輯卷mylv1,格式化為ext4文件系統,開機自動掛載至/users目錄,支持acl;
創建思路:PV->VG->LV
先格式化兩個10G大小的分區/dev/sdb5,/dev/sdb6,分區類型為8e
1478405883742.jpg
[root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sdb: 42.9 GB, 42949672960 bytes, 83886080 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 label type: dos Disk identifier: 0xc4afe58d Device Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 83 Linux /dev/sdb2 20973568 83886079 31456256 5 Extended /dev/sdb5 20975616 41947135 10485760 8e Linux LVM /dev/sdb6 41949184 62920703 10485760 8e Linux LVM ## 創建PV ## [root@localhost ~]# pvcreate /dev/sdb{5,6} Physical volume "/dev/sdb5" successfully created WARNING: linux_raid_member signature detected on /dev/sdb6 at offset 4096. Wipe it? [y/n]: y #這里是前面sdb6創建過軟riad,所以提示有信息,問是否清除. Wiping linux_raid_member signature on /dev/sdb6. Physical volume "/dev/sdb6" successfully created [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 119.51g 64.00m /dev/sdb5 lvm2 --- 10.00g 10.00g /dev/sdb6 lvm2 --- 10.00g 10.00g ## 創建VG ## [root@localhost ~]# vgcreate -s 8M myvg /dev/sdb{5,6} Volume group "myvg" successfully created [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 3 0 wz--n- 119.51g 64.00m myvg 2 0 0 wz--n- 19.98g 19.98g
1478407698503.jpg
創建lv:
[root@localhost ~]# lvcreate -n mylv1 -L 5G myvg Logical volume "mylv1" created. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home centos -wi-ao---- 67.45g root centos -wi-ao---- 50.00g swap centos -wi-ao---- 2.00g mylv1 myvg -wi-a----- 5.00g
1478407939054.jpg
格式化,開機自動掛載:
##格式化為ext4 ## [root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv1 [root@localhost ~]# blkid /dev/myvg/mylv1 /dev/myvg/mylv1: UUID="528cd557-d46e-4e40-bf54-03fe1209c018" TYPE="ext4" ## 開機自動掛載,編輯/etc/fstab文件,加入一行 ,建議使用UUID掛載## UUID=528cd557-d46e-4e40-bf54-03fe1209c018 /users ext4 defaults,acl 0 0 ##重啟,看到掛載中有mylv1就是成功了 [root@localhost ~]# reboot [root@localhost ~]# mount /dev/mapper/myvg-mylv1 on /users type ext4 (rw,relatime,seclabel,data=ordered) [root@localhost ~]# ls /users lost+found
14.新建用戶magedu;其家目錄為/users/magedu,而后su切換至此用戶,復制多個文件至家目錄;
[root@localhost ~]# useradd -d /users/magedu magedu [root@localhost ~]# tail -1 /etc/passwd magedu:x:3042:3042::/users/magedu:/bin/bash [root@localhost ~]# su -l magedu Last login: Sun Nov 6 01:07:34 EDT 2016 on pts/0 [magedu@localhost ~]$ pwd /users/magedu ##復制幾個文件到家目錄 [magedu@localhost ~]$ cp -r /etc/fstab /etc/init.d ./ [magedu@localhost ~]$ ls fstab init.d
15.擴展mylv1至9G,確保擴展完成后原有數據完全可用;
擴展LV:(步驟從上往下)
# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME #只適用ext文件系統.
##擴展到9G [root@localhost ~]# lvextend -L 9G /dev/myvg/mylv1 Size of logical volume myvg/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents). Logical volume mylv1 successfully resized. [root@localhost ~]# df -lh #我們可以看到此時mylv1的大小還是沒有變的 Filesystem Size Used Avail Use% Mounted on /dev/mapper/myvg-mylv1 4.8G 21M 4.6G 1% /users ## 執行擴展文件系統邊界 ## [root@localhost ~]# resize2fs /dev/myvg/mylv1 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/myvg/mylv1 is mounted on /users; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/myvg/mylv1 is now 2359296 blocks long. [root@localhost ~]# df -lh ## 此時mylv1已經擴展到9G Filesystem Size Used Avail Use% Mounted on /dev/mapper/myvg-mylv1 8.8G 23M 8.3G 1% /users ##查看下文件是否還正常 [root@localhost ~]# cat /users/magedu/fstab
16.縮減mylv1至7G,確??s減完成后原有數據完全可用;
縮減LV:
# umount /dev/VG_NAME/LV_NAME
# e2fsck -f /dev/VG_NAME/LV_NAME #文件系統強制檢測
# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #縮減文件系統大小,縮減到大小要能容納已存在文件大小.
# lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME #縮減LV大小
# mount
[root@localhost ~]# umount /dev/myvg/mylv1 [root@localhost ~]# e2fsck -f /dev/myvg/mylv1 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/myvg/mylv1: 19/589824 files (0.0% non-contiguous), 75558/2359296 blocks [root@localhost ~]# resize2fs /dev/myvg/mylv1 7G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/myvg/mylv1 to 1835008 (4k) blocks. The filesystem on /dev/myvg/mylv1 is now 1835008 blocks long. [root@localhost ~]# lvreduce -L 7G /dev/myvg/mylv1 WARNING: Reducing active logical volume to 7.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce mylv1? [y/n]: y Size of logical volume myvg/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents). Logical volume mylv1 successfully resized. [root@localhost ~]# mount /dev/myvg/mylv1 /users [root@localhost ~]# cat /users/magedu/fstab
17.對mylv1創建快照,并通過備份數據;要求保留原有的屬主屬組等信息;
快照:snapshot
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
[root@localhost ~]# lvcreate -L 100M -p r -s -n mylv1-snapshot /dev/myvg/mylv1 Rounding up size to full physical extent 104.00 MiB Logical volume "mylv1-snapshot" created. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv1-snapshot myvg sri-a-s--- 104.00m mylv1 0.0 ## 掛載 ## [root@localhost ~]# mount /dev/myvg/mylv1-snapshot /mnt ## 使用vim 修改一下/users/magedu/fstab 文件 [root@localhost mnt]# vim /users/magedu/fstab [root@localhost mnt]# head -2 /users/magedu/fstab #這里加上一行注釋 [root@localhost mnt]# head -2 magedu/fstab #快照里面的內容不會變化 #
原創文章,作者:luoluo,如若轉載,請注明出處:http://www.www58058.com/57894