這篇文章主要講解了“Linux磁盤分區及文件系統管理”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Linux磁盤分區及文件系統管理”吧!
一、Linux磁盤
iops : io per second 磁盤接口類型: IDE : 并口,在高頻下容易出錯,133MB/s; SATA : 串口,可高頻,6gbps(1gbps=128MB/s) SCIS : 并口,ultrascsi320 ,320MB/s SAS : 串口,6gbps USB : 串口,480MB/s
硬盤類型: 機械硬盤 track :磁道 sector:扇區 cylinder: 柱面,分區基于柱面; 平均尋道時間: 5400rpm,7200rpm,10000rpm,15000rpm (鈾分離的設備的轉速達到30000rpm,機械硬盤這個轉速已經很厲害了) 高轉速產生大量的熱能,任何微小的塵粒在如此高轉速下都會對硬盤造成影響)
linux的設備類型: 塊(block) : 隨機訪問; 字符(character):線性訪問;
設備文件: FHS /dev 設備文件: 關聯至設備的驅動程序,設備的訪問入口; 設備號: major:主設備號,區分設備類型,用于標明設備所需要的驅動程序; minior:次設備號,區分同種類型下的不同的設備,是特定設備的訪問入口; 設備文件名 磁盤: IDE:/dev/hd[a-z] SCSI,SATA,SAS,USB: /dev/sd[a-z] 注意: Centos6和7統統將磁盤設備文件標識/dev/sd【[a-z]# 如 /dev/sda /dev/sda1,/dev/sda2;... 引用設備的方式: 設備文件名,卷標,UUID
磁盤分區:
MBR及其使用: MBR: Master Boot Record 特點: 占據磁盤0號sector,512bytes,分為三部分: 446bytes:bootloader程序,引導啟動操作系統; 64bytes : 分區表,每16個bytes標識一個分區,一共只有4個分區; 4個主分區或者3主+1個擴展分區(多個邏輯分區); 2bytes : MBR區域的有效性標識,55AA為有效;
GPT及其使用。
GPT:Globally Unique IdentifierPartition Table Format 全局唯一標識符分區表。 特點: 驅動器上的每個分區都有一個全局唯一的標識符; 支持幾乎無限個分區數量,除非操作系統作出了限制; MBR占用的第一個sector現在是LBA0,GPT使用了34個LBA區塊來紀錄分區信息(第一個sector依然兼容的MBR); GPT 除了前面34個LBA 之外,整個磁盤的最后33個LBA也拿來作為另一個備份。 LBA0 (MBR 相容區塊)與MBR模式相近,前446B還是boot loader,后64B換成一個特殊標記,用于表面此磁盤是GPT格式。 LBA1 (GPT 表頭紀錄)紀錄分區表本身的位置與大小,備份 GPT 分區 放置的位置,以及校驗碼 LBA2-33 (實際紀錄分區信息處)從LBA2區塊開始,每個LBA都可以紀錄4個分區紀錄,所以在默認的情況下,總共可以有4^32 = 128個分區紀錄
傳統BIOS---->MBR格式。 UEFI ---->MBR格式+GPT格式 (Unified Extensible Firmware Interface:統一的可擴展固件接口)
linux下GPT分區:
這里使用parted命令,fdisk也有gpt分區操作。 (1)[root@localhost tmp]#parted; (2)help; (3)select device; (4)mklabel gpt; (5)mkpart; ---輸入分區名字; ---文件系統; ---起始點,不要用0開頭; ---終結點; ---起始點,可以用#G; 此時已經分區成功 (6)print 查看 (7)quit
[root@localhost tmp]# parted GNU Parted 3.1 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) select /dev/sdd Using /dev/sdd (parted) mklabel gpt Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes (parted) mkpart Partition name? []? mygpd_data File system type? [ext2]? ext4 Start? 1 End? 2G (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdd: 2147MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2146MB 2145MB mygpd_data
二、fdisk命令
1.查看 fdisk -k device 2.管理 fdisk device fdisk 提供了一個交互式接口來管理分區,具有多個子命令;所有操作均在內存中完成; 沒有直接同步到磁盤,直到使用w命令保存到磁盤上; 注意: 在已經分區并且已掛載其中某個分區的磁盤設備上創建新的分區,內核可能在其創建完成后無法識別; 查看: cat /proc/partitions 通知內核,強制讀取磁盤分區: centos5: partprobe device; centos6.7: partx -a device kpartx -a device 分區創建工具:parted ; sfdisk
三、文件系統創建
格式化: 低級格式化,分區之前,劃分磁道; 高級格式化,分區之后對分區創建文件系統, superblock,i節點inode table,數據塊data block,目錄塊directory block, 間接塊indirection blockblock ,位圖索引inode bitmap,block bitmap; 元數據區+實際數據區 元數據區:inode table 文件元數據:文件大小,權限、宿主宿組、時間戳、數據塊指針等,不記錄文件名; 元數據區對每一個文件的信息記錄格式是統一的,給出一個模板然后根據文件的實際情況填寫而已; 數據塊指針的記錄內容是有限的,決定了文件的大小上限。根據數據塊指針到數據區取得文件的實際數據。 符合鏈接文件:存儲數據指針的空間中存儲了文件的真實訪問路徑。 設備文件: 存儲數據指針的空間中存儲了設備號。 這兩種文件都不占據數據區。
VFS: Virtual File System 解決不同文件系統之間的互認問題。
Linux文件系統: ext2,ext3,ext4,xfs,btrfs 光盤: ISO9660 網絡文件系統: nfs,clfs 集群文件系統: gfs2,ocfs2 內核級分布式文件系統: ceph windows文件系統:vfat,ntfs windows無法識別linux的文件系統,因此,存儲設備在需要兩種系統之間交叉使用時, 應使用兩者同時支持的文件系統:vfat # mkfs.vfat device 注意: U盤格式為ntfs的話,可以用一個NTFS-3G的插件,安裝后linux可以支持NTFS文件,linux將其識別為ntfs-3g文件系統 ntfs-3g-ntfsprogs-2011.3.32.tgz 解壓后執行./config make makeinstall 編譯安裝 若U盤被識別為sda3設備,則執行如下指令 #mount -t ntfs-3g /dev/sda /mnt/win 偽文件系統:proc,sysfs,tmpfs,hugepagefs 用戶空間的分布式文件系統: mogilefs,moonsefs,glusterfs
交互文件系統:swap; linux上交互分區必須使用獨立的文件系統,該system ID必須為82,通過fdisk上的t進行設置; 創建swap文件系統: mkswap device 啟用 : swapon devcie -a : 啟用在/etc/fstab文件中所有的swap設備。 禁用 : swapoff devcie 創建一個大小為1G的swap分區,并啟用。
[root@localhost ~]# fdisk /dev/sde Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-4194303, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): +1G Partition 1 of type Linux and of size 1 GiB is set Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 82 Changed type of partition 'Linux' to 'Linux swap / Solaris' Command (m for help): w The partition table has been altered! [root@localhost ~]# mkswap /dev/sde1 Setting up swapspace version 1, size = 1048572 KiB no label, UUID=adcb05b1-3368-4e97-80c8-7ed13e959c63 [root@localhost etc]# free -m total used free shared buff/cache available Mem: 3778 380 166 6 3231 3140 Swap: 2047 6 2041 [root@localhost etc]# swapon /dev/sde1 [root@localhost etc]# free -m total used free shared buff/cache available Mem: 3778 381 165 6 3231 3139 Swap: 3071 6 3065
四、文件系統使用
1.創建文件系統工具: mkfs mkfs.ext2; mkfs.ext3; mkfs.ext4; mkfs.xfs; 查看文件系統類型: blkid device; mke2fs命令 mke2fs [OPTIONS] device -t {ext2|ext3|ext4} -b {1024|2048|4096} -L LABEL卷標 -j 創建日志功能文件系統ext3 -i # 多少個字節一個inode -N # 創建inode的總數 -m # 預留空間,百分表 -O [^] 以指定的特性創建目標文件系統;
練習:創建一個1G的分區,并格式化為ext4文件系統。要求: (1)block大小為2048,預留空間20%,卷標為MYDATA,
[root@localhost tmp]# fdisk /dev/sde Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-4194303, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): +1G Partition 1 of type Linux and of size 1 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 tmp]# mke2fs -t ext4 -b 2048 -L MYDATA -m 20 /dev/sde1 mke2fs 1.42.9 (28-Dec-2013) Filesystem label=MYDATA OS type: Linux Block size=2048 (log=1) Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 524288 blocks 104857 blocks (20.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268959744 32 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 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
2.文件系統掛載與卸載
掛載與卸載: mount umount 根文件系統外的其它文件系統,要想能夠被訪問到,都必須通過‘關聯’至根文件系統上的某個目錄來實現, 此‘關聯’操作即‘掛載’,此目錄即為掛載點。 掛載點: mount point 用于作為另一個文件系統的訪問入口 (1): 事先存在; (2): 應用使用未被或或不會被其它目錄進程使用的目錄; (3): 掛載點下原有的文件建會被隱藏; 思考一個問題:將一個裝有linux系統的磁盤(根文件系統A)接到另一臺linux系統(B)的設備上,然后掛載在B系統一個目錄下, B上的某用戶(root或者普通用戶)對A文件的讀寫執行權限?
mount [-fnrsvw] [-t vfstype] [-o options] device dir -r: 只讀 -w: 讀寫(默認選項) -n: 禁止同步(默認情況下,設備掛載與卸載都同步到/etc/mtab中) -t --vfstype: 指定文件類型 -L --LABEL: 以label方式指明設備 -U --UUID : 以uuid方式指明設備 -o : 自動掛載所有支持自動掛載的設備 sync/async: 同步/異步 atime/noatime: 是否更新其訪問的時間戳 diratime/nodiratime: 只針對目錄時間戳 remount: 重掛 acl: 支持使用acl功能 #mount -o acl device dir #mount -o alc device ro:只讀 rw:讀寫 exec/noexec 是否允許運行此設備上的文件 使用技巧:mount --bind 源目錄 目標目錄, 可以實現將目錄綁定至另一個目錄上,作為其臨時訪問入口。
查看當前系統所有已掛載設備: # mount # cat /etc/mtab # cat /proc/mounts
umount [-dflnrv] {dir|device}... 正在被進程訪問的掛載點無法被卸載 查看被何進程使用: #lsof mount_point #fuser -v mount_point [root@localhost /]# fuser -v /dev/sde1 USER PID ACCESS COMMAND /dev/sde1: root kernel swap /dev/sde1
3.除根文件以為的其它文件開機自動掛載
/etc/fstab
UUID=795d1641-c4f8-4f72-911b-6eedfe2ac733 / xfs defaults 0 0 UUID=ecde1354-5470-4692-bc2b-9cc94bd3b11c /boot xfs defaults 0 0 UUID=ad488060-c1c6-4871-a8e2-228de0b90457 swap swap defaults 0 0
(1)要掛載的設備:設備文件,LABEL,UUID,偽文件系統 (2)掛載點,swap類型的掛載點為swap (3)文件系統類型 (4)掛載選項 (5)轉儲頻率,0從不,1每天,2每隔一天 (6)自檢次序
接上面的練習: (2) 掛載至/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳。 (3)可開機自動掛載。
[root@localhost mydata]# mount -o noatime noexec -L MYDATA /mydata ---錯誤,o后面的參數以,分隔 [root@localhost mydata]# mount -o noatime,noexec -L MYDATA /mydata [root@localhost /]# vim /etc/fstab UUID=795d1641-c4f8-4f72-911b-6eedfe2ac733 / xfs defaults 0 0 UUID=ecde1354-5470-4692-bc2b-9cc94bd3b11c /boot xfs defaults 0 0 UUID=ad488060-c1c6-4871-a8e2-228de0b90457 swap swap defaults 0 0 LABEL=MYDATA /mydata ext4 defaults 0 0
感謝各位的閱讀,以上就是“Linux磁盤分區及文件系統管理”的內容了,經過本文的學習后,相信大家對Linux磁盤分區及文件系統管理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。