2016年12月19日 星期一

調整 XFS 格式的 Logical Volume 大小

以下文章摘自http://jamyy.us.to/blog/2015/09/7673.html

調整 XFS 格式的 Logical Volume 大小

by Jamyy on 九月.04, 2015, under Linux
由於 XFS 只能擴大不能縮小, 利用 xfsdump / xfsrestore 工具, 在必須縮小 Logical Volume 的情況下, 得以備份、還原資料。
操作環境: CentOS 7, 安裝時採用 Automatically configure partitioning (XFS + LVM)
處理前環境
pvs
PV        VG     Fmt  Attr PSize  PFree
/dev/sda2 centos lvm2 a--  99.51g 64.00m
vgs
VG     #PV #LV #SN Attr   VSize  VFree
centos   1   3   0 wz--n- 99.51g 64.00m
lvs
LV   VG     Attr       LSize  Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 45.57g
root centos -wi-ao---- 50.00g
swap centos -wi-ao----  3.88g
將 /home 縮減為 5GB, 剩下都給 / (root)
安裝 xfsdump 套件
yum -y install xfsdump
備份 /home
xfsdump -f /home.xfsdump /home
please enter label for this dump session (timeout in 300 sec)
-> home
please enter label for media in drive 0 (timeout in 300 sec)
-> home
卸載 /home
umount /home
將 /home 的 Logical Volume 縮減為 5GB
lvreduce -L 5G /dev/mapper/centos-home
Do you really want to reduce home? [y/n]: y
將騰出的空間都給 / (root)
lvextend -l +100%FREE /dev/centos/root
延展 xfs 空間
xfs_growfs /dev/centos/root
恢復 /home 內容
格式化 /home 的 Logical Volume
mkfs.xfs -f /dev/mapper/centos-home
掛載 /home
mount /home
將備份資料寫回 /home
xfsrestore -f /home.xfsdump /home
處理後環境
pvs
PV        VG     Fmt  Attr PSize  PFree
/dev/sda2 centos lvm2 a--  99.51g    0
vgs
VG     #PV #LV #SN Attr   VSize  VFree
centos   1   3   0 wz--n- 99.51g    0
lvs
LV   VG     Attr       LSize  Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao----  5.00g
root centos -wi-ao---- 90.63g
swap centos -wi-ao----  3.88g

2016年11月29日 星期二

Windows 7 User Profile Service服務無法登入



這個「User Profile Service服務無法登入」的問題,是剛才客戶所碰到的問題,由於我之前沒有碰過,因此相當的好奇,來分享一下要怎麼來解決這個問題。
  究竟這個「User Profile Service服務無法登入。無法載入使用者設定檔」的問題,是怎麼發生的呢?老實說,我還真不曉得,據苦主說,他只有在現有的使用者帳戶中,新增了登入密碼而已,就變這樣了...
  而這種狀況,非常類似「Windows無法載入存放本機上的設定檔」,所以當我看到這個狀況時,第一個想法,就是想要先進入到「安全模式」,然後再重新建立一個新的使用者帳戶,再登入這個新建立的使用者帳戶,最後再將這個無法登入的帳戶刪除。
 但結果並沒有這麼順利,首先,雖然無法可以在正常的模式登入帳戶,但只要進入安全模式之後,就可以順利登入這個無法登入的帳號,但很可能的是,在這樣的狀態之下,居然沒有辦法再建立新的使用者帳戶了,所以原本的想法是不可行的,最後只好求助Google。
  立即就找到微軟的這篇文章「微軟技術支援」,因此,我來針對微軟所提供的解決方法,來做個說明。
 在微軟提供的三種方法,如下:
  • 方法 1:修正使用者帳戶設定檔
  • 方法 2:登入 Windows 並將您的資料複製到新帳戶
  • 方法 3:刪除錯誤 SID 並建立新設定檔
  在某些狀況之下,並不是每個都可以實作的,比如說「方法3」這個方式,要使用這個方法,就是先到微軟官方網站,去下載一個「Microsoft Fix it 50446」,可是正當你利用了別台電腦去下載了這個檔案,並且放進這部電腦中時,你會發現到,這個程式居然沒有辦法在安全模式中執行,這搞屁啊?我今天電腦上,就只有一個使用者帳戶,而且這唯一的使用者帳戶,偏偏就已經無法登入了,那我要怎麼去使用這個程式呢?
  同樣的情況,在方法2中也是一樣,我雖然可以進入到安全模式,但問題現在也是沒有辦法再建立新的使用者帳戶,所以自然也沒有辦法將原本的使用者檔案資料,給複製到新的使用者帳戶裡面。
  所以,就只能利用「方法1」了,所以當你也和我一樣,電腦只建立了一個使用者帳戶,而這唯一的帳戶,卻發生了User Profile Service的問題時,就請直接用「方法1」來解決,除非你電腦裡面原本就有建立其他的使用者帳戶,並且其中一個帳戶是可以順利登入的,才有辦法使用「方法2及方法3」。

方法1:可以用現有無法登入的使用者,以安全模式方式登入後進行,且機碼修改所花費的時間很短。
安全模式下透過視窗界面無法新增帳後喔,請依下列方式進行
1.開啟命令提示字元(CMD)
2.用〔Net〕的命令增加一個使用者,例:增加一個使用者名為 user1,密碼為 123123123
  命令語法如下:net user user1 123123123 /add
3.將新增使用者提升至Administrator的權力,例:提升剛才增加使用者user1 的權力,
  命令語法如下 net localgroup administrators user1 /add
4.完成上列步驟後重新開機電腦,在啟動畫面上便增加了一個使用者 user1 了,選 user1 進入

方法2:依使用者的資料多寡,複製時間不一定,我遇到的USER通常都有20幾GB以上的資料(因為他都放在桌面
!!@#$%),所以建議是用方法1:就好了。



2016年11月17日 星期四

查MySQL LOCK

查MySQL LOCK

show processlist;
其中的state 欄位會出現 Locked;
依據ID 欄位可以執行 kill ID編號; 
進行刪除。

2016年11月9日 星期三

使用 find 尋找日期區間內的檔案


find 是 Unix/Linux 中好用的尋找檔案指令,本篇介紹如何使用 find 找出指定日期區間內的檔案。
使用 touch 建立一個修改日期為 2013-01-01 的檔案
touch --date "2013-01-01" /tmp/start.txt

使用 touch 建立一個修改日期為 2013-12-31 的檔案
touch --date "2013-12-31" /tmp/end.txt

尋找 /path 裡日期在 2013-01-01 與 2013-12-31 之間的檔案
find /path -type f -newer /tmp/start.txt -not -newer /tmp/end.txt


查看建立檔案的結果
ls --full-time  end.txt
-rw-r--r-- 1 root root 0 2013-12-31 00:00:00.000000000 +0800 end.txt

若是要找的檔案要當年,你需要將日期延後一天
touch --date "2014-01-01"  end.txt

或是加上時間
touch --date "2013-12-31 23:59:59"  end.txt
查看建立檔案的結果
ls --full-time  end.txt
-rw-r--r-- 1 root root 0 2013-12-31 23:59:59.000000000 +0800 end.txt

你也可以用
find /path -newermt "2013-01-01 00:00:00" ! -newermt "2013-01-01 23:59:59" -type f
RedHat 4.x, 5.5 沒有 newermt  這參數,RedHat 7.x 就有支援這參數了

參考來源:
https://goo.gl/Xl5Npb
http://liaozi.blogspot.tw/2014/11/find.html

使用 find 尋找日期區間內的檔案


find 是 Unix/Linux 中好用的尋找檔案指令,本篇介紹如何使用 find 找出指定日期區間內的檔案。
使用 touch 建立一個修改日期為 2013-01-01 的檔案
touch --date "2013-01-01" /tmp/start.txt

使用 touch 建立一個修改日期為 2013-12-31 的檔案
touch --date "2013-12-31" /tmp/end.txt

尋找 /path 裡日期在 2013-01-01 與 2013-12-31 之間的檔案
find /path -type f -newer /tmp/start.txt -not -newer /tmp/end.txt


查看建立檔案的結果
ls --full-time  end.txt
-rw-r--r-- 1 root root 0 2013-12-31 00:00:00.000000000 +0800 end.txt

若是要找的檔案要當天,你需要將日期延後一天
touch --date "2014-01-01"  end.txt

或是加上時間
touch --date "2013-12-31 23:59:59"  end.txt
查看建立檔案的結果
ls --full-time  end.txt
-rw-r--r-- 1 root root 0 2013-12-31 23:59:59.000000000 +0800 end.txt

你也可以用
find /path -newermt "2013-01-01 00:00:00" ! -newermt "2013-01-01 23:59:59" -type f
RedHat 4.x, 5.5 沒有 newermt  這參數,RedHat 7.x 就有支援這參數了

參考來源:
https://goo.gl/Xl5Npb
http://liaozi.blogspot.tw/2014/11/find.html

2016年8月26日 星期五

command not found

CentOS
lsb_release: command not found

安裝 CentOS 7.1 用最小安裝,執行 lsb_release 出現錯誤 command not found

用以下指令查找
# yum provides */lsb_release
...
redhat-lsb-4.0-3.el6.centos.i686 : LSB base libraries support for CentOS
Repo        : base
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-4.0-3.el6.centos.x86_64 : LSB base libraries support for CentOS
Repo        : base
Matched from:
Filename    : /usr/bin/lsb_release

dkms-2.2.0.3-2.el6.noarch : Dynamic Kernel Module Support Framework
Repo        : epel
Matched from:
Filename    : /usr/lib/dkms/lsb_release

由以上資訊中
redhat-lsb-4.0-3.el6.centos.i686 : LSB base libraries support for CentOS
得知,該指令在 redhat-lsb-4.0-3.el6.centos.i686 套件中

安裝套件
# yum install redhat-lsb

...
Transaction Summary
==========================================================
Install     106 Package(s)

Total download size: 86 M
Installed size: 246 M
Is this ok [y/N]:
...

2016年8月4日 星期四

CentOS 7 修改主機名稱 - hostnamectl

以下文章摘自http://blog.xuite.net/tolarku/blog/359546118-CentOS+7+%E4%BF%AE%E6%94%B9%E4%B8%BB%E6%A9%9F%E5%90%8D%E7%A8%B1+-+hostnamectl+

在之前的 CentOS 或其他的 Unix 主機,想要修改主機名稱可以使用「hostname」指令。但到 CentOS 7 之後,雖然 hostname 指令還在卻沒作用了,去修改 /etc/sysconfig/network 也沒作用 ...... 這是因為他改用了「hostnamectl 」指令了。

hostnamectl - Control the system hostname

# 查看目前的主機名稱 #
hostnamectl

$ hostnamectl
Static hostname: localhost.localdomain
Transient hostname: web2
Icon name: computer
Chassis: n/a
Machine ID: 927683d8736xx3345622b982d75
Boot ID: 8226be1192e74w532525c235325f38
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-229.20.1.el7.x86_64
Architecture: x86_64

# 設定主機名稱 #
hostnamectl  set-hostname   [NAME]

$ hostnamectl  set-hostname www
==== AUTHENTICATING FOR org.freedesktop.hostname1.set-static-hostname ===
Authentication is required to set the statically configured local host name, as well as the pretty host name.
Authenticating as: root
## 這個功能是 CentOS 7 提供的新作法,假設一般使用者要執行需要 root 權限的指令,他會跳出要你輸入 root 的密碼來做驗證,驗證過當然就執行囉!....這跟以往直接跟你說需要 root 權限不一樣。

$ sudo hostnamectl  set-hostname www
[user@www ~]$

有這個指令之後,就不用再去修改 network 設定了,直接一行指令搞定,重開機也不會改變了。

 >> 這個動作會寫入到 /proc/sys/kernel/hostname 設定檔裡

----------------
另外針對主機名稱多了「icon-name」、「chassis」

set-icon-name [NAME]
Set the system icon name. The icon name is used by some graphical applications to visualize this host. The icon
name should follow the Icon Naming Specification[1]. Pass an empty string to this operation to reset the icon name
to the default value, which is determined from chassis type (see below) and possibly other parameters.

set-chassis [TYPE]
Set the chassis type. The chassis type is used by some graphical applications to visualize the host or alter user
interaction. Currently, the following chassis types are defined: "desktop", "laptop", "server", "tablet",
"handset", as well as the special chassis types "vm" and "container" for virtualized systems that lack an
immediate physical chassis. Pass an empty string to this operation to reset the chassis type to the default value
which is determined from the firmware and possibly other parameters.

~End

2016年4月18日 星期一

Linux查看CPU個數/多核/多執行緒的查看(實體/邏輯)

以下文章摘自  Linux查看CPU個數/多核/多執行緒的查看

Linux系統中,如何詳細瞭解CPU的資訊呢? 當然是通過cat
/proc/cpuinfo
來檢查了,但是比如幾個物理CPU/幾核/幾執行緒,這些問題怎麼確定呢?

判斷依據:

1.
具有相同core idcpu是同一個core的超執行緒。

2.
具有相同physical idcpu是同一顆cpu封裝的執行緒或者cores
#邏輯CPU個數
cat /proc/cpuinfo | grep "processor" | wc -l
 
echo "physical CPU number:"
#物理CPU個數:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
 
echo "core number in a physical CPU:"
#每個物理CPUCore的個數:
cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
 
#查看每個physical cpucore id的數量,即為每個物理CPU上的core的個數
cat /proc/cpuinfo | grep "core id"
 
#是否為超執行緒?
#如果有兩個邏輯CPU core具有相同的”core id”,那麼超執行緒是打開的。
# 當然也可知直接查詢 /proc/cpuinfo 中的 "ht"這個flag
cat /proc/cpuinfo | grep flags | grep ht
 
#每個物理CPU中邏輯CPU(可能是core, threadsboth)的個數:
cat /proc/cpuinfo | grep "siblings"