練習
1、創建一個至少有兩個PV組成的大小為20G的名為testvg的
VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏
輯卷testlv;掛載至/users目錄
第一步!首先準備足夠大的硬盤來實驗
[root@Cloud /]#lsblk #添加了/dev/sdb/c硬盤 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom sda 8:0 0 200G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 60G 0 part │ ├─vg0-root (dm-0) 253:0 0 20G 0 lvm / │ ├─vg0-swap (dm-1) 253:1 0 2G 0 lvm [SWAP] │ ├─vg0-usr (dm-6) 253:6 0 10G 0 lvm /usr │ └─vg0-var (dm-7) 253:7 0 20G 0 lvm /var └─sda3 8:3 0 1G 0 part sdc 8:32 0 20G 0 disk sdb 8:16 0 15G 0 disk
第二部!格式成LVM分區,具體操作就略過了,注意:在分區時記得把分區該為8e分區
[root@Cloud /]#fdisk -l |grep 'sd[bc]' #顯示LVM分區 Disk /dev/sdc: 21.5 GB, 21474836480 bytes /dev/sdc1 1 1306 10490413+ 8e Linux LVM Disk /dev/sdb: 16.1 GB, 16106127360 bytes /dev/sdb1 1 1306 10490413+ 8e Linux LVM
第三部!創建為pv卷
[root@Cloud /]#pvcreate /dev/sdb1 /dev/sdc1 #創建pv卷 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully created
第四部!創建vg組
[root@Cloud /]#vgcreate -s 16M testvg /dev/sdb1 /dev/sdc1 #創建卷名為testvg的vg卷,vg卷中包含/dev/sdb\c1 Volume group "testvg" successfully created [root@Cloud /]#vgdisplay testvg #顯示testvg --- Volume group --- VG Name testvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 20.00 GiB #vg總大小 PE Size 16.00 MiB #pe大小 Total PE 1280 Alloc PE / Size 0 / 0 Free PE / Size 1280 / 20.00 GiB VG UUID v4d6Uj-vPTv-FGTA-sVFx-sB15-FTGr-o7AQuJ
第四部!創建lv卷
[root@Cloud /]#lvcreate -L 5G -n testlv /dev/testvg #創建lv卷 vg組不支持補全。 Logical volume "testlv" created. [root@Cloud /]#lvdisplay /dev/testvg/testlv |grep 'LV Size' #查看lv大小 ,全路徑查看 LV Size 5.00 GiB
之后就是都比較簡單就不截圖了,直接命令表示
mkdir /users #創建掛載點 mke2fs -j /dev/testvg/testlv #格式化,系統隨意 mount /dev/testvg/testlv /users #掛載 就OK了!
注意:如果要刪除以上操作順序操作為
取消掛載、刪除lv卷、刪除vg組、刪除pv卷、刪除分區!
[root@Cloud /]#umount /users #取消掛載 [root@Cloud /]#lvremove /dev/testvg/testlv #刪除lv卷 [root@Cloud /]#vgremove testvg #刪除vg組 [root@Cloud /]#pvcreate /dev/sdb1 /dev/sdc1 #刪除pv卷 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully created [root@Cloud /]#dd if=/dev/zero of=/dev/sdb bs=512 count=1 #破壞分區! 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.0231221 s, 22.1 kB/s [root@Cloud /]#dd if=/dev/zero of=/dev/sdc bs=512 count=1 #破壞分區!
有的時候分區格式化后lsblk還是查看不正常,可以使用partx -d /dev/DEVICE #cent6下使用
? 2、新建用戶archlinux,要求其家目錄為/users/archlinux
,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己
的家目錄
[root@Cloud /]#useradd -d /users/archlinux archlinux #新建用戶archlinux [archlinux@Cloud ~]# getent passwd archlinux #查看archlinux用戶信息 archlinux:x:3002:3002::/users/archlinux:/bin/bash [root@Cloud /users]#su - archlinux #切換用戶 [archlinux@Cloud ~]$ cp -r /etc/pam.d/ ./ #復制目錄/etc/pam.d到當前目錄 [archlinux@Cloud ~]$ ll pam.d/ -d #顯示其信息 drwxr-xr-x 2 archlinux archlinux 4096 Sep 9 12:30 pam.d/
? 3、擴展testlv至7G,要求archlinux用戶的文件不能丟失
[root@Cloud /users]#lvextend -L 7G /dev/testvg/testlv #擴展至7G
Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents
[root@Cloud /users]#lvs /dev/testvg/testlv #簡要查看拓展的lv卷
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
testlv testvg -wi-ao—- 7.00g #顯示為7G,成功
[root@Cloud /users/archlinux]#ll -d /users/archlinux/pam.d/ #數據大小未變
drwxr-xr-x 2 archlinux archlinux 4096 Sep 9 12:30 /users/archlinux/pam.d/
[root@Cloud /etc/pam.d]#ll /users/archlinux/pam.d/ |wc -l
56
? 4、收縮testlv至3G,要求archlinux用戶的文件不能丟失
[root@Cloud /users/archlinux]#lvreduce -L 3G /dev/testvg/testlv
WARNING: Reducing active and open logical volume to 3.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testvg/testlv? [y/n]: y
Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).
Logical volume testlv successfully resized.
[root@Cloud /users/archlinux]#lvs /dev/testvg/testlv
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
testlv testvg -wi-ao—- 3.00g
[root@Cloud /users/archlinux]#ll -d /users/archlinux/pam.d/ #數據大小未變
drwxr-xr-x 2 archlinux archlinux 4096 Sep 9 12:30 /users/archlinux/pam.d/
[root@Cloud /etc/pam.d]#ll /users/archlinux/pam.d/ |wc -l
56
? 5、對testlv創建快照,并嘗試基于快照備份數據,驗正快照
的功能
[root@Cloud /users/archlinux]#lvcreate -s -L 512M -n mylv-snap -p r /dev/testvg/testlv #創建快照 Logical volume "mylv-snap" created. [root@Cloud /users/archlinux]#lvdisplay /dev/testvg/mylv-snap #顯示快照詳細信息 --- Logical volume --- LV Path /dev/testvg/mylv-snap LV Name mylv-snap VG Name testvg LV UUID LVpNHy-ol30-OZCX-oo1J-d2cZ-2xhb-JrsAiw LV Write Access read only LV Creation host, time Cloud.GO, 2016-09-09 14:28:50 +0800 LV snapshot status active destination for testlv LV Status available # open 0 LV Size 3.00 GiB Current LE 192 COW-table size 512.00 MiB COW-table LE 32 Allocated to snapshot 0.00% Snapshot chunk size 4.00 KiB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:5 [root@Cloud /users/archlinux]#mount /dev/testvg/mylv-snap /mnt/snap/ #掛載快照 mount: block device /dev/mapper/testvg-mylv--snap is write-protected, mounting read-only [root@Cloud /users/archlinux]#ll /mnt/snap/archlinux/pam.d/|wc -l #快照還有56個 56 [root@Cloud /users/archlinux]#rm /users/archlinux/pam.d/a #刪除原有數據 abrt-cli-root atd authconfig authconfig-gtk authconfig-tui [root@Cloud /users/archlinux]#rm /users/archlinux/pam.d/atd rm: remove regular file `/users/archlinux/pam.d/atd'? yes [root@Cloud /users/archlinux]#rm /users/archlinux/pam.d/a* rm: remove regular file `/users/archlinux/pam.d/abrt-cli-root'? yes rm: remove regular file `/users/archlinux/pam.d/authconfig'? yes rm: remove regular file `/users/archlinux/pam.d/authconfig-gtk'? yes rm: remove regular file `/users/archlinux/pam.d/authconfig-tui'? yes [root@Cloud /users/archlinux]#ll /users/archlinux/pam.d/| wc -l 51 #只剩下51個文件 [root@Cloud /]#cp -anr /mnt/snap/archlinux/pam.d/ /users/archlinux/ #恢復快照 [root@Cloud /]#ll /users/archlinux/pam.d/|wc -l #查看文件個數 56
磁盤配額
在內核中執行
?以文件系統為單位啟用
?對不同組或者用戶的策略不同
根據塊或者節點進行限制
?執行軟限制(soft limit)
?硬限制(hard limit)
?初始化
?分區掛載選項:usrquota、grpquota
?初始化數據庫:quotacheck
?執行
?開啟或者取消配額:quotaon、quotaoff
?直接編輯配額:edquota username
?在shell中直接編輯:
setquota usename 4096 5120 40 50 /foo
?定義原始標準用戶
報告
? 用戶調查:quota
? 配額概述:repquota
? 其它工具:warnquota
[root@Cloud /home]#lsblk |grep 'sdc' # #使用用的磁盤/dev/sdc1 sdc 8:32 0 20G 0 disk └─sdc1 8:33 0 20G 0 part /home [root@Cloud /]#mke2fs -t ext4 -L /home /dev/sdc1 #格式化 [root@Cloud /]#mkdir /mnt/home #創建空目錄用來掛載 [root@Cloud /]#mount /dev/sdc1 /mnt/home/ #掛載 [root@Cloud /home]#mv * /mnt/home/#移動/home下的數據 root@Cloud /home]#cd /mnt/home/ [root@Cloud /mnt/home]#ls #顯示掛載數據 lala lost+found mage moon user [root@Cloud /mnt/home]#ll -h #詳細信息 total 32K drwx------ 4 lala root 4.0K Jul 28 17:47 lala drwx------ 2 root root 16K Sep 8 19:26 lost+found drwx------ 4 mage mage 4.0K Jul 27 19:11 mage drwx------ 4 moon moon 4.0K Jul 28 17:52 moon drwx------ 4 user user 4.0K Jul 28 17:44 user [root@Cloud /]#vim /etc/fstab #掛載到/home UUID="f5e56c7d-d3e4-4be1-b9f3-750b2f582e31" /home ext4 defaults,usrquota,grpquota 0 0 [root@Cloud /]#mount -a #啟用 [root@Cloud /home/lala]#mount |grep '/dev/sdc1' #查看掛載的信息 /dev/sdc1 on /home type ext4 (rw,usrquota,grpquota) [root@Cloud /]#umount /mnt/home #卸載 [root@Cloud /]#ll /home/ #查看掛載分區加入usrquota,grpquota total 32 drwx------ 4 lala root 4096 Jul 28 17:47 lala drwx------ 2 root root 16384 Sep 8 19:26 lost+found drwx------ 4 mage mage 4096 Jul 27 19:11 mage drwx------ 4 moon moon 4096 Jul 28 17:52 moon drwx------ 4 user user 4096 Jul 28 17:44 user [root@Cloud /home]#quotacheck -cug /home #創建quota數據庫 [root@Cloud /home]#ls #信息。 aquota.group aquota.user lala lost+found mage moon user [root@Cloud /home]#getenforce #關于權限 Disabled #如果啟用要改成禁用 [root@Cloud /home]#quotaon -p /home #查看quota是否看起! group quota on /home (/dev/sdc1) is off user quota on /home (/dev/sdc1) is off [root@Cloud /home]#quotaon /home #開啟home的quota [root@Cloud /home]#quotaon -p /home/ #查看quota group quota on /home (/dev/sdc1) is on user quota on /home (/dev/sdc1) is on [root@Cloud /home]#edquota lala #設置lala用戶的磁盤配額 #關于相信信息 Disk quotas for user lala (uid 3000): #soft警告 Filesystem blocks soft hard inodes soft hard /dev/sdc1 32 0 0 8 0 0 #已使用塊數量(單位為k) (軟數據大?。ㄓ矓祿笮。?inode數量)(軟數量大?。?硬文件數量) [root@Cloud /home/lala]#quota lala #更改的信息 Disk quotas for user lala (uid 3000): Filesystem blocks quota limit grace files quota limit grace /dev/sdc1 32 1000 5000 8 0 0 [root@Cloud /home/lala]#repquota /home #查看//home的所有quota *** Report for user quotas on device /dev/sdc1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20 0 0 3 0 0 mage -- 36 0 0 9 0 0 user -- 36 0 0 9 0 0 lala -- 32 1000 5000 8 0 0 moon -- 32 0 0 8 0 0 [root@Cloud /home/lala]#edquota -p lala mage #lala和mage同一quota [root@Cloud /home/lala]#repquota /home #查看/home所有quota *** Report for user quotas on device /dev/sdc1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20 0 0 3 0 0 mage -- 36 1000 5000 9 0 0 user -- 36 0 0 9 0 0 lala -- 32 1000 5000 8 0 0 moon -- 32 0 0 8 0 0 [root@Cloud /home/lala]#setquota user 10000 20000 0 0 /home #一步到位設置quota [root@Cloud /home/lala]#quota user #查看quota配置 Disk quotas for user user (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sdc1 36 10000 20000 9 0 0
dd命令
dd命令用于復制文件并對原文件的內容進行轉換和格式化處理。
用法:
if=/PATH/FROM/SRC
從 file 中讀而不是標準輸入。
of=/PATH/TO/DEST
寫到 file 里去而不是標準輸出。
bs=#:block size, 復制單元大小
count=#:復制多少個bs
of=file寫到所命名的文件而不是到標準輸出
if=file從所命名文件讀取而不是從標準輸入
bs=size指定塊大?。仁鞘莍bs也是obs)
ibs=size一次讀size個byte
obs=size 一次寫size個byte
cbs=size 一次轉化size個byte
skip=blocks從開頭忽略blocks個ibs大小的塊
seek=blocks從開頭忽略blocks個obs大小的塊
count=n只拷貝n個記錄
conv=conversion[,conversion…] 用指定的參數轉換文件。
轉換參數:
?ascii 轉換EBCDIC 為ASCII。
?ebcdic 轉換ASCII 為EBCDIC。
?block 轉換為長度為cbs 的記錄,不足部分用空格填充。
?unblock 替代cbs長度的每一行尾的空格為新行。
?lcase 把大寫字符轉換為小寫字符。
?ucase 把小寫字符轉換為大寫字符。
?swab 交換輸入的每對字節。
?noerror 出錯時不停止。
?notrunc 不截短輸出文件。
?sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊
磁盤拷貝:
ddif=/dev/sdaof=/dev/sdb
備份MBR:
ddif=/dev/sdaof=/tmp/mbr.bakbs=512 count=1
破壞MBR中的bootloader:
ddif=/dev/zero of=/dev/sdabs=64 count=1 seek=446
?有二進制文件fileA,size>2K?,F在想從第64個字節位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,請問如何實現?
#ddif=fileAof=fileBbs=1 count=128 skip=63 seek=31 conv=notrunc
備份:
dd if=/dev/sdx of=/dev/sdy
將本地的/dev/sdx整盤備份到/dev/sdy
dd if=/dev/sdx of=/path/to/image
將/dev/sdx全盤數據備份到指定路徑的image文件
dd if=/dev/sdx | gzip >/path/to/image.gz
備份/dev/sdx全盤數據,并利用gzip工具進行壓縮,保存到指定路徑
恢復:
dd if=/path/to/image of=/dev/sdx
將備份文件恢復到指定盤
gzip -dc /path/to/image.gz | dd of=/dev/sdx
將壓縮的備份文件恢復到指定盤
拷貝內存資料到硬盤
dd if=/dev/mem of=/root/mem.bin bs=1024
將內存里的數據拷貝到root目錄下的mem.bin文件
?從光盤拷貝iso鏡像
dd if=/dev/cdrom of=/root/cd.iso
拷貝光盤數據到root文件夾下,并保存為cd.iso文件
?銷毀磁盤數據
dd if=/dev/random of=/dev/sda1
利用隨機的數據填充硬盤,在某些必要的場合可以用來銷毀數據。執行此操作以后,/dev/sda1將無法掛載,創建和拷貝操作無法執行。
得到最恰當的block size
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通過比較dd指令輸出中所顯示的命令執行時間,即可確定系統最佳的block size大小
測試硬盤讀寫速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
通過上兩個命令輸出的執行時間,可以計算出測試硬盤的讀/寫速度
修復硬盤
dd if=/dev/sda of=/dev/sda
當硬盤較長時間(比如1,2年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,并可能導致I/O錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。
原創文章,作者:ladsdm,如若轉載,請注明出處:http://www.www58058.com/44804