BIND安裝
淇濱網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
軟件下載地址:,目前最新版本是BIND 9.8.1-P1。
安裝依賴:
yum -y install gcc openssl-devel
開始安裝bind.
wget
tar xzf bind-9.8.1-P1.tar.gz
cd bind-9.8.1-P1
./configure --prefix=/usr/local/bind
make make install
執(zhí)行完成后,bind已經(jīng)安裝到了/usr/local/bind目錄。
配置主dns服務(wù)器
配置bind主要是兩種文件,一是主配置文件named.conf,二是區(qū)域文件zone(包括正解析,反解析)。
在下面的配置中,我們的主dns服務(wù)器是ns1.qbtop.com 23.19.81.191,從dns服務(wù)器是ns2.qbtop.com 23.19.81.194(這兩個dns都已經(jīng)在godaddy注冊好了)。
下面操作僅在主dns服務(wù)器23.19.81.191執(zhí)行。
主配置文件named.conf
首先執(zhí)行rndc-confgen -a生成/etc/rndc.key密鑰文件。
/usr/local/bind/sbin/rndc-confgen -a
vi /usr/local/bind/etc/named.conf
寫入如下內(nèi)容:
include "/usr/local/bind/etc/rndc.key";
controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndckey"; }; };
logging {
channel default_syslog { syslog local2; severity notice; };
channel audit_log { file "/var/log/bind.log"; severity notice; print-time yes; };
category default { default_syslog; };
category general { default_syslog; };
category security { audit_log; default_syslog; };
category config { default_syslog; };
category resolver { audit_log; };
category xfer-in { audit_log; };
category xfer-out { audit_log; };
category notify { audit_log; };
category client { audit_log; };
category network { audit_log; };
category update { audit_log; };
category queries { audit_log; };
category lame-servers { audit_log; };
};
options {
directory "/usr/local/bind/etc";
pid-file "/usr/local/bind/var/run/bind.pid";
transfer-format many-answers;
interface-interval 0;
allow-query { any; };
};
zone "qbtop.com" {
type master;
file "qbtop.com.zone";
allow-transfer { 23.19.81.194; };
};
zone "81.19.23.in-addr.arpa" {
type master;
file "81.19.23.in-addr.arpa";
allow-transfer { 23.19.81.194; };
};
named.conf文件說明:
上面的named.conf文件包括三部分:key,controls,logging,options,zone。
logging:設(shè)置日志服務(wù)器和日志信息的發(fā)送地。
options:控制服務(wù)器的全局配置選項和為其它語句設(shè)置默認(rèn)值
zone:定義一個域,比如正解析域和反解析域。
logging是定義日志的,不需要深究,主要是options和zone。
在options中:
directory "/usr/local/bind/etc":定義bind的工作目錄為/usr/local/bind/etc,配置文件中所有使用的相對路徑,指的都是在這里配置的目錄下。
pid-file "/usr/local/bind/var/run/bind.pid":把bind程序運行的pid寫入文件bind.pid。
transfer-format many-answers:使用更加有效的域傳輸格式many-answers。
allow-query { any; }:允許所有用戶查詢dns。
在zone中:
這里定義了兩個zone,一個是正解析zone qbtop.com,一個是反解析zone 81.19.23.in-addr.arpa。
他們的參數(shù)基本相同:
type master:定義dns服務(wù)器為主dns。
file "qbtop.com.zone":定義此zone的文件名。
allow-transfer { 23.19.81.194; }:允許向從dns 23.19.81.194傳輸dns數(shù)據(jù)。
唯一不同的是zone名稱的定義,正解析zone名稱的定義是受權(quán)的域名,可以是頂級域名,也可以是二級域名,或多級。反解析zone名稱定義規(guī)定前部分ip倒著寫。如ip 192.168.1.2,名稱定義為1.168.192.in-addr.arpa。
正解析qbtop.com.zone
vi /usr/local/bind/etc/qbtop.com.zone
寫入如下內(nèi)容:
$TTL 3600
@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (
2012022301 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
@ IN NS ns1.qbtop.com.
@ IN NS ns2.qbtop.com.
ns1 IN A 23.19.81.191
ns2 IN A 23.19.81.194
aaa IN A 23.19.81.191
bbb IN A 23.19.81.191
文件說明:
$TTL 3600:指示為每個沒有特殊TTL設(shè)置的RR給出了一個默認(rèn)的TTL。
@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (
2012022301 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
定義SOA記錄,包括Zone的名字,一個技術(shù)聯(lián)系人和各種不同的超時值。
@ IN NS ns1.qbtop.com.
@ IN NS ns2.qbtop.com.
設(shè)置兩個ns記錄ns1.qbtop.com和ns2.qbtop.com。
ns1 IN A 23.19.81.191
ns2 IN A 23.19.81.194
aaa IN A 23.19.81.191
bbb IN A 23.19.81.191
設(shè)置主機為ns1,ns2,aaa和bbb的A記錄。
反解析文件81.19.23.in-addr.arpa
反解析zone可以不設(shè)置。
vi /usr/local/bind/etc/81.19.23.in-addr.arpa
寫入如下內(nèi)容:
$TTL 3600
@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (
2012022301 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
@ IN NS ns1.qbtop.com.
@ IN NS ns2.qbtop.com.
191 IN PTR ns1.qbtop.com.
194 IN PTR ns2.qbtop.com.
說明:
上部分是定義SOA記錄,下部分是設(shè)置IP反解析。
如設(shè)置IP 23.19.81.191反解析成ns1.qbtop.com,23.19.81.194反解析成ns2.qbtop.com。
配置從DNS服務(wù)器
下面我們來配置從DNS服務(wù)器。配置從DNS服務(wù)器只需要配置主配置文件named.conf,zone文件不需配置,因為這是從主DNS服務(wù)器獲取的。
首先建立目錄slaves用來存放從主dns獲取的zone文件。
mkdir /usr/local/bind/etc/slaves
寫入如下內(nèi)容:
logging {
channel default_syslog { syslog local2; severity notice; };
channel audit_log { file "/var/log/bind.log"; severity notice; print-time yes; };
category default { default_syslog; };
category general { default_syslog; };
category security { audit_log; default_syslog; };
category config { default_syslog; };
category resolver { audit_log; };
category xfer-in { audit_log; };
category xfer-out { audit_log; };
category notify { audit_log; };
category client { audit_log; };
category network { audit_log; };
category update { audit_log; };
category queries { audit_log; };
category lame-servers { audit_log; };
};
options {
directory "/usr/local/bind/etc";
pid-file "/usr/local/bind/var/run/bind.pid";
transfer-format many-answers;
interface-interval 0;
allow-query { any; };
};
zone "qbtop.com" {
type slave;
file "slaves/qbtop.com.zone";
masters { 23.19.81.191; };
};
zone "81.19.23.in-addr.arpa" {
type slave;
file "slaves/81.19.23.in-addr.arpa";
masters { 23.19.81.191; };
};
文件說明:
從dns跟主dns主要的區(qū)別是zone的定義,type slave定義此dns服務(wù)器為從dns,masters { 23.19.81.191; }定義主dns的IP。
啟動BIND
1、在啟動BIND之前,我們需要執(zhí)行/usr/local/bind/sbin/named-checkconf檢查named.conf配置文
件,和執(zhí)行/usr/local/bind/sbin/named-checkzone zone名稱
zone文件名,如/usr/local/bind/sbin/named-checkzone qbtop.com
/usr/local/bind/etc/qbtop.com.zone。
然后調(diào)試模式啟動bind,/usr/local/bind/sbin/named -g,g參數(shù)的意思是前臺執(zhí)行bind,這會輸出啟動的信息,發(fā)現(xiàn)沒有嚴(yán)重的錯誤后,再把g參數(shù)刪除重新以/usr/local/bind/sbin/named方式后臺啟動bind。
2、設(shè)置開機啟動,在/etc/rc.d/rc.local中加入/usr/local/bind/sbin/named。
手動添加記錄
1、直接添加刪除或修改zone文件里的記錄
2、執(zhí)行rndc reload zone名稱重載,如rndc reload qbtop.com
?。這個一般在i2c bus的驅(qū)動部分找,建議用source insight來look-up哦。
struct i2c_algorithm {
/* If an adapter algorithm can't do I2C-level access, set master_xfer
to NULL. If an adapter algorithm can do SMBus access, set
smbus_xfer. If set to NULL, the SMBus protocol is simulated
using common I2C messages */
/* master_xfer should return the number of messages successfully
processed, or a negative value on error */
int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs,
int num);
int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr,
unsigned short flags, char read_write,
u8 command, int size, union i2c_smbus_data *data);
/* To determine what the adapter supports */
u32 (*functionality) (struct i2c_adapter *);
};
一般是根據(jù)處理器的i2c來實現(xiàn)這個適配器的alg,所以函數(shù)名并不一定是這個。自己看看i2c 總線的驅(qū)動實現(xiàn)代碼
【目的】
AS3527有一個模擬部分,稱作AFE,其與數(shù)字部分通過i2c通信,此處AFE部分有很多寄存器供外界操作訪問,如果想要訪問這些寄存器,就要用到Sub Address,所以,要實現(xiàn)讓i2c 驅(qū)動支持Sub Address的模式。
i2C本身的架構(gòu)中,沒有支持sub address,所以,我們只能想辦法,讓其I2C支持(方法1)或者用smbus的架構(gòu)(方法2).
【方法】
方法1:
在i2c的message中傳遞一個2個字節(jié)的buffer,分別存放Sub Address和data
比如,對于讀操作,就可以這么實現(xiàn):
int afe_read_reg(int addr, u8 *pdata)
{
u8 msgbuf[2];
struct i2c_msg msg =
{
.addr = save_client-addr | ( 8),
.flags = I2C_M_RD ,
.len = 2,
.buf = msgbuf,
};
msgbuf[0] = addr; //存放Sub Address,此處的Addr是寄存器地址,也就是Sub Address
msgbuf[1] = 0; //初始化
if (i2c_transfer(save_client-adapter, msg, 1) 0) {
dev_warn(save_client-dev,
"can't read from afe /n");
return -ENOMEM;
}
*pdata = msgbuf[1];
return 0;
}
方法2:
使用SMBUS的框架,其支持Sub Address
在i2c讀操作中,直接調(diào)用SMBUS架構(gòu)中的函數(shù)i2c_smbus_read_byte_data:
int afe_read_reg(int addr, u8 *pdata)
{
int ret;
ret = i2c_smbus_read_byte_data(save_client, addr);
if (ret 0)
return ret;
else {
*pdata = (u8)ret;
return 0;
}
}
然后函數(shù)調(diào)用順序是
i2c_smbus_read_byte_data - i2c_smbus_xfer -
adapter-algo-smbus_xfer 或 i2c_smbus_xfer_emulated
(1)此處如果你自己的I2C驅(qū)動中沒有實現(xiàn)
adapter-algo-smbus_xfer
那么就會去調(diào)用i2c_smbus_xfer_emulated,其會把I2C的讀一個字節(jié)的操作,
分成2個message,然后
i2c_smbus_xfer_emulated - i2c_transfer - adap-algo-master_xfer(adap,msgs,num)
去調(diào)用底層自己的i2c傳輸?shù)暮瘮?shù)master_xfer去實現(xiàn)兩個message的傳輸。
此處要注意的是,如果你的i2C的控制器和i2c設(shè)備,支持將此I2C的讀一個字節(jié)操作分兩個message傳輸,
那么此處此方法也是可以的。
而你的底層的master_xfer函數(shù),只要負(fù)責(zé)將對應(yīng)的message發(fā)送出去也就可以實現(xiàn)對應(yīng)的功能了。
否則,就像我此處遇到的,我這里的AFE的i2c控制器,不支持讀操作分成兩次message,只支持一個I2C message的傳輸,
所以,只能是在底層特殊處理,將2個message自己整理成一個message,或者是用下面的辦法。
(2)自己實現(xiàn)了adapter-algo-smbus_xfer
自己仿照i2c_smbus_xfer_emulated,在具體實現(xiàn)的時候,對于讀和寫都只是發(fā)送一個message,然后讓底層代碼
adap-algo-master_xfer去處理這個message,實現(xiàn)對應(yīng)的讀和寫。
【注意】
1.以上,不論是1還是2,都是在實現(xiàn)了自己I2C驅(qū)動底層message傳輸?shù)幕竞瘮?shù)之后,才可以工作的。
而對于這個基本函數(shù),即adap-algo-master_xfer,
都是要在實現(xiàn)的時候,注意上層傳遞過來的buffer的第一個字節(jié)是sub address,第二個字節(jié)才是要用于寫入或讀取的buffer。
2.對于方法2(2),在模擬i2c_smbus_xfer_emulated實現(xiàn)自己的xfer函數(shù)的時候,
不能直接調(diào)用i2c_transfer,因為i2c_transfer里面,去獲得adapter-bus_lock,而i2c_smbus_xfer中,調(diào)用adapter-algo-smbus_xfer之前,已經(jīng)進(jìn)行了對于adapter-bus_lock鎖定,而因此會形成死鎖的的,辦法是不要再去獲得鎖,而直接調(diào)用adapter-algo-master_xfer即可。
linux下快速刪除大量文件假如你要在linux下刪除大量文件,比如100萬、1000萬,像/var/spool/clientmqueue/的mail郵件,像/usr/local/nginx/proxy_temp的nginx緩存等,那么rm -rf *可能就不好使了。rsync提供了一些跟刪除相關(guān)的參數(shù) rsync --help grep delete --del an alias for --delete-during --delete delete files that don't exist on the sending side --delete-before receiver deletes before transfer (default) --delete-during receiver deletes during transfer, not before --delete-after receiver deletes after transfer, not before --delete-excluded also delete excluded files on the receiving side --ignore-errors delete even if there are I/O errors --max-delete=NUM don't delete more than NUM files其中--delete-before 接收者在傳輸之前進(jìn)行刪除操作 可以用來清空目錄或文件,如下:1、先建立一個空目錄mkdir /data/blank2、用rsync刪除目標(biāo)目錄rsync --delete-before -d /data/blank/ /var/spool/clientmqueue/這樣目標(biāo)目錄很快就被清空了又假如你有一些特別大的文件要刪除,比如nohup.out這樣的實時更新的文件,動輒都是幾十個G上百G的,也可 以用rsync來清空大文件,而且效率比較高1、創(chuàng)建空文件touch /data/blank.txt2、用rsync清空文件rsync -a --delete-before --progress --stats /root/blank.txt /root/nohup.outbuilding file list ...1 file to considerblank.txt 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)Number of files: 1Number of files transferred: 1Total file size: 0 bytesTotal transferred file size: 0 bytesLiteral data: 0 bytesMatched data: 0 bytesFile list size: 27File list generation time: 0.006 secondsFile list transfer time: 0.000 secondsTotal bytes sent: 73Total bytes received: 31 sent 73 bytes received 31 bytes 208.00 bytes/sectotal size is 0 speedup is 0.00tips:當(dāng)SRC和DEST文件性質(zhì)不一致時將會報錯當(dāng)SRC和DEST性質(zhì)都為文件【f】時,意思是清空文件內(nèi)容而不是刪除文件當(dāng)SRC和DEST性質(zhì)都為目錄【d】時,意思是刪除該目錄下的所有文件,使其變?yōu)榭漳夸涀钪匾氖?,它的處理速度相?dāng)快,處理幾個G的文件也就是秒級的事最核心的內(nèi)容是:rsync實際上用的就是替換原理作者 張慧
舉個例子說明一下:
將硬盤a克隆到硬盤b?:
dd?if=/dev/sda?of=/dev/sdb?bs=4M
可能在這個過程中的速度會比較慢,但是是有原因的,因為有用的和無用的數(shù)據(jù)都要復(fù)制。
——答案來自xisaiLinux界大牛老師