khiến cho việc thay đổi kích thước trở lên dễ dàng ( so với partition ). Với kỹ thuật Logical Volume Manager (LVM) bạn có thể thay đổi kích thước mà không cần phải sửa lại partition table của OS. Điều này thực sự hữu ích với những trường hợp bạn đã sử dụng hết phần bộ nhớ còn trống của partition và muốn mở rộng dung lượng của nó. Một số khái niệm cơ bản sử dụng trong LVM Physical Volume: Là một cách gọi khác của partition trong kỹ thuật LVM, nó là những thành phần cơ bản được sử dụng bởi LVM. Một Physical Volume không thể mở rộng ra ngoài phạm vi một ổ đĩa. Logical Volume Group: Nhiều Physical Volume trên những ổ đĩa khác nhau được kết hợp lại thành một Logical Volume Group, với LVM Logical Volume Group được xem như một ổ đĩa ảo. Logical Volumes: Logical Volume Group được chia nhỏ thành nhiều Logical Volume, mỗi Logical Volume có ý nghĩa tương tự như partition. Nó được dùng cho các mount point và được format với những định dạng khác nhau như ext2, ext3 ... khi dung lượng của Logical Volume được sử dụng hết ta có thể đưa thêm ổ đĩa mới bổ sung cho Logical Volume Group và do đó tăng được dung lượng của Logical Volume. Physical Extent: là một đại lượng thể hiện một khối dữ liệu dùng làm đơn vị tính dung lượng của Logical Volume Một điểm cần lưu ý là boot loader không thể đọc /boot khi nó nằm trên Logical Volume Group. Do đó không thể sử dụng kỹ thuật LVM với /boot mount point. sau đây là một ví dụ sử dụng LVM cụ thể, giả sử thư mục /home nằm trên partition /dev/hde5 đã sử dụng hết không gian trống, cần phải tăng kích thước phần partition dành cho thư mục này bằng cách lắp thêm một ổ cứng mới /dev/hdf. Việc đầu tiên là backup toàn bộ dữ liệu trên thư mục /home, việc này có thể dễ dàng thực hiện bằng nhiều công cụ nhưng đơn giản nhất là dùng lệnh tar. tar czf home.tar.gz /home/* sau đó vào chế độ single user bằng lệnh. init 1 unmount thư mục /home. unmount /home xem tổ chức các partition trên HĐH đang dùng. fdisk -l /dev/hde Disk /dev/hde: 4311 MB, 4311982080 bytes 16 heads, 63 sectors/track, 8355 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/hde1 1 4088 2060320+ fd Linux raid autodetect /dev/hde2 4089 5713 819000 83 Linux /dev/hde3 5714 6607 450576 83 Linux /dev/hde4 6608 8355 880992 5 Extended /dev/hde5 6608 7500 450040+ 83 Linux Thông tin trả về cho thấy partition cần sửa là dạng extend partition và nằm phía dưới cùng. bạn cần phải sửa lại partition type của partition này về loại Linux LVM (8e) bằng lệnh fdisk. fdisk /dev/hde The number of cylinders for this disk is set to 8355. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): Gõ t để thay đổi partition type, nhập giá trị 8e để đặt partition này về dạng LVM Linux. Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): 8e Changed system type of partition 5 to 8e (Linux LVM) Command (m for help): Gõ p để xem lại thông tin partition table sau khi sửa đổi. Command (m for help): p Disk /dev/hde: 4311 MB, 4311982080 bytes 16 heads, 63 sectors/track, 8355 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/hde1 1 4088 2060320+ fd Linux raid autodetect /dev/hde2 4089 5713 819000 83 Linux /dev/hde3 5714 6607 450576 83 Linux /dev/hde4 6608 8355 880992 5 Extended /dev/hde5 6608 7500 450040+ 8e Linux LVM Command (m for help): w gõ w để save thông tin partition table đã sửa đổi. bạn làm tương tự với phần ổ cứng bạn đưa thêm vào khởi tạo PhyssicalVolume trên những partition vừa tạo để sử dụng cho LVM bằng lệnh pvcreate, lưu ý quá trình này sẽ xoá sạch những dữ liệu đã có trên các partititon. pvcreate /dev/hde5 pvcreate -- physical volume "/dev/hde5" successfully created pvcreate /dev/hdf1 pvcreate -- physical volume "/dev/hdf1" successfully created thực hiện update thông tin cấu hình LVM vào file /etc/lvmtab bằng lệnh. vgscan vgscan -- reading all physical volumes (this may take a while...) tổng hợp 2 physical volumes thành một đơn vị duy nhất gọi là Volume Group, khi đó LVM sẽ làm cho OS nhìn Volume Group như một ổ cứng mới. vgcreate lvm-hde /dev/hdf1 /dev/hde5 Volume group "lvm-hde" successfully created câu lệnh trên thực hiện việc tổng hợp 2 Physical Volumes /dev/hdf1 và /dev/hde5 thành một Volume Group lvm-hde dùng lệnh vgdisplay để kiểm tra và lấy thông tin về Volume Group vừa tạo. vgdisplay lvm-hde --- Volume group --- VG Name lvm-hde VG Access read/write VG Status available/resizable VG # 0 MAX LV 256 Cur LV 0 Open LV 0 MAX LV Size 255.99 GB Max PV 256 Cur PV 2 Act PV 2 VG Size 848 MB PE Size 4 MB Total PE 212 Alloc PE / Size 0 / 0 Free PE / Size 212 / 848 MB VG UUID W7bgLB-lAFW-wtKi-wZET-jDJF-8VYD-snUaSZ một lần nữa lưu ý kích thước của Volume Group được tính theo đơn vị PE ( physical extents ). Như ở đây bạn thấy Volume Group này có 212 PE. Từ Volume Group bạn có thể tạo các Logical Volume để phục vụ cho phù hợp với mục đích sử dụng của mình bằng lệnh lvcreate Ý nghĩa của Logical Volume gần tương tự như partition. Ở đây tôi dùng toàn bộ Volume Group để tạo Logical Volume. lvcreate -l 212 lvm-hde -n lvm0 Logical volume "lvm0" created tạo file system cho Logical Volume lvm0 vừa tạo mkfs -t ext3 /dev/lvm-hde/lvm0 mke2fs 1.32 (09-Nov-2002) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 108640 inodes, 217088 blocks 10854 blocks (5.00%) reserved for the super user First data block=0 7 block groups 32768 blocks per group, 32768 fragments per group 15520 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 38 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. Đến đây bạn mount lại thư mục /home và backup lại dữ liệu. sửa lại file /etc/fstab để thư mục /home được tự động mount mỗi lần boot hệ thống /dev/lvm-hde/lvm0 /home ext3 defaults 1 2 |
Hiển thị các bài đăng có nhãn linux. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn linux. Hiển thị tất cả bài đăng
Thứ Tư, 12 tháng 10, 2011
Kỹ thuật Logical Volume Manager (LVM)
Thứ Ba, 20 tháng 9, 2011
Sử dụng Alias để thiết lập lệnh trong Ubuntu
Đối với nhiều người sử dụng Ubuntu hoặc các distro khác nhau của Linux, việc sử dụng và thao tác đối với hệ thống qua dòng lệnh thường khiến nhiều người ngần ngại mỗi khi phải làm việc với hệ điều hành mã nguồn mở này, nhưng thực ra Linux đã đóng gói sẵn nhiều chức năng giúp chúng ta đơn giản hóa quá trình trên. Trong bài viết dưới đây, chúng tôi sẽ giới thiệu với các bạn cách sử dụng Alias để thiết lập và tùy chỉnh Command trong Ubuntu.
Thiết lập Alias:
Về mặt bản chất, Alias được hiểu nôm na là cách thiết lập lệnh Command trong Ubuntu bằng việc đặt tên – nickname cho các câu lệnh đó. Chúng ta có thể áp dụng cách này để thay thế cho những dòng lệnh dài, phức tạp và khó nhớ. Để thiết lập, các bạn nhấn chuột phải và tạo 1 thư mục rỗng mới bên trong thư mục home, đặt tên là.bash_Alias, cách đặt tên như vậy sẽ làm ẩn file này, chúng ta nhấn Ctrl + H để hiển thị:
Một số cú pháp Alias cơ bản:
Sử dụng chương trình soạn thảo text bất kỳ để mở file vừa tạo, và chúng ta sẽ bắt đầu vào quá trình tiếp theo. Nhưng các bạn cần lưu ý 1 số điểm như sau:
alias new_name='old_command'
Với new_name là Alias, và old_command chính là phần command muốn thay đổi và đặt giữa 2 dấu ngoặc kép. Ví dụ:
alias agi='sudo apt-get install'
Từ giờ trở đi, khi gõ agi vào Terminal tức là hệ thống đã hiểu đó là lệnh sudo apt-get install, và như vậy công việc của chúng ta sẽ trở nên đơn giản hơn rất nhiều. Tuy nhiên, nếu bạn tạo Alias giống với lệnh Command thì phầnCommand hoặc Alias đó sẽ không hoạt động. Ví dụ:
alias install='sudo apt-get install'
Alias trên sẽ không hoạt động vì nó đã trùng với lệnh Command – install. Thêm 1 điểm nữa cần lưu ý là tạo Alias có 2 từ cũng sẽ không hoạt động, trừ khi có dấu gạch ngang. Ví dụ:
alias apt install='sudo apt-get install'
và:
alias apt-install='sudo apt-get install'
Trong 2 câu lệnh thì cú pháp đầu tiên là sai, vì có khoảng trống ở giữa, trong khi cú pháp thứ 2 thì hoàn toàn hợp lệ, vì vẫn được tính là 1 từ nhờ vào dấu gạch ngang ở giữa. Và điểm cuối cùng cần lưu ý là không được để bất kỳ khoảng trống nào ở phía đầu dòng lệnh.
Các Alias nào nên sử dụng:
Trong phần tiếp theo của bài viết, chúng ta sẽ cùng nhau đề cập và thảo luận về các Alias được dùng thường xuyên nhất.
Quản lý Package:
Một số gợi ý nho nhỏ giúp các bạn phân loại và quản lý Package tốt hơn:
alias agi='sudo apt-get install'
alias agr='sudo apt-get remove'
alias agu='sudo apt-get update'
alias acs='apt-cache search'
Quản lý file và thư mục:
alias cp='cp -iv'
alias mv='mv -iv'
alias rm='rm -i'
alias la='ls -alh'
Chuyển tiếp hệ thống:
alias documents='cd ~/Documents'
alias downloads='cd ~/Downloads'
alias desktop='cd ~/Desktop'
alias music='cd ~/Music'
alias videos='cd ~/Videos'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
Một số Alias tiện ích khác:
alias e='exit'
alias s='sudo'
alias shutdown='sudo shutdown –h now' #yêu cầu mật khẩu root, vô hiệu hóa bằng "sudo chmod u+s /sbin/shutdown"
alias restart='sudo shutdown –r now' # yêu cầu mật khẩu root, vô hiệu hóa bằng "sudo chmod u+s /sbin/shutdown"
alias suspend='sudo pm-suspend'
alias lock='gnome-screensaver-command --lock'
alias mounted='mount | column –t
Cấu hình replicate database MySQL Master-to-master
- GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%' IDENTIFIED BY '%slave_password%';
- FLUSH PRIVILEGES;
- quit;
Edit file my.cnf của server 1 :
- [mysqld]
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- #user=mysql
- # Default to using old password format for compatibility with mysql 3.x
- # clients (those using the mysqlclient10 compatibility package).
- old_passwords=1
- max_connections = 400
- key_buffer = 16M
- myisam_sort_buffer_size = 32M
- join_buffer_size = 1M
- read_buffer_size = 1M
- sort_buffer_size = 2M
- table_cache = 1024
- thread_cache_size = 286
- interactive_timeout = 25
- wait_timeout = 1000
- connect_timeout = 60
- max_allowed_packet = 16M
- max_connect_errors = 10
- query_cache_limit = 1M
- query_cache_size = 16M
- query_cache_type = 1
- tmp_table_size = 16M
- skip-innodb
- log-bin=mysql-bin
- binlog-do-db=replicate_test
- binlog-ignore-db=mysql
- binlog-ignore-db=test
- server-id=1
- master-host = 192.168.2.11
- master-user = replication
- master-password = 111111
- master-port = 3306
- auto_increment_increment= 2
- auto_increment_offset = 2
- slave-net-timeout = 30
- master-connect-retry = 30
- [mysql.server]
- user=mysql
- basedir=/var/lib
- [mysqld_safe]
- relay-log = relay-bin
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- max_allowed_packet = 16M
- [myisamchk]
- keybuffer = 32M
- sort_buffer = 32M
- read_buffer = 16M
- write_buffer = 16M
Edit file my.cnf của server 2 :
- [mysqld]
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- #user=mysql
- # Default to using old password format for compatibility with mysql 3.x
- # clients (those using the mysqlclient10 compatibility package).
- old_passwords=1
- max_connections = 400
- key_buffer = 16M
- myisam_sort_buffer_size = 32M
- join_buffer_size = 1M
- read_buffer_size = 1M
- sort_buffer_size = 2M
- table_cache = 1024
- thread_cache_size = 286
- interactive_timeout = 25
- wait_timeout = 1000
- connect_timeout = 60
- max_allowed_packet = 16M
- max_connect_errors = 10
- query_cache_limit = 1M
- query_cache_size = 16M
- query_cache_type = 1
- tmp_table_size = 16M
- skip-innodb
- log-bin=mysql-bin
- binlog-do-db=replicate_test
- binlog-ignore-db=mysql
- binlog-ignore-db=test
- server-id=2
- master-host = 192.168.2.10
- master-user = replication
- master-password = 111111
- master-port = 3306
- auto_increment_increment= 2
- auto_increment_offset = 2
- slave-net-timeout = 30
- master-connect-retry = 30
- [mysql.server]
- user=mysql
- basedir=/var/lib
- [mysqld_safe]
- relay-log = relay-bin
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- max_allowed_packet = 16M
- [myisamchk]
- keybuffer = 32M
- sort_buffer = 32M
- read_buffer = 16M
- write_buffer = 16M
Bạn cần để ý các thông số sau ở cả 2 server :
- log-bin=mysql-bin
- binlog-do-db=replicate_test
- binlog-ignore-db=mysql
- binlog-ignore-db=test
- server-id=2
- master-host = 192.168.2.10
- master-user = replication
- master-password = 111111
- master-port = 3306
- auto_increment_increment= 2
- auto_increment_offset = 2
Chú thích các thông số :
binlog-do-db=replicate_test : chỉ định các bảng sẽ được thực hiện replicate
binlog-ignore-db=mysql : Chỉ định các bảng sẽ không được thực hiện replicate
server-id : Id chỉ định cho server.
master-host : Địa chỉ ip của host master
master-user,master-password : user và password theo master-host
master-port: cổng truy vấn của database.
auto_increment_offset : cần đặc biệt chú ý thông số này, trường hợp bạn không thiết lập thông số này database có trường autoincrement sẽ tăng theo giá trị +1 cho giá trị tiếp theo khi insert dữ liệu mới.
Để tránh trường hợp 2 database ở 2 server bị trùng giá trị autoincrement tôi đặt giá trị này auto_increment_offset=1 cho server1 và =2 cho server 2 với mục đích giá trị tự động tăng ở server1 là số lẻ , ở server 2 là số chẵn.
Đăng nhập chế độ dòng lệnh MySQL và thực hiện việc gán master cho server2:
- stop slave;
- CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='replication', MASTER_PASSWORD='%slave_password%';
- start slave;
Thực hiện câu lệnh tương tự cho server 1 với MASTER_HOST là 192.168.1.11, user và password.
Kiểm tra sự hoạt động của cả 2 server :
- SHOW MASTER STATUS;
- SHOW SLAVE STATUS\G;
Nếu 1 trong 2 chưa thành công bạn cần kiểm tra lại user và password chính xác, hoặc master-port đã được mở hay chưa.
Tham khảo thêm về replicate MySQL : http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html
Đăng ký:
Bài đăng (Atom)