文件描述符FD
A. 概念:
當(dāng)進(jìn)程打開現(xiàn)有文件或創(chuàng)建新文件時(shí),內(nèi)核向進(jìn)程返回一個(gè)文件描述符(本質(zhì)上FD是index,為了讓內(nèi)核高效管理被打開的文件);
文件描述符有三個(gè)表,進(jìn)程級、系統(tǒng)級 & 文件系統(tǒng)的i-node表
B. FD,文件 & 進(jìn)程的關(guān)系:
每個(gè)fd僅對應(yīng)一個(gè)文件;
不同的fd可能指向一個(gè)文件(比如多個(gè)進(jìn)程都打開了同一個(gè)文件);
一個(gè)文件可被不同的進(jìn)程打開,一個(gè)進(jìn)程也可多次打開一個(gè)文件
C. 詳述三個(gè)表:
進(jìn)程級fd:0-n的標(biāo)識符+文件指針,指向系統(tǒng)級fd;
系統(tǒng)級fd:文件偏移量(又稱文件句柄)+inode指針,同一文件偏移量必指向同一inode(文件),不同文件偏移量也有可能指向一個(gè)inode;
inode表:對應(yīng)文件
總結(jié):進(jìn)程表中的文件指針若指向同一文件句柄,那必然是指向同一個(gè)inode文件;文件指針指向不同文件句柄(文件偏移量),但也有可能最后的inode指針指向同一個(gè)inode。
文件系統(tǒng) & 文件描述符課后實(shí)操
A. 阿里云系統(tǒng)盤擴(kuò)容:
快照備份:控制臺完成快照備份,用于回滾準(zhǔn)備;
控制臺申請:快照完畢后申請?jiān)票P擴(kuò)容(比如100g,其中vda1 50g,vda2 50g,想讓vda1變成500g),并購買數(shù)據(jù)盤云盤100g,用于存vda2的數(shù)據(jù);
刪除老舊分區(qū):如果之前系統(tǒng)盤已經(jīng)有多個(gè)partiton(使用lsblk -f或者df -Th查看),此時(shí)需要刪除vda2則先umount xxx路徑,再使用fdisk /dev/vda,然后d 2 wq(此操作刪除第二分區(qū));
掛載新數(shù)據(jù)盤:
a. 創(chuàng)建分區(qū):fdisk /dev/vdb,然后n p 1 回車 回車 wq,完成分區(qū)創(chuàng)建;
b. 創(chuàng)建fs:使用mkfs.ext4 /dev/vdb1創(chuàng)建ext4文件系統(tǒng)于vdb1分區(qū)下;
c. 云盤掛載:使用mount /dev/vdb1 xxx路徑完成掛載;
d. 自動掛載:使用lsblk -f獲取uuid,vim /etc/fstab寫入配置,重啟自動掛載;云主機(jī)重啟:若不需要vda2的數(shù)據(jù)后續(xù)使用過程中遷移至數(shù)據(jù)盤,可省略上面一步,刪除后直接開始系統(tǒng)盤擴(kuò)容,但是需先reboot這樣fs才能刪掉有掛載點(diǎn);
完成擴(kuò)容:
a. 擴(kuò)容分區(qū):重啟后使用growpart /dev/vda 1(注意,1之前有空格,代表分區(qū)的號碼)進(jìn)行分區(qū)vda1的擴(kuò)容(50g變成500g);
b. 報(bào)錯修正:若無該命令,請yum install cloud-utils-growpart xfsprogs -y;若有該命令,但是運(yùn)行報(bào)錯,請運(yùn)行LANG=en_US.UTF-8再重新growpart;
c. 擴(kuò)展fs:使用resize2fs /dev/vda1擴(kuò)展文件系統(tǒng),大功告成。