硬碟設備是由大量的扇區組成,每個扇區容量512位元組,第一扇區最為重要,保存主引導記錄和分區表信息。分別是主引導記錄佔用446,分區表佔用64位元組,結束符2位元組,其中分區表中每記錄一個信息佔用16位元組,最多只有四個分區,為了解決分區數不夠,衍生出擴展分區。擴展分區可以用來創建邏輯分區,邏輯分區最多128個。
硬體設備
文件名稱
IDE設備
/dev/hd[a-d]
SCSI/SATA/U盤/SAS
/dev/sd[a-p]
軟碟機
/dev/fd[0-1]
印表機
/dev/lp[0-15]
光碟機
/dev/cdrom
滑鼠
/dev/mouse
磁帶機
/dev/st0或/dev/ht0
IDE硬碟接口在Linux中設備名為/dev/hda,SAS、SCSI、SATA硬碟接口在Linux中設備名為sda,高效雲盤硬碟接口會識別為/dev/vda等。
硬碟的最小存儲單位叫做Sector(扇區),每個Sector儲存512位元組。作業系統在讀取硬碟的時候,不會逐個Sector的去讀取,這樣效率非常低,為了提升讀取效率,作業系統會一次性連續讀取多個Sector,即一次性讀取多個Sector稱為一個Block(塊)。
由多個Sector組成的Block是文件存取的最小單位。Block的大小常見的有1KB、2KB、4KB,Block在Linux中常設置為4KB,即連續八個Sector組成一個Block。
硬碟分區分別分成(superblock)、inode、block,
Superblock:文件系統的整體信息,包含inode值和block塊的使用的大小、剩餘大小,相關的格式及信息。(記錄inode和block的對應關係)
Inode:記錄文件的屬性和信息,同時會把文件的存儲的位置生成一個編號(inode值:記錄數據的存儲位置(block在分區中所在位置))
Block塊是存儲文件的內容。因為每個 inode 與 block 都有編號,而每個文件都會佔用一個 inode ,inode 內則有文件數據放置的 block 號碼。如果能夠找到文件的 inode,就可以找到該文件所放置數據的block號碼,從而讀取該文件內容。
1.1 Parted 分區Parted 分區格式:gpt
1)將硬碟所有內容分到一個分區
將2.4T 硬碟分區操作
-1 參數:代表剩下的所有空間。
Parted工具中的mklabel 和mkpart 參數
1.2 mount命令實例
Mount常用案例演示如下:
mount /dev/sdb1 /data 掛載/dev/sdb1分區至/data/目錄
mount /dev/cdrom /mnt 掛載Cdrom光碟至/mnt目錄;
mount -t ntfs-3g /dev/sdc /data1 掛載/dev/sdc移動硬碟至/data1目錄;
mount -o remount,rw / 重新以讀寫模式掛載/系統;
mount -t iso9660 -o loop centos7.iso /mnt 將centos7.iso鏡像文件掛載至/mnt目錄;
mount -t fat32 /dev/sdd1 /mnt 將U盤/dev/sdd1掛載至/mnt/目錄;
mount -t nfs 192.168.1.11:/data/ /mnt 將遠程192.168.1.11:/data目錄掛載至本地/mnt目錄。1.3 文件系統詳解
EXT4是第四代擴展文件系統(Fourth EXtended filesystem,EXT4)是Linux系統下的日誌文件系統,是EXT3文件系統的後繼版本;
EXT3類型文件系統支持最大16TB文件系統和最大2TB文件;
EXT4分別支持1EB(1EB=1024PB,1PB=1024TB)的文件系統,以及16TB的單個文件;
EXT3只支持32,000個子目錄,而EXT4支持無限數量的子目錄;
EXT4磁碟結構的inode個數支持40億,而且EXT4的單個文件大小支持到16T(4K block size) ;
XFS是一個64位文件系統,最大支持8EB減1位元組的單個文件系統,實際部署時取決於宿主作業系統的最大塊限制,常用語64位作業系統,發揮更好的性能;
XFS一種高性能的日誌文件系統,最早於1993年,由Silicon Graphics為他們的IRIX作業系統而開發,是IRIX 5.3版的默認文件系統;
1.4 Swap分區的擴展dd 命令創建一個空文件,if指定一個來源/dev/zero(/dev/zero文件提供源源不斷的「0」數據),of指定存儲文件,bs=定義塊的大小,count=定義塊的數量
[root@localhost ~]# dd if=/dev/zero of=/root/test bs=100M count=2020+0 records in20+0 records out2097152000 bytes (2.1 GB) copied, 42.9902 s, 48.8 MB/s [root@localhost ~]# mkswap /root/testSetting up swapspace version 1, size = 2047996 KiBno label, UUID=13db4d1a-eb96-49fc-8e29-33e51c660ea5 [root@localhost ~]# free -hm total used free shared buff/cache availableMem: 976M 113M 170M 6.7M 692M 686MSwap: 2.0G 0B 2.0G[root@localhost ~]# swapon /root/testswapon: /root/test: insecure permissions 0644, 0600 suggested.[root@localhost ~]# free -hm total used free shared buff/cache availableMem: 976M 115M 168M 6.7M 692M 684MSwap: 4.0G 0B 4.0G[root@localhost ~]#[root@localhost ~]# swapoff /root/test[root@localhost ~]#[root@localhost ~]# free -m total used free shared buff/cache availableMem: 976 114 168 6 693 685Swap: 2047 0 20471.5 使用xfs文件系統superblock實驗
1. 創建一個XFS文件系統
[root@localhost ~][root@localhost ~][root@localhost ~]/dev/sdb1 30G 610M 30G 2% /test2. 卸載文件系統/test, 並且破壞superblock
[root@localhost ~]# umount /test[root@localhost ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=11+0 records in1+0 records out512 bytes (512 B) copied, 0.00251096 s, 204 kB/s3. 再次掛載報錯
[root@localhost ~]# mount -amount: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so
[root@localhost ~]# dmesg[22597379.623449] XFS (sdb1): bad magic number[22597379.624372] XFS (sdb1): SB validate failed4. 恢復superblock
[root@localhost ~]Phase 1 - find and verify superblock...bad primary superblock - bad magic number !!!
attempting to find secondary superblock..found candidate secondary superblock...verified secondary superblock...writing modified primary superblocksb realtime bitmap inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 129resetting superblock realtime bitmap ino pointer to 129sb realtime summary inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 130resetting superblock realtime summary ino pointer to 130Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps...sb_icount 0, counted 64sb_ifree 0, counted 60sb_fdblocks 7860552, counted 7712768 - found root inode chunkPhase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes...Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3Phase 5 - rebuild AG headers and trees... - reset superblock...Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ...Phase 7 - verify and correct link counts...Note - stripe unit (0) and width (0) fields have been reset.Please set with mount -o sunit=<value>,swidth=<value>done5. 確認是否已經恢復
[root@localhost ~][root@localhost ~]/dev/sdb1 30G 610M 30G 2% /test
1.2 修復ext4分區superblock 問題[root@localhost ~]Filesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 17G 1.7G 16G 10% /devtmpfs 478M 0 478M 0% /devtmpfs 489M 0 489M 0% /dev/shmtmpfs 489M 6.7M 482M 2% /runtmpfs 489M 0 489M 0% /sys/fs/cgroup/dev/sda1 1014M 127M 888M 13% /boottmpfs 98M 0 98M 0% /run/user/0/dev/sdb 20G 33M 20G 1% /test/dev/sdc1 20G 44M 19G 1% /test1
[root@localhost ~][root@localhost ~]dd if=/dev/zero of=/dev/sdc1 bs=100M count=1010+0 records in10+0 records out1048576000 bytes (1.0 GB) copied, 1.72432 s, 608 MB/s[root@localhost ~]mount: wrong fs type, bad option, bad superblock on /dev/sdc1, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so.
[root@localhost ~]fsck from util-linux 2.23.2e2fsck 1.42.9 (28-Dec-2013)ext2fs_open2: Bad magic number in super-blockfsck.ext4: Superblock invalid, trying backup blocks...fsck.ext4: Bad magic number in super-block while trying to open /dev/sdc1 The superblock could not be read or does not describe a correct ext2filesystem. If the device is valid and it really contains an ext2filesystem (and not swap or ufs or something else), then the superblockis corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193 <device>[root@localhost ~]# mke2fs -S /dev/sdc1-S 僅寫入superblock與group descriptorsmke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks1310720 inodes, 5242631 blocks262131 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=4294967296160 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000 Allocating group tables: done Writing superblocks and filesystem accounting information: done[root@localhost ~]# mount /dev/sdc1mount: mount /dev/sdc1 on /test1 failed: Stale file handle[root@localhost ~]#[root@localhost ~]# fsck -t ext4 -y /dev/sdc1檢查特定類型的文件系統(ext4),-y檢測完成之後並自動修復
fsck from util-linux 2.23.2e2fsck 1.42.9 (28-Dec-2013)/dev/sdc1 contains a file system with errors, check forced.Resize inode not valid. Recreate? yesPass 1: Checking inodes, blocks, and sizesRoot inode is not a directory. Clear? yesPass 2: Checking directory structurePass 3: Checking directory connectivityRoot inode not allocated. Allocate? ye/lost+found not found. Create? yesPass 4: Checking reference countsPass 5: Checking group summary informationBlock bitmap differences: +(0Fix? yesFree blocks count wrong for group Fix? yesFree blocks count wrong (5149114, counted=5149113).Fix? yesInode bitmap differences: +1 +(3Fix? yesFree inodes count wrong for group Fix? yesDirectories count wrong for group Fix? yesFree inodes count wrong (1310719, counted=1310709).Fix? yes/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****/dev/sdc1: 11/1310720 files (0.0% non-contiguous), 93518/5242631 block[root@localhost ~]Filesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 17G 1.7G 16G 10% /devtmpfs 478M 0 478M 0% /devtmpfs 489M 0 489M 0% /dev/shmtmpfs 489M 6.7M 482M 2% /runtmpfs 489M 0 489M 0% /sys/fs/cgroup/dev/sda1 1014M 127M 888M 13% /boottmpfs 98M 0 98M 0% /run/user/0/dev/sdb 20G 33M 20G 1% /test/dev/sdc1 20G 44M 19G 1% /test1再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達