馬哥教育第八天檔案系統、mount、mke2fs、fdisk

來源:互聯網
上載者:User

標籤:mount

8.1.1、Linux檔案系統儲存空間分為(資料區和中繼資料區),一般硬盤扇區是512位元組,一個block(塊)可以包含(2、4、8不同扇區),一個塊只能屬於一個檔案但一個檔案可以包含多個塊,stat可以查看中繼資料(檔案名稱,大小,時間戳記,許可權,屬主、屬組,對應資料存放區在哪些磁碟塊上),ls -i可以查看檔案的inode編號,每個編號又對應著磁碟上的儲存地區,但是檔案名稱並不存放在inode上而是存放在上級目錄中所以目錄資料區中存放的是檔案名稱和inode對應關係
8.1.2、因為inode編號太多尋找該inode是否使用比較消耗資源,為了更快的尋找到未使用的inode會對inode做索引這叫bitmap(位元影像索引)inode位元影像,相對應的塊也會做block bitmap(塊位元影像),所以中繼資料區中存放了(inode、ionde bitmap、block bitmap),資料存放區方式:每次會拿8個未使用的磁碟塊用來儲存,如果只用了一個會把未使用的塊還回去不夠時在取8個未使用磁碟塊,評估磁碟效能時會有2種評估模型(隨機io和連續io:磁碟讀寫資料是靠機械手臂完成,如果資料是連續儲存將會提高讀寫速度,亂序將影響讀寫效能)
8.1.3、為了方便管理把塊分為塊組,每個塊組都有獨立的資料區和中繼資料區,塊組的中繼資料資訊和塊組之間運行都由超級塊進行協調,並且在多個塊組中會有超級塊備份,tune2fs可以查看分區的超級塊資訊舉例:tune2fs -l /dev/sda1,還可以通過dumpe2fs查看分區中塊組資訊舉例:dumpe2fs /dev/sda1 加上-h也可以查看超級塊資訊
8.1.4、連結檔案:2個檔案指向同一個inode,此時一個檔案就稱為另一個檔案的永久連結,當一個檔案指向另一個檔案的路徑時此檔案稱為軟串連也稱為字元連結,ln -sv建立軟連結,一個inode可以被引用多次其有計數器計算:在引用次為降為0之前是不會被標記為未用的。
8.1.5、永久連結(不能對目錄建立永久連結、也不能跨分區、會增加inode引用計數,軟串連可以對目錄建立、不受分區限制、不增加引用計數)。檔案被刪除:僅刪除路徑,inode指向的磁碟塊被標記為空白閑,檔案複製:建立一個新檔案並把原檔案再次寫入磁碟塊,檔案移動:在同一個分區移動:檔案僅是改變了檔案訪問路徑、跨分區移到:在新分區建立檔案,把資料複製過去,刪除原分區資料。

8.2.1、裝置檔案:特殊檔案只有ionde 而沒有資料,關聯至一個驅動程式進而跟對應硬體打交道、一般在/dev目錄下,在裝置中繼資料中每個裝置都有裝置號(主裝置號:用於標記驅動程式(裝置類型),次裝置號:標記同一類裝置中的不同裝置,例如多塊硬碟),mknod可以建立裝置檔案,裝置檔案命名由ICANN制定。
8.2.2、mknod (-m設定許可權、建立檔案名稱、b塊裝置 主裝置號 次裝置號,舉例:mknod -m 660 /dev/test1 b 120 0),磁碟裝置檔案(/dev/sd[a-z],USB: 串列、SATA: 串列、SCSI: 並行、SAS:串列,用數位識別碼分區號如:/dev/sda1,第一分區),磁碟中碟片分為磁軌(track)每個磁軌由多個扇區(sector)組成每個扇區512個位元組,0磁軌0扇區被稱為主引導記錄(MBR:Master Boot Record)用於引導啟動作業系統(os),MBR512位元組分為(446bytes: bootloader、64bytes: 分區表,每16bytes標記一個分區,一共只能有4主要磁碟分割、2bytes: MBR有效性標記)。
8.2.3、分區(主要磁碟分割、擴充分區(擴充分區不能直接使用必須分割為1個或多個邏輯分區)、邏輯分區),分區編號:主+擴充1-4,邏輯分區為5..n,fdisk可以查看磁碟資訊舉例:fdisk -l | grep -A 10 "^Disk /dev/[sh].*",柱面(cylinder)分區更加柱面劃分,通過cat /proc/partitions也可以查看磁碟分割資訊
8.2.4、查看分區:fdisk -l,建立分區:fdisk + 未使用柱面硬碟如:fdisk /dev/sdb(m查看協助、p顯示磁碟分割表、n建立分區、d刪除分區、t修改分區系統id、w儲存分區、q不儲存分區、l列出所有已知的系統編號),建立分區需要核心重讀分區表後才可使用(Centos5:partprobe,Centos6:partx -a或kpartx -af,Centos6讀取2個命令需要輪流執行最後通過/proc/partitions查看核心是否識別),分區建立工具:sfdisk和parted
8.2.5、練習寫一個指令碼,1、提示輸入一個對其執行分區的新硬體裝置檔案;2、提醒使用者接下來的操作銷毀所有的資料,你繼續嗎?(y或yes: 繼續、n或no:退出、其它字元:提醒輸錯了,再來一次;)3、對磁碟建立分區:(主要磁碟分割1:大小512M,主要磁碟分割2:大小2G)4、建立完成後顯示建立的結果;沒有完善後期再修改

650) this.width=650;" src="https://note.wiz.cn/api/document/files/unzip/cf6fe2dc-e32d-4bb9-8618-5c7c32315798/8135db5b-8f26-07a6-890e-2ec0b1e677ce.4301/index_files/fb8edf98430d3cfa836d1b630c0281ca.png" style="border:0px;" alt="fb8edf98430d3cfa836d1b630c0281ca.png" />

8.3.1、建立檔案系統:mkfs : make file system,Linux核心是模組化的,這些模組支援動態裝載和卸載,檔案系統可能會被直接打包進核心,也可以被編譯成核心模組,lsmod可以查看核心已經裝載了那些模組,如果需要格式化特定檔案系統,通常需要安裝對應的命令工具來實現。例如用rpm或者yum來安裝即可。
8.3.2、mkfs -t FSTYPE = mkfs.FSTYPE舉例:mkfs -t ext3 = mkfs.ext3(mkfs.ext3 /dev/sdb1),還有個命令可以建立檔案系統mke2fs它包含很多選項(-b指定塊大小{1024|2048|4096}、-t指定檔案系統{ext2|ext3|ext4}、-L指定卷標、-j相當於指定檔案系統ext3、-i指定多少位元組建立一個inode、-N 直接指定建立inode數、-m預留空間占整個分區空間的百分比(-m 2))
8.3.3、blkid查看分區檔案系統資訊,e2label查看設定卷標舉例:e2label /dev/sdb1 hello,設定卷標為hello、tune2fs修改分區屬性,塊大小不能調整(-j:可以將ext2升級檔案系統ext3、-L修改卷標、-m修改預留的空間百分比、-O ^FEATURE:啟用指定特性,特性前加^,表示關閉此種特性)
8.3.4、因進程意外中止或系統崩潰等情況匯入寫入操作非正常中止時,可能會導致檔案損壞,fsck修複檔案系統一個檔案系統修複時必須先卸載(-t指定修複檔案系統(可省略自動檢測以什麼檔案系統修複)、-a自動修複、-r互動式修複,舉例:fsck -t ext3 -a /dev/sdb1),e2fsck用來修複ext檔案系統(-y: 對問題自動回答為yes、-f: 強制進行檢測,舉例:e2fsck -y -f /dev/sdb1)、 mkfs -t vfat可以建立fat32檔案系統、交換分區:swap緩解實體記憶體資源不夠用的情況;mkswap [-L LABEL] DEVICE:舉例:mkswap -L swap1 /dev/sdb2(注意在建立前需要先把分區類型修改為swap類型,用fdisk)
8.3.5、mount把需要掛載的裝置或檔案系統掛到某個目錄中,該目錄成為另一個裝置或檔案系統的訪問入口,舉例:(mount /dev/sdb1 /mnt 掛載分區),mount常用的掛載選項(-r: 唯讀掛載、-w: 讀寫掛載、-t :指定檔案系統類型),查看所有掛載資訊mount、cat/proc/mounts、cat/dev/mtab

8.4.1、mount -o option(async:磁碟非同步I/O,sync: 磁碟同步I/O,atime/noatime: 檔案和目錄被訪問時是更新最近一次的訪問時間戳記,auto/noauto:裝置是否支援mount的-a選項自動掛載,diratime/nodiratime: 目錄被訪問時是更新最近一次的訪問時間戳記,dev/nodev: 是否支援在此裝置上使用裝置,exec/noexec: 是否允許執行此裝置上的二進位程式檔案,suid/nosuid: 是否支援在此裝置的檔案上使用suid,remount: 重新掛載舉例:mount -o remount,acl /mnt,通常用於不卸載的情況下重新指定掛載選項,ro: 唯讀,rw: 讀寫,user/nouser: 是否允許普通掛載此檔案裝置,acl: 在此裝置是支援使用facl,預設不支援,掛載方式:(mount -o acl /dev/sdb1 /mnt或開啟該分區acl功能以後掛載時就不需要指定該選項:tune2fs -o acl /dev/sdb1))
8.4.2、umount卸載umount /mnt,fuser(-v 查看掛載裝置上訪問使用者舉例:fuser -v /dev/sdb1,-km直接提出掛載點上所有使用者舉例:fuser -km /dev/sdb1),df(-h單位換算後顯示裝置空間,-i顯示裝置inode使用方式),du(-s非精確計算當前檔案夾下總體大小、-h單位換算),awk基本使用方法(awk -F:  ‘{print $1}‘ /det/passwd)
8.4.3、swapon啟用互動分區,舉例:swapno /dev/sdb2、swapoff禁用交換分區:swapoff /dev/sdb2、/etc/fstab欄位說明(裝置名稱、掛載點、檔案系統、掛載選項、備份頻率(0不備份、1每天備份、2隔天備份)、自檢(0不自檢、1優先自檢1隻能用根分區、2....9))
8.4.4、作業1、列出當前系統上的所有磁碟裝置;2、讓使用者選擇一個磁碟裝置,並在選擇後顯示指定裝置上的所有分區資訊;3、詢問使用者是否擦除此磁碟上的所有現存分區後重新添加三個分區(y或yes: 繼續、n或no: 中止指令碼、其它字元則提醒使用者重新輸入合法的字元);4、在使用者選擇是後執行相應的分區操作(主要磁碟分割1:512M,ext4、主要磁碟分割2: 512M,swap、主要磁碟分割3:2G,ext4)5、將建立的分區按如上說明分別格式為相應的檔案系統;6、將主要磁碟分割1掛載至/mnt/boot目錄,主要磁碟分割3掛載至/mnt/sysroot目錄;擴充:在上述第3個步驟開始之後,先查看此裝置上是否有分區被掛載,如果有,則先卸載之;

#!/bin/bash#Date 2015-03-16#Author xiangjin#Description Disk re partitionecho "Current computer disk"ls -l /dev/sd[a-z]read -p "Select the required disk information view :" devnamefdisk -l "$devname" |grep "^\/dev"for i in `fdisk -l $devname | grep "^\/dev" | awk ‘{print $1}‘ `;do   if cat /proc/mounts | grep "$i";then    echo " $i Uninstall is mounted"    fuser -km $i    umount $i   else   echo "$i no mount"   fidone  read -p "Delete all partitions on the disk and rebuild a new partition [y|yes]:Continue [n|no]:quit " boolidcount=1sumnumber=$(fdisk -l $devname |grep "^/dev" |wc -l)while [ $boolid != "" ];do      if [ $boolid == "y" -o $boolid == "yes" ];then         while [ $count -le $sumnumber ];do          if [ $count -lt $sumnumber ];then               echo "d               $count               w" | fdisk $devname         else                echo "d                w" |fdisk $devname         fi               let count++        done      echo "n p 1  +512M n p 2  +512M t 2 82 n p 3  +2G w " |fdisk $devnamemke2fs -j -m 2 -b 1024 ${devname}1mke2fs -j -m 2 -b 1024 ${devname}3mkswap ${devname}2if [ -d /mnt/boot ];then   mount ${devname}1 /mnt/bootelse   mkdir /mnt/boot   mount ${devname}1 /mnt/bootfiif [ -d /mnt/sysroot ];then mount ${devname}3 /mnt/sysroot else   mkdir /mnt/sysroot mount ${devname}3 /mnt/sysrootfiswapon ${devname}2      exit 44       elif [ $boolid == "n" -o $boolid == "no" ];then             echo "Program error"            exit 55      else         read -p "Invalid characters Please input again " boolid      fidone



馬哥教育第八天檔案系統、mount、mke2fs、fdisk

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.